感谢@MartinHonnen的建议。
我正试图将参数传递到<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>
这是我使用的灵魂,而不是将参数直接传递给调用模板,我使用了select,当语句在特定条件下调用模板时。它与我的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>