Ich verarbeite diese XML-Datei:XSLT fügt unnötige Namespaces hinzu, wie man sie los wird?
<z/>
dieses XSLT 2.0 Stylesheet:
<xsl:stylesheet
xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
xmlns = "http://www.w3.org/1999/xhtml"
xmlns:html = "http://www.w3.org/1999/xhtml"
xmlns:data = "http://portonvictor.org/ns/misc"
version = "2.0"
exclude-result-prefixes = "data html">
<xsl:template match="/">
<xsl:variable name="x">
<data:doc>
<xsl:copy-of select="*"/>
</data:doc>
</xsl:variable>
<xsl:copy-of select="$x/*/*"/>
</xsl:template>
</xsl:stylesheet>
Befehlszeile:
saxonb-xslt -xsl:error.xslt -s:error.xml
Die resultierende Ausgabe ist:
<?xml version="1.0" encoding="UTF-8"?><z xmlns:data="http://portonvictor.org/ns/misc"/>
Es enthält unnötig xmlns:data
Namensraum (auch wenn ich exclude-result-prefixes
habe). Was ist der einfache Weg, um solche unnötigen Namespaces loszuwerden?
Das obige Spielzeugbeispiel ist eine vereinfachte real code of my free program, wo ich eine Eingabe XHTML-Datei in mehreren Stufen verarbeiten, zuerst <data:doc>
Elemente erstellen und dann verarbeiten.
Ich habe versucht, mein XSLT-Skript mit 'copy-namespaces =" no "umzuschreiben, wo immer es sinnvoll erscheint. Das hat nicht geholfen. Bitte nehmen Sie an der Entwicklung dieses kostenlosen Dienstprogramms teil, das für die Community nützlich ist. – porton
Mein "realer Code" generiert überflüssige Namespaces, selbst wenn ich 'copy-namespaces =" no "' zu ** jedem * 'xsl: copy' und' xsl: copy-of' Element hinzufüge. – porton
Oh, es funktioniert, nur ich Idiotisch schrieb 'copy-namespaces =" yes "' anstelle von 'copy-namespaces =" no "' – porton