在同一范围内声明多个同名XSLT变量

在同一范围内声明多个同名XSLT变量,xslt,Xslt,我知道XSLT变量一旦初始化就不能改变它们各自的值。 Saxon PE 9.2.0.6允许以下语法: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:output method="text" /> <xsl:template match="/

我知道XSLT变量一旦初始化就不能改变它们各自的值。
Saxon PE 9.2.0.6允许以下语法:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:output method="text" />
    <xsl:template match="/">
        <xsl:variable name="myVar" select="'asdex upgrade'" />
        <xsl:value-of select="$myVar" /><xsl:text>&#xA;</xsl:text>
        <xsl:variable name="myVar" select="'Wendelstein'" />
        <xsl:value-of select="$myVar" /><xsl:text>&#xA;</xsl:text>
    </xsl:template>
</xsl:stylesheet>
那么这里发生了什么?显然,这段代码与XSLT中变量是不可变的这一事实并不矛盾,否则Saxon处理器将不会处理它。我是否在这里创建了两个同名的变量(其作用域位于给定模板的本地)?如果是这样的话,我是否有办法在创建第二个变量后访问第一个变量,或者它是否已经不存在,或者它是否在XSLT处理器的符号表中被掩盖了?或是什么给了你

谢谢你的启发

请参见详细信息,它解释道

对于任何变量绑定元素,都有一个区域(更多 具体来说,是样式表的一组元素节点),其中 绑定是可见的。对象的作用域中的变量绑定集 XPath表达式由在 样式表中表达式出现的点

对于以下所有同级,局部变量绑定元素都是可见的 和他们的后代,但有两个例外:它在任何地方都不可见 区域,其中它被另一个变量绑定遮挡,而它不是 在以xsl:fallback指令为根的子树中可见 是变量绑定元素的同级。装订不好 对于xsl:variable或xsl:param元素本身可见

[定义:如果绑定发生,则绑定会隐藏另一个绑定 在另一个绑定可见的点上,并且绑定 相同的名称。]如果由 局部xsl:variable或xsl:param隐藏全局绑定。在这个 在这种情况下,全局绑定在 样式表,其中它被另一个绑定遮挡


因此,第二个
xsl:variable name=“myVar”
与第一个相形见绌。

啊,谢谢。说明书很清楚地说明了这一点。谢谢你的链接,我显然得在那里读点书。
asdex upgrade
Wendelstein