1

例を考えてみましょう、

<li>
    <div id="comments-list-245667" class="comments yui-u">
        <h3><span class="fn n">Ram</span></h3>
    </div>
    <div id="comments-list-245687" class="comments yui-u">
        <h3><span class="fn n"><a href='http://www.xyz.com' rel='external nofollow' class='url url'>laxman</a></span></h3>
    </div>
 </li>

次に、「and」または「or」演算子を使用してノードから「Ram」と「laxman」の両方を取得する方法を説明します。

4

2 に答える 2

1

使用:

/*/*/h3/(span[not(*)] | span/a)/string()

spanこれにより、要素の子を持たないすべての文字列値のシーケンス、またはaa の子であるすべての文字列値のシーケンスが生成されますspan(span要素は要素の子であり、h3要素の最上位要素の孫です) XML ドキュメント。

ところで、上記は純粋な XPath 2.0 式でもあります(XPath 2.0 は XQuery のサブセットです)。

于 2012-06-12T04:02:27.837 に答える
0

大文字の使用は重要ではなく (XML では「laxman」、質問では「Laxman」)、<li>s を取得したいと仮定します (そうでない場合、「and」は合理的ではありませんが、必要に応じて、いくつかの軸ステップを移動します。述語のイン/アウト)。各行は代替です。

また:

/li[.//h3//*[lower-case(.) = ("ram", "laxman")]]
/li[.//h3//*[lower-case(.) = "ram"] or .//h3//*[lower-case(.) = "laxman"]]

と:

/li[.//h3//*[lower-case(.) = "ram"]][.//h3//*[lower-case(.) = "laxman"]]
/li[.//h3//*[lower-case(.) = "ram"] and .//h3//*[lower-case(.) = "laxman"]]

最初の or-alternative は、XQuery 演算子のセット セマンティクスを示しています。

于 2012-06-11T11:28:30.973 に答える