为什么我不能将参数传递到xslt中的调用模板



我正试图将参数传递到<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>
感谢@MartinHonnen的建议。

这是我使用的灵魂,而不是将参数直接传递给调用模板,我使用了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>

最新更新