请帮助我使用此代码,它会错误地显示"太多项目"在第3行:
<xsl:when test=".[@name='Measurement Pallete']">
<xsl:variable name="controlID" select=".[@name='Measurement Pallete']/Control/@id"/>
<xsl:variable name="control_ID" select="translate($controlID, ' ', '')"/>
<xsl:variable name="funcName" select="concat('ClassicTab', $control_ID)"/>
</xsl:when>
输入Xml的格式为
<window name="">
<Control id="" type=""/>
<Control id="" type=""/>
</window>
我希望变量funcname能够连接&#34; HomeTab&#34;在每个Control的名称之前,窗口名称为&#34; Measurement Pallete&#34;
完整样式表
<xsl:template match="/">
<xsl:for-each select="//window">
<xsl:result-document href="{concat('Windows/', @id, '.cs')}">
<xsl:choose>
<xsl:when test="current()[@name='Measurement Pallete']">
<xsl:variable name="controlID" select="current()[@name='Measurement Pallete']/Control/@id"/>
<xsl:variable name="control_ID" select="translate($controlID, ' ', '')"/>
<xsl:variable name="funcName" select="concat('ClassicTab', $control_ID)"/>
<xsl:call-template name="csfile1">
<xsl:with-param name="func_name" select="$funcName"/>
</xsl:call-template>
<xsl:call-template name="automationIDs1">
<xsl:with-param name="func_name" select="$funcName"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="csfile"/>
<xsl:call-template name="automationIDs"/>
</xsl:otherwise>
</xsl:choose>
</xsl:result-document>
</xsl:for-each>
</xsl:template>
答案 0 :(得分:1)
这是因为$controlID
会发出2个值(我假设这是xsl 2.0,因为xsl:result-document
),Control[1]/@id
和Control[2]/@id
,错误来自
<xsl:variable name="control_ID" select="translate($controlID, ' ', '')"/>
因为您不能将多个序列作为translate
的第一个参数。