我有在当前XSL中定义和导入的变量列表。
$varA --> 10
$varB --> 20
$varC --> 30
在当前的XSL中,我动态得到'varA'或'varB'或'varC'的值并保留在名为'VarDynamic'的变量中 $ {$ VarDynamic}不是按预期工作。 我必须从另一个变量
传递动态变量名 <xsl:variable name="varA" select="10"></xsl:variable>
<xsl:variable name="varB" select="20"></xsl:variable>
<xsl:variable name="varC" select="30"></xsl:variable>
<xsl:import href="VariableList.xsl"/>
<xsl:template match="/">
<xsl:variable name="DynamicVar">
<xsl:choose>
<xsl:when test="/A">
<xsl:value-of select="'varA'"/>
</xsl:when>
<xsl:when test="/B">
<xsl:value-of select="'varB'"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'varC'"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<Result>
<xsl:value-ofselect="${$DynamicVar}"/>
</Result>
你能否就此提出建议。
答案 0 :(得分:3)
这里有一些严重的语法问题,否则它会起作用。试试这种方式:
<强> VariableList.xsl 强>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="varA" select="10"></xsl:variable>
<xsl:variable name="varB" select="20"></xsl:variable>
<xsl:variable name="varC" select="30"></xsl:variable>
</xsl:stylesheet>
<强> DynamicList.xsl 强>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="VariableList.xsl"/>
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:variable name="DynamicVar">
<xsl:choose>
<xsl:when test="/A">
<xsl:value-of select="$varA"/>
</xsl:when>
<xsl:when test="/B">
<xsl:value-of select="$varB"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$varC"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<Result>
<xsl:value-of select="$DynamicVar"/>
</Result>
</xsl:template>
</xsl:stylesheet>
如果必须通过间接方式进行,请尝试:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:variable name="DynamicVar">
<xsl:choose>
<xsl:when test="/A">
<xsl:value-of select="'varA'"/>
</xsl:when>
<xsl:when test="/B">
<xsl:value-of select="'varB'"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'varC'"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<Result>
<xsl:value-of select="document('VariableList.xsl')/xsl:stylesheet/xsl:variable[@name=$DynamicVar]/@select"/>
</Result>
</xsl:template>
</xsl:stylesheet>
请注意,此处不需要导入。实际上,VariableList.xsl文档可以是一个简单的XML文档。