我想不通的區別:XPath中// * /和/ * //之間的區別?
/RootNode//*/@* (1)
和
/RootNode/*//@* (2)
可能(1)
說:「從RootNode
開始深入,你可以直到你找到任何屬性的所有葉子打印和然後打印它「並且 (2)
說」從RootNode
開始,取所有元素(只有RootNode
的孩子),然後儘可能地深入,直到找到具有要打印的屬性的葉子爲止「。我錯了嗎? (1)
和(2)
之間的區別是什麼?
我想不通的區別:XPath中// * /和/ * //之間的區別?
/RootNode//*/@* (1)
和
/RootNode/*//@* (2)
可能(1)
說:「從RootNode
開始深入,你可以直到你找到任何屬性的所有葉子打印和然後打印它「並且 (2)
說」從RootNode
開始,取所有元素(只有RootNode
的孩子),然後儘可能地深入,直到找到具有要打印的屬性的葉子爲止「。我錯了嗎? (1)
和(2)
之間的區別是什麼?
它們都是等價的。他們都表示,
Select all of the attributes on elements beneath the top
RootNode
element.
無論*
之前或之後的後代或自身一步不要緊出現。
感謝您的編輯,但我認爲'/ RootNode/* // data/@ *'應該保留'/ RootNode/* // data(@ *)',因爲'data'不是路徑的一部分,而是一個打印的函數屬性值。對? – bogALT
我被要求顯示文檔中的所有屬性,如果我輸入'/ RootNode/* // data(@ *)'它可以工作,如果我嘗試'/ RootNode/* // @ *'則不能。錯誤:*沒有systemId *的模塊的第1行錯誤: XPTY0004:無法創建父級爲文檔節點的屬性節點(名稱) 無法創建父級爲文檔節點的屬性節點(名稱) – bogALT
' // @ *'將選擇文檔中的所有屬性值;你不需要'data()',但是如果這不是你的意圖,我會刪除'data'作爲一個元素。 – kjhughes
是什麼讓你覺得有區別?例如,你有什麼能與一個而不是另一個協同工作? – AakashM
在我看來沒有。他們應該顯示相同的結果。但是我寫了'(1)'的解決方案,我的教授在上面寫了一個大紅色的「X」,並寫了'(2)'。我不懂爲什麼。如果它們相同,那麼如果一個是正確的,另一個也是。 – bogALT