XSLT merupakan bahasa
pemrograman berdasar XML yang digunakan untuk transformasi dokumen
XML menjadi
dokumen XML atau format
lainnya.
Transformasi tidak mengubah dokumen asli, melainkan menghasilkan
dokumen baru berdasarkan isi dokumen
asli. XSLT sering digunakan untuk
mengkonversi data dari satu XML schema ke schema lain, ke format XHTML, atau format XML yang dapat diubah menjadi dokumen PDF. Dokumen XSLT
yaitu, sebuah XSLT stylesheet berisi template-rule. Setiap template
memiliki aturan dan pola
tersendiri. Sebuah XLS processor akan membaca dokumen
XML
dan template (dokumen XSLT). Berdasarkan instruksi yang ditemukan program pada XSLT, maka program akan menghasilkan dokumen XML yang baru.
Contoh Dokumen XML
<?xml
version="1.0" ?>
<orang>
<mahasiswa>
<nim>1112</nim>
<nama>Sisanti</nama>
</mahasiswa>
<mahasiswa>
<nim>1111</nim>
<nama>susilo</nama>
</mahasiswa>
</orang>
Dokumen diatas disimpan kedalam file dengan nama orang.xml, dimana dokumen diatas akan
kita
gunakan untuk penerapan XSLT selanjutnya. XSLT dapat bekerja dengan dokumen yang valid maupun tidak valid asalkan well-
formed. Dokumen ini juga
tidak menggunakan namespace meskipun bisa juga
dengan menggunakan namespace. XSLT hanya
dapat berjalan dengan baik jika
menggunakan namespace. Tidak seperti DTD, XSLT lebih memperhatikan
namespace URIs dari pada prefiks.
xsl:stylesheet
XSLT stylesheet
merupakan dokumen XML, dan umumnya harus meggunakan deklarasi XML atau paling tidak stylesheets. Root elemen dokumen ini adalah stylesheet atau transform. Selain itu kita juga dapat
menggunakan stylesheet atau transform.
Contoh minimal dokumen XSLT :
<?xml
version="1.0"?>
</xsl:stylesheet>
untuk memanggil dokumen XSL kedalam dokumen XML yang kita
inginkan, kita dapat mengginakan seperti script sebagai berikut :
<?xml-stylesheet type="text/xsl"
href="xsl.xsl" ?>
<orang>
.......
</orang>
Contoh Stylesheet Processors
XML dokumen
yang ditampilkan
ke
web
browser memiliki xml-stylesheet processing instruction. Contoh penggunaannya adalah sebagai berikut :
<?xml
version="1.0"?>
<?xml-stylesheet type="application/xml"
href="orang.xsl"?>
<orang>
...
</orang>
pada contoh diatas, dokumen tersebut menggunakan pemprosesan intruksi pada aplikasi
XML
orang.xsl.
Templates and Template Rules
Untuk mengontrol hasil
outputan,
kita dapat menambahkan template rule
kedalam XSLT stylesheet. Setiap
template direpresentasikan
dengan elemen
xsl:template. Elemen ini harus memiliki kesesuaian atribut dengan XPath pattern dan mengandung
template yang di instansiasi dan output jika
polanya
cocok. Namun ada
sedikit terminologi trik; elemen xsl:template merupakan
template rule yang mengandung template. Elemen xsl:template bukan bukan template untuk dirinya sendiri.
Sebagai contoh, kita
buat sebuah dokumen XSL dan simpan dengan nama file
xsl.xsl untuk menampilkan dokumen diatas sehingga menjadi sesuai dengan
yang diinginkan.
Sintaks
yang dituliskan adalah
sebagai berukut :
<?xml
version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform”
xmlns="http://www.w3.org/1999/xhtml">
<xsl:output
method="html"/>
<xsl:template
match="orang">
sebuah tulisan
</xsl:template>
</xsl:stylesheet>
kemudian tambahkan sintaks untuk memanggil dokumen XSL tersebut pada dokumen XML asal
sehingga dokumen XML diatas menjadi
:
<?xml
version="1.0" ?>
<?xml-stylesheet
type="text/xsl" href="xsl.xsl" ?>
<orang>
<mahasiswa>
<nim>1112</nim>
<nama>Sisanti</nama>
</mahasiswa>
<mahasiswa>
<nim>1111</nim>
<nama>susilo</nama>
</mahasiswa>
</orang>
Jika dokumen XML diatas dijalankan
maka tampak seperti
gambar berikut :
Jika kita lihat, bahwa dokumen XSL diatas memiliki elemen template yang akan mencocokan
dengan elemen orang akan dococokan
dengan template sehingga semua isi dari elemen orang akan
digantikan dengan template.
Elemen with xsl:value-of
Elemen xsl:value-of digunakan untuk mengambil nilai dari elemen. Contoh penggunaannya adalah
sebagai berikut :
buatlah dokumen XML dengan kode sederhana sebagai berikut :
<?xml
version='1.0' ?>
<orang>
<mahasiswa>Susilawati</mahasiswa>
</orang>
sekarang buatlah sebuah
dokumen XSL dengan
kode sebagai berikut :
<?xml
version="1.0"?>
<xsl:template
match="orang">
<xsl:value-of select="mahasiswa"/>
</xsl:template>
</xsl:stylesheet>
Jika kita jalankan, maka hasil yang tampil adalah nilai dari elemen mahasiswa
yaitu “Susilawati” seperti
tampak pada gambar berikut :
Element xsl:apply-templates
Selanjutnya kita
kan
mencoba menggunakan elemen apply -templates. apply - templates
berfungsing untuk menempakan isi dari elemennya ke elemen
dokumen XML yang sesuai. Sebagai conto, buat file XSL baru edit dokumen yang lama sehingga menjadi
:
<?xml
version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
<xsl:output
method="html"/>
<xsl:template
match="/orang">
<html>
<head>
<title>Testing XSL
pada XML</title>
</head>
<body>
<h3>Data
Mahasiswa</h3>
<table
border="1">
<tr><th>NIM</th><th>Nama</th></tr>
<xsl:apply-templates
select="mahasiswa">
</xsl:apply-templates>
</table>
</body>
</html>
</xsl:template>
<xsl:template
match="mahasiswa">
<tr>
<td>
<xsl:value-of
select="nim"/>
</td>
<td>
<xsl:value-of
select="nama"/>
</td></tr>
</xsl:template>
</xsl:stylesheet>
jika kita perhatikan pada
dokumen XSL diatas, ada sebuah elemen template
yang isinya adalah dokumen HTML yang
akan ditempatkan pada elemen root orang pada dokumen XML, yaitu : <xsl:template match="/orang">
... </xsl:template>. Selanjutnya didalan template tersebut tedapat
sebuah elemen apply-
templates <xsl:apply-templates
select="mahasiswa"> ... </xsl:apply-templates> yang akan
dicocokan
dengan setiap
elemen mahasiswa pada dokumen XML. Pada bagian
bawah,
terdapat elemen <xsl:template
match="mahasiswa">
... </xsl:template> yang akan dipasangkan dengan elemen mahasiswa pada elemen dokumen XSL yang diperoleh
dari pencocokan oleh elemen template-apply sebelumnya.
Sedangkan elemen value-of
pada
<xsl:value-of select="nim"/> yang ada pada template tersebut
berfungsi untuk mengambil
nilai dari
elemen yang dimaksud,
misanya
select="nim", maka nilai yang diambil adalah
nilai dari
elemen nama.
Jika pada bagian elemen apply-templates kita
tambahkan sebuah sintak untuk
mensorting data, maka data
yang akan ditampilkan terlebih dahulu disorting.
Ubah
sintaksnya menjadi
:
.........
<xsl:apply-templates
select="mahasiswa">
<xsl:sort
select="nim" />
</xsl:apply-templates>
.........
maka tada yang tampil telah tersorting menurut nim, dimana tampilannya dapat kita lihat sebagai berikut :
Built-in Pada Template Rule
Yang paling mendasar dari built-in template rule adalah menyalin nilai text dan
atribut node kedalam dokumen output. Seperti pada contoh
berikut :
<xsl:template
match="text( )|@*">
<xsl:value-of select="."/>
</xsl:template>
node text ( ) merupakan pencocokan untuk semua elemen. Sedangkan
@* merupakan
pencocokan untuk
semua
atribut.
Jika template diatas dituliskan dan, maka dokumen XMLnya jika dijalankan akan seperti pada
gambar berikut :
Jika XSL yang digunakan seperti berikut :
<xsl:template
match="*|/">
<xsl:apply-templates/>
</xsl:template>
hal ini akan menjamin elemen child juga akan diproses. Meskipun hasilnya terlihat sama seperti pada gambar diatas.
Namun jika kita menggunakan XSL :
<xsl:template
match="processing-instruction()|comment( )"/>
rule ini akan
mencocokan pada semua command dan pemprosesan instruksi.
Mode
Terkadang suatu dokumen kita ingin ingin mengubahnya menjadi beberapa dokumen. Untuk itu kita dapat menggunakan mode. Cara kerjanya adalah,
sebuah template menempati elemen yang
cocok, namun pada template tersebut kita
dapat menempatkan template lagi. Penggunaannya dapat menggunakan elemen xsl:apply-template, dimana kita
menggunakan atribut select untuk mencocokan dengan template. Contohnya dapat dilihat pada
kode dibawah
ini :
<?xml
version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
<xsl:output
method="html"/>
<xsl:template
match="/orang">
<xsl:apply-templates select="mahasiswa"
/>
</xsl:template>
<xsl:template match="mahasiswa"> Sesuatu teks
</xsl:template>
</xsl:stylesheet>
Jika kita jalankan,
maka akan
tampak seperti gambar berikut :
Template untuk nilai Attribute
Sebelumnya kita telah mengetahui apa yang dimaksud dengan atribut dan kapan kita harus
menggunakannya. Dalam XSL kita
juga dapat memilih atribut
dan mengambil nilainya. Pada dasarnya, untuk pencocokan pada nilai atribut
sama halnya dengan elemen, tetapi kita tambahkan string “@” pada awal nama atribut tersebut. Misalnya
pada
contoh sebelumnya, ubahlah atau buat file
baru
yang isinya sebagai
berikut :
<?xml
version="1.0" ?>
<?xml-stylesheet
type="text/xsl" href="xsl.xsl" ?>
<orang>
<mahasiswa
angkatan='2007' kelas=”XWS-01”>
<nim>1112</nim>
<nama>Sisanti</nama>
</mahasiswa>
<mahasiswa
angkatan='2008' kelas=”XWS-02”>
<nim>1111</nim>
<nama>susilo</nama>
</mahasiswa>
</orang>
Selanjutnya kita akan menggunakan dokumen XSL untuk mengatur
panampilannya. Buat dokumen XSL baru dengan nama xsl2.xsl. Yang isinya
adalah sebagai berikut :
<?xml
version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
<xsl:output
method="html"/>
<xsl:template
match="/orang">
<html>
<head>
<title>Testing XSL
pada XML</title>
</head>
<body>
<h3>Data
Mahasiswa</h3>
<table
border="1">
<tr>
<th>NIM</th>
<th>Nama</th>
<th>Kelas</th>
</tr>
<xsl:apply-templates
select="mahasiswa">
</xsl:apply-templates>
</table>
</body>
</html>
</xsl:template>
<xsl:template
match="mahasiswa">
<tr>
<td>
<xsl:value-of
select="nim"/>
</td>
<td>
<xsl:value-of
select="nama"/>
</td>
<td>
<xsl:value-of select="@angkatan"/>
<xsl:text>
: </xsl:text>
<xsl:value-of select="@kelas"/>
</td></tr>
</xsl:template>
</xsl:stylesheet>
Jika dokumen XML diatas dijalankan, maka tampilannya akan seperti gambar berikut :
XSLT dan Namespace
Selanjutnya kita
akan mecoba membuat XSL pada
dokumen yang namespace XML. Sekarang kita buat sebuah dokumen XML yang mengandung namespace. Silahkan ketikan kode berikut ini dan simpan
dengan extensi XML
:
<?xml
version='1.0' ?>
<bahan>
<a:bambu
xmlns:a="Namespace1">
<a:asal>Jawa</a:asal>
<a:jenis>Besar</a:jenis>
</a:bambu>
<b:bambu
xmlns:b="Namespace2">
<b:jenis>belah
4</b:jenis>
<b:panjang>3</b:panjang>
</b:bambu>
</bahan>
selanjutnya mari
kita
buat dokumen XSLnya sebagai berikut :
<?xml
version="1.0"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:b="Namespace2">
<xsl:template
match="bahan">
<xsl:value-of
select="b:bambu"/>
</xsl:template>
</xsl:stylesheet>
jika kita jalankan,
maka akan
tampak seperti berikut :
Elemen XSLT
Fitur-ritur yang belum dan
tidak akan
kita
bahas adalah :
26. Named templates
27. Numbering and sorting output elements
28. Conditional
processing
29. Iteration
30. Extension elements and functions
31. Importing other stylesheets
silahkan anda cari
referensi
dan
enggunaan untuk fitur ini.