XPath

**XPath** (**XML Path Language**) adalah bahasa kueri untuk memilih bagian - bagian (nodes) dari sebuah dokumen XML. XPath juga dapat digunakan untuk menghitung nilai (contoh: string, angka atau boolean) dari isi dari sebuah dokumen XML. XPath distandardisasi oleh World Wide Web Consortium (W3C).

Bahasa XPath dirancang berdasarkan struktur pohon dari dokumen XML, dan memiliki kemampuan untuk menavigasi struktur pohon tersebut serta memilih bagian - bagian dari dokumen XML berdasarkan berbagai macam kriteria.

## Implementasi
XPath biasanya digunakan pada bahasa pemrograman maupun kerangka kerja yang sering menangani data berupa dokumen XML atau bahkan dokumen markup lainnya. Beberapa contoh adalah libxml, .NET framework, Java, Python dan JavaScript.

## Versi
Ada dua versi XPath yang sekarang digunakan.
### XPath 1.0
Standar XPath 1.0 diterbitkan pada 16 November 1999 dan secara luas diimplementasikan dan digunakan, baik berdiri sendiri (seperti pada .NET framework, Python dan Java) atau terpendam pada bahasa seperti XSLT, XProc atau XForms.
#### Sintaks
Bagian terpenting dari ekspresi pada XPath adalah *tempat lokasi*. Sebuah tempat lokasi terdiri dari urutan dari beberapa *langkah lokasi*. Setiap langkah lokasi terdiri dari tiga komponen:
* axis
* node test
* nol atau lebih predikat
Sebuah ekspresi XPath dievaluasi sehubungan dengan node konteks. Sebuah penentu axis seperti 'anak' atau 'keturunan' menentukan arah untuk menavigasi dari node konteks. Node test dan predikat digunakan untuk menyaring node - node yang ditentukan oleh penentu axis: Sebagai contoh node test 'A' mewajibkan bahwa semua node yang akan dinavigasi harus memiliki label 'A'. Sebuah predikat dapat digunakan untuk menentukan bahwa node - node yang terpilih memiliki beberapa properti tertentu, yang ditentukan oleh XPath sendiri.

Ada dua macam sintaks XPath: *sintaks yang dipendekkan*, lebih ringkas dan memungkinkan XPath dapat ditulis dan dibaca dengan mudah dan, dalam banyak kasus, konstruksi dan karakter yang tidak asing lagi. *Sintaks penuh* lebih detail dan deskriptif serta memungkinkan lebih banyak pilihan yang dapat ditentukan.

#### Sintaks yang dipendekkan
Diberikan suatu dokumen XML seperti:


```xml
<A>
  <B>
    <C>
    </C>
  </B>
</A>
```


Bentuk XPath paling sederhana berbentuk seperti
* `/A/B/C`
yang memilih elemen C yang merupakan anak dari elemen B yang juga merupakan anak dari elemen A yang membetuk elemen terluar dari dokumen XML tersebut. Sintaks XPath dibuat meniru URI (pengidentifikasi sumber seragam) dan sintaks letak file Unix.

Ekspresi yang lebih rumit dapat dibuat dari menentukan axis selain dari axis 'anak' yang standar, dan sebuah node test selain nama sederhana maupun predikat, yang dapat ditulis dalam kurung siku dalam banyak langkah. Sebagai contoh, ekspresi

* `A//B/*[1]`
memilih elemen pertama ('`[1]`'), apapun namanya ('`*`'), yang merupakan anak ('`/`') dari elemen B yang merupakan anak dari apapun yang merupakan anak dari elemen A, dengan berbagai macam tingkat kedalaman ('`A//`'). Elemen A adalah anak dari node konteks sekarang (ekspresi XPath di atas tidak diawali dengan '`/`'). Jika ada lebih dari satu elemen B yang cocok dengan ekspresi di atas, ekspresi XPath di atas akan memilih semua elemen pertama dari anak elemen B yang cocok tersebut. ("`(A//B/*)[1]`" hanya akan memilih elemen pertama dari hasil ekspresi di atas).
### XPath 2.0
adalah versi rilis sekarang. Standar diterbitkan pada 23 Januari 2007. Spesifikasi dari XPath 2.0 jauh lebih besar daripada XPath 1.0 dan mengubah beberapa konsep fundamental dari bahasa XPath sendiri seperti sistem tipe.
* Perubahan yang paling kentara adalah XPath 2.0 dibuat berdasarkan Model Data XQuery dan XPath, yang memiliki sistem tipe yang lebih kaya, serperti tipe atomik.
* XPath 2.0 memiliki fungsi - fungsi dan operator - operator yang diperkaya.

## Referensi