Wenn Sie es serialisiert ist immer (falls unterstützt) die disable-output-escaping Hack finden http://xsltransform.hikmatu.com/nbUY4kh die verwandelt
<root>
<foo>a & b</foo>
<bar>a & b</bar>
</root>
selektiv in
<root>
<foo>a & b</foo>
<bar>a & b</bar>
</root>
von <xsl:value-of select="." disable-output-escaping="yes"/>
mit in die Vorlage foo/text()
passend :
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="foo/text()">
<xsl:value-of select="." disable-output-escaping="yes"/>
</xsl:template>
</xsl:transform>
Um dieselbe selektive Ersetzung mit einer Zeichentabelle zu erreichen, können Sie das unter foo
text()
untergeordnete Zeichen (oder gegebenenfalls Abkömmlinge) durch ein Zeichen ersetzen, das an keiner anderen Stelle in Ihrem Dokument verwendet wird. Verwenden Sie dann die Karte, um es einem nichtskapierten kaufmännischen Und-Zeichen zuzuordnen:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output use-character-maps="doe"/>
<xsl:character-map name="doe">
<xsl:output-character character="«" string="&"/>
</xsl:character-map>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="foo/text()">
<xsl:value-of select="replace(., '&', '«')"/>
</xsl:template>
</xsl:transform>
auf diese Weise
<root>
<foo>a & b</foo>
<bar>a & b</bar>
</root>
auch
<root>
<foo>a & b</foo>
<bar>a & b</bar>
</root>
transformiert wird
sehenfür eine Probe.
Was ist das Ergebnisformat, auch XML oder HTML oder einfacher Text? Da Sie scheinbar 'ersetzen 'haben, benutzen Sie mindestens einen XSLT 2 Prozessor, also prüfen Sie, ob Zeichenkarten helfen https://www.w3.org/TR/xslt-30/#character-maps –
Endergebnis ist * .html Datei mit 'http: // www.w3.org/1999/xhtml' Namensraum, aber ich bin gezwungen, XML-Ausgabemethode aus anderen Gründen zu verwenden –