我正在尝试多种不同的方法来创建可重复使用的模板,但遇到了问题:
<xsl:template name="translation">
<xsl:param name="labelName"/>
<xsl:value-of select="concat('/Response/Localisation/',$labelName,'/.')"/>
</xsl:template>
<xsl:template name="translation">
<xsl:param name="labelName"/>
<xsl:value-of select="/Response/Localisation/$labelName/."/>
</xsl:template>
我想像这样使用模板:
<xsl:call-template name="translation">
<xsl:with-param name="labelName" select="ReportsSelection" />
</xsl:call-template>
基本上,当我调用模板时,我希望从xml中获取值,在本例中为“Response / Localization / ReportsSelection”。
目前虽然我被赋予了文字字符串版本而不是xml中的值。
我不经常使用xslt。有什么想法吗?
答案 0 :(得分:2)
你可以这样做:
<xsl:call-template name="translation">
<xsl:with-param name="labelName" select="'ReportsSelection'"/>
</xsl:call-template>
有了这个:
<xsl:template name="translation">
<xsl:param name="labelName"/>
<xsl:value-of select="/Response/Localisation/*[local-name()=$labelName]"/>
</xsl:template>
答案 1 :(得分:2)
路径步骤中的变量似乎不允许,但您可以将变量用作文字字符串,并使用以下技巧:
<xsl:template name="translation">
<xsl:param name="labelName"/>
<xsl:value-of select="/Response/Localisation/*[name()=$labelName]/."/>
</xsl:template>
上面的xpath选择器匹配任何元素(*
),然后根据变量($labelName
)