XPath a XQuery tester

Vyhodnoť XPath nebo XQuery výraz nad vlastním XML a hned uvidíš vybrané uzly a hodnoty. Na výběr je XPath 1.0 (stejný jako document.evaluate v prohlížeči), XPath 3.1, XQuery 3.1, XQuery Update 3.1 a experimentální verze 4.0.

Anglicky XPath tester.

Co je XPath?

XPath je jazyk pro výběr částí XML dokumentu. Cesta se skládá z názvů prvků oddělených lomítkem, například /katalog/kniha/nazev.

Dvě lomítka // hledají prvek kdekoli v dokumentu, hranaté závorky filtrují ([@id="k1"] podle atributu, [1] podle pořadí) a @ vybírá atribut.

Načti ukázková data nebo vlož vlastní XML — návrhy níže se vytvoří přímo z tvého dokumentu a můžeš také kliknout na uzel ve stromu.

Proměnné a XQuery moduly
Použití: $cena. Pole se předá jako XPath pole (array:size($seznam)).
Předpona z modulu se importuje automaticky: ex:dvakrat(21).
Vlož XML a XPath výraz — vyhodnotí se průběžně při psaní.
Tahák XPath

Základy

/prvekCesta od kořene dokumentu./katalog/kniha
//prvekPrvek kdekoli v dokumentu.//nazev
*Jakýkoli prvek./katalog/kniha[1]/*
text()Text uvnitř prvku.//nazev/text()

Atributy

@atributHodnota atributu.//kniha/@id
[@atribut="hodnota"]Prvek s daným atributem.//kniha[@id='k2']
//@atributAtribut kdekoli v dokumentu.//cena/@mena

Pozice

[1]První prvek (XPath počítá od jedné).//kniha[1]
[last()]Poslední prvek.//kniha[last()]
[position() < 3]Prvky podle pozice.//kniha[position() < 3]

Filtry

[podprvek > číslo]Podmínka na hodnotu podprvku.//kniha[cena > 100]/nazev
[contains(x, "text")]Obsahuje text.//kniha[contains(autor, 'Karel')]
[starts-with(x, "text")]Začíná textem.//kniha[starts-with(nazev, 'R')]
[a and b]Spojení podmínek.//kniha[@jazyk='cs' and cena > 150]

Funkce

count(…)Počet nalezených uzlů.count(//kniha)
sum(…)Součet čísel.sum(//cena[@mena='CZK'])
string(…)Text uzlu.string(//kniha[1]/nazev)

Osy

parent::Rodič uzlu.//nazev/parent::kniha
following-sibling::Sourozenci za uzlem.//kniha[1]/following-sibling::kniha
ancestor::Všichni předci uzlu.//autor/ancestor::katalog

XPath 3.1 navíc

=> funkce()Řetězení: výsledek se předá další funkci.//nazev/string() => string-join(', ')
for … returnCyklus přímo ve výrazu.for $k in //kniha return $k/nazev/string()

XPath 3.1 (knihovna fontoxpath): sekvence, for/let/if, mapy map{…} a pole […], operátory => a !, funkce jako string-join, parse-json, serialize. Prefixy jmenných prostorů se berou z dokumentu, nepředponovaná jména odpovídají výchozímu xmlns.

Jak použít: XPath tester

Tester se hodí na ladění výrazů pro XSLT, XSD, Selenium nebo vlastní kód. Verzi jazyka vyber podle prostředí, kde bude výraz běžet: prohlížeče a mnoho knihoven umí jen XPath 1.0.

  1. Vlož XML do pole Vstup (XML), nebo klikni na Načíst ukázková data.
  2. V poli Jazyk vyber verzi XPath nebo XQuery.
  3. Napiš výraz a klikni na Vyhodnotit.
  4. U XQuery Update se upravený dokument zobrazí zvlášť a tlačítkem Použít jako vstup s ním pokračuješ.

Časté chyby a tipy

Prázdný výsledek u dokumentu s xmlns
Element ve výchozím jmenném prostoru výraz //entry nenajde. Použij prefix navázaný na jmenný prostor, v XPath 3.1 zápis *:entry nebo Q{…}entry.
Funkce z novějších verzí
matches(), replace() nebo string-join() existují až od XPath 2.0. V režimu XPath 1.0 skončí chybou.
Predikát a závorky
//kniha[1] vybere první knihu v každém rodiči, (//kniha)[1] první knihu v celém dokumentu.

Nástroj je zdarma a běží celý v tvém prohlížeči — vložená data se nikam neodesílají ani neukládají.

XPath: dotazy do XML dokumentu →