2012-07-25 42 views
1
<list> 
    <head>Fruit</head> 
    <type>Consumables</type> 
    <item>Apple</item> 
    <item>Banana</item> 
    <item>Coffee</item> 
<list> 
<list> 
    <head>Airports</head> 
    <label>SFO</label> 
    <item>San Francisco</item> 
    <label>LHR</label> 
    <item>London</item> 
<list> 

比賽,其中<label>第一<item>之前出現的所有<list>節點的所有節點。上面的第一個列表不匹配;第二個會。的XPath其中一個孩子富子欄之前出現

我可以推測至少有一個<item>。它可能是唯一的孩子。

(XPath/XSLT 1.0)

回答

3

使用

/*/list[*[self::label or self::item][1][self::label]] 

這可以比使用反向軸更有效,因爲評價停止在的list第一發現兒童要麼是labelitem

+0

+1爲偉大的答案。我是xpath愛好者,我不能理解你的答案:(如果你提供一個簡短的解釋,這對我很有幫助,謝謝! – 2012-07-25 07:02:38

+0

這樣更好,現在我看到了自我軸的用法。回答: – JPM 2012-07-25 11:40:43

+0

@JPM:不客氣 – 2012-07-25 11:48:02

0

啊,我明白了。不要看轉發label和停止時得到item。請轉到第一個item,並使用preceding-sibling查看落後

match="list[item[1]/preceding-sibling::label]" 
相關問題