XPath轴如何:: ::跟随:: work?

时间:2017-06-05 21:13:33

标签: xml xpath

我一直认为preceding轴包含文档顺序中上下文节点之前的所有节点,不包括上下文节点的任何祖先,也不包括属性节点和命名空间节点。

最近我在XML上看到了两本出版的书籍。在关于XPathprecedingfollowing轴的章节中,这些作者没有提到我认为应该从这两个轴的定义中排除的节点。他们只是将它们分别定义为上下文节点之前和之后的所有节点。

我很自然地感到困惑。我(敢)通常不会怀疑已出版的书籍,特别是我在两本单独的书中发现的东西。

我理解XML是一种不断发展的技术。我错过了官方或推荐的定义是否有变化?

感谢任何帮助澄清它。

1 个答案:

答案 0 :(得分:2)

这不是你所相信的问题,而是规范所说的问题。最新的(3.1)版本的XPath在

定义了这些轴

https://www.w3.org/TR/xpath-31/#axes

如下:

  

以下轴包含作为根的后代的所有节点   找到上下文节点的树的不是后代的   上下文节点,并在文档顺序中的上下文节点之后发生

     

前一轴包含作为根后代的所有节点   找到上下文节点的树的不是它的祖先   上下文节点,并按文档顺序出现在上下文节点之前

定义并未随着时间的推移而改变。

遗憾的是,简化书籍并不罕见。另一方面,你可能错过了你正在阅读的书中的某些内容,你没有具体引用它们,所以我无法说出来。