2010-03-31 66 views
2

我有下面的XML:XSLT:獲取節點,在一個特定的值存在

<data> 
    <page id="1118"> 
     <itms> 
      <values> 
       <value>1104</value> 
      </values> 
     </itms> 
    </page> 
    <page id="1177"> 
     <itms> 
      <values> 
       <value>1273</value> 
       <value>1215</value> 
      </values> 
     </itms> 
    </page> 
</data> 

我需要從<頁面獲得@id>,其中一定值出現在<之一價值> - 標籤。需要在<值>中的id保留在此:$ itm/@ id

這意味着如果我的$ itm/@ id等於1273,我需要返回1177。我不太清楚如何實現這一點。

其實我可以有XML,看起來像這樣還有:

<data> 
    <page id="1118"> 
     <itms> 
      <values> 
       <value>1104</value> 
      </values> 
     </itms> 
    </page> 
    <page id="1177"> 
     <itms> 
      <values> 
       <value>1273</value> 
       <value>1215</value> 
      </values> 
     </itms> 
    </page> 
    <page id="1352"> 
     <itms> 
      <values> 
       <value>1242</value> 
       <value>1273</value> 
      </values> 
     </itms> 
    </page> 
</data> 

如果是這樣的話,我需要最新的ID,所以這意味着如果$ ITM/@ ID更<匹配值頁面「,那麼我需要從最新的頁面獲取值。我上面的案例將是。

希望這對你們有意義。順便說一句,我與Umbraco CMS合作,如果這有什麼不同。

最好的問候, 金

+0

謝謝大家。其實你們都給了我正確的答案。 1+給你們所有人:) – 2010-03-31 10:03:27

回答

3

您可以使用此

 
(/data/page[itms/values/value = 1273])[last()]/@id 

甚至是這個

 
(//value[.=1273])[last()]/ancestor::page[1]/@id 
+0

OBTW:文字'1273'當然可以用一個變量代替。 – Tomalak 2010-03-31 10:03:18

2

喜歡的東西page[itms/values/value=$itm/@id][last()]/@id

1

我的版本:/數據/頁[ITMS /價值/價值/文本()= $ ITM/@ ID] [最後()]/@ ID