Kiel uzi XPath
Kiam oni serĉas per la kodoserĉilo, oni povas uzi specialajn serĉesprimojn per la lingvo XPath. Ĉi-sube estas nur tre bazaj klarigoj pri XPath, sed principe oni povas uzi la tutan repertuaron de XPath-esprimoj.
Per XPath oni difinas elementojn en XML-kodo, laŭ la pozicio en la artikolo kaj ankaŭ laŭ la diversaj ecoj (atributoj k.s.).
Ekz. la esprimo D/E trovas ĉiujn E-elementojn, kiuj troviĝas rekte ene de D-elemento (kiel rekta ido de la D-elemento), se la D-elemento troviĝas mem rekte en la «radika» nivelo de la artikolo.
Do en la jena artikolo serĉo per D/E trovas la du lastajn E-ekzemplojn, sed ne aliajn, ĉar ĉiuj el tiuj troviĝas ene de S-elemento:
<k ofi="F">ajl<l/>o</k> <BOTA/>
<S n="1" rp="ajl-a">speco de <r>aliumo</r>, plurjara legomo kun specifa odoro kaj gusto,
kun folioj similaj al tiuj de <r>poreo</r> kaj kun akragusta bulbo; uzata por spicado kaj
medicino. <fak>specio <sci>Allium sativum</sci></fak>
<sago><r>ampeloprazo</r>, <r>cepo</r>, <r>poreo</r>,
<r>ŝaloto</r>, <r>ŝenoprazo</r></sago>.</S>
<S n="2" rp="ajl-b">
<KOMU/> bulbo aŭ bulbero de <r ligi="ne" rp="ajl-a">ajlo 1</r>:
<E>ŝafrostaĵo kun <t/>o</E>
<E a="OE" t="bb15291_ondo-2001-4">oni diras, ke manĝado de <t/>o bone protektas
<g>kontraŭ moskitoj</g> ---- certe ĝi efikas kontraŭ geamikoj</E>
</S>
<D>
<d><t/>a</d>
<S n="1">
entenanta <t/>on:
<E><e><t/>a saŭco</e> <e><t/>olea saŭco</e></E>
</S>
<S n="2">
karakterizata de odoro aŭ gusto de <t/>o:
<E>li elblovis <t/>an spiraĵon</E>
</S>
</D>
<D>
<d><t/>i</d> <KUIR/> <klas><m>tr</m></klas> spici <v>ion</v>
per <t/>o:
<E>kaprinfemuraĵo <t/>ita</E>
</D>
<D>
<d><t/>er<l/>o</d> bulbero de <t/>o:
<E a="Ko" t="de3553_kontakto-249">4 <t/>eroj tre fajne tranĉitaj aŭ kulereto da seka ajlo</E>
</D>
Por trovi tiujn, kiuj estas ene de S-elemento, oni uzu D/S/E. Por trovi ĉiujn ses E-ekzemplojn, oni povas uzi D//E. La parto // indikas, ke povas esti aliaj elementoj inter D kaj E.
Anstataŭ D/E oni ankaŭ povas skribi /art/D/E. Ĉiu artikolo vere troviĝas ene de art-elemento, kiun oni tamen neniam vidas en la redaktilo.
La esprimo E trovas nur ekzemplojn de la kapvorto, kaj nur tiujn, kiuj ne estas ene de S-elemento. La E-elementoj trovataj devas esti ĉiuj en la plej supra nivelo, rektaj idoj de la subkomprenata art-elemento.
Por trovi ĉiujn ajn E-elementojn en artikolo, oni skribu //E.
Por trovi nur E-elementojn kun t-atributo, kiuj troviĝas en la supra nivelo, oni skribu E[@t].
Por trovi ĉiujn E-elementojn kun t-atributo oni skribu //E[@t].
Por trovi ĉiujn E-elementojn, kiuj estas ido de S-elemento, kaj kiuj havas t-atributon kun la valoro da1336 oni skribu //S/E[@t="da1336"].
Por trovi e-elementojn ene de E-elemento kun t-atributo oni skribu //E[@t]/e. Espereble tio donas neniom da trafoj, ĉar se E enhavas e, eventualaj t-atributoj estu nur ĉe la e-elementoj. Sed ofte oni ja volas trovi diversspecajn erarajn uzojn por povi ilin korekti.
Per */E oni trovas E-elementojn ene de ĉiu ajn elemento, kiu mem estas en la plej supra nivelo. Asterisko reprezentas ian ajn elementonomon.
Per //r[text()="tablo"] oni trovas r-elementojn, kies ena teksto estas «tablo». Atentu, ke «ena teksto» ne inkluzivas XML-markojn. Ekz. la ena teksto de la elemento <k ofi="F">vort<l/>o</k> estas «vorto» (ne «vort<l/>o»). Vidu ĉi-poste pri la helpofunkcio RX().
Per //E[contains(text(),"Zamenhof")] oni trovas E-ekemplojn, kiuj enhavas la tekstoĉenon «Zamenhof».
Per //D[0] oni trovas D-elementojn, kiuj estas la unua D-elemento ene de sia respektiva gepatra elemento.
Per //D[last()] oni trovas D-elementojn, kiuj estas la lasta D-elemento ene de sia respektiva gepatra elemento.
Per k[not(@ofi)] oni trovas k-elementojn, kiuj ne havas ofi-atributon.
Per D[rim] oni trovas D-elementojn, kiuj enhavas unu aŭ pli da rim-elementoj.
Per e[not(t)] oni trovas e-elementojn, kiuj ne enhavas t-elementon.
Per //e/following-sibling::E oni trovas E-elementojn, kiuj sekvas tuj post e-elemento (eventualaj XML-komentoj inter e kaj E tiam estas ignorataj, ĉar XML-komentoj ne estas veraj elementoj).
Per //E[starts-with(@t, 'cb')] oni trovas E-elementojn kun t-atributo, kies valoro komenciĝas per «cb».
Per //*[name() != "E"]/e oni trovas e-elementojn, kies gepatra elemento ne estas E-elemento.
Per //comment() oni trovas XML-komentojn, ekz. <!--#FAKU bla bla.-->.
Sed oni povas fari multon alian pri XPath.
Jen anglalingva vikipedia paĝo pri XPath, kiu enhavas ligilojn al alilingvaj vikipediaj paĝoj pri XPath.
Jen anglalingva paĝo kun resumo de la ebloj de XPath.
Helpofunkcio RX()
Ĉi-antaŭe estis montrite, kiel oni povas per XPath-esprimo indiki la enan tekston de elemento. Tio tamen koncernas nur tekston sen eventualaj XML-markoj ene de elemento, kaj oni tiam ne povas uzi regulesprimojn, nek ĵokersignojn. Por tiaj okazoj oni povas anstataŭe uzi la helpofunkcion RX() por priserĉi per regulesprimoj la enhavon de elemento trovita per XPath (la lasta elemento indikita per XPath). Tiu helpofunkcio ne estas parto de XPath, sed estas speciala aldonaĵo, kiu funkcias nur en la kodoserĉilo de la redaktejo.
Jen ekzemplo: Per //E[RX("\bZamenhof\b")] oni povas serĉi E-elementojn, kiuj enhavas la vorton «Zamenhof».
Per //e[RX("\bvir(in)?\OF")] oni trovas e-ekzemplojn, kiuj enhavas iun el la vortoj «viro» kaj «virino» kun eventualaj J-finaĵo kaj N-finaĵo.
La RX()-funkcio serĉas la plenan enhavon de elemento, inter la komenca XML-marko kaj la fina XML-marko, kune kun eventualaj enaj XML-elementoj. Ekz. per //E/e[RX('<t u="maj"/>o\b')] oni povas trovi e-elementojn, kiuj enhavas t-elementon kun la atributo u="maj" kun posta o-finaĵo.
Oni povas tiel priserĉi ankaŭ la enhavon de XML-komentoj (inter la komenca <!-- kaj la fina -->). Ekz. //D//comment()[RX("\berar[ao]j?n?\b")] trovas XML-komentojn, kiuj troviĝas ie ene de D-elemento, kaj kiuj enhavas la vorton «eraro», «erara», «eraron», «eraran», «eraroj», «eraraj», «erarojn» aŭ «erarajn».
Regulesprimo ene de RX() devas esti metita ene de citiloj, aŭ "..." aŭ '...'.