2008年4月12日

XPath 的路徑表達式

最常見的XPath表達式是路徑表達式(XPath這一名稱的另一來源)。路徑表達式是由位置步驟所組成的,這些步驟是以「/」字元分開,而每一步驟則有三個要素所構成:

  • 軸線(指出從語境節點開始,處理器會往哪個方向搜尋其它節點)
  • 節點測試(指出在軸線上所要被選到的節點)
  • 判斷式(用於篩選節點的屬性和子節點特徵)
以下為大家說明位置步驟的三要素:

軸線
XPath 有十三種軸線可供你在位置步驟使用:
  • child
    語境節點的所有子節點。這是內定的軸線。
    縮寫語法:預設,可被省略。
  • descendant
    包含在語境節點的所有節點,即是子節點、子節點的子節點、子節點的子節點的子節點等等都被包含在裡面。
    縮寫語法:無。
  • descendant-or-self
    語境節點的子孫節點或語境節點本身。
    縮寫語法:/(總是位於其它代表根節點,或將此步驟和上一個步驟分離的反斜線之前)。
  • parent
    比自身節點深度少一層的節點,且需要包含自身的節點。
    縮寫語法:..,但不能用於 XSLT 的 match 屬性。
  • ancestor
    比自身節點深度小的節點,且需要包含自身的節點。
    縮寫語法:無。
  • ancestor-or-self
  • following-sibling
    下一個同級節點。
  • preceding-sibling
    在語境節點的開端之前。
  • following
    在語境節點結束的開端。
  • preceding
    在語境節點開端之前。
  • attribute
    該語鏡節點的所有屬性。
    縮寫語法:@
  • namespace
    在語境節點之有效範圍的所有名稱空間。
  • self
    語境節點本身。
    縮寫語法:.
節點測試
每一個位置步驟至少有一個軸和一個節點測試(node test)。這個節點測試進一步定義了由位置步驟所選擇的節點。雙冒號(::)分隔了軸和節點測試。總共有七種節點測試:
  • name
    XML 文件中會符合所有具相同名稱之元素。
  • prefix:*
  • comment()
    所有的註解節點。
  • text()
    所有的文字節點。
  • procession-instruction()、procession-instruction('target')
  • node()
    會選擇所有的節點:屬性、名稱空間、元素、文字、註解、處理指示、根。
  • *
    會選取所有的元素節點,而不管其名稱為何。然而如果軸線是屬性軸線,則它會選取屬性節點,如果軸線是名稱空間軸線,它會選取所有的名稱空間節點。
判斷式
每個節點測試可能零到多個判斷式 (predicate)。一個判斷式是用中括號包起來的 XPath 運算式。

沒有留言:

張貼留言