2012-06-11 51 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,我相信您將能夠自行修改查詢。 –