2017-10-13 10 views
0

내가 XSL로 문제를 다음하여 발생할 예상 할 때 : 나는 다른 XSL 파일에 의해 사용되는 템플릿을 기존의 다음 한XSL : 대한-각각 하나 개의 노드 만

을 :

<xsl:template name="strength"> 
    <xsl:call-template name="show-strength"> 
     <xsl:with-param name="medStrengthUnit1" 
         select="epsos:numerator/@unit"/> 
     <xsl:with-param name="medStrengthUnit2" 
         select="epsos:denominator/@unit"/> 
     <xsl:with-param name="medStrengthValue1" 
         select="translate(epsos:numerator/@value, '.', ',')"/> 
     <xsl:with-param name="medStrengthValue2" 
         select="translate(epsos:denominator/@value, '.', ',')"/> 
     <xsl:with-param name="medStrength1" 
         select="epsos:numerator"/> 
     <xsl:with-param name="medStrength2" 
         select="epsos:denominator"/> 
    </xsl:call-template> 
</xsl:template> 

은 지금이 전화를 할

<xsl:for-each select="$strength"> 
     <xsl:call-template name="strength"/> 
</xsl:for-each> 
: 템플릿,하지만 난 다음 호출을 사용합니다 (다른 스타일 시트에 의해 사용되기 때문에) 지금은 방법에

을 매개 변수를 추가 할 수있는 가능성이없는 강도가 PARAM 인과

는 다른 방법에서 전달 :

<xsl:with-param name="strength" 
       select="epsos:quantity"/> 

이가 작동,하지만 난 단 하나의 힘이 알고, 내가가 xsl 사용하고자하지 않습니다를위한 각각의 경우를 나는 항상 정확히 1 강점이 있어야한다는 것을 알고 있습니다. 당신은 설정 상황에 맞는 항목을 요구하는 대신 매개 변수를 받아 템플릿을 변경할 수 있습니다

//for ($strength) 
<xsl:call-template name="strength"/> 
+2

'for-each'또는'apply-templates'가 필요하기 때문에 문맥 노드를'$ strength' 변수로 바꾸고 싶습니다. –

+1

"강도"템플릿을 변경할 수 있습니까? 하나의 가능성은'

+1

또 다른 가능성은' ...'을 사용하여 템플릿에'match' 속성을 추가하는 것입니다. 'for-each/call-template' 대신''를 사용하십시오. 템플릿을 사용하고자하는 요소 유형에'match'를 적용해야합니다. –

답변

0

:

단지 같은 경로에 대한 템플릿을 호출 할 수있는 방법이 있습니까. 그러나 당신은 그것을하고 싶지 않습니다.

xsl : for-each를 호출하여 컨텍스트 항목을 설정할 수 있습니다. 그러나 당신은 그것을하고 싶지 않습니다.

컨텍스트 항목을 설정할 필요가없는 리팩터링 템플릿 (또는 함수)에 코드를 복사하여 붙여 넣을 수 있습니다. 그러나 당신은 그것을하고 싶지 않습니다.

그래서 원하지 않는 일을해야 할 것처럼 보입니다. 프로그래밍에 오신 것을 환영합니다.