[Mono-list] XmlTextReader: MS compatibility, or W3C conformance?

Ian MacLean ianm@ActiveState.com
Fri, 09 Jul 2004 12:50:01 +0900


Atsushi Eno wrote:

>Hello,
>
>On bugzilla we (Ian and I) were discussing on XmlTextReader conformance
>to XML specification. MS XmlTextReader is buggy since it accepts
>XML declaration as element content (that violates W3C XML specification
>section 3 Logical Structures).
>http://bugzilla.ximian.com/show_bug.cgi?id=61274
>
>However, there is another discussion that it is useful that new
>XmlTextReader (xmlText, XmlNodeType.Element, null) accepts XML declaration.
>
>Well, I agree that
>
>	- 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 (!)
>
>So it is case by case. I believe we should not allow such use of
>XmlTextReader, but I understand what Ian wants me to do. The "fix"
>can be very easily done.
>
>I don't think it is major problem. Users can easily fix this problem
>by calling MoveToContent(), or by skipping XmlDeclaration node with
>Read() method (well, to call Read() safely, users have to check if
>the reader state is Initial or not).
>  
>
Its not a major problem but your workaround above only works if every 
fragment you want to parse follows Document constraints - eg single root 
node. What I have done now is check the incoming xml fragment for an xml 
decl and if present use XmlNodeType.Document otherwise use 
XmlNodeType.Element.

Ian