Dim*_*hev 22
该translate()函数接受两个字符串作为其第二个和第三个参数- 而不仅仅是两个字符.
translate(., $string1, '')
Run Code Online (Sandbox Code Playgroud)
生成一个字符串,该字符串是上下文(当前)节点的字符串值,其中任何出现的字符的出现都将$string1被删除.
因此你可以使用:
translate(expressionSelectingNode, "/\#%!@$()&", "")
Run Code Online (Sandbox Code Playgroud)
删除第二个参数中包含的任何字符.
当然,如果translate()函数在XSLT样式表中使用(或者通常在XML文档中),则某些特殊字符(例如<和)&必须分别作为<和转义&.
使用它是如此强大,可以删除一组未知字符:
想象一下,您想要从任何字符串中删除所有非数字字符.我们事先并不知道字符串中会出现什么字符,因此我们不能在第二个参数中枚举它们translate().但是我们仍然可以删除所有这些未知的字符:
translate(., translate(., '0123456789', ''), '')
Run Code Online (Sandbox Code Playgroud)
内部translate()产生的字符串没有任何数字.
外部translate()删除translate()原始字符串中的所有这些非数字字符(由内部找到) - 因此剩下的只是数字字符.
Mar*_*nen 17
您只需要translate(//foo/@value, '*\%!@$&', '')在纯文本中分别在XSLT样式表等XML文档中使用,您需要转义&符号<xsl:value-of select="translate(//foo/@value, '*\%!@$&', '')"/>.