2010-03-31 2 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 от < страницы>, где определенное значение присутствует в одном из < value> -tags. Идентификатор, который должен находиться в значении <>, хранится в этом поле: $ 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> 

Если это так, то мне нужна последний идентификатор, так что это означает, что если $ ITM/@ идентификатор соответствует значениям в более < page> 's, тогда мне нужно получить значение с последней страницы. I вышеупомянутый случай, который будет .

Надеюсь, это имеет смысл для вас, ребята. И, кстати, я работаю с CMS Umbraco, если это имеет какое-то значение.

С наилучшими пожеланиями, Ким

+0

Спасибо людям. На самом деле все вы дали мне правильный ответ. 1+ для всех вас :) –

ответ

3

Вы можете использовать этот

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

или даже это

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

OBTW: Литерал '1273', конечно, может быть заменен переменной. – Tomalak

1

моя версия:/данные/страница [ITMS/значения/значение/текст() = $ ITM/@ идентификатор] [последняя()]/@ идентификатор

Смежные вопросы