XPath¶
Emakin tarafından kullanılan XML veri modelinden, XML veritabanlarından veya diğer XML yapılarından değer 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 kullanılan temel seçim söz dizimi, koşul ifadeleri, eksenler ve işleçler için uygulamalı bir başvuru kaynağıdır.
Düğümleri Seçme¶
XPath, bir 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 | "adına sahip tüm düğümleri seçer" |
| / | Kök düğümden seçim yapar |
| // | Belgenin neresinde olurlarsa olsunlar, geçerli düğümden başlayarak 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 XML belge örneği 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ı:
| Yol İfadesi | Sonuç |
|---|---|
| bookstore | "bookstore" adına sahip tüm düğümleri seçer |
| /bookstore | Kök bookstore öğesini seçer Not: Yol eğik çizgiyle ( / ) başlıyorsa her zaman bir öğeye giden mutlak yolu temsil eder! |
| bookstore/book | bookstore'un alt öğeleri olan tüm book öğelerini seçer |
| //book | Belgenin neresinde olurlarsa olsunlar tüm book öğelerini seçer |
| bookstore//book | bookstore öğesinin altındaki konumlarından bağımsız olarak, bu öğenin soyundan gelen tüm book öğelerini seçer |
| //@lang | lang adlı tüm öznitelikleri seçer |
Koşul İfadeleri¶
Koşul ifadeleri, belirli bir düğümü veya belirli bir değer içeren bir düğümü bulmak için kullanılır. Koşul ifadeleri her zaman köşeli parantez içinde yer alır.
Aşağıdaki tabloda, koşul ifadeleri içeren bazı yol ifadelerini ve bunların 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,9'da ilk düğüm[0]olarak belirtilir; ancak W3C'ye göre değer [1]olmalıdır. IE'de bu sorunu çözmek için SelectionLanguage özelliğini 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 öğeleri 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] | price öğesinin değeri 35.00'dan büyük olan tüm bookstore öğesi book öğelerini seçer |
| /bookstore/book[price>35.00]/title | price öğesinin değeri 35.00'dan büyük olan bookstore öğesinin book öğelerine ait 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ürden en az bir özniteliği olan tüm title öğelerini seçer |
Birden Çok Yol Seçme¶
Bir XPath ifadesinde | işleçini kullanarak birden çok yol seçebilirsiniz.
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 düğümlerini (ebeveyn, büyükanne/büyükbaba vb.) seçer |
| ancestor-or-self | Geçerli düğümün tüm üst düğümlerini (ebeveyn, büyükanne/büyükbaba 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 düğümlerini seçer |
| descendant | Geçerli düğümün tüm alt düğümlerini (çocuklar, torunlar vb.) seçer |
| descendant-or-self | Geçerli düğümün tüm alt düğümlerini (çocuklar, torunlar vb.) ve geçerli düğümün kendisini seçer |
| following | Belgede geçerli düğümün kapanış etiketinden sonra gelen 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 üst öğesini seçer |
| preceding | Üst düğümler, öznitelik düğümleri ve ad alanı düğümleri hariç, belgede geçerli düğümden önce görünen 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ılabilecek işleçlerin listesi yer almaktadır:
| İşleç | Açıklama | Örnek |
|---|---|---|
| | | İki düğüm kümesini birleştirir | //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ül (bölme işleminden kalan) | 5 mod 2 |