|
|
1
20
将XSLT样式表视为XML DOM,变量声明元素使变量对以下所有兄弟姐妹及其后代可见。这允许XSLT处理器静态分析任何包含变量引用的XPath,以查看变量是否存在;如果变量声明存在于前面的兄弟轴或祖先轴上,则变量引用是合法的,否则就不合法。 请注意,这完全取决于XSLT的结构,而不是它所处理的XML的结构。如果XPath表达式使用了不存在的变量,XSLT处理器可以而且应该产生错误。 在XSLT中无法检查此条件,因为此条件在XSLT中不合法。你在评论中描述的情况——“如果有输出,则设置一个标志变量,如果没有输出,则稍后显示不同的消息。”——实际上应该会导致语法错误。例如,如果你做这样的事情:
你会得到一个语法错误:第二个
这是我经常使用的一种技术——这会根据各种不同的条件产生可变的输出,你不想以后重新检查:
|
|
|
2
12
问这个问题表明您没有完全掌握XSLT的关键点。 :-) 它是声明性的:除非你声明它,否则任何东西都不可能存在。你声明了一个变量,它就在那里,你没有,它就不在了。 在编码时,你一次也不会怀疑某个变量是否存在。 XSLT有严格的作用域规则,变量仅存在于其父元素的作用域内(并非所有元素都可以包含变量)。一旦你离开父元素,变量就消失了。 并且不需要 检查运行时是否存在变量。 |
|
|
3
2
如果你正在处理参数,你可以使用全局
请参阅: http://www.stylusstudio.com/xsllist/199911/post30020.html |
|
4
1
检查值是否存在的最佳快速方法是检查其长度
|
|
|
5
0
我不认为这是可能的,但你不太可能需要它,因为除非你声明了变量,否则它就不存在。 |
|
|
6
-1
如果你有一个变量,你可以通过执行以下操作来检查它是否存在:
至于它的有效性,我不能肯定。但是,我会告诉你,我在我们的一些工作系统中这样做;) |
|
|
J_Cus504 · 在单匹配语句中使用身份变换和多谓词来沉默节点 1 年前 |
|
|
Daniel · 合并插入文本的直接兄弟元素 1 年前 |
|
JTennessen · Saxon XSLT输出中的额外换行符 1 年前 |
|
|
Velsus · XSLT尝试使用xsl:if排除某些记录,但不起作用 1 年前 |
|
|
Reto · XSLT 3.0突发流-如何存储/获取另一个分支的值 1 年前 |
|
|
badbee · 使用xsl:sort时保留未排序元素的问题 1 年前 |
|
|
Tronics · 尝试读取xml元素中的数据 1 年前 |
|
Abhishek Nayak · xslt仅对所选节点进行排序 1 年前 |