XPath (Extensible Path Language) bukanlah bahasa XML, namun, XPath
merupakan bahasa untuk mengalamati
bagian-bagian
didalam
dokumen
XML. Dengan menggunakan XPath, kita dapat secara langsung menunjuk
alamat sebuah elemen yang
akan diproses oleh
aplikasi. XPath digunakan bersamaan dengan XSLT dimana query atau sintaks XPath ini ditulis didalam bagian XLST untuk menampilkan data yang sesuai.
Expresi XPath dapat direpresentasikan menggunakan angka, sting ataupun
boolean. Hal ini memungkinkan XSLT stylesheets untuk
melakkan fungsi aritmatik sederhana untuk
keperluan penomoran, angka cross-referencing, tabel dan equation. Dengan string manipulation pada XPath
memungkinkan XSLT dapat memproses bilai elemen yang ada, misalnya menambahkan atau mengalikan dengan sesuati pada dua digit terahit tahun, dsb
Struktur Dokumen XML
Struktur dokumen XML berbentuk tree yang terdiri dari node-node, dimana masing-masing node dapat berisi beberapa
node lainnya. Terdapat satu elemen root dimana
elemen tadi berisi semua elemen lainnya. Struktur ini mirip dengan struktur penyimpanan data pada hardisk komputer, dimana
node-node tersebut diibaratkan dengan folder dimana masing-masing folder
dapat berisi
folder lain. Dalam hal ini, XPath merupakan bahasa untuk memilih node-node tersebut untuk mengarahkan pencarian
data pada data yang dituju.
Dari perspektif XPath,
ada tujuh
jenis node :
32. The root node
33. Element nodes
34. Text nodes
35. Attribute nodes
36. Comment
nodes
37. Processing-instruction nodes
38. Namespace nodes
Satuhal yang perlu diperhatikan dalam halini adalah struktur atau konstruksi
yang tidak termasuk adalah : CDATA
section, entity references, dan deklarasi
tipe
dokumen. XPath akan beroperasi pada dokumen XML setelah semua item telah
digabungkan
ke dalam dokumen.
Location Paths
Location
path akan mengidentifikasi satu set node dalam dokumen, node ini
dapat berisi satu node atau lebih mungkin saja
kosong. Elemen node ini dapat berisi : node atribut , node nama, node text, node komentar, node instruksi
pemrosesan,
node root, atau
kompbinasinya.
Elemen root merupakan elemen paling luar dari setiap dokumen. Elemen ini dapat dikatakan juga
sebagai induk dari semua dokumen yang
ada. Setiap
dokumen XML pasti memiliki satu elemen
root. Untuk mengrahkan kita
kepada elemen root, kita dapat mengaksesnya dengan menggunakan perintah
: slash ( / ) yang menunjukan posisi absolut. Sebagai contoh,
kita dapat
menggunakan
dokumen XML sebagai berikut, dab buatlah
dokumen tersebut
dan
simpan menjadi
contoh7_1.xml :
<?xml
version="1.0" ?>
<?xml-stylesheet
type="text/xsl" href="xsl.xsl" ?>
<orang>
<!--Data
Mahasiswa Pertama-->
<mahasiswa angkatan='2007' kelas=”XWS-01”>
<nim>1112</nim>
<nama
hobi='Membaca'>Sisanti</nama>
<teman>
<nim>1113</nim>
<nama>Juliana</nama>
</teman>
</mahasiswa>
<!--Data Mahasiswa Kedua-->
<mahasiswa
angkatan='2008' kelas=”XWS-02”>
<nim>1111</nim>
<nama>susilo</nama>
<teman>
<nim>1114</nim>
<nama
hobi='Olahraga'>Julianto</nama>
</teman>
</mahasiswa>
</orang>
Sebagai contoh XSLT template
rule
menggunakan pola XPath slash untuk
mencocokan entri
input dokumen tree dengan dan menuliskannya didalam
dokumen html.
<xsl:template
match="/">
<html><xsl:apply-templates/></html>
</xsl:template>
jika kita jalankan dokumen XML diatas, maka tampilannnya akan seperti pada gambar :
Artinya adalah
kita
menempatkan
template tersebut pada elemen root.
Lokasi path selanjutnya
adalah nama
elemen single. Path ini akan memilih
semua
elemen anak dari konteks node denga spesifikasi nama
yang sama. Misalnya jika kita ingin mengunjungi elemen nama, maka kita dapat memanggilnya
dengan /orang/mahasiswa/nama. Pada
bab
sebelumnya sebenarnya kita telah membuat dokumen XSL dengan menerapkan XPath. Namun itu hanya sekilas. Sekarang
kita akan mempelajarinya
secara lebih mendalam.
Buatlah
sebuah file XSL dengan
kode
<?xml
version="1.0"?>
<xsl:template
match="/orang">
<xsl:value-of
select="/orang/mahasiswa/nama"/>
</xsl:template>
</xsl:stylesheet>
Jika kita jalankan
dokumen XML diatas, maka
tampilannya akan tampak seperti berikut :
Dari kode diatas, maksudnya adalah
template
di-match-kan dengan elemen orang pada dokumen XML dan isi dari template
tersebut adalah hasil select
dari elemen nama dimana posisinya
adalah /orang/mahasiswa/nama pada bagian
pertama.
Kita juga dapat menggunakan pemilihan lokasi dengan menggunakan double
slash (//) dimana ini berfungsi untuk
memilih seluruh elemen yang dimaksud tampa
memperhatikan kedalamannya. Misalnya kita
ingin memilih semua elemen nama didalam dokumen, maka tuliskan
XPath-nya menjadi //nama.
Misalnya dengan
XSL
seperti berikut :
<?xml
version="1.0"?>
<xsl:template
match="/orang">
<xsl:apply-templates select="//nama"/>
</xsl:template>
</xsl:stylesheet>
Jika dijalankan akan tampil seperti pada gambar berikut :
Selain itu, kita
juga bisa menggunakan karakter bintang
( *
) untuk menuju ke lokasi elemen apapun. Kita juga bisa mengkombinasikan * dengan XPath yang lain. Misalnya dengan menggunakan /*/*/nama. Artinya, kita memilih elemen nama yang berada
pada kedalaman 2 hirarki dari elemen root. Contoh penggunaannya adala sebagai
berikut :
<?xml
version="1.0"?>
<xsl:template
match="/orang">
<xsl:apply-templates select="/*/*/nama"/>
</xsl:template>
</xsl:stylesheet>
dengan menggunakan karakter “@”, kita juga bisa memilih atribut-atribut yang ada pada sebuah elemen. Misalnya
kita ingin memilih semua elemen nama yang
memiliki atribut hobi, maka penulisanny adalah : //nama[@hobi]
sehingga sintaks XSLnya adalah
sebagai
berikut :
<xsl:template
match="/orang">
<xsl:apply-templates
select="//nama[@hobi]"/>
</xsl:template>
selain itu, kita juga
dapat memilih elemen yang
yang nilai atributnya tertentu dengan
menggunakan //nama[@hobi='Olahraga']. Jika
dituliskan, maka
kodenya seperti
berikut :
<xsl:template
match="/orang">
</xsl:template>
Kita juga dapat menggunakan string garis vertikal
( | ) untuk memilih
lebih dari satu eleme. Misalnya kita
ingin memilih elemen /orang/mahasiswa/nama dan nim
dimanapun
posisinya,
maka
dapat kiga tuliskan
dengan
/orang/mahasiswa/nama | //nim sehingga kode XSLnya adalah sebagai berikut :
<xsl:template
match="/orang">
<xsl:apply-templates
select="/orang/mahasiswa/nama
| //nim"/>
</xsl:template>
Jika menjalankan sintaks
diatas,
maka hasilnya adalah sebagai berikut :
Kita juga dapat menggunakan tanda double period ( .. ) untuk keluar dari
elemen asal menuju elemen induk. Misalnya
pada sintaks berikut :
<xsl:template
match="/orang/mahasiswa">
<xsl:apply-templates
select="../mahasiswa/teman/nama"/>
</xsl:template>
Maksud sintaks diatas adalah kita akan menampilkan nama yang ada pada
lokasi “/orang/mahasiswa/teman/nama”, namun template yang
akan ditempati adalah elemen “/orang/mahasiswa” sehingga posisi kita saat itu berada
didalam elemen mahasiswa. Saat kita memilih nilainya, kita
keluar terlebih dahulu dari elemen mahasiswa dengan string “..”, namun kita
masuk
kembali kedalamannya hingga ke elemen nim.
Jika
kita jalankan dokumen XML
tersebut,
maka tampilannya dapat kita lihat seperti pada gambar berikut :
kita juga
dapat menggunakan comment(), text(). comment()
Digunakan untuk menempatkan template pada komentar. Perhatikan script dibawah
:
<?xml
version="1.0"?>
<xsl:template
match="comment()">
Sesuatu Teks
</xsl:template>
</xsl:stylesheet>
Jika kita tampilkan,
maka terlihat seperti pada gambar berikut dibawah
ini :
Sedangkan text() digunakan memilih teks atau isi dari elemen. Contoh penggunaan nya adalah
sebagai berikut :
<?xml
version="1.0"?>
<xsl:template
match="/">
<xsl:apply-templates
select="/orang/mahasiswa/nama/text()"/>
</xsl:template>
</xsl:stylesheet>
Jika dijalankan, maka hasil tampilannnya dapat kita lihat seperti berikut :
Menggabungkan Location Part
Penggabungan path berguna
untuk memilih elemen yang berada didalam elemen lain atau atribut yang berada
pada elemen lain atau lebih jauh berada didalam
elemen lain.
Misalnya
kita telah mengenal
xpath
//nama, /nama,
@kelas dan sebagainya. Dalam penggabungannya bisa saja kita gunakan
seperti berikut :
//mahasiswa/nama
untuk memilih semua elemen nama yang berada didalam elemen mahasiswa
dimana elemen mahasiswanya berada didalam elemen apapun.
untuk memilih atribut angkatan yang berada didalam semua
elemen
mahasiswa.
Untuk prakteknya kita bahas pada sebelumnya.
Predikat
Kita dapat memilih elemen yang sesuai dengan yang kita inginkan. Kita dapat
menggunakan
ekspresi <,
>, <=,
>= dan !=. Misalnya kita ingin
memilih
elemen mahasiswa
yang angkatannya lebih dari
2007,
maka
penulisanhya seperti berikut :
...
...
Unabbreviated Location Paths
Unablbreviated location path merupakan penulisan lain untuk path. Misalnya untuk penulisan
xpath
:
General XPath Expressions
Layaknya bahasa
pemprograman, Pada XPath kita juga dapat memberikan
expresi aritmatik, XPath juga dapat mengambalikan nilai number, boolean, dan string.
XPath menyediakan lima operator aritmatika dasar yaitu
:
+
|
Addition
|
|
-
|
Subtraction
|
|
*
|
Multiplication
|
|
div
|
Division
|
|
mod
|
Taking
|
the
|
remainder
|
|
|
Contoh : <xsl:value-of select="6*7"/>,
dalam template XSLT akan menghasilkan nilai
42.
contohnya
mari kita
buat file
XSL yang
akan
menambahkan angkatan menjadi tahun lulus, asumsi bahwa mahasiswa akan
lulus tepat tiga tahun. Sintaksnya adalah
sebagai berikut :
<?xml
version="1.0"?>
<xsl:template
match="/orang">
<xsl:apply-templates select="mahasiswa"
/>
</xsl:template>
<xsl:template
match="mahasiswa">
<xsl:value-of
</xsl:template>
</xsl:stylesheet>
kita juga dapat membuat XPath dengan ekpresi boolean. Perhatikan Contoh berikut :
<?xml
version="1.0"?>
<xsl:template
match="/orang">
<html><table
border='1'>
<xsl:apply-templates
select='mahasiswa'/>
</table></html>
</xsl:template>
<xsl:template
match="mahasiswa">
<xsl:if
test="nim='1111' or
nim='1112'">
<tr><td><xsl:value-of
select="nama"/></td></tr>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Jika dokumen tersebut dijalankan, maka tampilannya akan tampak seperti
berikut :
Fungsi XPath
Terdapat beberapa
fungsi XPath yang bisa
digunakan dalam mengelola
dokumen. Misalnya kita
ingin memilih elemen ke-n pada dokumen, maka
kita dapat
menggunakan sintaks //nama_elemen[n] (n = elemen
ke
n). Contohnya kita memilih elemen pertama mahasiswa maka skriptnya adalah :
/orang/mahasiswa[1]. atau
kita
juga dapat menggunakan fungsi position(), yaitu
dengan sintaks //nama_elemen[position()=n] sehingga penulisannya sintaksnya menjadi :
/orang/mahasiswa[position()=1]. Contoh lain, kita juga bisa
memilih elemen yang mengandung
tepat dua elemen lain, maka
sintaksnya
adalah //*[count(*)=2].
No comments:
Post a Comment