让我们考虑一个例子,
<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”。
答案 0 :(得分:1)
使用强>:
/*/*/h3/(span[not(*)] | span/a)/string()
这将生成每个span
的字符串值的序列,其中没有元素子元素,或者每个a
的字符串值都是span
的子元素({{{} 1}} element是span
元素的子元素,它是XML文档顶部元素的祖母。
BTW,上面也发生了纯粹的XPath 2.0表达式(XPath 2.0是XQuery的一个子集)。
答案 1 :(得分:0)
假设大写不重要(在XML中你有“laxman”,在你的问题“Laxman”中)并且你想获得<li>
s(否则,“和”不合理,但是如果你愿意,可以移动一些轴进/出谓词)。每一行都是另一种选择。
或:
/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"]]
第一个或另一个展览XQuery operator's set semantics。