2012-04-20 66 views
93

可以使用什麼XPath選擇具有指定名稱屬性的任何類別,以及具有指定值的任何子節點作者。具有多個條件的XPath

我已經試過下面沒有成功路徑的不同變化:

//quotes/category[@name='Sport' and author="James Small"] 

的XML:

<?xml version="1.0" encoding="utf-8"?> 
<quotes> 
    <category name="Sport"> 
    <author>James Small<quote date="09/02/1985">Quote One</quote><quote    date="11/02/1925">Quote nine</quote></author> 
    </category> 
    <category name="Music"> 
    <author>Stephen Swann 
<quote date="04/08/1972">Quote eleven</quote></author> 
    </category> 
    </quotes> 

回答

154

嘗試:
//category[@name='Sport' and ./author/text()='James Small']

+0

對於追隨者,錯誤消息「Expected」,但找到:&&「意味着」使用和關鍵字而不是&&「(因爲此答案指定) – rogerdpack 2016-12-15 21:56:03

11

問題尚不清楚,但我理解你需要選擇一個具有名稱屬性的類別,並且應該有指定值的子作者,正確我,如果我撥錯

這裏是一個XPath的

//category[@name='Required value'][./author[contains(.,'Required value')]] 
e.g 
//category[@name='Sport'][./author[contains(.,'James Small')]] 
15

使用

/category[@name='Sport' and author/text()[1]='James Small'] 

或使用:

/category[@name='Sport' and author[starts-with(.,'James Small')]] 

這是一個很好的規則,以儘量避免儘可能使用僞操作符//,因爲它的評估ca n通常非常緩慢。

另外:

./somename 

相當於:

somename 

因此建議使用後者。