Rac*_*hel 4 xslt xslt-2.0 xslt-1.0
在我的XSL实现(2.0)中,我尝试使用下面的语句来删除文本节点中的所有空格和非空格.它仅适用于空间,但不适用于ASCII代码                              ​ 等的非破坏空间.我使用SAXON处理器执行.
当前的XSL代码:
translate(normalize-space($text-nodes[1]), ' ' , '' ))
Run Code Online (Sandbox Code Playgroud)
我怎样才能删除它们.请分享你的想法.
这些代码是Unicode,而不是ASCII(大多数情况下),因此您应该将replace函数与包含Unicode分隔符字符类的正则表达式一起使用:
replace($text-nodes[1], '\p{Z}+', '')
Run Code Online (Sandbox Code Playgroud)
更详细:
正则表达式\p{Z}+匹配Unicode中"分隔符"类别中的一个或多个字符.\p{}是类别转义序列,它匹配花括号内指定的类别中的单个字符.Z指定"分隔符"类别(包括各种空格).+表示"匹配前面的正则表达式一次或多次".该replace函数返回其第一个参数的版本,其中所有非重叠的子字符串与其第二个参数匹配,并替换为其第三个参数.因此,这将返回一个版本,$text-nodes[1]其中所有分隔符字符序列都替换为空字符串,即已删除.