XPath Dilbilgisi

XPath, XML belgelerindeki düğümleri veya düğüm gruplarını seçmek için yol ifadelerini kullanır. Düğümler, yol veya adımlar boyunca seçilir.

XML Örneği Dokümanı

Aşağıdaki örneklerde bu XML belgesini kullanacağız.

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>
<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>
</bookstore>

Düğüm seçin

XPath, XML belgelerinde düğümleri seçmek için yol ifadelerini kullanır. Düğümler, yol veya adımlar boyunca seçilir.

Aşağıda, en yararlı yol ifadelerini sıraladık:

İfade Açıklama
nodename Bu düğümün tüm alt nodelerini seçin.
/ Kök düğümü seçin.
// Geçerli seçimle eşleşen düğümleri seçin, düğümlerin konumunu dikkate almadan.
. Geçerli düğümü seçin.
.. Geçerli düğümün ebeveyn düğümünü seçin.
@ Özellikleri seçin.

Örnek

Aşağıdaki tabloda, bazı yol ifadeleri ve bu ifadelerin sonuçlarını sıraladık:

Yol ifadesi Sonuç
bookstore bookstore elementinin tüm alt nodelerini seçin.
/bookstore

Root element bookstore'ı seçin.

Açıklama: Eğer yol başlıyor doğru çizgi ( / ) ile, o zaman bu yol her zaman belirli bir elemente olan mutlak yol anlamına gelir!

bookstore/book bookstore'ın tüm alt elementlerine ait book elementlerini seçin.
//book Belgedeki konumları ne olursa olsun tüm book alt elementlerini seçin.
bookstore//book bookstore unsurlarının tüm alt elementlerini seçin, ne olursa olsun bu elementler bookstore altında hangi konumda olurlarsa olsun.
//@lang Adı lang olan tüm özellikleri seçin.

Yargı (Predicates)

Yargı, belirli bir düğümü veya belirli bir değeri içeren belirli bir düğümü bulmak için kullanılır.

Yargı, parantez içinde yer alır.

Örnek

Aşağıdaki tabloda, bazı yargısal yol ifadeleri ve bu ifadelerin sonuçlarını listeliyoruz:

Yol ifadesi Sonuç
/bookstore/book[1] bookstore alt elementinin ilk book element'ini seçin.
/bookstore/book[last()] bookstore alt elementinin son book element'ini seçin.
/bookstore/book[last()-1] bookstore alt elementinin son ikinci book element'ini seçin.
/bookstore/book[position()<3] bookstore elementinin en öndeki iki alt elementi olan book element'lerini seçin.
//title[@lang] Adı lang olan tüm title element'lerini seçin.
//title[@lang='eng'] Tüm title element'lerini seçin ve bu element'lerin lang özelliğinin değeri eng olmalıdır.
/bookstore/book[price>35.00] bookstore elementindeki tüm book element'lerini seçin ve bu price element'lerinin değeri 35.00'den büyük olmalıdır.
/bookstore/book[price>35.00]/title bookstore elementindeki book element'in tüm title element'lerini seçin ve bu price element'lerinin değeri 35.00'den büyük olmalıdır.

Bilinmeyen düğümü seçin

XPath jokerleri, bilinmeyen XML element'lerini seçmek için kullanılır.

Joker Açıklama
* Her türlü element düğümünü eşleyin.
@* Her türlü özellik düğümünü eşleyin.
node() Her türlü düğümü eşleyin.

Örnek

Aşağıdaki tabloda, bazı yol ifadeleri ve bu ifadelerin sonuçlarını listeliyoruz:

Yol ifadesi Sonuç
/bookstore/* bookstore element'in tüm alt element'lerini seçin.
//* Belgedeki tüm element'leri seçin.
//title[@*] Tüm özellikli title element'lerini seçin.

Birkaç yol seçin

Yol ifadelerinde "|" işleçini kullanarak birkaç yol seçebilirsiniz.

Örnek

Aşağıdaki tabloda, bazı yol ifadeleri ve bu ifadelerin sonuçlarını listeliyoruz:

Yol ifadesi Sonuç
//book/title | //book/price book element'in tüm title ve price element'lerini seçin.
//title | //price Belgedeki tüm title ve price elemanlarını seçin.
/bookstore/book/title | //price bookstore elemanına ait tüm title elemanlarını ve belgedeki tüm price elemanlarını seçin.