【发布时间】:2013-10-17 12:56:22
【问题描述】:
给定以下 XML:
<element><![CDATA[<p>Look at this beautiful house: &#8962;</p>]]></element>
这个 XSL-T:
<xsl:template match='/element'>
<xsl:value-of select="." disable-output-escaping="yes" />
</xsl:template>
将其转换为:
<p>Look at this beautiful house: &#8962;</p>
所以 CDATA 被剥离了,但我如何将 &amp;#8962; 转换为正确的表示形式:⌂?
【问题讨论】:
-
由于 CDATA 部分作为转义机制存在,因此内部的标记应为
<p>Look at this beautiful house: &#8962;</p>。目前数据使用两种转义机制,并且禁用输出转义不会同时解决它们。 -
我理解这个问题,但不知道通过 XSL-T 解决它的好方法。
-
您需要处理文本并将序列
&amp;#8962;转换为相应的字符。使用 XSLT 2.0 和分析字符串或替换很容易,使用 XSLT 1.0 更加努力。如果无法更改输入格式,您只能这样做。 -
xslt 2 还是 1?在前者中,您可以只使用
replace(.,'amp;','')而不是.(但实际上您应该修复任何软件或用户正在生成损坏的输入。)