如何从模板中覆盖XSLT中的全局变量?

时间:2016-06-02 13:14:00

标签: xml xslt

我无法从模板覆盖XSLT中的全局变量。

全局变量声明:

<xsl:variable name="abc" />

我希望覆盖全局变量的模板:

<xsl:template name ="newTemplate">     
    <xsl: variable name="abc" select="'1'" />
    <!- ... -->
</xsl:template>

是否可以覆盖全局变量?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:2)

XSLT中的变量在XSLT中是不可变的,一旦设置就无法更改。在您问题的代码段中,模板中abc的声明被称为&#34; shadow&#34;全球宣言。 (见https://www.w3.org/TR/xslt#dt-shadows)。

这意味着全局声明无法在模板中访问。您刚刚创建了一个名称相同的新变量。

这并不代表你无法解决你的根本问题,只是你不能通过改变变量来解决。理想情况下,你应该始终解决你想要解决的问题,而不仅仅是你试图解决它的问题。