我知道之前已经问过这个问题,但是XSLT 2中的序列概念与早期节点集之间的确切区别是什么?
同样在哪种情况下/表格中是否允许重复序列?如果有重复,count(node1|node1) = 1
会是真的吗?
答案 0 :(得分:3)
扩展Max Toro的答案,XSLT 1.0节点集和XSLT 2.0序列之间存在两个主要区别:
(1)序列是有序的
(2)序列可能包含原子值(如字符串和数字)以及节点。 (在3.0中,它们还可能包含其他类型的项,例如函数,映射和数组)。
不是支持2.0中的集合和序列,而是决定只有序列,但是某些操作会导致一系列节点按文档顺序排序,同时消除重复。执行此操作的主要操作是:
(a)联合(' |'),相交和除运算符。
(b)路径运营商" /" (在右侧操作数返回节点的情况下)
因为' |'消除重复,count($n|$n)
返回count($n)
(如果$ n是单身,则为1)。但是,count(($m, $n))
会返回count($m) + count($n)
,因为","运算符连接两个序列而不消除重复。同样新的'!'运算符不会消除重复项,因此count($m!$n)
为count($m)*count($n)
。
答案 1 :(得分:2)
序列是有序的,可能包含重复项。路径运算符(/
)消除重复项并按文档顺序返回节点。
序列可能包含原子值。