路径表达式的缩写语法
XQuery 为路径表达式中的轴提供了简化的语法。
表1 描述了路径表达式中允许使用的缩写。
| 缩写语法 | 描述 |
|---|---|
| 未指定轴 | child:: 的速记缩写,除非轴步指定了 attribute() 用于节点测试。 轴步骤指定属性测试时,省略轴是
attribute:: 的速记形式。 |
| @ | attribute:: 的速记缩写。 |
| // |
此缩写出现在路径表达式开头时,轴步骤将选择初始节点序列,其中包含上下文节点所在的树的根节点,以及充当此根节点后代的所有节点。 如果根节点不是文档节点,则此表达式会产生错误。 |
| .. | parent::node() 的速记缩写。 |
缩写和未缩写句法的示例
表2 提供了缩写和未缩写语法的示例。
| 非缩写语法 | 缩写语法 | 结果 |
|---|---|---|
child::para |
para |
选择充当上下文节点子代的 para 元素。 |
child::* |
* |
选择上下文节点中的所有元素。 |
child::text() |
text() |
选择上下文节点的所有子文本节点。 |
child::node() |
node() |
选择上下文节点的所有子代。 此表达式不返回任何属性节点,因为属性不是节点的子节点。 |
attribute::name |
@name |
选择上下文节点的 name 属性。 |
attribute::* |
@* |
选择上下文节点的所有属性。 |
child::para[attribute::type="warning"] |
para[@type="warning"] |
选择上下文节点的类型属性值为 warning
的所有 para 子代。 |
child::chapter[child::title="Introduction"] |
chapter[title="Introduction"] |
选择上下文节点的 chapter
子代,该子代的一个或多个 title 子代的类型值等于字符串 Introduction。 |
child::chapter[child::title] |
chapter[title] |
选择上下文节点的 chapter
子代,该子代具有一个或多个 title 子代。 |