XPath sintaksisi


XPath XML hujjatdagi tugunlarni yoki tugunlar to‘plamini tanlash uchun yo‘l ifodalaridan foydalanadi. Tugun yo‘l yoki qadamlar bo‘yicha borib tanlanadi.


ULASHISH

Misol uchun XML hujjat

Quyidagi misollarda biz quyidagi XML hujjatdan foydalanamiz.

<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book>   <title lang="en">Harry Potter</title>   <price>29.99</price> </book> <book>   <title lang="en">Learning XML</title>   <price>39.95</price> </book> </bookstore>

Tugunlarni tanlash

XPath XML hujjatdagi tugunlarni tanlash uchun yo‘l ifodalaridan foydalanadi. Tugun yo‘l yoki qadamlar bo‘yicha borib tanlanadi. Eng foydali yo‘l ifodalari quyida keltirilgan:

Ifoda Tavsif
nodename "nodename" nomli barcha tugunlarni tanlaydi
/ Ildiz tugundan boshlab tanlaydi
// Hujjatdagi tanlovga mos keladigan tugunlarni, qayerda joylashganidan qat’i nazar, joriy tugundan boshlab tanlaydi
. Joriy tugunni tanlaydi
.. Joriy tugunning otasini tanlaydi
@ Atributlarni tanlaydi

Quyidagi jadvalda ba’zi yo‘l ifodalari va ularning natijalarini keltirdik:

Yo‘l ifodasi Natija
bookstore "bookstore" nomli barcha tugunlarni tanlaydi
/bookstore bookstore ildiz elementini tanlaydi

Eslatma: Agar yo‘l slesh ( / ) bilan boshlansa, u doimo elementga absolyut yo‘lni ifodalaydi!

bookstore/book bookstore elementining bolalari bo‘lgan barcha book elementlarini tanlaydi
//book Hujjatning qayerida joylashganidan qat’i nazar, barcha book elementlarini tanlaydi
bookstore//book bookstore elementining avlodlari bo‘lgan barcha book elementlarini, ular bookstore elementi ostida qayerda joylashganidan qat’i nazar, tanlaydi
//@lang lang deb nomlangan barcha atributlarni tanlaydi


Predikatlar

Predikatlar muayyan tugunni yoki muayyan qiymatni o‘z ichiga olgan tugunni topish uchun ishlatiladi.

Predikatlar doimo kvadrat qavslar ichiga yoziladi.

Quyidagi jadvalda predikatli ba’zi yo‘l ifodalari va ularning natijalarini keltirdik:

Yo‘l ifodasi Natija
/bookstore/book[1] bookstore elementining bolasi bo‘lgan birinchi book elementini tanlaydi.

Eslatma: IE 5,6,7,8,9 da birinchi tugun [0], ammo W3C’ga ko‘ra u [1]. IE’da bu muammoni hal qilish uchun SelectionLanguage’ni XPath qilib o‘rnating:

JavaScript’da: xml.setProperty("SelectionLanguage","XPath");
/bookstore/book[last()] bookstore elementining bolasi bo‘lgan oxirgi book elementini tanlaydi
/bookstore/book[last()-1] bookstore elementining bolasi bo‘lgan oxiridan bitta oldingi book elementini tanlaydi
/bookstore/book[position()<3] bookstore elementining bolalari bo‘lgan dastlabki ikkita book elementini tanlaydi
//title[@lang] lang nomli atributga ega barcha title elementlarini tanlaydi
//title[@lang='en'] Qiymati "en" bo‘lgan "lang" atributiga ega barcha title elementlarini tanlaydi
/bookstore/book[price>35.00] bookstore elementining qiymati 35.00 dan katta bo‘lgan price elementiga ega barcha book elementlarini tanlaydi
/bookstore/book[price>35.00]/title bookstore elementining qiymati 35.00 dan katta bo‘lgan price elementiga ega book elementlaridagi barcha title elementlarini tanlaydi

Noma’lum tugunlarni tanlash

Noma’lum XML tugunlarini tanlash uchun XPath wildcard (umumlashtiruvchi) belgilaridan foydalanish mumkin.

Wildcard Tavsif
* Istalgan element tuguniga mos keladi
@* Istalgan atribut tuguniga mos keladi
node() Har qanday turdagi istalgan tugunga mos keladi

Quyidagi jadvalda ba’zi yo‘l ifodalari va ularning natijalarini keltirdik:

Yo‘l ifodasi Natija
/bookstore/* bookstore elementining barcha bola element tugunlarini tanlaydi
//* Hujjatdagi barcha elementlarni tanlaydi
//title[@*] Har qanday turdagi kamida bitta atributga ega barcha title elementlarini tanlaydi

Bir nechta yo‘lni tanlash

XPath ifodasida | operatoridan foydalanib, bir nechta yo‘lni tanlashingiz mumkin.

Quyidagi jadvalda ba’zi yo‘l ifodalari va ularning natijalarini keltirdik:

Yo‘l ifodasi Natija
//book/title | //book/price Barcha book elementlarining barcha title VA price elementlarini tanlaydi
//title | //price Hujjatdagi barcha title VA price elementlarini tanlaydi
/bookstore/book/title | //price bookstore elementi ichidagi book elementining barcha title elementlarini VA hujjatdagi barcha price elementlarini tanlaydi

W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!