I was reading an XML-Deviant column on XML.com entitled Browser
Boom when I came across the following excerpt
The inevitable association with Microsoft`s CLI implementation is proving a source
of difficulty for the Mono project. The principal author of Mono`s XML support, Atsushi
Eno, posted to the Mono mailing list on the problems
of being conformant in Mono`s XML parser implementation. More specifically, whose
rules should Mono conform to. W3C or Microsoft
MS XmlTextReader is buggy since it accepts XML declaration as element content
(that violates W3C XML specification section 3 Logical Structures). ... However, there
is another discussion that it is useful that new XmlTextReader (xmlText, XmlNodeType.Element,
null) accepts XML declaration.
... that error-prone XmlTextReader might be useful (especially for people who
already depends on that behavior)
... we did not always reject Microsoft badness; for example we are copying System.Xml.XmlCDataSection
that violates W3C DOM interface hierarchy (!)
The root of the dilemma is similar to that which Mozilla and Opera are trying to manage
in the browser world.
What I find interesting is that instead of pinging the MSFT XML folks (like myself)
and filing a bug report this spawned a dozen message email discussion on whether Mono
should be bug compatible with the .NET Framework. Of course, if the Mono folks decide
to be bug compatible with this and other bugs in System.Xml and we fix them thus causing breaking
changes in some cases will we see complaints about how Microsoft is out to
get them by being backwards incompatible Now that Microsoft has created the MSDN
Product Feedback Center they don`t even have to track down the right newsgroup
or email address of a Microsoft employee to file the bug.
It`s amazing to me how much work people cause for themselves and conspiracy theories
they`d rather live in than communicate with others.
Update: I talked to developer responsible for the XmlTextReader class
and she responded "This is by design. We allow XML declaration in XML fragments
because of the encoding attribute. Otherwise the encoding information would have to
be transferred outside of the XML and manually set into XmlParserContext."