我正在尝试将参数传递给<xsl:call-template>
,
基本上是(languageTemp)的值
<xsl:param name="selectedBox">languageTemp</xsl:param>
我希望被传递到
<xsl:call-template name="$selectedBox" />
但它不起作用。它会在我手动输入时工作,但我的c#应用程序将从组合框中传递参数。所以它必须是动态的。我是否滥用参数和调用模板?
以下是我的XSLT代码的一部分。
<xsl:param name="selectedLanguage">Java</xsl:param>
<xsl:param name="selectedUse">Application</xsl:param>
<xsl:param name="selectedStandard">ECMA</xsl:param>
<xsl:param name="selectedBox">languageTemp</xsl:param>
<xsl:key name="language-by-use" match="language" use="purpose/intendedUse/@id" />
<xsl:key name="language-by-standard" match="language" use="standards/standard/@id" />
<xsl:template match="/">
<xsl:call-template name="$selectedBox"/>
</xsl:template>
答案 0 :(得分:0)
这是我使用的灵魂,而不是直接将参数传递给调用模板,我使用select,when语句在某些条件下调用模板。它与我的C#应用程序一起使用,从应用程序传递参数!
<?xml version="1.0"?><!-- DWXMLSource="lab06.xml" -->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:param name="selectedLanguage">Java</xsl:param>
<xsl:param name="selectedUse">Application</xsl:param>
<xsl:param name="selectedStandard">ECMA</xsl:param>
<xsl:param name="selectedBox">intendedUseTemp</xsl:param>
<xsl:key name="language-by-use" match="language" use="purpose/intendedUse/@id" />
<xsl:key name="language-by-standard" match="language" use="standards/standard/@id" />
<xsl:template match="/">
<xsl:choose>
<xsl:when test="$selectedBox = 'languageTemp'">
<xsl:call-template name="languageTemp" />
</xsl:when>
<xsl:when test="$selectedBox = 'intendedUseTemp'">
<xsl:call-template name="intendedUseTemp" />
</xsl:when>
<xsl:when test="$selectedBox = 'standardTemp'">
<xsl:call-template name="standardTemp" />
</xsl:when>
</xsl:choose>
</xsl:template>