在我的XSL实现(2.0)中,我尝试使用以下语句删除所有空格&文本节点中的非破坏空格。它仅适用于空格,但不适用于ASCII代码为                              ​ 
等的非中断空格。我正在使用SAXON处理器执行。
当前的XSL代码:
translate(normalize-space($text-nodes[1]), ' ' , '' ))
如何删除它们?请分享你的想法。
答案 0 :(得分:8)
这些代码是Unicode,而不是ASCII(大部分),所以您应该使用replace函数和regex包含Unicode分隔符character class:
replace($text-nodes[1], '\p{Z}+', '')
更详细:
正则表达式\p{Z}+
匹配Unicode中“分隔符”类别中的一个或多个字符。 \p{}
是category escape序列,它匹配花括号中指定的类别中的单个字符。 Z
指定“分隔符”类别(包括各种空格)。 +
表示“将前面的正则表达式匹配一次或多次”。 replace
函数返回其第一个参数的版本,其中所有非重叠子字符串与其第二个参数匹配,并替换为其第三个参数。因此,这将返回$text-nodes[1]
的版本,其中所有分隔符字符序列都替换为空字符串,即已删除。