XPATH:替换所有其他空格

时间:2013-08-10 12:16:36

标签: xpath replace

我想用x替换所有其他(奇数?)空格。结果应该是:

  

axb axb axb axb axb

我尝试过类似的事情:

replace ("a b a b a b a b" , " " , "x")[position() mod 2 = 0]

- 但没有结果。

1 个答案:

答案 0 :(得分:1)

首先:fn:replace需要XPath 2.0(或XQuery)兼容的查询处理器。

您不能将fn:replace与这样的谓词一起使用。在XPath中没有类似数组的字符访问权限(就像你以前从例如C一样)。您可能也可以使用fn:tokenize和for循环来解决这个问题,但这会让事情变得相当复杂。

您的查询没有返回任何结果,因为只有一个结果(单个元素字符串序列),但谓词只返回每秒。


请改用正则表达式。此表达式与非空格(\S)和空格(\s)匹配,并在其间使用x的版本替换这些模式。最后的星形量词对于奇数个匹配组很重要(如您的示例所示)。

replace("a b a b a b a b" , "(\S+)\s+(\S+\s*)", "$1x$2")