最常見的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 運算式。
沒有留言:
張貼留言