[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
[Recent Entries]
[Reply To This Message]
Re: Was it a bug?
Subject: Re: Was it a bug?
From: Michael Kay <mike@xxxxxxxxxxxx>
Date: Wed, 17 Nov 2010 11:48:39 +0000
|
In XSLT 1.0, processors are allowed to invent namespace prefixes pretty
well whenever they feel like it, so this is not a non-conformance.
Note, however, that the versions of Xerces and Xalan in the JDK are not
simply earlier versions of the Apache products, they are effectively
forks, and they have a reputation for bugginess. Use the Apache products
in preference: they appear to have been much more carefully tested.
If you're in the Java world, however, there's very rarely a good reason
to still be using XSLT 1.0.
Michael Kay
Saxonica
On 17/11/2010 11:27, Frederic Bergeron wrote:
Hi,
I have the following XML input file:
<lom xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xsi:schemaLocation="http://ltsc.ieee.org/xsd/LOM http://ltsc.ieee.org/xsd/lomv1.0/lom.xsd" xmlns="http://ltsc.ieee.org/xsd/LOM">
</lom>
And the following XSLT transformation file:
<xsl:stylesheet version="1.0"
xmlns:lom="http://ltsc.ieee.org/xsd/LOM"
xmlns="http://www.imsglobal.org/xsd/lodeilox_v1p0/digital_LO"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
exclude-result-prefixes="lom">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="lom:lom" mode="work-description-main-metadata">
<xsl:element name="{local-name()}" namespace="http://www.mystuff.com">
<xsl:attribute name="myatt">myval</xsl:attribute>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="*" mode="work-description-main-metadata">
<xsl:element name="{local-name()}" namespace="http://www.mystuff.com">
<xsl:copy-of select="@*"/>
<xsl:apply-templates select="*|text()"/>
</xsl:element>
</xsl:template>
<xsl:template match="lom:lom">
<xsl:element name="work">
<xsl:attribute name="xsi:schemaLocation">http://www.imsglobal.org/xsd/lodeilox_v1p0/digital_LO http://www.imsglobal.org/xsd/imsloilox_v1p0_ilox_work_v1p0.xsd</xsl:attribute>
<xsl:element name="identifier">myidentifier</xsl:element>
<xsl:element name="description">
<xsl:element name="metadata">
<xsl:element name="schema">http://ltsc.ieee.org/xsd/LOM/imslode/ilox/work/main</xsl:element>
<xsl:apply-templates select="self::*" mode="work-description-main-metadata"/>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
When I use Xalan 2.6.0 (the default XSLT processor of the JRE 1.6.0_21-b07, if I'm not mistaken), I get the following output:
<work xmlns="http://www.imsglobal.org/xsd/lodeilox_v1p0/digital_LO" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/lodeilox_v1p0/digital_LO http://www.imsglobal.org/xsd/imsloilox_v1p0_ilox_work_v1p0.xsd">
<identifier>myidentifier</identifier>
<description>
<metadata>
<schema>http://ltsc.ieee.org/xsd/LOM/imslode/ilox/work/main</schema>
<ns0:lom xmlns:ns0="http://www.mystuff.com" myatt="myval">
</ns0:lom>
</metadata>
</description>
</work>
When I use Saxon 8.7 or Xalan 2.7.0, I get the following output:
<work xmlns="http://www.imsglobal.org/xsd/lodeilox_v1p0/digital_LO" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/lodeilox_v1p0/digital_LO http://www.imsglobal.org/xsd/imsloilox_v1p0_ilox_work_v1p0.xsd">
<identifier>myidentifier</identifier>
<description>
<metadata>
<schema>http://ltsc.ieee.org/xsd/LOM/imslode/ilox/work/main</schema>
<lom xmlns="http://www.mystuff.com" myatt="myval">
</lom>
</metadata>
</description>
</work>
Why, in the first case, do I have a generated prefix ns0 for the lom element and that I don't have one in the second case? Was it a bug in the oldest version of Xalan? Or is my XSLT ambiguous?
Regards,
Frederic Bergeron
|
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
RSS 2.0 |
|
Atom 0.3 |
|
|