XSL - 删除不间断的空间

时间:2011-04-12 18:02:32

标签: xslt xslt-2.0 xslt-1.0

在我的XSL实现(2.0)中,我尝试使用以下语句删除所有空格&文本节点中的非破坏空格。它仅适用于空格,但不适用于ASCII代码为                              ​ 等的非中断空格。我正在使用SAXON处理器执行。

当前的XSL代码:

translate(normalize-space($text-nodes[1]),  ' ' , '' ))

如何删除它们?请分享你的想法。

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]的版本,其中所有分隔符字符序列都替换为空字符串,即已删除。