差别是最佳实践当结果不是一个序列? (如果是,那么前者基本上不能使用)
任何我忘记的或者他们在这种情况下是完全可以交换的吗?
差别是最佳实践当结果不是一个序列? (如果是,那么前者基本上不能使用)
任何我忘记的或者他们在这种情况下是完全可以交换的吗?
在XPath 2.0此表达式引发错误如果参数到name()
功能是与一个以上的项目的序列:
name(/Data/element1/element2)
在XPath 1.0这不是错误和name()
使用节点集中的第一个节点作为它的参数。
两者同样没用,因为一眼就知道结果必须是"element2"
。
当结果不是序列(如果是的话, 然后前者基本上不能使用),这是最好的做法?
此作品在这两种情况下的XPath 2.0/XQuery的:
/Data/element1/element2/name()
确定不同的是,没有任何区别,因为它是相同的功能,因为名称()等于名称( ),所以它不是一个不同的语法。它发生的是name(X)应该总是包含一个不超过1次输出的表达式。
,所以我们可以使用:
/Data/name(./element1/element2) = /Data/name(element1/element2)
* element2, if a single occurrence in the whole data
/Data/element1/name(./element2) = /Data/element1/name(element2)
* element2, if a single occurrence per any element1, for each element1
/Data/element1/element2/name() = /Data/element1/element2/name(.)
* element2, no matter num of occurrences, we print them all
因此,当我们希望只有一个出现,名称(complete_expression)可以有利的,因为我们可以为我们的假设添加一个额外的验证步骤,但替代也具有强点,我们可以准备处理表达式(数组)的多个输入的地形,如果有一天数据发生变化并且这是有效的和预期的
对于零件“结果在元素2中已知”,我更改了一个有点这个想法的例子。我的意思是动力选择,也许我做得太简单了 – Whimusical 2012-07-16 14:36:07