Ich habe die folgende XML (Datei: emcsh.xml
):gesamte Knoten eines XML ohne 'xmlns = ""'
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="tohtml.xsl"?>
...
<root>
<el>
<d>Some text with <kbd>code</kbd> and <em>prose</em>.</d>
</el>
</root>
mit der folgenden Transformation (file: tohtml.xsl
):
<?xml version='1.0' encoding='utf-8'?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml">
...
<xsl:template match="d">
<xsl:copy-of select="node() | @*"/>
</xsl:template>
...
<xsl:if test="d">
<div class="tipper">
<xsl:apply-templates select="d"/>
</div>
</xsl:if>
Nach Dateien mit der folgenden Rohrverarbeitung:
$ xsltproc tohtml.xsl emcsh.xml > emcsh.html && xmllint --format emcsh.html -o emcsh.html
der resultierende String ist:
...
<div class="tipper">
Some text with <kbd xmlns="">code</kbd> and <em xmlns="">prose</em>.
</div>
...
Fast perfekt, aber wie kann ich tun, um die Transformation ohne das leere Attribut xmlns=""
?
Danke.
Bitte zeigen Sie uns minimal, aber vollständige Proben uns zu erlauben, das Problem zu reproduzieren, müssen wir alle Namespace-Deklarationen in dem Eingang und dem Stylesheet sehen. –
Im Allgemeinen diese Deklarationen 'xmlns =" "passieren, wenn Sie ein Element in keinen Namespace (wie Ihr' d' Element aus der Eingabe) in ein Element in einem bestimmten Namespace (ich denke, Ihr 'div' Element wird in einige eingefügt) Namespace durch eine Namespace-Deklaration im Stylesheet, die Sie nicht angezeigt haben). Um zu beheben, dass Sie entscheiden müssen, ob Sie alle Elemente in keinem Namespace oder in einem bestimmten Namespace haben möchten, müssen Sie Ihren Namespace hinzufügen, wenn Sie möchten, dass ein Namespace und Ihr Eingabeelement keinen Namespace haben. –
@MartinHonnen Verbesserte Beispiele. –