可通过使用逗号运算符或范围表达式来构造序列。
逗号运算符
要使用逗号运算符构造序列,请指定用逗号隔开的两个或更多操作数(表达式)。对序列表达式求值时,逗号运算符会对每个操作数求值,并将生成的序列并置以生成单个结果序列。例如,以下表达式将生成包含 5 个整数的序列:
(15, 1, 3, 5, 7)
序列可包含重复的原子值和节点。但是,序列决不能是另一个序列中的一项。如果新序列是通过并置两个或更多输入序列创建的,那么新序列将包含输入序列中的所有项,并且序列长度是输入序列长度的总和。
下列表达式使用逗号运算符来构造序列:
- 此表达式将长度分别为 1、2、0 和 2 的 4 个序列合并成长度为 5 的单个序列。此表达式将生成序列 10, 1, 2, 3, 4。
(10, (1, 2), (), (3, 4))
- 此表达式将生成一个序列,包含所有充当上下文节点子代的 salary 元素(后跟充当上下文节点子代的所有
bonus 元素)。
(salary, bonus)
- 假定变量 $price 绑定至值 10.50,那么此表达式将生成序列 10.50, 10.50。
($price, $price)
范围表达式
范围表达式会构造连续整数序列。范围表达式由通过
to 运算符隔开的两个操作数(表达式)组成。每个操作数的值必须可转换为类型为
xs:integer 的值。如果任一操作数为空序列,或者第一个操作数派生的整数大于第二个操作数派生的整数,那么范围表达式将生成空序列。否则会生成这样一个序列,该序列包含操作数派生的两个整数及其之间每个整数,这些整数按升序排列。例如,以下范围表达式求值为序列 1, 2, 3, 4:
(1 to 4)
以下示例使用范围表达式来构造序列:
- 以下示例在构造序列时将范围表达式用作一个操作数。序列表达式求值为序列 10, 1, 2, 3, 4。
(10, 1 to 4)
- 以下示例构造长度为 1 并且包含单个整数 10 的序列。
10 to 10
- 以下示例生成长度为 0 的序列。
15 to 10
- 以下示例使用 fn:reverse 函数构造包含 6 个整数并且按降序排列的序列。此序列表达式求值为序列 15, 14, 13, 12, 11, 10。
fn:reverse(10 to 15)