XPath o‘qlari
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>XPath o‘qlari (axes)
O‘q (axis) kontekst (joriy) tugunga nisbatan munosabatni ifodalaydi va daraxtda shu tugunga nisbatan tugunlarni topish uchun ishlatiladi.
| O‘q nomi (AxisName) | Natija |
|---|---|
| ancestor | Joriy tugunning barcha ajdodlarini (otasi, bobosi va h.k.) tanlaydi |
| ancestor-or-self | Joriy tugunning barcha ajdodlarini (otasi, bobosi va h.k.) hamda joriy tugunning o‘zini tanlaydi |
| attribute | Joriy tugunning barcha atributlarini tanlaydi |
| child | Joriy tugunning barcha bolalarini tanlaydi |
| descendant | Joriy tugunning barcha avlodlarini (bolalari, nevaralari va h.k.) tanlaydi |
| descendant-or-self | Joriy tugunning barcha avlodlarini (bolalari, nevaralari va h.k.) hamda joriy tugunning o‘zini tanlaydi |
| following | Hujjatda joriy tugunning yopuvchi tegidan keyin keladigan hamma narsani tanlaydi |
| following-sibling | Joriy tugundan keyingi barcha qo‘shnilarni tanlaydi |
| namespace | Joriy tugunning barcha nomlar fazosi tugunlarini tanlaydi |
| parent | Joriy tugunning otasini tanlaydi |
| preceding | Hujjatda joriy tugundan oldin keladigan barcha tugunlarni ajdodlar, atribut tugunlari va nomlar fazosi tugunlaridan tashqari tanlaydi |
| preceding-sibling | Joriy tugundan oldingi barcha qo‘shnilarni tanlaydi |
| self | Joriy tugunni tanlaydi |
Joylashuv yo‘li ifodasi
Joylashuv yo‘li (location path) absolyut yoki nisbiy bo‘lishi mumkin.
Absolyut joylashuv yo‘li slesh ( / ) bilan boshlanadi, nisbiy joylashuv yo‘li esa slesh bilan boshlanmaydi. Ikkala holatda ham joylashuv yo‘li har biri slesh bilan ajratilgan bir yoki bir nechta qadamdan iborat:
An absolute location path:
/step/step/...
A relative location path:
step/step/...Har bir qadam joriy tugunlar to‘plamidagi tugunlarga nisbatan hisoblanadi.
Qadam quyidagilardan iborat:
- o‘q (tanlangan tugunlar va joriy tugun o‘rtasidagi daraxtdagi munosabatni belgilaydi)
- tugun testi (node-test) (o‘q ichidagi tugunni aniqlaydi)
- nol yoki undan ortiq predikat (tanlangan tugunlar to‘plamini yanada aniqlashtirish uchun)
Joylashuv qadamining sintaksisi:
axisname::nodetest[predicate]Misollar
| Misol | Natija |
|---|---|
| child::book | Joriy tugunning bolalari bo‘lgan barcha book tugunlarini tanlaydi |
| attribute::lang | Joriy tugunning lang atributini tanlaydi |
| child::* | Joriy tugunning barcha bola elementlarini tanlaydi |
| attribute::* | Joriy tugunning barcha atributlarini tanlaydi |
| child::text() | Joriy tugunning barcha bola matn tugunlarini tanlaydi |
| child::node() | Joriy tugunning barcha bolalarini tanlaydi |
| descendant::book | Joriy tugunning barcha book avlodlarini tanlaydi |
| ancestor::book | Joriy tugunning barcha book ajdodlarini tanlaydi |
| ancestor-or-self::book | Joriy tugunning barcha book ajdodlarini tanlaydi — agar joriy tugunning o‘zi ham book tuguni bo‘lsa, uni ham |
| child::*/child::price | Joriy tugunning barcha price nevaralarini tanlaydi |
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
