XSLT에서 선택한 내부에서 정의 된 변수 재사용 변수 재사용
문제
나는 이것과 유사한 코드가 있습니다.
<xsl:choose>
<xsl:when test="some_test">
<xsl:value-of select="Something" />
You are:
<xsl:variable name="age">12</xsl:variable>
years
</xsl:when>
</xsl:choose>
내 문제는 선택 이외의 변수 $ 연령을 사용하고 싶다는 것입니다. 어떻게해야하나요?
비슷한 문제는 XSLT 파일에 여러 템플릿이 있고 그 중 하나가 기본 템플릿이라는 것입니다. 이 하나:
<xsl:template match="/">
</xsl:template>
이 템플릿 내부에서 다른 템플릿을 호출하고 다시 다른 템플릿의 일부 변수를 사용하고 싶습니다.
예를 들어이 코드가있는 경우 :
<xsl:template match="/">
<xsl:call-template name="search">
</xsl:call-template>
</xsl:template>
<xsl:template name="search">
<xsl:variable name="searchVar">Something...</xsl:variable>
</xsl:template>
그런 다음 메인 테em 플레이트 내부에서 $ SearchVar를 사용하고 싶습니다.
그것은 내가 생각하는 것과 같은 종류의 문제이지만, 나는 이것을 알아낼 수없는 것 같습니다.
그리고 나는 Umbraco를 내 CMS로 실행합니다. :)
여러분 중 일부가 답을 갖기를 바랍니다.
감사합니다 - 김
해결책
#1 : 변수는 부모 요소 내에서만 유효합니다. 즉, 논리를 넣어야합니다 내부에 "주변"대신 변수 :
<xsl:variable name="var">
<xsl:choose>
<xsl:when test="some_test">
<xsl:text>HEY!</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>SEE YA!</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
#2 : 매개 변수를 사용하여 값을 템플릿으로 전송합니다.
<xsl:template match="/">
<xsl:variable name="var" select="'something'" />
<!-- params work for named templates.. -->
<xsl:call-template name="search">
<xsl:with-param name="p" select="$var" />
</xsl:call-template>
<!-- ...and for normal templates as well -->
<xsl:apply-templates select="xpath/to/nodes">
<xsl:with-param name="p" select="$var" />
</xsl:apply-templates>
</xsl:template>
<!-- named template -->
<xsl:template name="search">
<xsl:param name="p" />
<!-- does stuff with $p -->
</xsl:template>
<-- normal template -->
<xsl:template match="nodes">
<xsl:param name="p" />
<!-- does stuff with $p -->
</xsl:template>
값을 호출 템플릿으로 전송하려면 위의 사항을 결합하십시오.
<xsl:template match="/">
<xsl:variable name="var">
<xsl:call-template name="age">
<xsl:with-param name="num" select="28" />
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="$var" />
</xsl:template>
<xsl:template name="age">
<xsl:param name="num" />
<xsl:value-of select="concat('You are ', $num, ' years yold!')" />
</xsl:template>
다른 팁
살펴보십시오 XSL : PARAM.
편집하다: 테스트되지 않았지만 작동 할 수 있습니다.
<xsl:param name="var">
<xsl:choose>
<xsl:when test="some_test">
<xsl:value-of select="string('HEY!')" />
</xsl:when>
</xsl:choose>
</xsl:param>
제휴하지 않습니다 StackOverflow