XPath¶
Emakin tarafından kullanılan XML veri modelindeki, XML veritabanlarındaki veya diğer XML yapılarındaki değerleri seçmeniz, karşılaştırmanız ya da dönüştürmeniz gerektiğinde XPath kullanın.
Bu sayfa, Emakin formlarında, kurallarında ve süreç mantığında en sık karşılaşılan temel seçim söz dizimi, yüklemler, eksenler ve işleçler için uygulamalı bir başvurudur.
Düğümleri Seçme¶
XPath, XML belgesindeki düğümleri seçmek için yol ifadelerini kullanır. En kullanışlı yol ifadeleri aşağıda listelenmiştir:
| İfade | Açıklama |
|---|---|
| nodename | "nodename" |
| / | Kök düğümden seçim yapar |
| // | Belgede geçerli düğümden başlayarak, nerede olduklarına bakılmaksızın seçimle eşleşen düğümleri seçer |
| . | Geçerli düğümü seçer |
| .. | Geçerli düğümün üst öğesini seçer |
| @ | Öznitelikleri seçer |
Aşağıdaki örnek XML belge için birkaç XPath örneği sunacağız:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Bazı yol ifadeleri ve bu ifadelerin sonuçları şöyledir:
| Yol İfadesi | Sonuç |
|---|---|
| bookstore | "bookstore" adlı tüm düğümleri seçer |
| /bookstore | Kök öğe bookstore öğesini seçer Not: Yol eğik çizgiyle ( / ) başlıyorsa, her zaman bir öğeye giden mutlak yolu belirtir! |
| bookstore/book | bookstore öğesinin alt öğesi olan tüm book öğelerini seçer |
| //book | Belgenin neresinde olurlarsa olsunlar tüm book öğelerini seçer |
| bookstore//book | bookstore öğesinin altında nerede olurlarsa olsunlar, bu öğenin tüm alt öğesi olan book öğelerini seçer |
| //@lang | lang adındaki tüm öznitelikleri seçer |
Yüklemler¶
Yüklemler, belirli bir düğümü veya belirli bir değer içeren düğümü bulmak için kullanılır. Yüklemler her zaman köşeli parantez içine alınır.
Aşağıdaki tabloda, yüklem içeren bazı yol ifadelerini ve bu ifadelerin sonuçlarını listeledik:
| Yol İfadesi | Sonuç |
|---|---|
| /bookstore/book[1] | bookstore öğesinin alt öğesi olan ilk book öğesini seçer. Not: IE 5, 6, 7, 8 ve 9'da ilk düğüm[0]olur; ancak W3C'ye göre [1]olmalıdır. IE'de bu sorunu çözmek için SelectionLanguage değerini XPath olarak ayarlayın: JavaScript'te: xml.setProperty("SelectionLanguage","XPath"); |
| /bookstore/book[last()] | bookstore öğesinin alt öğesi olan son book öğesini seçer |
| /bookstore/book[last()-1] | bookstore öğesinin alt öğesi olan sondan bir önceki book öğesini seçer |
| /bookstore/book[position()<3] | bookstore öğesinin alt öğesi olan ilk iki book öğesini seçer |
| //title[@lang] | lang adlı bir özniteliğe sahip tüm title öğelerini seçer |
| //title[@lang='en'] | "lang" özniteliğinin değeri "en" olan tüm title öğelerini seçer |
| /bookstore/book[price>35.00] | Fiyat öğesinin değeri 35.00'dan büyük olan bookstore öğesindeki tüm book öğelerini seçer |
| /bookstore/book[price>35.00]/title | Fiyat öğesinin değeri 35.00'dan büyük olan bookstore öğesindeki book öğelerinin tüm title öğelerini seçer |
Bilinmeyen Düğümleri Seçme¶
Bilinmeyen XML düğümlerini seçmek için XPath joker karakterleri kullanılabilir.
| Joker Karakter | Açıklama |
|---|---|
| * | Herhangi bir öğe düğümüyle eşleşir |
| @* | Herhangi bir öznitelik düğümüyle eşleşir |
| node() | Her türden herhangi bir düğümle eşleşir |
Aşağıdaki tabloda bazı yol ifadelerini ve bu ifadelerin sonuçlarını listeledik:
| Yol İfadesi | Sonuç |
|---|---|
| /bookstore/* | bookstore öğesinin tüm alt öğe düğümlerini seçer |
| //* | Belgedeki tüm öğeleri seçer |
| //title[@*] | Herhangi bir türde en az bir özniteliği olan tüm title öğelerini seçer |
Birden Çok Yol Seçme¶
Bir XPath ifadesinde | işleci kullanılarak birden çok yol seçilebilir.
Aşağıdaki tabloda bazı yol ifadelerini ve bu ifadelerin sonuçlarını listeledik:
| Yol İfadesi | Sonuç |
|---|---|
| //book/title | //book/price | Tüm book öğelerinin title VE price öğelerini seçer |
| //title | //price | Belgedeki tüm title VE price öğelerini seçer |
| /bookstore/book/title | //price | bookstore öğesinin book öğesindeki tüm title öğelerini VE belgedeki tüm price öğelerini seçer |
XPath Eksenleri¶
Bir eksen, geçerli düğüme göre bir düğüm kümesini tanımlar.
| Eksen Adı | Sonuç |
|---|---|
| ancestor | Geçerli düğümün tüm üst öğelerini (ebeveyn, büyük ebeveyn vb.) seçer |
| ancestor-or-self | Geçerli düğümün tüm üst öğelerini (ebeveyn, büyük ebeveyn vb.) ve geçerli düğümün kendisini seçer |
| attribute | Geçerli düğümün tüm özniteliklerini seçer |
| child | Geçerli düğümün tüm alt öğelerini seçer |
| descendant | Geçerli düğümün tüm alt soylarını (alt öğeler, alt torunlar vb.) seçer |
| descendant-or-self | Geçerli düğümün tüm alt soylarını (alt öğeler, alt torunlar vb.) ve geçerli düğümün kendisini seçer |
| following | Geçerli düğümün kapanış etiketinden sonra belgedeki her şeyi seçer |
| following-sibling | Geçerli düğümden sonraki tüm kardeş düğümleri seçer |
| namespace | Geçerli düğümün tüm ad alanı düğümlerini seçer |
| parent | Geçerli düğümün ebeveynini seçer |
| preceding | Üst öğeler, öznitelik düğümleri ve ad alanı düğümleri hariç, belgede geçerli düğümden önce gelen tüm düğümleri seçer |
| preceding-sibling | Geçerli düğümden önceki tüm kardeş düğümleri seçer |
| self | Geçerli düğümü seçer |
XPath İşleçleri¶
Aşağıda, XPath ifadelerinde kullanılabilen işleçlerin listesi yer almaktadır:
| İşleç | Açıklama | Örnek |
|---|---|---|
| | | İki düğüm kümesi üzerinde işlem yapar | //book | //cd |
| + | Toplama | 6 + 4 |
| - | Çıkarma | 6 - 4 |
| * | Çarpma | 6 * 4 |
| div | Bölme | 8 div 4 |
| \= | Eşit | price=9.80 |
| != | Eşit değil | price!=9.80 |
| < | Küçüktür | price<9.80 |
| <= | Küçük veya eşittir | price<=9.80 |
| > | Büyüktür | price>9.80 |
| >= | Büyük veya eşittir | price>=9.80 |
| veya | veya | price=9.80 or price=9.70 |
| ve | ve | price>9.00 and price<9.90 |
| mod | Mod (bölme işleminden kalan) | 5 mod 2 |