我一直认为preceding
轴包含文档顺序中上下文节点之前的所有节点,不包括上下文节点的任何祖先,也不包括属性节点和命名空间节点。
最近我在XML
上看到了两本出版的书籍。在关于XPath
和preceding
和following
轴的章节中,这些作者没有提到我认为应该从这两个轴的定义中排除的节点。他们只是将它们分别定义为上下文节点之前和之后的所有节点。
我很自然地感到困惑。我(敢)通常不会怀疑已出版的书籍,特别是我在两本单独的书中发现的东西。
我理解XML是一种不断发展的技术。我错过了官方或推荐的定义是否有变化?
感谢任何帮助澄清它。
答案 0 :(得分:2)
这不是你所相信的问题,而是规范所说的问题。最新的(3.1)版本的XPath在
定义了这些轴https://www.w3.org/TR/xpath-31/#axes
如下:
以下轴包含作为根的后代的所有节点 找到上下文节点的树的不是后代的 上下文节点,并在文档顺序中的上下文节点之后发生
前一轴包含作为根后代的所有节点 找到上下文节点的树的不是它的祖先 上下文节点,并按文档顺序出现在上下文节点之前
定义并未随着时间的推移而改变。
遗憾的是,简化书籍并不罕见。另一方面,你可能错过了你正在阅读的书中的某些内容,你没有具体引用它们,所以我无法说出来。