XPath Syntax

Rekomendasyon ng kurso:

XPath ay gumagamit ng ekspresyong daan upang mamili ng mga node o mga kumpol ng node sa XML dokumento. Ang mga node ay hinahalang sa pamamagitan ng paglalakad ng daan (path) o hakbang (steps).

Mga halimbawa ng XML

Ginagamit namin ito sa mga halimbawa sa ilalim.
<?xml version="1.0" encoding="ISO-8859-1"?>
<price>29.99</price>
  <bookstore>
  <title lang="eng">Harry Potter</title>
<price>39.95</price>
<price>29.99</price>
  <book>
  <title lang="eng">Learning XML</title>
<price>39.95</price>
</book>

</bookstore>

Mamili ng mga node

Ito ay nangangahulugan na ang XPath ay gumagamit ng ekspresyong daan upang mamili ng mga node sa XML dokumento. Ang mga node ay hinahalang sa pamamagitan ng paglalakad ng daan o hakbang (steps).

Ekspresyong daan Paglalarawan
nodename Piliin ang lahat ng mga anak na node ng pangkat na iyon.
/ Mamili mula sa pangunahing node.
// Mamili ng mga node sa dokumento na nakakasangguni sa kasalukuyang na hinahalang node, kahit sa anumang posisyon sila.
. Piliin ang kasalukuyang node.
.. Piliin ang magulang na node ng kasalukuyang node.
@ Piliin ang attribute.

Mga halimbawa

Sa ilalim ng talahanayan, nakuha namin ang ilang mga ekspresyong daan at ang resulta ng mga ekspresyong iyon:

表达式 na path resulta
bookstore Piliin ang lahat ng mga anak na node ng elemento na bookstore.
/bookstore

Piliin ang pangunahing elemento na bookstore.

Paliwanag: Kung ang daan ay nagsisimula sa tunay na tuldok ( / ), ang daan na iyon ay laging nagrerepresenta ng patuloy na daan sa isang elemento!

bookstore/book Piliin ang lahat ng book na kasama sa mga anak ng bookstore.
//book Piliin ang lahat ng mga anak na book, kahit sa anumang posisyon nila sa dokumento.
bookstore//book Piliin ang lahat ng sukat na book na kasama sa mga anghang ng bookstore, kahit na sila ay nasa anumang posisyon sa ilalim ng bookstore.
//@lang Piliin ang lahat ng attribute na pangalan na lang.

Predicate (Predicates)

Ang predicate ay ginagamit upang hanapin ang anumang partikular na node o ang node na may anumang natukoy na halaga.

Ang predicate na nakalakip sa mga kuwadrado ng panig.

Mga halimbawa

Sa ilalim ng talahanapan, ipinapakita namin ang ilang mga expression ng path na may predicate at ang resulta nito:

表达式 na path resulta
/bookstore/book[1] Piliin ang unang book na anak ng bookstore element.
/bookstore/book[last()] Piliin ang huling book na anak ng bookstore element.
/bookstore/book[last()-1] Piliin ang ikalawang huling book na anak ng bookstore element.
/bookstore/book[position()<3] Piliin ang dalawang unang book na anak ng bookstore element.
//title[@lang] Piliin ang lahat ng title na may attribute na pangalan na lang.
//title[@lang='eng'] Piliin ang lahat ng title na may value na eng sa attribute na lang.
/bookstore/book[price>35.00] Piliin ang lahat ng book na nasa bookstore element at ang value ng price ay mas malaki sa 35.00.
/bookstore/book[price>35.00]/title Piliin ang lahat ng title na nasa bookstore element at ang value ng price ay mas malaki sa 35.00.

Piliin ang hindi kilalang node

Ang XPath wildcard ay maaaring gamitin upang piliin ang hindi kilalang XML na elemento.

Wildcard Paglalarawan
* Match ang anumang element na node.
@* Match ang anumang attribute na node.
node() Match ang anumang uri ng node.

Mga halimbawa

Sa ilalim ng talahanapan, ipinapakita namin ang ilang mga expression ng path at ang resulta nito:

表达式 na path resulta
/bookstore/* Piliin ang lahat ng mga anak na elemento ng bookstore element.
//* Piliin ang lahat ng elemento sa dokumento.
//title[@*] Piliin ang lahat ng title na may ari na attribute.

Piliin ang ilang mga path

Sa pamamagitan ng paggamit ng operator na “|” sa expression ng path, maaari mong piliin ang ilang mga path.

Mga halimbawa

Sa ilalim ng talahanapan, ipinapakita namin ang ilang mga expression ng path at ang resulta nito:

表达式 na path resulta
//book/title | //book/price Piliin ang lahat ng title at price na mga elemento ng book element.
//title | //price 選擇文檔中的所有 title 和 price 元素。
/bookstore/book/title | //price 選擇屬於 bookstore 元素的 book 元素的所有限 title 元素,以及文檔中所有的 price 元素。