When the xml is output it looks like:
<?xml version="1.0"?>
<doc><e1><e2 xml:space="preserve"><e3 id="E3"/></e2></e1></doc>
while it should look like:
<?xml version="1.0"?>
<doc><e1><e2 xml:space="preserve">
<e3 id="E3"/>
</e2></e1></doc>
which it does using 2.5.x as well as 2.6 with the patch.
Hadn't played with the xml:lang, but saw it has the same problem as
xml:space. The code in xmlParseAttribute was carried over to
xmlParseAttribute2, but within xmlParseAttribute2, the attribute is
broken out into prefix and name, so the tests xmlStrEqual(name, BAD_CAST
"xml:space") and (xmlStrEqual(name, BAD_CAST "xml:lang")) will never be
true like they are in xmlParseAttribute.
As far as moving code around, I made a test just for xmlStrEqual(*prefix, BAD_CAST "xml") and if that is true will fall into the block to check for name equal to space or lang. figured it would be faster rather than testing everything twice when the prefix may not even be correct in the first place.
The logic is the same as that used in xmlParseAttribute, which does only check lang if pedantic is used. The change was just to get the checks to actually kick in as they would never be true in xmlParseAttribute2.
Rob Daniel Veillard wrote:
On Wed, Jun 08, 2005 at 02:41:36PM -0400, Rob Richards wrote:Looks like xml:space is broken as of 2.6.0 with sax2 Running xmllint --noblanks on the following: <doc> <e1> <e2 xml:space="preserve"> <e3 id="E3"/> </e2> </e1> </doc> ignores the preserve while it doesn't in 2.5.x (different function call) xml:lang has the same issue Attached is the patch I'm using for it - moved some things around as well.I'm not against applying the patch, but could you give a few lines of explanations ? xmllint --noblanks is not conformant "by design", but I think I understand what it's about, I would just like to be sure. I assumethe xml:lang is about checking the value, we (W3C XML Core WG) relaxed this a lot in the second edition of the XML specification. I would say xml:lang warnings should only be raised in pedantic mode at this point,note also that xml:lang="" may be used too. Daniel