以下XPath片段的含义是什么?

时间:2013-03-24 02:01:49

标签: xml xpath xquery

我正在阅读项目的规范/文档,并说:

您可以关注以下XPath片段: p :: = A | * | p / p | p // p | p [q]

p :: = A 的含义是什么?

2 个答案:

答案 0 :(得分:3)

我认为它的目的是在此上下文中支持指定XPath的子集。

p ::= ...

是BNF,说p由以下语法定义。

我假设Aq的定义相似,但您没有给出上下文。我猜A是一个元素名称,q是一个布尔表达式(但是已定义)。

很明显,支持的XPath子集如下:

  • 元素的名称(A
  • *
  • 使用/运算符(p/p
  • 连接两个表达式
  • 使用//运算符(p//p
  • 连接的两个表达式
  • 带有支持的谓词(p[q]
  • 的表达式

答案 1 :(得分:1)

提供的表达

A | * | p/p | p//p | p[q]

是由各个子表达式选择的节点的 union

它选择任何名为A的子元素加上任何子元素加上任何p元素,该元素是p元素的子元素,它是当前(初始上下文)节点的子元素,加上作为当前节点的子元素的p元素的后代的任何p元素,加上具有{{1的p子元素(当前节点的子元素)孩子。

相当于较短的

q

提出的具体问题

  

* | p//p 是什么意思?

XPath表达式

p :: = A

选择当前节点中名为A 的所有子元素。