9

我有以下内容,并试图看看是否有更好的方法。我知道它可以使用starts-with/contains来完成。我正在使用 Firefox 10 进行测试,我相信它实现了 xpath 2.+。

测试节点是

<a id="foo">
.
.
.
<a id="foo1">
.
<a id="foo2">

有没有办法使用通配符来获取 foo1/foo2 节点..

就像是

//a[@id =* 'foo'] 

or 

//a[contains(@id*,'foo')] 

也就是说,给我一个“a”,其中 id 以“foo”开头但有额外的字符......然后这将跳过第一个节点与“foo”

我以为我看过这方面的文章,但找不到!

我记得,文章指出 xpath 有一组运算符,可用于指定字符串中给定模式的开始/结束。

谢谢

4

2 回答 2

10

使用

//a[@id[starts-with(., 'foo') and string-length() > 3]]
于 2012-09-13T05:32:48.960 回答
5

不是通配符,但可能您仍然需要:

//a[(@id!='foo') and starts-with(@id,'foo')]

请参阅W3C XPath 规范

于 2012-09-12T18:05:48.790 回答