2012-06-11 55 views
1

让我们考虑一个例子,使用“与”,“或”运营商在XQuery中

<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> 

现在如何让这两个“拉姆”,并使用从节点“拉克斯曼”“和”或“或者”运营商。

回答

1

使用

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

这将产生每span的字符串值的序列不具有元素子或每a的是一个span和(在span元素的子为h3元素的子元素,即XML文档的顶部元件的一个大孩子。

顺便说一句,上面的情况也是一个纯粹的XPath 2.0表达式(XPath 2.0是XQuery的一个子集)。

0

假设大写不重要(在XML中,你有“laxman”,在你的问题“Laxman”中),并且你想得到<li>(否则,“和”将不合理,但如果你想,移动/移出谓词中的一些轴步骤)。每条线都是另一种选择。

或:

/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

+0

感谢您的回答,事实上我学到了一个新概念,但是我需要“Ram”[在h3标签]和“laxman”[在// h3 //标签] – Siddhu

+0

我更新了我的回答以推广它。如果您确实需要'''-tag,我相信您将能够自行修改查询。 –