Xslt序列和节点集

时间:2018-04-12 21:34:05

标签: xslt

我知道之前已经问过这个问题,但是XSLT 2中的序列概念与早期节点集之间的确切区别是什么?

同样在哪种情况下/表格中是否允许重复序列?如果有重复,count(node1|node1) = 1会是真的吗?

2 个答案:

答案 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)

序列是有序的,可能包含重复项。路径运算符(/)消除重复项并按文档顺序返回节点。

序列可能包含原子值。