Kamis, 17 November 2011

XSLT

EXTENSIBLE STYLESHEET LANGUAGE TRANSFORMATION (XSLT)
        XSL merupakan suatu bahasa pedoman transformasi dokumen-dokumen XML menjadi bentuk lainnya, seperti HTML. Proses transformasi ini disebut XSL Transformation (XSLT). Transformasi dilakukan dengan mencocokkan pola-pola dalam file XSL dengan elemen-elemen pada struktur XML. Pola-pola XSL ini kemudian membangkitkan template-template untuk membuat bagian-bagian dari file output. 

Contoh pola XSL :


Dari contoh di atas, pola memberikan persyaratan bahwa yang akan diproses adalah elemen para dari file inputnya. Ketika elemen tersebut ditemukan, maka diterapkan template yang telah didefinisikan yaitu setiap elemen para ditulis dengan huruf tebal (diapit dengan tag <B></B> yang merupakan tag HTML untuk menebalkan tulisan).
Contoh lain dari pola-pola di atas adalah :
·        <xsl:template match="*"> : dicocokkan dengan semua elemen.
·        <xsl:template match="bab/bagian"> : dicocokkan dengan elemen bagian yang mempunyai elemen induk bab
·        <xsl:template match="bab|bagian"> : dicocokkan dengan elemen bab dan elemen bagian
·        <xsl:template match="bab//para"> : dicocokkan dengan setiap elemen para yang berada satu level atau beberapa level di bawah elemen bab
·        <xsl:template match="bab[@id=’2’]"> : dicocokkan dengan elemen bab yang memiliki atribut bernilai 2

Namespace


Setiap file XSL harus memiliki dan menyebutkan Namespace. Namespace ini diperlukan agar prosesor mengenal elemen-elemen dan atribut-atribut yang didefinisikan oleh namespace ini. Dalam contoh dipakai elemen-elemen dan atribut-atribut yang telah didefinisikan oleh World Wide Web Consortium (W3C). Namespace dari W3C adalah : http://www.w3.org/1999/XSL/Transform.
Penyebutan Namespace dalam XSL ini adalah sebagai berikut :

<xsl:stylesheet version=”1.0”
xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”>
…………(template dan pola-pola XSL)
</xsl:stylesheet>

Kita dapat menggunakan definisi tambahan (extension) dengan menyebutkan namespace dari pembuatnya. Definisi ini tidak boleh merubah definisi yang telah ditetapkan oleh W3C, serta namespace dari W3C tidak dapat dihilangkan.
          Contohnya :
<xsl:stylesheet version=”1.0”
xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”
xmlns:”http://www.apacoba.com/XSL”>
…………(template dan pola-pola XSL)
</xsl:stylesheet>

Bila namespace ini tidak disebutkan, maka prosesor transformasi tidak dapat mengetahui definisi mana yang dipakai. Pada XALAN, pesan kesalahannya berupa :

The prefix “xsl” for element “xsl:stylesheet” is not bound

berarti, stylesheet didefinisikan secara tak terbatas, maka tidak dapat diproses.
Definisi-definisi tambahan (extension) dari namespace, seperti disebutkan di atas, tidak boleh mengubah aturan-aturan dasar dari W3C. Tambahan yang dapat didefinisikan dalam hal ini dapat berupa:
-         informasi yang digunakan oleh elemen-elemen dan/atau fungsi-fungsi tambahan
-         informasi tentang apa yang akan dilakukan dengan file hasil
-         informasi tentang bagaimana memperoleh file input
-         metadata XSL
-         dokumentasi terstruktur XSL

Version

Setiap elemen teratas dari file XSL harus menyebutkan versi dari XSL. Untuk waktu sekarang ini, versi yang beredar adalah versi 1.0. dan 2.0
Contoh :
<xsl:stylesheet version=”1.0”
xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”>

Contoh Transformasi

Berikut contoh dari transformasi dengan dokumen input present.xml, dokumen stylesheet present2.xsl.
Struktur dari dokumen inputnya sebagai berikut :

Kode file XMLnya adalah :

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="present2.xsl" output="html"?>
<serbaserbi>
<berita minggu="1">
<judul> Mahasiswa berprestasi bulan ini </judul>
<teks>
            Sesuai dengan kebijaksanaan jurusan demi memacu prestasi mahasiswanya
            maka pada malam <acara> Anugerah Ekselensia Elektro </acara> yang diadakan
            <tanggal> 17 Agustus 2002 </tanggal> yang lalu telah diberikan anugerah
            kepada empat orang mahasiswa berprestasi. Hadiah yang diberikan sangat
            menggiurkan, yaitu dapat tidak mengikuti kuliah selama satu bulan tanpa
            sanksi. Berikut daftar mahasiswa berprestasi tersebut.
</teks>
<mhs id="1">
            <nim>22729</nim>
            <nama>Aditya BS Siregar</nama>
            <ipk>3,02</ipk>
            <alamat> Jl. Pacar 4 Baciro Baru Yogyakarta </alamat>
            <angkatan> 1998 </angkatan>
</mhs>
<mhs id="2">
            <nim>22666</nim>
            <nama>Pupus Adiwaluyo</nama>
            <ipk>3,34</ipk>
            <alamat> BangjoNet Tepi selokan </alamat>
            <angkatan> 1998 </angkatan>
</mhs>
<mhs id="3">
            <nim>21759</nim>
            <nama>Yudha Condor Sulaeman</nama>
            <ipk>3,88</ipk>
            <alamat> FastNet Fakultas Teknik Uge-Em </alamat>
            <angkatan> 1997 </angkatan>
</mhs>
<mhs id="4">
            <nim>23726</nim>
            <nama>Cindy Wanita Palingayu Sadonya</nama>
            <ipk>3,99</ipk>
            <alamat> Jl. Pacar 4 Baciro Baru Yogyakarta, idem dg Aditya </alamat>
            <angkatan> 1998 </angkatan>
</mhs>
</berita>
</serbaserbi>

Sedang kode file XSLnya adalah :

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xalan="http://xml.apache.org/xslt">

<xsl:template match="/">
  <html><body bgcolor="#675654">
    <xsl:apply-templates/>
 </body></html>
</xsl:template>

<xsl:template match="berita">
   <p/><font face="arial">
   <b><u> Berita minggu ke : <xsl:value-of select="@minggu"/></u></b></font>
   <p/>
   <xsl:apply-templates/>
</xsl:template>

<xsl:template match="berita/judul">
   <p/>
   <font size="6" face="verdana"> <xsl:apply-templates/></font>
   <p/>
</xsl:template>

<xsl:template match="berita/teks">
   <p/>
   <table size="44"><tr><td><font face="verdana" size="2">
   <xsl:value-of select="."/>
   </font></td></tr></table>
   <p/>
</xsl:template>

<xsl:template match="berita/mhs">
 <p/><font face="arial" size="2">
    <b>Nomor :</b><xsl:value-of select="@id"/><br/>
    <xsl:apply-templates/></font>
 <p/>
</xsl:template>

<xsl:template match="berita/mhs/*">
    <xsl:choose>
    <xsl:when test="local-name(.)='nama'">
      <b>Nama:</b>
    </xsl:when>
    <xsl:when test="local-name(.)='nim'">
      <b>NIM:</b>
    </xsl:when>
    <xsl:when test="local-name(.)='angkatan'">
      <b>Angkatan:</b>
    </xsl:when>
    <xsl:when test="local-name(.)='alamat'">
      <b>Alamat:</b>
    </xsl:when>
    <xsl:when test="local-name(.)='ipk'">
      <b>IPK:</b>
    </xsl:when>
   </xsl:choose>
  <xsl:value-of select="."/>
  <br/>
</xsl:template>

</xsl:stylesheet>


Transformasi ke format HTML dengan XALAN JAVA 2

Xalan-Java merupakan sebuah program yang berfungsi untuk mentransformasikan dokumen XML ke berbagai macam format dokumen lainnya (contoh : HTML, Text (txt)). Dalam proses transformasi tersebut Xalan-Java mengacu pada pedoman transformasi yang disimpan dalam file XSLT (Extensible Stylesheet Language Transformation). Maka, Xalan-Java mendukung seluruh kata-kata transformasi dalam standar XSLT versi 1.0, sekaligus mendukung pula bahasa XPath (XML Path Language) versi 1.0 yang direkomendasikan oleh World Wide Web Consortium (W3C).






       Untuk melakukan transformasi, sebelumnya harus diinstal Java Development Kit (JDK) 1.2.2 atau dengan versi yang lebih tinggi.Dalam proses instalasi, pertama yang dilakukan adalah men-download file xalan-j_2_4_D1-bin.zip dari situs http://xml.apache.org/xalan-j. Kemudian setelah disimpan dalam hard disk, file tersebut diekstrak ke direktori yang diinginkan. Untuk dapat melakukan transformasi, file-file .jar yang diperlukan harus disertakan dalam classpath, agar aplikasi java.exe yang terdapat dalam JDK 1.2.2 dapat menemukan kelas-kelas yang diperlukan untuk melaksanakan transformasi.File-file .jar yang diperlukan adalah :
-         xerces.jar
-         xalan.jar
-         xml-apis.jar
File-file .jar di atas telah disertakan dalam distribusi Xalan-Java, terletak dalam folder xalan/bin.
Ketiga file tersebut dimasukkan dalam classpath dengan perintah :

> set classpath = c:\java\xalan\bin\xalan.jar; c:\java\xalan\bin\xerceslmpl.jar; c:\java\xalan\bin\xml-apis.jar

Proses transformasi dilakukan dengan memanggil kelas seperti tersebut di atas, dengan menuliskan flag-flag sebagai berikut :

> java org.apache.xalan.xslt.Process –in present.xml –xsl present.xsl –out present.htm

Perintah di atas memproses input file present.xml, berdasarkan XSL yang terdapat pada file present.xsl, dan menghasilkan output yang berformat HTML pada present.htm
Sedangkan perintah di bawah ini menghasilkan file Microsoft Word (.doc) :

> java org.apache.xalan.xslt.Process –in present.xml –xsl present.xsl –out present.doc
SUMBER:

0 komentar:

Posting Komentar