Ana içeriğe geç

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
<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ı şö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