给定一个值为:
<xml_element>Distrib = SU & Prem &lt;&gt; 0</xml_element>
我需要转弯&lt;
or &gt;
into <
or >
因为下游应用程序需要在整个 XML 文档中采用这种格式。我也需要这个来引用和撇号。我正在尝试 XSLT 2.0 中的字符映射。
<xsl:character-map name="specialchar">
<xsl:output-character character="'" string="&apos;" />
<xsl:output-character character=""" string="&quot;" />
<xsl:output-character character=">" string="&gt;" />
</xsl:character-map>
The <xsl:character-map> http://www.w3.org/TR/xslt20/#character-maps指令可用于序列化单个字符到任何字符串。然而,这个问题需要多个字符(一个 & 符号后跟另一个要替换的字符)。
<xsl:character-map>
不能用来解决此类问题。
这是这个问题的解决方案,使用 XPath 2.0replace()
功能:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="text()">
<xsl:value-of select=
'replace(
replace(
replace(., "&lt;", "<"),
"&gt;",
">"
),
"&apos;",
"'"
)
'/>
</xsl:template>
</xsl:stylesheet>
当此转换应用于以下 XML 文档时:
<xml_element>Distrib = SU & &apos;Prem &lt;&gt; 0</xml_element>
产生了想要的结果:
<xml_element>Distrib = SU & 'Prem <> 0</xml_element>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)