2017-06-05 51 views
0

我始終認爲preceding座標軸包含按文檔順序位於上下文節點之前的所有節點,不包括上下文節點的任何祖先,也包括屬性節點和名稱空間節點。XPath軸如何在::和以下::工作?

最近我遇到了兩本關於XML的書籍。在關於XPathprecedingfollowing軸的章節中,那些作者沒有提及我認爲應該從這兩個軸的定義中排除的節點。他們簡單地將它們定義爲上下文節點之前和之後的所有節點。

我感到困惑,自然。我不敢(通常)懷疑已出版的書籍,特別是我在兩本獨立書籍中發現的書籍。

我不確定XML是一種不斷髮展的技術。我錯過了官方或建議的定義是否有變化?

感謝您的任何幫助澄清它。

回答

1

這不是你認爲的問題,而是規格說明的問題。的XPath的最新(3.1)版本在

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

定義這些軸如下:

跟隨軸包含的樹的根 的後代的所有節點,其中所述上下文找到的節點不是 上下文節點的後代,並且發生在文檔順序中的上下文節點之後

上一軸包含所有根節點的後代樹的其中上下文節點被發現,不是的 祖先上下文節點,並且在文檔順序

的定義沒有隨時間變化的上下文節點之前發生。

不幸的是,書籍的簡化並不少見。另一方面,你可能錯過了你正在閱讀的書籍中的某些東西,你沒有具體引用它們,所以我不能說。

+0

謝謝。我從來沒有養成閱讀官方規格的習慣。你引用的內容其實很清楚。至於這些書,我並沒有真正擁有它們。所以我不能提供更多的信息。他們是我實際看過的圖表/表格。鑑於我沒有讀過整本書,我可能錯過了一些東西。但是,鑑於規格和書中所說的內容之間有如此巨大的差異,我仍然會把它們稱爲錯誤。即使他們確實在其他地方提到過,但本來應該將其納入表格。 –