Eksyen XPath (Axen)

Dokumen Contoh XML

Kami akan menggunakan dokumen XML berikut untuk contoh:

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>

  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>

  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>
</bookstore>

XPath sumbu

Sumbu dapat didefinisikan hubungan set noden yang berada di atas node sekarang. Hasil
Nama sumbu ancestor
Pilih semua kerabat dari node sekarang. ancestor-or-self
Pilih semua kerabat dari node sekarang serta node sekarang sendiri. Pilih semua atribut dari node sekarang.
attribute Pilih semua anak elemen dari node sekarang.
child descendant
Pilih semua anak turun-temurun dari node sekarang. descendant-or-self
Pilih semua anak turun-temurun dari node sekarang serta node sekarang sendiri. following
Pilih semua noden setelah tag akhir node sekarang di dokumen. namespace
Pilih semua noden namespace dari node sekarang. parent
Pilih noden orangtua node sekarang. preceding
Pilih semua noden sebelum tag mulai node sekarang di dokumen. preceding-sibling
Pilih semua noden saudara sebelum node sekarang. self

Pilih noden sekarang.

Ekspresi jalur posisi

Jalur posisi dapat absolute atau relatif.

Jalur posisi absolut dimulai dengan garis miring ( / ), sementara jalur posisi relatif tidak seperti itu. Dalam kedua kasus, jalur posisi termasuk satu atau lebih langkah, setiap langkah dipisahkan dengan garis miring:

/step/step/...

Jalur posisi relatif:

step/step/...

Setiap langkah dihitung berdasarkan noden dalam set noden sekarang

Langkah (step) termasuk:

Sumbu (axis)
Mendefinikan hubungan pohon antara noden yang dipilih dan noden sekarang
Tes noden (node-test)
Mengidentifikasi noden dalam sumbu yang berbeda
Nol atau lebih penyata (predicate)
Mengembangkan lebih mendalam set noden yang dipilih

Syarat kalimat langkah:

Nama sumbu::tes noden[penyata]

Contoh

Contoh Hasil
child::book Pilih semua node book yang milik anak dari node sekarang.
attribute::lang Pilih atribut lang dari node sekarang.
child::* Pilih semua anak elemen dari node sekarang.
attribute::* Pilih semua atribut dari node sekarang.
child::text() Pilih semua anak teks dari node sekarang.
child::node() Pilih semua anak noden dari node sekarang.
descendant::book 选取当前节点的所有 book 后代。
ancestor::book 选择当前节点的所有 book 先辈。
ancestor-or-self::book 选取当前节点的所有 book 先辈以及当前节点(如果此节点是 book 节点)
child::*/child::price 选取当前节点的所有 price 孙节点。