我希望生成一个通用代码来解析XSLT中的特殊字符 [英] I wish to generate a generic code for parsing special characters in xslt
本文介绍了我希望生成一个通用代码来解析XSLT中的特殊字符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我希望生成一个通用代码来解析XSLT中的特殊字符。 我希望将在XML文档的任何节点中找到的所有特殊字符替换为我选择的符号。
例如特殊字符="&;#174";也"&;#169";等等
我尝试了类似以下内容的操作,但没有任何反应。
<xsl:template match="*">
<xsl:choose>
<xsl:when test="contains(.,'&ndash;')">
<xsl:value-of select="replace(.,'&ndash;','-')" />
</xsl:when>
</xsl:choose>
</xsl:template>
字符输出功能为:
<xsl:output-character character=" " string="&nbsp;" />
我希望做相反的事情,即用字符替换字符串(将&nbsp;
替换为 
)
推荐答案
如果可以使用XSLT2.0,请使用字符映射。您可以找到规范的相关部分here。
将字符映射的用法定义为样式表的顶级元素:
<xsl:output use-character-maps="math-ops"/>
然后,确定您希望在序列化过程中使用您选择的字符串替换哪些字符。字符映射由output-character
元素组成,其中@character
属性表示要替换的字符,@string
表示要替换的字符。
下面的示例确保正确序列化数学运算符(即,为简单起见,它输出大写字母)。
<xsl:character-map name="math-ops">
<xsl:output-character character="Σ" string="SIGMA HERE"/><!--Unicode Character 'GREEK CAPITAL LETTER SIGMA' (U+03A3)-->
<xsl:output-character character="Π" string="PI HERE"/><!--Unicode Character 'GREEK CAPITAL LETTER PI' (U+03A0)-->
<xsl:output-character character="✓" string="CHECK MARK"/><!--Unicode Character 'CHECK MARK' (U+2713)-->
</xsl:character-map>
请注意,这只会影响实际的序列化,而不会影响您使用xsl:result-document
生成的输出。
若要将字符映射也应用于此输出,请在相关result-document
元素上指定use-character-maps
属性:
<xsl:result-document href="helloworld.xml" use-character-maps="math-ops">
<hello>
<world/>
</hello>
</xsl:result-document>
这篇关于我希望生成一个通用代码来解析XSLT中的特殊字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文