2010-03-31 3 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에 보관됩니다.

이것은 $ mym/@ 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는 < 더의 값과 일치하는 경우 page>의 경우, 최신 페이지의 값을 가져와야합니다. 위의 경우는 입니다.

희망이 있으시길 바랍니다. 그런데 Umbraco CMS와는 다른 점이 있으면 작업합니다.

최고 감사합니다, page[itms/values/value=$itm/@id][last()]/@id 같은 김

+0

감사합니다. 사실 모든 사람들이 나에게 올바른 답을주었습니다. 1 + 당신 모두에게 : –

답변

3

 
(/data/page[itms/values/value = 1273])[last()]/@id 
을 사용할 수 있습니다

또는 심지어

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

OBTW : 문자 그대로 '1273'은 변수로 대체 될 수 있습니다. – Tomalak

1

내 버전 :/데이터/페이지 [아이튠즈 뮤직 스토어/값/값/텍스트() = $ ITM/ID는 @] [마지막()]/@ 아이디