9

私には次のようなものがあり、より良いアプローチがあるかどうかを確認しようとしています。私はそれがstarts-with/containsを使用して行われることを知っています。私はFirefox10でテストしていますが、これはxpath2.+を実装していると思います。

テストノードは

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

ワイルドカードを使用してfoo1/foo2ノードを取得できるようにする方法はありますか。

何かのようなもの

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

or 

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

つまり、IDが「foo」で始まり、追加の文字が含まれる「a」を教えてください...これにより、「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')]

W3CXPath仕様を参照してください。

于 2012-09-12T18:05:48.790 に答える