2017-11-30 20 views
0

다음과 같은 요구 사항이 있습니다. 샘플 XML은 :XSLT 템플릿의 반복 루핑 번호

<root> 
    <bookseries> 
     <author/> 
     <version/> 
     <book> 
      <date>1</date> 
      <price>10</price> 
     </book> 
     <book> 
      <date>2</date> 
      <price>20</price> 
     </book> 
     <book> 
      <date>3</date> 
      <price>30</price> 
     </book> 
    </bookseries> 
</root> 

는 지금은 모든 요소에 템플릿을 적용 할. 는 내가 현재 내 템플릿에 뭐하는 거지 것은 : 현재이 방법을 사용하여

<xsl:template match="//book"> 
    <!--here I want to see which book element is being copied and also format its data. 
    I am not getting the current order number of template--> 
</xsl:template> 

, 나는 3 번 repitatively에만 첫 번째 책 요소 데이터를 얻을. 각 템플릿 요소 호출에있는 각 도서 요소 데이터에 액세스해야합니다. 어떻게해야합니까?

+4

그래서 게시 한 템플릿을 정확히 어디에 적용합니까? 템플릿 본문이 정확히 어떻게 보이나요? 본문 안의'book' 요소는 문맥 노드이므로'price'와 같은 상대적인 표현식을 사용하여 모든 책을 가격으로 접근하고'price '는 모든'price' 요소를 선택하지 않고'value-of' '그리고 XSLT 1은 문서에서 첫 번째'price' 요소 만 출력합니다. –

답변

-1

이 작업을 시도 할 수 있습니다 :

<xsl:template match="//book"> 
    <xsl:copy> 
     <!-- capturing child with different element name to show only result--> 
     <d><xsl:value-of select="date"/></d> 
     <p><xsl:value-of select="price"/></p> 
    </xsl:copy> 
</xsl:template> 

당신이이 경우에이 같은 현재 요소보다 전체 파일 평가자에서 실행, 당신이 거기 이름이 아닌 지혜 "//"로 아이를 캡처 템플릿 내부보다 템플릿과 일치하는 경우 @martin 이미 위의 주석에서 언급했다.