2011-03-04 88 views
0

我想創建一個XPath查詢,該查詢返回以下XML的「作業」爲「Actor」,其「順序」介於「0」和「4」之間的演員。我發現很難創建一個同時執行這兩個操作的查詢。與屬性相關的XPath搜索

<cast> 
    <person name="David Silverman" character="" job="Director" order="0"/> 
    <person name="James L. Brooks" character="" job="Author" order="0"/> 
    <person name="Dan Castellaneta" character="Homer J. Simpson" job="Actor" order="0"/> 
    <person name="Julie Kavner" character="Marge Simpson" job="Actor" order="1"/> 
    <person name="Nancy Cartwright" character="Bart Simpson" job="Actor" order="2"/> 
    <person name="Yeardley Smith" character="Lisa Simpson" job="Actor" order="3"/> 
    <person name="Dan Castellaneta" character="Krusty the Clown" job="Actor" order="4"/> 
    <person name="Hank Azaria" character="Moe Szyslak" job="Actor" order="5"/> 
    <person name="Dan Castellaneta" character="Apu Nahasapeemapetilon" job="Actor" order="6"/> 
</cast> 

回答

3
cast/person[@job="Actor" and @order >= 0 and @order <= 3] 

返回你想要的四個Simpsons。

+0

謝謝我會試一試。 – RonanC 2011-03-04 09:21:45

+0

這工作很簡單,我覺得很愚蠢。謝謝一堆。很好的幫助 – RonanC 2011-03-04 09:24:35

0

您可以使用//cast/person[@job='Actor' and position()<3]

+0

非常感謝您的及時響應。我知道使用@job來訪問作業屬性,但我想知道是否可以同時指定[@order> ='0'和@order <='4']的進一步約束條件時間在單個查詢中指定[@job ='Actor'] – RonanC 2011-03-04 09:19:52

+0

@ user644347我是XPath新手,我注意到其他兩個解決方案使用'order'而不是'position',這導致我相信我已經使用不太正確的解決方案。任何人向我解釋?謝謝。 – alex 2011-03-04 09:33:33

0

您應該可以合併您的謂詞//cast/person[@job='Actor' and @order>=0 and @order<=3]