2012-06-30 2 views
5

XSLT의 두 템플릿간에 변수를 전달하는 방법.XSLT의 두 템플릿 사이에서 변수를 전달하는 방법

변수 값이 평가중인 현재 노드에 의존하기 때문에 전역 변수를 사용할 수 없습니다. $ 홍보 - pos가 두 번째 템플릿에 액세스 할 수 없습니다로

<xsl:template match="product"> 
<xsl:variable name="pr-pos" select="count(./preceding-sibling::product)+1"/> 
.. 
.. 
.. 
<xsl:apply-templates select="countries/country"/> 
</xsl:template> 

<xsl:template match="countries/country"> 
<tr id="country-id"> 
    <td><a href="#" class="action" id="{concat('a-',$pr-pos)}">+</a></td> 
.. 
.. 

이 오류를 제공합니다 :

내가 종류의 XSLT을 말해봐.

변수 pr-pos '값을 다른 템플릿에 어떻게 전달합니까? 어떻게해야합니까?

+0

실제로 변수를 전달할 필요는 없습니다. '$ pr-pos'의 값은'country' 템플릿 내에서 식별 할 수 있습니다. – Utkanos

+0

모든 프로그래밍 언어 (대부분)는 정보를 다른 실행 단위에 전달하는 방법을 가지고 있으며이를 수행하는 방법을 학습하는 것은 기본 요소 중 하나입니다. 이 질문은 JavaScript에서 두 함수 사이에 변수를 전달하는 방법, 또는 "try a function"{var i = 5; b();} 함수 b() {alert (i); }'하지만'i'는 두 번째 함수에서 접근 할 수 없습니다. " –

+0

@ 토라자 부로 : 저는 Google에서이 작업을 수행하는 방법을 설명하는 유용하지 못했습니다. 왜 그런지 알지는 못했지만 사람들이 질문을 던져서 왜 StackOverflow에서 계정을 사용 중지하지 않았습니까? 검색 구글과 당신이 w3 설명서 이외의 다른 좋은 문서를 찾으십시오. – Harshdeep

답변

10
<xsl:template match="product"> 
    <xsl:variable name="pr-pos" select="count(./preceding-sibling::product)+1"/> 
    .. 
    .. 
    .. 
    <xsl:apply-templates select="countries/country"> 
     <xsl:with-param name="pr-pos" select="$pr-pos" /> 
    </xsl:apply-templates> 
</xsl:template> 

<xsl:template match="countries/country"> 
    <xsl:param name="pr-pos" /> 
    <tr id="country-id"> 
     <td><a href="#" class="action" id="{concat('a-',$pr-pos)}">+</a></td> 
     .. 
     .. 
+0

StackOverflow에서 대답을 확인하기 전에 좀 더 검색하고 똑같은 일을했습니다. 그럼 당신의 도움에 너무 감사합니다 :) – Harshdeep

관련 문제