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.
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!
