XPath sintakse. XPath Query Language

     (senči) satur visus konteksta mezgla priekštečus, tostarp vecākus, vectēvus, vecvecākus utt. Šī ass vienmēr satur saknes mezglu - ja vien konteksta mezgls nav pats saknes mezgls.

Apskatiet 7.3. Sarakstu, kurā izmantojiet asi

  meklē visu elementu priekšteču vārdus (glabā elementā). Uzskaitīšana 7.3. Izmantojiet ass priekšteci
  xmlns: xsl = "http://www.w3.org/1999/XSL/Transform"\u003e

Šeit ir rezultāts šīs stila lapas piemērošanai

:

Izmantojot priekšteces vai pašas asi

  tajā ir visi konteksta mezgla priekšteči, kā arī pats konteksta mezgls. Tas cita starpā nozīmē, ka šāda ass vienmēr satur saknes mezglu.

Listing 7.4 pievieno atribūtus

  ar vērtību "Steve" visā dokumentā. Uzskaitīšana 7.4. planets.xml ar AUTHOR atribūtiem
.0553
58.65
1516
.983
43.4
.815
116.75
3716
.943
66.8
1
2107
1
128.4

Pieņemsim, ka tagad es vēlos uzskaitīt visu elementu priekšteču vārdus

tam ir atribūts, kā arī pašreizējais elements, ja tam ir atribūts. To var izdarīt, izmantojot asi un funkciju (7.5. Pozīcija). Uzskaitīšana 7.5. Senču vai pašas ass izmantošana
  xmlns: xsl = "http://www.w3.org/1999/XSL/Transform"\u003e

Šeit ir rezultāts; parāda visu trīs elementu atlasītos priekštečus

, ieskaitot elementu, ar nosacījumu, ka tai ir atribūts:

Lietojumprogrammas pēcnācēja ass

  (pēcnācējs) satur visus konteksta mezgla pēcnācējus. Ievērojiet, ka šeit nav iekļauti atribūti vai nosaukumu telpas mezgli, jo tie nav uzskatāmi par bērnu mezgliem.

Nākamais piemērs (7.6. Saraksts) parāda, kā strādāt ar šo asi. Šoreiz es vēlos pievienot vienumam piezīmi

  Dzīvsudrabs:
  (Atvainojiet, bet Mercury eksplodēja un vairs nav pieejama.). Lai atrastu dzīvsudrabu, man vajag tikai pārbaudīt, vai kādam elementa pēcnācējam ir virknes vērtība "", ko es darīšu, izmantojot XPath izteiksmi izvēlētā predikātā. Uzskaitīšana 7.6. Lietojumprogrammas pēcnācēja ass
  xmlns: xsl = "http://www.w3.org/1999/XSL/Transform"\u003e
Atvainojiet. Dzīvsudrabs ir uzspridzinājis un vairs nav pieejams.

Šeit ir iegūtais dokuments, ko papildina jauns elements.

  tikai Mercury:
.0553
58.65
1516
.983
43.4
Atvainojiet, Mercury ir uzspridzinājis un vairs nav pieejams.
.815
116.75
3716
.943
66.8

Izmantojot pēcnācēju vai sevis asi

  satur visus konteksta mezgla pēcnācējus un pats konteksta mezgls. Tomēr ievērojiet, ka tajā nav vārdu lauka atribūtu un mezglu.

Nākamais piemērs (7.7. Saraksts) parāda, kā strādāt ar asi. Šajā gadījumā es izveidoju vienkāršotu stila lapu (sīkāku informāciju par vienkāršotām stilu lapām skatiet 2. nodaļā), kas apstrādā visus elementus, izmantojot pēcnācējus, radot jau pazīstamu planētas datu HTML tabulu.

Uzskaitīšana 7.7. Izmantojot pēcnācēju vai sevis asi

Tas viss. Šeit es izmantoju vienkāršotu stilu, lai uzsvērtu, ka ar šādu pēcnācēju asīm kā

  vai, jūs varat automātiski apstrādāt visus atlasītos mezglus, tādā pašā veidā kā elementi vai.

Seko pielietojuma ass

Nākamā ass (nākamais) satur visus mezglus, kas atrodas pēc konteksta mezgla saskaņā ar dokumentā norādīto secību (citiem vārdiem sakot, tādā secībā, kādā tie parādās dokumentā, sākot no tā sākuma), izņemot visus konteksta mezgla pēcnācējus, kā arī neieskaitot mezglus atribūti un vārda vietas.

Šajā piemērā (7.8. Pozīcija) es izvēlos katru objektu. Un kopējiet visus turpmākos elementus iegūtajā dokumentā.

Uzskaitīšana 7.8. Seko pielietojuma ass
  xmlns: xsl = "http://www.w3.org/1999/XSL/Transform"\u003e
   Dzīvsudrabs, tas kopē visus turpmākos elementus - tas ir, Venus, tad visi Venēra pēcteči, tad Zeme un pēc tam visi Zemes pēcnācēji. Pēc tam viņš izvēlas Venēra elementu un kopē visus šādus elementus, tas ir, Zemi un visus Zemes pēcnācējus:
.815
116.75
3716
.943
66.8
.815
116.75
3716
.943
66.8
1
2107
1
128.4
1
2107
1
128.4
1
2107
1
128.4
1
2107
1
128.4

No otras puses, izmantojot asi

  Tikai nākamie brāļi tiks iekopēti iegūtajā dokumentā, tas ir, tikai elementos, kā mēs redzēsim nākamajā sadaļā.

Piesakies pēc sekojošas brāļa ass

  satur visus turpmākos konteksta mezgla brāļus.

Piemēram, es varu izvēlēties katru vienumu.

  un kopējiet visus mezglus ass augšpusē iegūtā dokumentā šādi (7.9. saraksts). Uzskaitīšana 7.9. Piesakies pēc sekojošas brāļa ass
  xmlns: xsl = "http://www.w3.org/1999/XSL/Transform"\u003e

Šādā gadījumā pirmie divi mezgli tiek kopēti pēc dzīvsudraba (Venus un Earth), tad tiek kopēts nākamais Venus mezgls, Zeme. Zemei pašam nav brāļu, tāpēc rezultāts izskatās šādi:

.815
116.75
3716
.943
66.8
1
2107
1
128.4
1
2107
1
128.4

Vārdtelpas ass izmantošana

  satur konteksta mezgla nosaukumvietas mezglus. Ņemiet vērā, ka šī ass ir tukša, ja konteksta mezgls nav elements. Elementam ir nosaukumu telpas mezgls:

Katra elementa atribūts, kura nosaukums sākas ar "xmlns:";

Katrs priekšteča elementa atribūts, kura nosaukums sākas ar "xmlns:" (protams, ja pats elements vai tuvākais sencis vēlreiz nepaziņo vārdu laukumu);

Atribūts

ja elementam vai senčim ir atribūts.

Nākamajā piemērā (List 7.10) es vēlos parādīt elementa nosaukumu laukumu

  iegūtajā dokumentā un avota dokumentā nosaukumvietai piešķiru nosaukumu “http://www.starpowder.com”. Uzskaitīšana 7.10. planets.xml ar nosaukumu vietas deklarāciju
.0553
58.65
1516
.983
43.4

Šeit ir stila lapa (7.11. Saraksts), kurā pārbaudu elementos izmantotās vārda vietas

. Uzskaitīšana 7.11. Vārdtelpas ass izmantošana planets.xml
  xmlns: xsl = "http://www.w3.org/1999/XSL/Transform"\u003e

Bet iegūtais dokuments (ņemiet vērā, ka dokumenta veids var atšķirties atkarībā no XSLT procesora):

Izmantojiet vecāku asi

Mātes ass satur konteksta mezgla vecāku (un tikai vecāku), ja tāds ir.

Pieņemsim, ka es vēlos mainīt elementa Zemes saturu

  uz "\u003e\u003e (Zemes masa tiek uzskatīta par 1). Sekojošā veidne (saraksts 7.12) to pārbauda, ​​ja mātes elements satur elementu ar virknes vērtību "Zeme". Uzskaitīšana 7.12. Izmantojiet vecāku asi
  xmlns: xsl = "http://www.w3.org/1999/XSL/Transform"\u003e

Zemes masa ir iestatīta uz 1.

Un šeit ir rezultāts:

.0553
58.65
1516
.983
43.4
.815
116.75
3716
.943
66.8
Zemes masa ir iestatīta uz 1.
2107
1
128.4

Izmantojiet asi pirms

  satur visus mezglus, kas atrodas konteksta mezgla priekšā, saskaņā ar dokumentā norādīto kārtību, izņemot visus konteksta mezgla priekštečus, kā arī izslēdzot atribūtu mezglus un vārda vietas mezglus.

Pieņemsim, ka, piemēram, ir jānosaka vienuma saturs

  teksts "" (Šī planēta atrodas tālāk no Saules nekā dzīvsudrabs.) Ja attiecīgā planēta patiešām atrodas tālāk no Saules nekā dzīvsudrabs. Viens no veidiem, kā to izdarīt, ir pārbaudīt, vai dzīvsudrabs atrodas planētas priekšā saskaņā ar secību, kas norādīta dokumentā, izmantojot asi (saraksts 7.13). Uzskaitīšana 7.13. Izmantojiet asi pirms
  xmlns: xsl = "http://www.w3.org/1999/XSL/Transform"\u003e
Šī planēta ir tālāk no Saules nekā dzīvsudrabs.

Ja pašreizējā planēta ir pēc dzīvsudraba, es varu ievietot ziņojumu savā elementā

. Rezultāts ir šāds:
.0553
58.65
1516
.983
43.4
.815
116.75
3716
.943
Šī planēta ir tālāk no Saules nekā dzīvsudrabs.
1
2107
1
Šī planēta ir tālāk no Saules nekā dzīvsudrabs.

Izmantojiet iepriekšējo siblingas asi

  satur visus iepriekšējos konteksta mezgla brāļus. Ņemiet vērā, ka, ja konteksta mezgls ir atribūtu mezgls vai vārda vietas mezgls, ass būs tukša.

Ko darīt, ja, piemēram, jums jāizveido veidne, kas atlasīs tikai elementus

  dzīvsudraba elementā? Lai to izdarītu, varat pārbaudīt, vai brāļi pastāv pirms elementa, kas ir elementi ar virknes vērtību "". Ja izmantojat asi (7.14. Pozīcija), meklēšana tiks ierobežota līdz pašreizējam elementam, kas nozīmē, ka Mercury netiks izvēlēts, ja vien neesat pareizajā elementā. Uzskaitīšana 7.14. Izmantojiet iepriekšējo siblingas asi
  xmlns: xsl = "http://www.w3.org/1999/XSL/Transform"\u003e

Un šeit ir rezultāts:

.0553
58.65
1516
.983
Tā ir planēta Mercury, kas ir vistuvāk Saulei.
.815
116.75
3716
.943
66.8
1
2107
1
128.4

Izmantojiet sevis asi

  satur tikai konteksta mezglu. Saskaņā ar vienu no XPath saīsinājumiem, kā redzēsim vēlāk, jūs varat izmantot "".

Šī ass ir noderīga, lai to paturētu prātā, jo, kā jūs atceraties no 4. nodaļas, ja nenorāda ass, noklusējuma ass būs

un dažos gadījumos jums var būt nepieciešams atsaukties uz aktīvo mezglu. Piemēram, tā pieņems patiesības vērtību tikai tad, ja konteksta mezgls ir elements.

Nākamajā piemērā es apvienoju elementu modeļus

  un vienā paraugā. Tā kā šiem elementiem ir dažādi formāti, man ir jārīkojas atšķirīgi vienā un tajā pašā veidnē (ko var izdarīt, pārbaudot ass vērtības, kas atgriež ne tukšu mezglu kopu, ja konteksta mezgls ir elements, un atgriežot tukšo mezglu kopu, ja konteksta mezgls ir elements):

Tādējādi tiek pabeigta jaunu XPath asu pārskatīšana. Pāriet uz piemēriem.

Ceļu piemēri

Mēs esam pietiekami izpētījuši atrašanās vietas ceļu teoriju. Bet, protams, vislabāk ir apgūt šo materiālu ar piemēriem, tāpēc es sniedzu šādu ceļu sarakstu sarakstu (samazinātas versijas tiek izskatītas pēc šī saraksta):

  . Atgriež konteksta mezgla bērnus; . Atgriež visus konteksta mezgla bērnu teksta mezglus; . Atgriež visus konteksta mezgla bērnus; . Atgriež konteksta mezgla atribūtu; . Atgriež visus konteksta mezgla pēcnācējus; . Atgriež visus konteksta mezgla senčus; . Atgriež konteksta mezgla priekštečus. Ja konteksta mezgls ir arī, konteksta mezgls arī atgriežas; . Atgriež konteksta mezgla pēcnācēju elementus. Ja konteksta mezgls ir arī, konteksta mezgls arī atgriežas; . Atgriež konteksta mezglu, ja tas ir elements;
bērns :: PLANET / pēcnācējs :: NAME
. Atgriež konteksta mezgla bērnu pēcnācējus; . Atgriež visus konteksta mezgla mazbērnus; . Atgriež saknes mezglu; . Atgriež visus dokumenta elementus;
/ pēcnācējs :: PLANET / bērns :: NAME
. Atgriež visus vienumus ar vecāku dokumentā; . Atgriež konteksta mezgla trešo bērnu;
bērns :: PLANET
. Atgriež konteksta mezgla pēdējo bērnu;
/ pēcnācējs :: PLANET
. Atgriež dokumenta trešo vienumu;
bērns :: PLANETS / bērns :: PLANET / bērns :: NAME
. Atgriež elementa ceturtā elementa trešo elementu; . Pēc pirmajiem trim atgriež visus konteksta mezgla bērnus;
pirms-brālis :: NAME
. Atgriež otro iepriekšējo konteksta mezgla brāli;
bērns :: *
. Atgriež bērnus un konteksta mezglu.
bērns :: *
. Atgriež pēdējo bērnu vai konteksta mezglu.

Kā redzat, dažu izteiksmju sintakse ir diezgan mulsinoša, un arī to rakstīšana ir diezgan garš. Bet, tāpat kā paraugiem, ir saīsināta XPath sintakses forma.

XPath saīsināta sintakse

XPath sintakses saīsinājumi var būt diezgan ērti. Tālāk ir norādīti šādi noteikumi:

  var saīsināt kā; var saīsināt kā; var saīsināt kā; var saīsināt kā; var saīsināt kā.

Piemēram, atrašanās vietas ceļš

  - īss
sevis :: mezgls () / pēcnācējs-vai-pats :: mezgls () / bērns :: PLANET
. Varat arī saīsināt predikāta izteiksmi, piemēram,, utt. Darbs ar XPath ceļiem ar īsāku sintaksi ir daudz vieglāk. Nākamajā sarakstā ir uzskaitīti vairāki piemēru atrašanās vietu ceļi, izmantojot saīsinātu sintaksi: atgriež konteksta mezgla bērnus; atgriež visus konteksta mezgla bērnu elementus; atgriež visus konteksta mezgla bērnu teksta mezglus; atgriež konteksta mezgla atribūtu; atgriež visus konteksta mezgla atribūtus; atgriež konteksta mezgla trešo bērnu; atgriež konteksta mezgla pēdējo bērnu; atgriež visus konteksta mezgla mazbērnus; atgriež elementa trešā elementa otro elementu; atgriež visus dokumenta saknes pēcnācējus; atgriež konteksta mezgla bērnu elementu pēcnācēju elementus; atgriež visus vienumus, kuriem ir vecāks; atgriež konteksta mezglu; atgriež konteksta mezgla pēcnācēju elementus; atgriež konteksta mezgla vecāku; atgriež konteksta mezgla vecāku atribūtu; atgriež visus konteksta mezgla pēcnācēja vecākus un konteksta mezgla vecākus; atgriež konteksta mezgla bērnus, kuriem ir bērni; atgriež konteksta mezgla bērnus, kuriem ir bērni ar tekstu “Venus”; atgriež visus konteksta mezgla bērnus, kuriem ir atribūts ar vērtību ""; atgriež konteksta mezgla sesto bērnu tikai tad, ja šim bērnam ir atribūts ar vērtību “dienas”. Varat arī rakstīt; atgriež visus konteksta mezgla bērnus, kuriem ir atribūts un atribūts;
// PLANET
"atlasa visus elementus, kuru vērtība atšķiras no jebkura iepriekšējā elementa vērtības; izvēlas jebkuru elementu, kas ir tā vecāka pirmais bērns; atlasa pirmos piecus konteksta mezgla bērnus, kuriem ir atribūts.

XPath izteiksmes pārbaude

Xalan pakete ietver ērtu piemēru programmu ApplyXPath.java, kas ļauj jums izmantot XPath izteiksmi dokumentam un apskatīt rezultātu, kas palīdz daudz testējot. Lai palaistu šo piemēru, jums būs jāapkopo

  un Java.exe izplatīšanas utilītprogrammā.

Piemēram, es izmantošu XPath izteiksmi "

"Ar palīdzību. Zemāk ir rezultāts, kas parāda visus elementus, kas ir elementu bērni (tagi, ko pievieno programma ApplyXPath):
% java ApplyXPath planets.xml PLANET / NAME
DzīvsudrabsVenusZeme

XPath 2.0

XPath tiek modernizēts un ietver atbalstu XSLT 2.0 (skat. Www.w3.org/TR/xpath20req). XPath 2.0 uzdevumi ir šādi:

Vienkāršojiet darbības ar satura veidiem, ko atbalsta XML shēma;

Operāciju vienkāršošana ar virknes saturu;

Atbalsts atbilstošiem XML standartiem;

Uzlabota lietojamība;

Uzlabota sadarbspēja;

Atbalsts starptautiskajiem valodas rīkiem;

Atgriezeniskās savietojamības saglabāšana;

Palielināta procesora efektivitāte.

Šajā sarakstā sniegts pārskats par XPath prasībām. Galvenie punkti ir atbalsts XML shēmai un regulārām izteiksmēm, kas dod jums iespēju strādāt ar virknēm un meklēt virknē. (Plašāku informāciju par regulārām izteiksmēm var atrast vietnē http://www.perldoc.com/perl5.6/pod/perlre.html.) Saskaņā ar W3C, XPath 2.0:

Ir jāatbalsta W3C XML arhitektūra, kas labi sadarbojas ar citiem XML ģimenes standartiem;

Jāizsaka jūsu datu modelis XML informācijas kopas (infoset) ziņā;

Jānodrošina XSLT 2.0 un XML vaicājuma valodas 1.0 vispārējā atslēgu sintakse;

Nepieciešams atbalstīt skaidru salīdzinājumu

"Vai" un vienlīdzības sintakse;

Ir jāpaplašina daudzas apkopošanas funkcijas (piemēram, XSLT lietotājiem bieži vien ir nepieciešams pievienot funkcijas)

  un);

Ir jāsaglabā savietojamība ar XPath 1.0;

Jānodrošina krustojuma un atšķirības funkcijas - tas ir, XPath 1.0 atbalsta, kas apvieno divus mezglu komplektus, un tam jāpievieno krustošanās un atšķirības funkcijas;

Ir jāatbalsta vienota plus darbība (tā kā decimālskaitļiem XML shēmā var būt vadošais plus);

Būtu jāuzlabo lietojamība;

Ir jāsamazina atrašanās vietas noteikšanas soļi;

Jāīsteno nosacīta darbība, kas darbojas uz trim izteiksmēm - izteiksme 1 (loģiskā operācija), izteiksme 2 un izteiksme 3. Ja izteiksme 1 ņem vērtību “true”, jārēķinās ar izteiksmi 2, un, ja izteiksme 1 ņem vērtību “false”, izteiksme Nr. ;

Jānosaka secīga sintakse subekspresijām, kas apstrādā elementu kolekcijas;

Ir jāatbalsta papildu virknes funkcijas. Piemēram, W3C apsver iespēju pievienot līdzekļus stīgu nomaiņai, aizpildot rakstzīmes un gadījumu reklāmguvumus;

Jāatbalsta apkopošanas funkcijas, ja tās tiek izmantotas kolekcijās. Piemēram, dažiem XPath 1.0 lietotājiem vajadzēja izmantot agregācijas funkciju, piemēram,

, mezglu kopām lietoto izteiksmju vērtībām;

Jāatbalsta regulāras izteiksmes meklēšanai virknēs, izmantojot XML shēmā iestatīto regulāro izteiksmes apzīmējumu;

Jāatbalsta elementārie XML shēmas datu tipi. Tas ir, papildus tipiem, ko atbalsta XPath 1.0 datu modelis - līnija, numurs, loģiskā vērtība un mezglu kopums - XPath 2.0 datu modelim jāatbalsta XML shēmas elementārie datu tipi;

Ir jāatbalsta viena un divu precizitātes peldošā punkta attēlojumi, ko atbalsta XML shēma, kas izmanto zinātnisku apzīmējumu;

Jānosaka piemērots funkciju kopums, lai lietotājs varētu strādāt ar elementārajiem XML shēmas datu tipiem;

Ir jāpievieno “saraksta” datu tips uz XPath (jo XML shēma ļauj jums definēt vienkāršus veidus, kas mantoti no saraksta);

Ir jāatbalsta piekļuve vienkāršu elementu tipu un atribūtu vērtībām. Tā kā XML shēmas ir daudz jaunu veidu, XPath 2.0 ir jāatbalsta piekļuve savam, vienkāršam tipam, elementam vai atribūtu vērtībai;

Jānosaka operatoru rīcība attiecībā uz nulles argumentiem;

Jābūt līdzekļiem, lai atlasītu elementus vai atribūtus, pamatojoties uz skaidru XML shēmas veidu;

Jābūt līdzekļiem, lai atlasītu elementus vai atribūtus, pamatojoties uz XML shēmu tipu hierarhiju;

Jābūt līdzekļiem, lai atlasītu elementus, kuru pamatā ir XML shēmas aizvietošanas grupas;

Ir jāatbalsta meklēšanas rīki, kas balstīti uz unikāliem ierobežojumiem un shēmas taustiņiem.

Lai gan mēs esam nonākuši pie nodaļas beigām, ne viss tiek teikts par XPath. Tēma turpināsies nākamajā nodaļā, kurā mēs apskatīsim XPath funkcijas un funkcijas, kas jau ir iebūvētas XSLT.

Xpath ir valoda, kurā var vaicāt XML vai xhtml dokumenta elementu. Tāpat kā SQL, xpath ir deklaratīva vaicājuma valoda. Lai iegūtu interesējošos datus, jums vienkārši jāizveido vaicājums, kas apraksta šos datus. Visiem "melnajiem" darbiem jums tiks veikta tulka valoda xpath.
  Ļoti ērti, vai ne? Redzēsim, kādas funkcijas piedāvā xpath piedāvājumus, lai piekļūtu tīmekļa lapu mezgliem.

Pieprasījuma izveide tīmekļa lapu mezgliem

  Es pievēršu jūsu uzmanību nelielam laboratorijas darbam, kura laikā es demonstrēšu xpath pieprasījumu izveidi tīmekļa lapai. Jūs varēsiet atkārtot minētos pieprasījumus, un, pats galvenais, jūs mēģināsiet izpildīt savu. Es ceru, ka pateicoties šim pantam būs vienlīdz interesanti iesācējiem un programmētājiem, kas pazīstami ar xpath xml.

Laboratorijai ir nepieciešams:
   - mājas lapa xhtml;
   - Mozilla Firefox pārlūks ar papildinājumiem;
   - firebug;
   - FirePath;
   (varat izmantot jebkuru citu pārlūkprogrammu ar vizuālu atbalstu xpath)
   - nedaudz laika.

Kā eksperimenta tīmekļa vietni es ierosinu World Wide Web Consortium tīmekļa vietnes galveno lapu ("http://w3.org"). Tieši šī organizācija izstrādā xquery valodas (xpath), xhtml specifikāciju un daudzus citus interneta standartus.

Uzdevums
  Iegūstiet no xhtml koda mājas lapa  w3.org informācija par konsorcija konferencēm, izmantojot xpath vaicājumus.
  Sāksim rakstīt xpath pieprasījumus.
Pirmais xpath pieprasījums
  Atveriet Firepath cilni FireBug, atlasiet elementu analīzei ar selektoru, noklikšķiniet uz: Firepath izveidoja xpath pieprasījumu atlasītajam elementam.

Ja izvēlējāties pirmā pasākuma nosaukumu, pieprasījums būs šāds:

   / a

Pēc papildu indeksu noņemšanas pieprasījums atbilst visiem “nosaukuma” tipa elementiem.

Firepath izceļ vienumus, kas atbilst vaicājumam. Reālajā laikā varat redzēt, kuri dokumentu mezgli atbilst pieprasījumam.

Pieprasījums sniegt informāciju par konferenču vietām:
   .//* eljárás@id="w3c_home_upcoming_events" [/ul/li/div/p

Tāpēc mēs saņemam sponsoru sarakstu:
   .//* eljárás@id="w3c_home_upcoming_events" [/ul/li/div/p

Xpath sintakse

  Atgriezīsimies pie radītajiem vaicājumiem un redzēsim, kā viņi strādā.
  Sīki apsveriet pirmo pieprasījumu

Šajā vaicājumā es iezīmēju trīs daļas, lai demonstrētu xpath iespējas. (Sadalījums daļās ir saprātīgs)

Pirmā daļa
.//   - rekursīva nolaišanās līdz nullei vai vairāk hierarhijas līmeņiem no pašreizējā konteksta. Mūsu gadījumā pašreizējais konteksts ir dokumentu sakne.

Otrā daļa
*   - jebkuru vienumu
[@ id = "w3c_home_upcoming_events"] - predikāts, pamatojoties uz kuru mēs meklējam mezglu, kura id atribūts ir vienāds ar "w3c_home_upcoming_events". XHTML elementu identifikatoriem jābūt unikāliem. Tāpēc vaicājumam “jebkurš elements ar noteiktu ID” ir jāatgriež vienīgais mezgls, kuru mēs meklējam.

Mēs varam aizstāt *   uz precīzu mezgla nosaukumu div  šajā pieprasījumā
   div [@ id = "w3c_home_upcoming_events"]

Tādējādi mēs nokāpjam caur dokumentu koku uz vajadzīgo mezglu div [@ id = "w3c_home_upcoming_events"]. Mēs noteikti neinteresējam, ko DOM koks veido un cik hierarhijas līmeņi paliek augstāk.

Trešā daļa
/ ul / li / div / p / a  –Spath ceļš uz konkrētu elementu. Ceļš sastāv no adresēšanas posmiem un mezglu pārbaudes (ul, li utt.). Pakāpieni tiek atdalīti ar "/" (slīpsvītru).

Xpath kolekcijas
  Ne vienmēr ir iespējams piekļūt interesējošam mezglam, izmantojot predikātu vai adresēšanas soļus. Ļoti bieži, tajā pašā hierarhijas līmenī, ir tikpat daudz viena tipa mezglu, cik vien iespējams, un ir jāizvēlas “tikai pirmais” vai “tikai otrais” mezgls. Šādos gadījumos tiek piedāvātas kolekcijas.

Xpath kolekcijas ļauj piekļūt vienumam pēc tā indeksa. Indeksi atbilst secībai, kādā elementi tika uzrādīti oriģinālajā dokumentā. Sērijas numurs kolekcijās tiek skaitīts no vienas.

Pamatojoties uz to, ka “konference” vienmēr ir otrā daļa pēc “konferences nosaukuma”, mēs saņemam šādu pieprasījumu:
   .//* eljárás@id="w3c_home_upcoming_events" [/ul/li/div/p
  Ja p ir otrs elements sarakstā katram saraksta mezglam / ul / li / div.

Tāpat mēs varam saņemt sponsoru sarakstu, jautājot:
   .//* eljárás@id="w3c_home_upcoming_events" [/ul/li/div/p

Dažas XPath funkcijas
  XPath ir daudzas funkcijas darbam ar kolekcijas elementiem. Es tikai dažas no tām.

pēdējais ():
  Atgriež pēdējo kolekcijas vienumu.
  Vaicājums ul / li / div / p - atgriezīs pēdējos punktus katram saraksta "ul" mezglam.
  Pirmā () funkcija netiek nodrošināta. Lai piekļūtu pirmajam elementam, izmantojiet indeksu "1".

teksts ():
  Atgriež vienuma testa saturu.
   .//a - mēs saņemam visas saites ar tekstu "Arhīvs".

pozīcija () un mod:
  pozīcija () - atgriež komplekta elementa pozīciju.
  mod ir pārējā nodaļas daļa.

Apvienojot šīs funkcijas, mēs varam iegūt:
   - pat ne ul / li elementi
   - pat elementi: ul / li

Salīdzināšanas darbības

  • < - логическое «меньше»
  • \u003e - loģisks "vairāk"
  • <= - логическое «меньше либо равно»
  • \u003e = - loģisks "lielāks vai vienāds ar"
   ul / li, ul / li - uzskaitiet vienumus, sākot no 3. numura un otrādi.

XPath izmanto ceļu izteiksmes, lai izvēlētos mezglus un mezglu kopas XML dokumentā. Mezgls tiek izvēlēts, sekojot dotajam ceļam vai tā saucamajiem soļiem.

XML dokumenta paraugs

Lai demonstrētu XPath sintaksi, tiks izmantots šāds XML dokuments:

Atgādinājums Nosūtīt vēstuli! Atgādinājums E-pasts nosūtīts

Mezglu izvēle

Lai atlasītu mezglus XML dokumentā, XPath izmanto ceļa izteiksmes. Mezgls tiek izvēlēts pēc norādītā ceļa. Visnoderīgākie ceļa izteicieni ir:

Nākamajā tabulā ir uzskaitītas dažas XPath frāzes, kas ļauj veikt dažas atlases XML parauga dokumentā:

XPath izteiksme Rezultāts
ziņojumus Atlasa visus mezglus ar nosaukumu "ziņas"
/ ziņas Atlasa ziņojumu saknes elementu.
Piezīme: Ja ceļš sākas ar slīpsvītru (/), tad tas vienmēr ir absolūtais ceļš  elementam!
ziņas / piezīme Atlasa visus piezīmju elementus, kas ir ziņu elementa pēcnācēji.
// piezīme Atlasa visus piezīmju elementus neatkarīgi no dokumenta atrašanās vietas.
ziņas // piezīme Atlasa visus piezīmju elementus, kas ir ziņu elementa pēcnācēji, neatkarīgi no tā, kur tie ir no ziņojuma elementa.
// @ datums Atlasa visus nosauktos datuma atribūtus

Predikācijas

Predikāti ļauj jums atrast konkrētu mezglu vai mezglu ar noteiktu vērtību.

Predikāti vienmēr ir iekļauti kvadrātiekavās.

Nākamajā tabulā ir uzskaitīti daži XPath izteicieni ar predikātiem, kas ļauj veikt atlasi XML parauga paraugā:

XPath izteiksme Rezultāts
/ ziņas / piezīme Atlasa pirmo piezīmju elementu, kas ir tiešs ziņu elementa pēcnācējs.
PiezīmeA: IE 5,6,7,8,9, pirmais mezgls būs, bet saskaņā ar W3C tas būtu. Lai atrisinātu šo problēmu IE, jums ir jāiestata opcijas SelectionLanguage opcija XPath.
  JavaScript: xml.setProperty ("Izvēlnes valoda", "XPath");
/ ziņas / piezīme Atlasa pēdējo piezīmes elementu, kas ir tiešs ziņu elementa pēcnācējs.
/ ziņas / piezīme Atlasa priekšpēdējā piezīmes elementu, kas ir tiešs ziņu elementa pēcnācējs.
/ ziņas / piezīme Atlasa visus pozīcijas elementus, kuriem ir datuma atribūts.
// virsraksts [@ date = "10/01/2008"] Atlasa visus pozīcijas elementus, kuriem ir datuma atribūts ar vērtību "10/01/2008"

Nezināmu mezglu izvēle iepriekš

Lai atrastu iepriekš nezināmus XML dokumentu mezglus, XPath ļauj izmantot īpašas rakstzīmes.

Šajā tabulā ir uzskaitīti daži XPath izteicieni ar īpašām rakstzīmēm, kas ļauj veikt atlasi XML parauga paraugā:

Vairāku ceļu izvēle

Operatora lietošana | XPath izteiksmē varat izdarīt izvēli vairākos veidos.

Šajā tabulā ir uzskaitītas dažas XPath izteiksmes, kas ļauj veikt atlasi XML parauga paraugā.

Šajā nodaļā ir parādīta pamata XPath sintakse, kas balstīta uz dažiem piemēriem.

XML dokumenta paraugs

Kā piemērs tiks izmantots šāds XML dokuments:

Atgādinājums Nosūtīt vēstuli! 4 Atgādinājums E-pasts nosūtīts 7

XML dokumenta ielāde

Lai lejupielādētu XML dokumentu, izmantojiet objektu XMLHttpRequest, kuru atbalsta visas galvenās pārlūkprogrammas.

Var xmlhttp = jauns XMLHttpRequest ();

Vecajos Microsoft pārlūkos (IE 5 un 6) tiek izmantots kods:

Var xmlhttp = jauns ActiveXObject ("Microsoft.XMLHTTP");

Mezglu izvēle

Diemžēl dažādas pārlūkprogrammas atbalsta dažādus veidus, kā strādāt ar XPath.

Chrome, Firefox, Edge, Opera un Safari izmanto novērtēšanas () metodi, lai izvēlētos mezglus:

XmlDoc.evaluate (xpath, xmlDoc, , XpathResult.ANY_TYPE, null);

Internet Explorer izmanto metodi selectNodes ():

XmlDoc.selectNodes (xpath);

Atlasiet visas galvenes

Nākamais piemērs atlasa visus virsraksta mezglus:

   / ziņas / piezīme / virsraksts

Atlasiet pirmās piezīmes nosaukumu

Nākamajā piemērā tiek atlasīts virsraksta virsraksts ziņojuma elementa piezīmju elementa pirmajam mezglam:

   / ziņas / piezīme / virsraksts

Visu departamentu atlase

Nākamais piemērs atlasa tekstu no visām galda vietnēm:

   / ziņas / piezīme / rakstāmgalds

Izvēlieties nodaļas, kuru skaits pārsniedz 4

Nākamajā piemērā ir atlasīti visi galda mezgli, kuru vērtība ir lielāka par 4:

   / ziņas / piezīme / rakstāmgalds

Atlasiet piezīmju virsrakstus departamentiem, kuru skaitļi ir lielāki par 4

Nākamais piemērs atlasa visus to piezīmju mezglu virsraksta mezglus, kuru galda elements ir lielāks par 4:

   / ziņas / piezīme / virsraksts