0
看來,在某些usecases表達// * [local-name()='element']和// *:element?之間的區別是什麼?
//*[local-name()='element']
選擇多於
//*:element
或,換句話說,第一個表達式適用於更一般的電平,而第二個似乎工作更具限制性。
這可能是什麼原因?這似乎是一個命名空間問題,但我們還沒弄明白。
看來,在某些usecases表達// * [local-name()='element']和// *:element?之間的區別是什麼?
//*[local-name()='element']
選擇多於
//*:element
或,換句話說,第一個表達式適用於更一般的電平,而第二個似乎工作更具限制性。
這可能是什麼原因?這似乎是一個命名空間問題,但我們還沒弄明白。
node test*:element
僅在XPath 2.0中有效。規範說:
節點測試也可以具有*:NCName的形式。在這種情況下,節點測試對於本地名稱與給定的NCName匹配的步進軸的主節點種類的任何節點都成立,而不管其名稱空間或缺少名稱空間。
所以相當於*[local-name()='element']
。
您能否提供示例XML來演示此問題中描述的行爲?就我所見,兩種表達方式都是相同的。只有後者在XPath 1.0中不受支持 – har07
這可能已經是問題的解決方案。根據環境和各種組件,可能會出現某處使用XPath 1.0的情況。謝謝你的提示! –