this에 따르면 match
에 대한 XPath 식의 매개 변수를 사용할 수 있어야합니다. 그러나 xsl:template
의 xsl:param
을 동일한 템플릿에 사용하면 작동하지 않는 것 같습니다.XSLT 2.0의 일치하는 XPath 표현식에서 템플릿 매개 변수를 사용할 수 없습니까?
<?xml version="1.0" encoding="UTF-8"?>
<myRoot>
<myNode myAttribute="3">
<myChildAttribute myChildAttribute="a" />
</myNode>
<myNode myAttribute="2">
<myChildAttribute myChildAttribute="b" />
</myNode>
<myNode myAttribute="1" />
</myRoot>
과 같은 내 XSL 파일을 다음과 같이
내 XML 파일을 찾습니다. SAXON 9HE으로 실행할 때
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:template match="myRoot">
<xsl:apply-templates select="myNode">
<xsl:sort select="@myAttribute" />
<xsl:with-param name="myParam" select="max(myNode/@myAttribute)" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="myNode[node() and @myAttribute = $myParam]">
<xsl:param name="myParam" />
<xsl:for-each select="myChildAttribute">
INSERT INTO a(b) VALUES ('<xsl:value-of select="@myChildAttribute" />');
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
불행하게도 같은 템플릿의 일치 XPath 식에 템플릿의 매개 변수를 사용할 수 없습니다 다음과 같은 오류
XPST0008: Variable myParam has not been declared (or its declaration is not in scope)
로 끝! ?
감사합니다. Dimitre! 이제 나에게 분명하다. 'xsl : sort'는 변환의 이전 버전에서 남아 있습니다. 힌트를 가져 주셔서 감사합니다, 나는 그것을 제거합니다. – Jagger