Grammar ng XPath

XPath ay gumagamit ng patak na ekspresyon upang piliin ang mga node o kumbinasyon ng mga node sa XML dokumento. Ang mga node ay pinili sa pamamagitan ng paglalakad sa daan (path) o mga hakbang (steps).

XML sample dokumento

Ginagamit namin itong XML dokumento sa mga susunod na halimbawa.

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>
<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>
</bookstore>

Pagpili ng mga node

XPath ayon sa patak na ekspresyon sa pagpili ng mga node sa XML dokumento. Ang mga node ay pinili sa pamamagitan ng paglalakad sa daan o step.

Nakalista sa ibaba ang pinaka-kakilala na patubong na ekspresyon:

Ekspresyon Description
nodename Hilingan ang lahat ng mga anak na node ng kasalukuyang node.
/ Mula sa punong node, hilingan ang mga node.
// Mula sa kasalukuyang na napili na node, hilingan ang mga node sa dokumento, kahit saan ang mga ito ay nasa loob ng dokumento.
. Hilingan ang kasalukuyang node.
.. Hilingan ang magulang na node ng kasalukuyang node.
@ Hilingan ang attribute.

Halimbawa

Sa ibabaw na talahanayan, nakuha namin ang ilang patubong na may predicate at ang resulta ng bawat patubong:

Path Expression Nakita
bookstore Hilingan ang lahat ng mga anak na node ng bookstore na elemento.
/bookstore

Hilingan ang pangunahing elemento na bookstore.

Komento: Kung ang patubong ay nagsimula sa tunay na kalye ( / ), ang patubong na iyon ay laging representang isang tiyak na patubong sa isang elemento!

bookstore/book Hilingan ang lahat ng book na elemento na nasa loob ng mga elemento na nasa loob ng bookstore.
//book Hilingan ang lahat ng book na elemento kahit saan ang mga ito ay nasa loob ng dokumento.
bookstore//book Hilingan ang lahat ng book na elemento na nasa loob ng mga elemento na nasa loob ng bookstore, kahit saan ang mga ito ay nasa loob ng bookstore.
//@lang Hilingan ang lahat ng attribute na pangalan na lang.

Predicate (Predicates)

Ang predicate ay ginagamit upang hanapin ang isang partikular na node o ang node na may isang tiyak na halaga.

Ang predicate ay nakasakop sa mga pagsasakop na nasa mga kwadrado na butas.

Halimbawa

Sa ibabaw na talahanayan, nakuha namin ang ilang patubong na may predicate at ang resulta ng bawat patubong:

Path Expression Nakita
/bookstore/book[1] Hilingan ang unang book na elemento na nasa loob ng bookstore na elemento.
/bookstore/book[last()] Hilingan ang huling book na elemento na nasa loob ng bookstore na elemento.
/bookstore/book[last()-1] Hilingan ang ikalawang huling book na elemento na nasa loob ng bookstore na elemento.
/bookstore/book[position()<3] Hilingan ang unang dalawang book na elemento na nasa loob ng bookstore na elemento.
//title[@lang] Hilingan ang lahat ng title na elemento na may attribute na pangalan na lang.
//title[@lang='eng'] Hilingan ang lahat ng title na elemento, at ang mga elemento na may halaga na eng ng attribute na lang.
/bookstore/book[price>35.00] Hilingan ang lahat ng book na elemento ng bookstore, at ang halaga ng price na elemento ay dapat mas malaki sa 35.00.
/bookstore/book[price>35.00]/title Piliin ang lahat ng title na elemento ng book elemento sa bookstore elemento, at ang value ng price na elemento ay dapat na hihigit sa 35.00.

Piliin ang Hindi Kilalang Node

Ang wildcard ng XPath ay maaaring gamitin upang piliin ang hindi kilalang XML element.

Wildcard Description
* Match any element node.
@* Match any attribute node.
node() Match any type of node.

Halimbawa

Sa ibabaw ng talahanayan, inilagay namin ang ilang mga path expression at ang resulta ng mga expression na ito:

Path Expression Nakita
/bookstore/* Piliin ang lahat ng mga anak na elemento ng bookstore elemento.
//* Piliin ang lahat ng elemento sa dokumento.
//title[@*] Piliin ang lahat ng title na elemento na may attribute.

Piliin ang Ilang Path

Sa pamamagitan ng paggamit ng operator "|" sa path expression, maaring piliin mo ang ilang mga path.

Halimbawa

Sa ibabaw ng talahanayan, inilagay namin ang ilang mga path expression at ang resulta ng mga expression na ito:

Path Expression Nakita
//book/title | //book/price Piliin ang lahat ng title at price na elemento ng book elemento.
//title | //price Piliin ang lahat ng title at price na elemento sa dokumento.
/bookstore/book/title | //price Piliin ang lahat ng title na elemento na nasa bookstore elemento, at ang lahat ng price na elemento sa dokumento.