如果我查看 xslt 规范,似乎字符映射适用于整个文档,是否也可以在给定节点或模板中使用它?
示例:我有一个包含查找值的节点,但是当在另一个模板中使用它时,它们可能包含不能很好地与正则表达式配合使用的字符。现在我使用了一个效果很好的替换功能,但是在几个字符之后变得很难阅读或维护。所以如果我有这样的事情:
<xsl:variable name="myLookup" select="
replace(
replace(
replace(
replace(
string-join(/*/lookup/*, '|'),
'\[','\\['),
'\]','\\]'),
'\(','\\('),
'\)','\\)')
"/>
有没有办法实现下面这个虚构的例子?
<xsl:character-map name="escapechar">
<xsl:output-character character="[" string="\[" />
<xsl:output-character character="]" string="\]" />
<xsl:output-character character="(" string="\(" />
<xsl:output-character character=")" string="\)" />
</xsl:character-map>
<xsl:variable name="myLookup" select="string-join(/*/lookup/*, '|')" use-character-map="escapechar"/>
我知道这根本行不通,只是为了让我的请求有点视觉化。
任何想法 ?