Re: Invalid attribute names
> In article <200401011610.i01GAvns018472@a...> you write: > > >Is a parser that assesses well-formedness according to the XML > >Namespaces specification > >still a conforming XML 1.0 parser? > > No. A parser that rejects documents conforming to XML 1.0 but not > Namespaces is an XML + Namespaces parser, just as a C compiler is > not a ASCII verifier, and an HTML browser is not a general SGML > parser. > > Many XML parsers have a switch allowing you to specify whether you want > a plain XML 1.0 parser or an XML+Namespaces parser, thus saving you $$$ > compared with buying both separately. And due to different syntactic productions for the same non-terminal, it is never possible to predict what happens with each particular parser when it is fed a non-namespace-aware document: %cat > test.xml <a :b="c"/> ^D %rxp < test.xml <a :b="c"/> %rxp -N < test.xml Warning: Attribute name :b has empty prefix in unnamed entity at line 1 char 6 of <stdin> Warning: Attribute name :b has unbound prefix in unnamed entity at line 1 char 12 of <stdin> <a :b="c"/> %echo $? 0 (result code 0 means the document is well-formed) %xmlwf < test.xml %xmlwf -n < test.xml STDIN:1:3: not well-formed (invalid token) (result code is not set in xmlwf, output means errors) %xmllint test.xml test.xml:1: namespace error : Failed to parse QName ':b' <a :b="c"/> ^ <?xml version="1.0"?> <a :b="c"/> (did not find a way to switch namespace-awareness, meanwhile the documentation says that it is an XML 1.0 parser (not XML+Namespace parser)) The only conformant parser of these three is Expat (xmlwf), which reports well-formedness error if namespace support is turned on). rxp, while accepts XML 1.0 documents, issues a warning, not an error in the namespace-aware mode, and returns zero exit code, which means, according to the documentation, that the document is well-formed (while it is not if XML+Namespaces are assumed). The very message that a name has unbound prefix is wrong because it cannot syntactically have a prefix since it does not conform to the production in the specification which talks about prefixes. xmllint is assumed to be an XML 1.0 parser (according to the documentation), but does not conform to the recommendation by unconditionally using a production from a different specification. And, don't get me wrong, I don't blame either rxp or xmllint. It is the standards which are buggy. David Tolpin http://davidashen.net/
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format