Hi!

I tried investigate this bug and as far I can see problem in a different 
behavior of the function xmlNodeGetSpacePreserve from libxml2.

We can simplify the existing template to reproduce bug:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:template match="/root">
    <test xml:space="preserve"><!-- !!! EXTRA WHITESPACES HERE !!! -->
        <xsl:attribute name="aaa">bbb</xsl:attribute>
    </test>
</xsl:template>
</xsl:stylesheet>

With libxml2 >= 2.8.0 it's OK, but with version < 2.8.0 whitespaces are not 
removed and remains empty text element after which we can no longer use 
"xsl:attribute".

Here is function from libxml2 2.9.0:
int
xmlNodeGetSpacePreserve(xmlNodePtr cur) {
    xmlChar *space;

    if ((cur == NULL) || (cur->type != XML_ELEMENT_NODE))
        return(-1);
    while (cur != NULL) {
    space = xmlGetNsProp(cur, BAD_CAST "space", XML_XML_NAMESPACE);
    if (space != NULL) {
        if (xmlStrEqual(space, BAD_CAST "preserve")) {
        xmlFree(space);
        return(1);
        }
        if (xmlStrEqual(space, BAD_CAST "default")) {
        xmlFree(space);
        return(0);
        }
        xmlFree(space);
    }
    cur = cur->parent;
    }
    return(-1);
}

Here is function from libxml2 2.7.8:
int
xmlNodeGetSpacePreserve(xmlNodePtr cur) {
    xmlChar *space;

    while (cur != NULL) {
    space = xmlGetNsProp(cur, BAD_CAST "space", XML_XML_NAMESPACE);
    if (space != NULL) {
        if (xmlStrEqual(space, BAD_CAST "preserve")) {
        xmlFree(space);
        return(1);
        }
        if (xmlStrEqual(space, BAD_CAST "default")) {
        xmlFree(space);
        return(0);
        }
        xmlFree(space);
    }
    cur = cur->parent;
    }
    return(-1);
}

In this case, two lines play a crucial role here:
    if ((cur == NULL) || (cur->type != XML_ELEMENT_NODE))
        return(-1);

You can also try to change template and move 'xml:xpace="preserve"' after 
'xsl:attribute' to resolve problem.

-- 
Yuriy Ustushenko (YOREEK)

Shlomi Fish < shlo...@shlomifish.org >:
>Hi all,
>
>[I am posting this message in separate copies to both  xml@gnome.org and
> perl-...@listserv.activestate.com ].
>
>after I added a test to the XML::LibXSLT test suite to check for the successful
>run of a Perl XSLT stylesheet I wrote, I've been getting many CPAN Testers
>Failures:
>
> http://matrix.cpantesters.org/?dist=XML-LibXSLT+1.87
>
>While most Linux systems work fine, I've been getting many failures from BSD
>systems. The longer story is that this test script was a port of part of a test
>of a dependent CPAN package that's been getting testing failures after it was
>attempted to be installed after a successful testing and installation of
>XML::LibXSLT (whose test coverage was and probably still is incomplete).
>
>You can find the offending test here:
>
> https://bitbucket.org/shlomif/perl-xml-libxslt/src/8d9cfd4ce6381853c2c3c185842daa2f81107c79/t/xml-grammar-failures.t?at=default
>
>(just note it uses some external files specified in the $input_fn and $xslt_fn
>variables).
>
>Now someone I talked with said that libxslt and/or libxml2 were incompatible
>with clang/LLVM (and possibly other non-GCC compilers). If that's true, is it
>a known issue? Is it ultimately a bug of clang/LLVM? Or alternatively, is it a
>dependency on a non-standard GCCist behaviour in libxslt and libxml2? Is the
>problem with the Perl bindings?
>
>Please enlighten me.
>
>Regards,
>
>Shlomi Fish
>
>-- 
>-----------------------------------------------------------------
>Shlomi Fish  http://www.shlomifish.org/
>Buffy Factoids -  http://www.shlomifish.org/humour/bits/facts/Buffy/
>
>I hope that if it had not been clear before, it isn’t less clear now.
>    — One of Shlomi Fish’s Technion Lecturers
>
>Please reply to list if it's a mailing list post -  http://shlom.in/reply .
>_______________________________________________
>xml mailing list, project page  http://xmlsoft.org/
> xml@gnome.org
> https://mail.gnome.org/mailman/listinfo/xml
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
xml@gnome.org
https://mail.gnome.org/mailman/listinfo/xml

Reply via email to