XSLT wird auf ein XML-Dokument mit dem Attribut xmlns angewendet
Ich wende ein XSLT-Stylesheet auf die folgende XML-Datei an:
<top xmlns="http://www.foo.com/bar">
<elementA />
<elementB />
<contents>
<contentitem>
<id>3</id>
<moretags1 />
<moretags2 />
</contentitem>
<contentitem>
<id>2</id>
<moretags1 />
<moretags2 />
</contentitem>
<contentitem>
<id>1</id>
<moretags1 />
<moretags2 />
</contentitem>
</contents>
</top>
Hier ist meine aktuelle XSLT-Datei (führt eine einfache Sortierung durch):
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:doc="http://www.foo.com/bar">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<!-- -->
<xsl:strip-space elements="*"/>
<!-- -->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<!-- -->
<xsl:template match="contents">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates select="contentitem">
<xsl:sort select="id" data-type="number"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Das Problem ist, dass ich nicht genau weiß, wie das Namespace-Präfix 'doc:' mit den Tags xsl: template und xsl: apply-templates verwendet wird.
Derzeit wird das XML-Dokument unverändert kopiert, daher wird meines Erachtens der erste xsl: template-Block angewendet. Da die Elemente jedoch unsortiert sind, liegt das Problem meines Erachtens in der zweiten xsl: -Vorlage.
Ich sollte beachten, dass die Umwandlung ordnungsgemäß funktioniert, wenn ich die xmlns-Attribute aus beiden Dateien entferne.
Irgendwelche Vorschläge?
(Frage basiert aufdieses Beispiel)