2012-05-25 2 views
3

XSLT에 익숙하지 않아서이 문제를 해결하는 방법을 모르겠습니다.XSLT transversing

난 괜찮아 인의 Types을 통해 루프에 xsl:for-each를 사용하고 있지만 그 루프 (유형)에서 오전 때 내가 어떻게 TypeCode의 속성을 사용하여 Rate을 선택할 것인가? 그 선택이 내가 그 당시에 있었던 for-each의 범위를 가지고 있다고 생각하는 것이 옳은가? 많은 가방 요소가있을 수 있습니다.

<Bags> 
<Bag> 
    <Types> 
     <Type TypeCode="DBL"> 
      <Description Name="BLAH"> 
       <Text>BLAH</Text> 
       <Image/> 
      </Description> 
     </Type> 
     <Type TypeCode="JRS"> 
      <Description Name="BLAH"> 
       <Text>BLAH BLAH</Text> 
       <Image/> 
      </Description> 
     </Type> 
    </Types> 
    <Plans> 
     <Plan PlanCode="DISC" PlanName="Best rate"> 
      <Description Name="Best rate"> 
       <Text>Best available rate</Text> 
      </Description> 
     </Plan> 
     <Plan PlanCode="NOCC" PlanName="No CC Required"> 
      <Description Name="No CC Required"> 
       <Text>Rate- No CC Required</Text> 
      </Description> 
     </Plan> 
    </Plans> 
    <Rates> 
     <Rate TypeCode="DBL" PlanCode="DISC"> 
      <Rates> 
       <Rate> 
        <Base AmountBeforeTax="0" CurrencyCode="EUR"/> 
       </Rate> 
      </Rates> 
     </Rate> 
     <Rate TypeCode="JRS" PlanCode="DISC"> 
      <Rates> 
       <Rate> 
        <Base AmountBeforeTax="0" CurrencyCode="EUR"/> 
       </Rate> 
      </Rates> 
     </Rate> 
    </Rates> 
</Bag> 
    </Bags> 

답변

1

맞죠 선택 생각에 단지 내가 그 시간에 오전에-각 의 범위가? 정말로

하지, XPath 식을 상대가 현재 노드를 평가하는 경우, 또는 될 수가있는 경우는 현재의 문서를 평가 (/로 시작)의 절대 마디.

상대적 XPath 표현을 사용하는 경우에도 현재 노드가 루트 인 하위 트리 외부의 노드를 선택할 수 있습니다. 역방향 축 또는 following:: 또는 following-sibling:: 축을 사용하면됩니다.

사용가 :

ancestor::Bag/Rates/Rate[@TypeCode = current()/@TypeCode] 

이 가방 달리 약간 다른 표현을 사용할 필요가 중첩 될 수 없습니다 있다고 가정합니다

ancestor::Bag[1]/Rates/Rate[@TypeCode = current()/@TypeCode] 
+0

건배를 그 빠른 응답, – DazzlaJ

+0

@DazzlaJ 감사 : 나는이 대답이 당신에게 유용했기 때문에 기쁘다. 답변 옆에있는 체크 표시를 클릭하여 동의 할 수 있습니까? –

+0

Dimitre가 실제로이 XSLT 항목을 "가져옵니다"라는 사실을 시간이 지남에 알았습니다. 좋은 답변을 제공합니다. 그의 답변 목록을 확인하십시오! –