在同一范围内声明多个同名XSLT变量
我知道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="/
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>
</xsl:text>
<xsl:variable name="myVar" select="'Wendelstein'" />
<xsl:value-of select="$myVar" /><xsl:text>
</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