2011-02-28 85 views
1

匹配函数针对字符串(其中结果是字符串类型的单个项目)起作用。寻找使用XPath的方法来执行相同的正则表达式匹配,但针对项目(结果是一系列节点/项目)?Xpath匹配againt项目

+0

如果您正在讨论XPath 2.0的结果['matches()'](http://www.w3.org/TR/xquery-operators /#func-matches)函数评估,那么你错了:评估结果是'xs:boolean'的一个实例。 – 2011-02-28 21:12:23

+0

@Alejandro我认为他的意思是说,当'/ foo/bar'的结果是一个字符串时,你可以'匹配'(/ foo/bar,'regexp')'。 (或者更确切地说,只有一个元素的列表)。 – biziclop 2011-02-28 21:21:58

+0

@biziclop:对此有一些限制:不是单例序列不能转换为xs:string,它会产生错误。一个好的XSLT处理器也可能会产生静态错误。 – 2011-02-28 21:28:48

回答

2
//foo/bar[matches(., 'regexp')] 

这是你在找什么或我误解你的问题。这将根据每个节点的字符串值过滤//foo/bar节点列表。 (元素的字符串值是其中所有文本节点的串联。)

+0

确实....有趣的只是测试了相同的东西,但与火柴(文本(),''),但感谢您的帮助! – 2011-02-28 21:11:56

+1

@Matthew Young虽然与text()有一点区别,但它返回该元素中所有文本节点的列表。所以如果你有' text1 text2','matches()'会报错。 – biziclop 2011-02-28 21:14:50

+0

不错....感谢您的提示! – 2011-03-01 14:14:49