XSL - 删除不间断空格
在我的 XSL 实现 (2.0) 中,我尝试使用以下语句来删除所有空格和空格。文本节点内的不间断空格。它仅适用于空格,但不适用于 ASCII 代码为   的不间断空格。                             ​ 
等。我使用 SAXON 处理器来执行。
当前的 XSL 代码:
translate(normalize-space($text-nodes[1]), ' ' , '' ))
如何删除它们。请分享您的想法。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这些代码是 Unicode,而不是 ASCII(大部分),因此您可能应该使用 替换函数替换为正则表达式 包含 Unicode 分隔符字符类:
更详细地说:
正则表达式
\p{Z}+
匹配 Unicode 中“分隔符”类别中的一个或多个字符。\p{}
是类别转义 序列,与大括号内指定的类别中的单个字符匹配。Z
指定“分隔符”类别(包括各种空白)。+
表示“匹配前面的正则表达式一次或多次”。replace
函数返回其第一个参数的版本,其中与第二个参数匹配的所有非重叠子字符串都替换为第三个参数。因此,这将返回$text-nodes[1]
的版本,其中所有分隔符字符序列均替换为空字符串,即删除。Those codes are Unicode, not ASCII (for the most part), so you should probably use the replace function with a regex containing the Unicode separator character class:
In more detail:
The regex
\p{Z}+
matches one or more characters that are in the "separator" category in Unicode.\p{}
is the category escape sequence, which matches a single character in the category specified within the curly braces.Z
specifies the "separator" category (which includes various kinds of whitespace).+
means "match the preceding regex one or more times". Thereplace
function returns a version of its first argument with all non-overlapping substrings matching its second argument replaced with its third argument. So this returns a version of$text-nodes[1]
with all sequences of separator characters replaced with the empty string, i.e. removed.