我想选择所有文字并进行搜索和替换 我想把所有的破灭变成不间断的破折号。
我正在使用this template进行搜索并替换部分,
现在我只需要通过它运行所有文本..
答案 0 :(得分:3)
我不知道“非破坏性破折号”是什么意思,但这是一个简单的解决方案:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="vRep" select="'—'"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="text()">
<xsl:value-of select="translate(.,'-', $vRep)"/>
</xsl:template>
</xsl:stylesheet>
当对任何XML文档应用此转换时,结果是同一文档,其中任何'-'
被指定为全局参数$ vRep 的值替换。
例如,应用于此XML文档时:
<a>
<b>Hi - hi</b>
- - -
<c>
<d>Wow... - cool</d>
</c>
- - -
</a>
结果是:
<a>
<b>Hi — hi</b>
— — —
<c><d>Wow... — cool</d></c>
— — —
</a>
解释:使用标识规则,通过匹配任何文本节点的模板覆盖,并将其中的任何'-'
字符转换为$vRep
中包含的字符 - 使用标准XPath函数translate()
。