Operator XPath

Dokumen Contoh XML

Kami akan menggunakan dokumen XML berikut dalam 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>

Sumbu XPath

Sumbu dapat didefinisikan kumpulan node yang berhubungan dengan node saat ini. Hasil
Nama sumbu ancestor
Pilih semua kakek dan node saat ini dari node saat ini. ancestor-or-self
Pilih semua kakek dan node saat ini dari node saat ini. Pilih semua atribut dari node saat ini.
attribute Pilih semua anak elemen dari node saat ini.
child descendant
Pilih semua anak element dan node saat ini dari node saat ini. descendant-or-self
Pilih semua anak element dan node saat ini dari node saat ini. following
Pilih semua node sebelum tag akhir node saat ini di dalam dokumen. namespace
Pilih semua node namespace yang termasuk dalam node saat ini. parent
Pilih node orangtua dari node saat ini. preceding
Pilih semua node sebelum tag awal node saat ini di dalam dokumen. preceding-sibling
Pilih semua node yang sama tingkatan sebelum node saat ini. self

Pilih node saat ini.

Ekspresi jalur posisi

Jalur posisi dapat absolut atau relatif.

Jalur posisi absolut: jalur yang dimulai dengan garis miring atas (/), sedangkan jalur relatif tidak seperti itu. Dalam kedua kasus, jalur posisi termasuk satu atau lebih langkah, yang dipisahkan oleh garis miring bawah:

/step/step/...

Jalur posisi relatif:

step/step/...

Setiap langkah dihitung berdasarkan node dalam kumpulan node saat ini

Langkah (step) termasuk:

Sumbu (axis)
Mendefinisikan hubungan pohon antara node yang dipilih dan node saat ini
Tes node (node-test)
Mengidentifikasi node di dalam sumbu yang berhubungan
Nol atau lebih predikat (predicate)
Purify lebih mendalam dari kumpulan node yang dipilih

Syarat kalimat langkah:

Nama sumbu::tes[penjelasan]

Contoh kasus

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