2012-04-07 9 views
29

次の非常に単純化された例を考えてみましょう。私はmノードの後に​​最初のk兄弟を検索することができますどのように指定されたノードが見つかった後に兄弟ノードを見つける

<n></n> 
<k></k> 
<m></m> 
<k></k> 

?基本的に、いくつかのノードを見つけて、そのノードから検索を続けます。

+1

@Neilとそのコメントの回答が消えたのはなぜですか? –

答えて

57

........それを試してみてください?基本的には、 のノードを見つけて、そのノードから検索を続けます。

<t> 
    <n></n> 
    <k></k> 
    <m></m> 
    <k></k> 
</t> 

次のXPath式

/*/m[1]/following-sibling::k[1] 

は、最初の最初のk次-兄弟を選択

我々は、以下の整形式のXML文書を持っていると仮定すると、 m XMLドキュメントの先頭要素の子。

+0

あまりにも複雑です。 –

+0

実際、昨日私は下院議員を削除したいと思っていましたが、サイトは24分後にそれが遅すぎたと私に言った。それが人生。 –

4

素敵な質問:私はmノードの後に​​最初のk兄弟を検索することができますどのように

<a> 
<n></n> 
<k></k> 
<m></m> 
<k></k> <==== 
<k></k> 
<m></m> 
<k></k> 
</a> 


    /a/k[. = preceding::m][1] 
+0

この回答は面白いですが、**現在のノード**からではなく、最初の "m"から "k"の後に**から始まります。 –

+0

また、 'preceding :: m'ビットはバックリファレンスですか?最初に 'm'を探す解決法よりもパフォーマンスが低いのではないでしょうか? (分かりません) – jpaugh

関連する問題