Re: [xslt] libxslt problem with an attribute's namespace if it is a default one?
- From: Daniel Veillard <veillard redhat com>
- To: xslt gnome org
- Subject: Re: [xslt] libxslt problem with an attribute's namespace if it is a default one?
- Date: Fri, 13 Feb 2004 10:46:01 -0500
On Fri, Feb 13, 2004 at 02:41:01PM +0200, Markku.Nykky@yomi.com wrote:
> Hi, I have a following xsl, that just creates some xml (does not depend on
> the source xml):
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:fo="http://www.w3.org/1999/XSL/Format">
> <xsl:template match="/">
> <root xmlns="urn:A" xmlns:b="urn:B" xmlns:a="urn:A">
> <Products>
> <Product a:ID="1001" a:Name="Engine">
> <Price b:Currency="euro">100000</Price>
> </Product>
> <Product a:ID="1002" a:Name="Tire">
> <Price b:Currency="euro">100</Price>
> </Product>
> </Products>
> </root>
> </xsl:template>
> </xsl:stylesheet>
>
> Now if I do the transformation with the xsl above, the libxslt gives
> different output compared to that given by for example MSXML and Xalan
> 2.5.2.
>
> Here is the output given by the libxslt:
>
> <?xml version="1.0"?>
> <root xmlns="urn:A" xmlns:b="urn:B" xmlns:a="urn:A"
> xmlns:fo="http://www.w3.org/
> 1999/XSL/Format">
> <Products>
> <Product ID="1001" Name="Engine">
> <Price b:Currency="euro">100000</Price>
> </Product>
> <Product ID="1002" Name="Tire">
> <Price b:Currency="euro">100</Price>
> </Product>
> </Products>
> </root>
>
> and here the output given by the Xalan:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:a="urn:A"
> xmlns:b="urn:B" xmlns="urn:A">
> <Products>
> <Product a:Name="Engine" a:ID="1001">
> <Price b:Currency="euro">100000</Price>
> </Product>
> <Product a:Name="Tire" a:ID="1002">
> <Price b:Currency="euro">100</Price>
> </Product>
> </Products>
> </root>
>
> You can notice from the libxslt's output that the namespace having prefix
> "a" is not included into the attributes of Product element. This is the case
> only if that namespace is also the default namespace. As you can see the
> namespace having prefix b is attached to the correct attribute Currency.
> Like said in the "Namespaces in XML" in
> http://www.w3.org/TR/REC-xml-names/#defaulting the default namespace applies
> to the element where it is declared and to all elements with no prefix
> within the content of that element. That's why there is no need to prefix
> for example Products-element if it is supposed to belong to the default
> namespace. But that same rule cannot be applied to the attributes and said
> again in the same chapter -> "default namespaces do not apply directly to
> attributes" and also in Michael Kay's XSLT 2nd Edition -book, page 66, it is
> said that if attribute name does not have any prefix then its namespace URI
> is considered to be a null URI i.e. in my example the Name-attribute of the
> Product-element does not belong to any namespace because there is no prefix
> attached to it.
>
> So if the application, that uses the result xml from libxslt, waits for an
> attribute "Name" belonging to the urn:A namespace it will not recognize it
> because of the lack of the prefix.
>
> This problem, if using libxslt for transformation, can be passed by marking
> every element belonging to the default namespace with the default
> namespace's prefix and after that the libxslt produces a result where also
> attributes have the default namespace's prefix, but that is a thing you
> should not have to do according to the XML specs.
>
> The xsltproc (and libxslt/libxml) I have used to produce the result xml are
> following:
>
> $ xsltproc --version
> Using libxml 20605, libxslt 10102 and libexslt 802
> xsltproc was compiled against libxml 20605, libxslt 10102 and libexslt 802
> libxslt 10102 was compiled against libxml 20605
> libexslt 802 was compiled against libxml 20605
Yes this sounds like a real bug, can you bugzilla it ? Informations
at http://xmlsoft.org/XSLT/bugs.html , that way we can't forget about
it and you will get informed as soon as it's fixed,
thanks,
Daniel
--
Daniel Veillard | Red Hat Network https://rhn.redhat.com/
veillard@redhat.com | libxml GNOME XML XSLT toolkit http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]