Ana içeriğe geç

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
<bookstore>
  <book>
    <title lang="en">A Clockwork Orange</title>
    <author>Anthony Burgess</author>
    <year>1962</year>
    <price>19.99</price>
  </book>
  <book>
    <title lang="en">Nineteen Eighty-Four</title>
    <author>George Orwell</author>
    <year>1949</year>
    <price>14.99</price>
  </book>
</bookstore>

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