我无法从模板覆盖XSLT中的全局变量。
全局变量声明:
<xsl:variable name="abc" />
我希望覆盖全局变量的模板:
<xsl:template name ="newTemplate">
<xsl: variable name="abc" select="'1'" />
<!- ... -->
</xsl:template>
是否可以覆盖全局变量?如果是这样,怎么样?
答案 0 :(得分:2)
XSLT中的变量在XSLT中是不可变的,一旦设置就无法更改。在您问题的代码段中,模板中abc
的声明被称为&#34; shadow&#34;全球宣言。 (见https://www.w3.org/TR/xslt#dt-shadows)。
这意味着全局声明无法在模板中访问。您刚刚创建了一个名称相同的新变量。
这并不代表你无法解决你的根本问题,只是你不能通过改变变量来解决。理想情况下,你应该始终解决你想要解决的问题,而不仅仅是你试图解决它的问题。