SISTEM TERDISTRIBUSI XML FUNDAMENTAL Dosen Pengampu : Fandy Setyo Utomo, S.Kom., M.Cs Agenda Perkuliahan : 1. Struktur XML 2. Elemen, Tag, Data Karakter, dan Attribute 3. CDATA Section 4. Komentar 5. Deklarasi XML 6. XML Well Formed 7. Mengaitkan dokumen XML dengan HTML Tujuan Perkuliahan : 1. Mahasiswa dapat membuat dokumen XML dan file XML Well Formed. 2. Mahasiswa dapat membedakan antara Tag, Elemen, Attribute, CDATA, dan Entity. 3. Mahasiswa dapat mengaitkan dokumen XML dengan halaman HTML. 1 Saat ini XML sangat populer. Format penyimpanan data XML membuat platform ini independen dan bermacam aplikasi dapat memprosesnya dengan mudah. XML kepanjangan dari Extensible Markup Language. Informasi dalam XML disimpan di dalam Tag. Markup berarti sebuah bahasa yang dibangun dengan menggunakan Tag untuk mengelilinginya atau Markup Text. Pada HTML, tag didefinisikan dan diterjemahkan oleh browser. Pada XML tidak ada struktur informasi yang disampaikan seperti pada HTML, sehingga untuk menampilkan informasi diperlukan parser untuk menerjemahkan antara data dan tag. A. Struktur Dokumen XML Dokumen XML berisi informasi dan markup yang dibagi menjadi beberapa bagian penting, yaitu : 1. Element Masing-masing dokumen XML berisi satu atau lebih elemen. Elemen mengenalkan dan menandakan isi. Elemen mendominasi di dalam dokumen XML. Beberapa orang menyebut elemen dengan nodes. Aturan penulisan XML adalah case sensitive. Berikut adalah contoh sebuah element : <tag>Some Text</tag> Elemen di atas berisi 2 tag dan beberapa text. Elemen dapat berisi elemen yang lain. Elemen juga dapat berisi “kosong” atau tidak berisi teks, seperti HTML, XML dimulai dengan tag pembuka dan penutup. Sebuah elemen kosong dituliskan dengan : <tagname></tagname> atau <tagname /> Ketika elemen berisi elemen yang lain, elemen yang diisi disebut dengan parent dan elemen di dalamnya disebut child. <tagname> <childTag>Some Text</ childTag> </tagname> 2 Elemen pertama pada dokumen XML disebut root element atau document root atau root node. Root element berisi elemen yang lain. Struktur dokumen XML dapat dilihat pada ilustrasi berikut : Sekarang, anda buat dokumen XML yang mencakup apa yang telah dibahas sebelumnya. Tulis kode program di bawah ini dan simpan dengan nama latihan2.xml pada folder masing-masing. <orang> <mahasiswa>Budi Susanto</mahasiswa> <mahasiswa> <nim>07.11.0123</nim> <nama>Agung Laksono</nama> </mahasiswa> <mahasiswa></mahasiswa> <mahasiswa> <nim>08.12.0657</nim> <nama> <nama_depan>Ali</nama_depan> <nama_belakang>Sadikin</nama_belakang> </nama> </mahasiswa> <mahasiswa /> </orang> 3 2. Attribute Attribute berfungsi sebagai tambahan informasi tentang sebuah elemen. Attribute disimpan dengan tag pembuka sebuah elemen setelah nama elemen. Attribute menguraikan antara nama dan nilainya, dan setiap attribute harus memiliki keduanya, yaitu nama dan nilai. <tagname attributeName=”attributeValue”> Some Text </tagname> Contoh : <person born="1912-06-23" died="1954-06-07"> Alan Turing </person> 3. Text Text menggambarkan isi informasi diantara tag pembuka dan tag penutup elemen. Contohnya : <fullname> Alan Turing </fullname> 4. Entity References Text diantara tag pembuka dan tag penutup dalam sebuah elemen akan diproses dalam pengolahan XML, sehingga spesial karakter seperti “<” dan “>” diganti dengan entity &lt; dan &gt; Contoh : <tutorial> <judul>Menuliskan Elemen Sedrhana</judul> <penulis>Hendra Kusmayadi</penulis> <isi> Berikut adalah contoh penulisan elemen sederhana &lt;mahasiswa&gt;Joni Suraya&lt;/mahasiswa&gt; 4 </isi> </tutorial> 5. Comment Comment atau komentar dalam XML sama dengan comment pada HTML, yaitu dimulai dengan karakter “<!--” dan diakhiri dengan “-->” Sintaq : <!-- Ini adalah bagian komentar, tidak akan dieksekusi --> 6. CDATA Sections Pada bahasan sebelumnya kita telah membahas apa yang namanya entity references dimana jika kita akan menuliskan string “<” maka yang kita tuliskan adalah entitasnya yaitu “&lt”. Namun, dengan menggunakan CDATA kita dapat menuliskan string atau karakter tersebut tanpa harus menggunakan entitas. Cara penulisannya adalah dengan diawali string “<![CDATA[” dan diakhiri dengan “]]>”. Contoh : <tutorial> <judul>Menuliskan Elemen Sederhana</judul> <penulis>Hendra Kusmayadi</ penulis > <isi> Berikut adalah contoh penulisan elemen sederhana <![CDATA[ <mahasiswa>Joni Suraya</mahasiswa> ]]> </isi> </tutorial> 5 B. Deklarasi XML Sebuah dokumen XML biasanya dimulai dari XML Declaration, meskipun itu bersifat optional. Deklarasi XML berada pada baris pertama dokumen XML. Contoh deklarasi XML adalah sebagai berikut : <?xml version="1.0" encoding="ASCII" ?> Deklarasi XML berisi versi XML. Dalam contoh di atas adalah versi 1.0. C. XML Well Formed Sebuah dokumen XML dikatakan Well Formed jika memenuhi kriteria berikut ini : 1. Dokumen berisi satu atau lebih elemen 2. Dokumen berisi single root element, yang mana berisi beberapa elemen di dalamnya 3. Tiap elemen harus ditutup 4. Tag pembuka dan tag penutup harus sama (case sensitive) 5. Nilai attribute berada di dalam tanda petik (“....”) D. Mengaitkan Dokumen XML dengan HTML (Case Study) Untuk lebih memperdalam pengertian XML, kita akan membandingkan dengan model data yang sering digunakan, yaitu model data relasional. Database relasional direpresentasikan dalam bentuk tabel. Dalam sebuah tabel terdiri dari kolom atau field dan record. Diketahui dari database perpustakaan, terdapat tabel buku dengan susunan informasi sebagai berikut : ID 1 Judul Pemrograman Penerbit Graha Ilmu Basis Data Penulis Sri ISBN 989-209- Jum Hal 151 Kusumadewi 321-1 dengan C#.NET 2 Perancangan Andi Samuel Game 3D 3 Teknik Instalasi 298-211- 200 443-2 Pohon Mohammad 6 233-123- 97 dan Cahaya Imron 321-1 Graha Ilmu Andi 988-555- Sunyoto 212-3 Maintenance Komputer 4 Algoritma dan Struktur Data 322 dengan Java Kemudian, informasi yang ada pada tabel buku tersebut, kita ubah ke dalam bentuk XML. Ketikkan kode program berikut, kemudian simpan dengan nama buku.xml <?xml version="1.0" encoding="utf-8"?> <buku> <idBuku id="1"> <judul>Pemrograman Basis Data dengan C#.NET</judul> <penerbit>Graha Ilmu</penerbit> <penulis>Sri Kusumadewi</penulis> <isbn>989-209-321-1</isbn> <jumlah_halaman>151</jumlah_halaman> </idBuku> <idBuku id="2"> <judul>Perancangan Game 3D</judul> <penerbit>Andi</penerbit> <penulis>Samuel</penulis> <isbn>298-211-443-2</isbn> <jumlah_halaman>200</jumlah_halaman> </idBuku> <idBuku id="3"> <judul>Teknik Instalasi dan Komputer</judul> <penerbit>Pohon Cahaya</penerbit> <penulis>Mohammad Imron</penulis> <isbn>233-123-321-1</isbn> <jumlah_halaman>97</jumlah_halaman> 7 Maintenance </idBuku> <idBuku id="4"> <judul>Algoritma dan Struktur Data dengan Java</judul> <penerbit>Graha Ilmu</penerbit> <penulis>Andi Sunyoto</penulis> <isbn>988-555-212-3</isbn> <jumlah_halaman>322</jumlah_halaman> </idBuku> </buku> Kemudian, dokumen buku.xml yang telah dibuat, akan kita hubungkan dengan HTML, sehingga tampilan datanya lebih menarik. Ketikkan kode program berikut, kemudian simpan dengan nama koleksi.html (simpan koleksi.html, satu folder dengan buku.xml). <!DOCTYPE html Transitional//EN" PUBLIC "-//W3C//DTD XHTML 1.0 "http://www.w3.org/TR/xhtml1/DTD/xhtml1- transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Koleksi Buku Perpustakaan</title> </head> <body> <XML ID="dsoBuku" SRC="buku.xml"></XML> <center> <h2>KOLEKSI BUKU PERPUSTAKAAN</h2> </center> <br /><br /> <button onclick="tabelBuku.firstPage()">First</button> <button onclick="tabelBuku.previousPage()">Prev</button> 8 <button onclick="tabelBuku.nextPage()">Next</button> <button onclick="tabelBuku.lastPage()">Last</button> <br /> <table id="tabelBuku" datapagesize="2" DATASRC="#dsoBuku" border="1" cellpadding="2" cellspacing="2"> <thead> <th>Judul</th> <th>Penerbit</th> <th>Penulis</th> <th>ISBN</th> <th>Jumlah Halaman</th> </thead> <tr> <td><span DATAFLD="judul"></span></td> <td><span DATAFLD="penerbit"></span></td> <td><span DATAFLD="penulis"></span></td> <td><span DATAFLD="isbn"></span></td> <td><span DATAFLD="jumlah_halaman"></span></td> </tr> </table> </body> </html> 9 Hasilnya akan tampak di browser, seperti berikut ini : 10 SISTEM TERDISTRIBUSI DOCUMENT TYPE DEFINITIONS (DTD) & NAMESPACE Dosen Pengampu : Fandy Setyo Utomo, S.Kom., M.Cs Agenda Perkuliahan : 1. Validation 2. Deklarasi elemen 3. Deklarasi Atribut 4. General Entity Declarations 5. Standar penempatan DTD 6. Sintak Namespace 7. Namespace dan DTD Tujuan Perkuliahan : 1. Mahasiswa memahami DTD 2. Mahasiswa dapat menggunakan DTD untuk elemen dan atribut 3. Mahasiswa dapat membuat dokumen XML berdasarkan DTD yang telah ada 4. Mahasiswa dapat memahami maksud dan tujuan dari pembuatan namespace 5. Mahasiswa dapat menentukan kapan menggunakan namespace 11 DOCUMENT TYPE DEFINITIONS (DTD) DTD berfungsi untuk mendefinisikan tipe dokumen XML. DTD ditulis untuk menjelaskan elemen dan entitas yang mungkin muncul di dalam dokumen dan elemen isi serta atributnya. Sehingga dapat diketahui seperti apa struktur dokumen dan dapat membedakan yang mana tag dan yang mana elemen. A. Validation DTD digunakan untuk mendeklarasikan semua elemen, atribut, dan entitas yang akan digunakan di dalam dokumen. Semua elemen, atribut, dan entitas yang akan digunakan harus dideklarasikan di dalam DTD. Sebagai contoh, buatlah dokumen XML berikut yang menyertakan deklarasi DTD. Kemudian, simpan file tersebut dengan nama latihanDTD.xml : <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mahasiswa [ <!ELEMENT mahasiswa (nim,nama,jurusan,alamat,telp)> <!ELEMENT nim (#PCDATA)> <!ELEMENT nama (nama_depan,nama_belakang)> <!ELEMENT nama_depan (#PCDATA)> <!ELEMENT nama_belakang (#PCDATA)> <!ELEMENT jurusan (#PCDATA)> <!ELEMENT alamat (#PCDATA)> <!ELEMENT telp (#PCDATA)> ]> <mahasiswa> <nim>10.11.0178</nim> <nama> <nama_depan>Budi</nama_depan> <nama_belakang>Hartanto</nama_belakang> </nama> <jurusan>Teknik Informatika</jurusan> <alamat>Jl. Kaliputih no. 121</alamat> 12 <telp>08123476556</telp> </mahasiswa> B. Dekalarasi Elemen Jika dipahami pada dokumen XML di atas, ada beberapa bagian dari deklarasi elemen, yaitu : 1. #PCDATA Konten yang terkandung di dalam elemen yang dimaksud adalah text. Meskipun data yang ada di elemen tersebut berupa angka, tetap dianggap sebagai text. Contoh : <!ELEMENT telp (#PCDATA)> 2. Elemen anak Nama anak ditulis di dalam tanda kurung. Misalnya : ELEMENT fax (phone_number)> 3. Sequence Kita dapat menuliskan elemen anak lebih dari satu pada deklarasinya. Dengan penulisan ini dimaksudkan untuk menuliskan elemen anak lebih dari satu elemen. Misalnya : <!ELEMENT nama (nama_depan,nama_belakang)> 4. Jumlah anak Penulisan jumlah anak dari suatu elemen dapat kita tuliskan dengan cara menambahkan tanda berikut pada akhir nama elemen. Karakter Arti + Muncul satu kali atau lebih. Minimal muncul satu kali * Muncul 0 kali atau lebih ? Boleh tidak muncul, tapi jika muncul maksimal 1 kali | Fungsi ATAU 13 Contoh penggunaannya sebagai berikut : <!ELEMENT mahasiswa (telp+)> Artinya, elemen mahasiswa memiliki satu atau lebih elemen telp. 5. Elemen Kosong Elemen kosong adalah sebuah tag yang tidak memiliki elemen nilai. Penulisannya dapat berupa : <image source="bus.jpg" width="152" height="345" alt="Alan Turing standing in front of bus"/> Dengan deklarasi elemennya : <!ELEMENT image EMPTY> 6. Any Kita dapat mengijinkan apapun dapat berada pada suatu elemen. Penulisan deklarasinya adalah : <!ELEMENT page ANY> C. Deklarasi Atribut Sama seperti elemen, dokumen dikatakan valid jika dapat menyatakan semua atribut elemen jika elemennya memiliki atribut. Sintaks penulisannya adalah dengan ATTLIST. Sebagai contoh, buatlah dokumen XML berikut yang menyertakan deklarasi atribut. Kemudian, simpan file tersebut dengan nama latihanAttlist.xml : <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE orang [ <!ELEMENT orang (nama)> <!ELEMENT nama (#PCDATA)> <!ATTLIST nama profesi CDATA #REQUIRED hobi CDATA "Belajar" umur CDATA #IMPLIED jenis_kelamin CDATA #FIXED "Pria"> 14 ]> <orang> <nama profesi="Dosen">Moh. Imron</nama> </orang> D. General Entity Declarations Kita juga dapat mendeklarasikan entitas sesuai dengan yang kita inginkan. Sebagai contoh, buatlah file dengan nama latihanEntity.xml dengan isi sebagai berikut : <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE orang [ <!ELEMENT orang (nama, email)> <!ELEMENT nama (#PCDATA)> <!ELEMENT email (#PCDATA)> <!ENTITY mail "[email protected]"> ]> <orang> <nama>Moh. Imron</nama> <email>&mail;</email> </orang> E. Standar Penempatan DTD DTD dan validity merupakan hal yang sangat penting ketika kita hendak mengganti data dengan yang lainnya. Hal ini untuk memastikan kita, apakah data yang kita kirim diterima dengan baik. 15 F. File DTD dan File XML Kita juga dapat membuat file DTD pada file yang terpisah dengan dokumen XML aslinya. Caranya dengan penulisan DTD-nya menjadi : <!DOCTYPE nama_dokumen SYSTEM “lokasi_file_DTD”> Sekarang, ubah file latihan latihanDTD.xml, menjadi; <?xml version=”1.0” encoding=”UTF-8”?> <!DOCTYPE mahasiswa SYSTEM “mahasiswa.dtd”> <mahasiswa> <nim>10.11.0178</nim> <nama> <nama_depan>Budi</nama_depan> <nama_belakang>Hartanto</nama_belakang> </nama> <jurusan>Teknik Informatika</jurusan> <alamat>Jl. Kaliputih no. 121</alamat> <telp>08123476556</telp> </mahasiswa> Dan buat dokumen baru dengan nama mahasiswa.dtd yang isinya sebagai berikut : <!ELEMENT mahasiswa (nim,nama,jurusan,alamat,telp)> <!ELEMENT nim (#PCDATA)> <!ELEMENT nama (nama_depan,nama_belakang)> <!ELEMENT nama_depan (#PCDATA)> <!ELEMENT nama_belakang (#PCDATA)> <!ELEMENT jurusan (#PCDATA)> <!ELEMENT alamat (#PCDATA)> <!ELEMENT telp (#PCDATA)> Kemudian, cek hasilnya di browser. 16 G. Studi Kasus DTD Buatlah file DTD dengan ketentuan sebagai berikut : 1. Studi kasus tentang koleksi film yang ada di Bioskop Rajawali Purwokerto. 2. Data film terdiri dari judul film, pemain, sutradara, jenis film/kategori, produser 3. Setiap film harus memiliki judul dan maksimal hanya satu judul untuk satu film 4. Dalam satu film harus memiliki paling tidak satu nama pemain 5. Tiap film harus memiliki sutradara dan hanya boleh ada satu sutradara untuk satu film 6. Satu film bisa termasuk dalam beberapa kategori film, contoh : film “Battleship” termasuk dalam kategori Action & Fiction 7. Dalam satu film boleh memiliki lebih dari satu produser. nama produser tidak harus disertakan dalam informasi film tersebut 8. Judul film dapat memiliki attribut berupa “durasi” yang merupakan informasi tentang lama film (dalam menit), tapi bisa juga tidak. 9. Judul film harus memiliki attribut tahun produksi yang merupakan informasi tentang tahun pembuatan film tersebut. Kemudian, buat file XML dari DTD tersebut. 17 NAMESPACES A. Definisi Namespaces merupakan penambahan suatu string pada suatu elemen. Namespaces diimplementasikan dengan menempelkan awalan untuk setiap elemen dan atribut. Penulisannya dengan menambahkan string tertentu pada elemen/atribut yang kemudian dibatasi oleh titik dua ( : ) antara namespace nama elemen/atribut. Setiap awalan dipetakan ke URI oleh atribut xmlns:prefix. URI default juga dapat diberikan untuk elemen yang tidak memiliki prefix atribut xmlns. Elemen dan atribut yang melekat pada URI yang sama, merupakan namespace yang sama. B. Tujuan Tujuan namespaces untuk membedakan antara nama elemen dengan nama atribut yang sama, namun memiliki arti yang berbeda, dan untuk berbagai nama yang sama, serta untuk semua grup terkait dengan elemen dan atribut dari satu aplikasi share XML, sehingga perangkat lunak dapat dengan mudah mengenali mereka. C. Contoh XML DAN NAMESPACES Untuk kasus penggunaan elemen, misalnya jika kita ingin menuliskan sebuah dokumen untuk menyimpan nama bambu, dimana bambu yang pertama merupakan data untuk menyatakan bahwa sebuah bambu akan digunakan untuk membuat pagar rumah dimana penulisan elemen tersebut adalah sebagai berikut : <bambu> <jenis>Jawa</jenis> <panjang>2</panjang> </bambu> sedangkan ada dokumen yang kedua menyatakan bahwa bambu itu adalah sebuah merk produk dengan penulisan dokumen : 18 <bambu> <jumlah>246</jumlah> <hargasatuan>200</hargasatuan> </bambu> Apabila kedua file XML tersebut digabungkan pada sebuah dokumen tunggal, maka akan menyebabkan pemrosesan yang ambigu. Solusinya, yaitu dengan menambahkan namespace, dengan sintak dasar sebagai berikut : <prefiks:nama_elemen xmlns:prefiks=”Namespace”> prefiks adalah awalan yang digunakan, nama_elemen merupakan nama elemen yang akan diberi namespace, karena memiliki kesamaan nama dengan elemen lain namun berbeda maksud. Sehingga, bentuk penulisan dokumen XML tersebut menjadi : <bahan> <n_pertama:bambu xmlns:n_pertama="Namespace1"> <n_pertama:jenis>Jawa</n_pertama:jenis> <n_pertama:panjang>3m</n_pertama:panjang> </n_pertama:bambu> <n_kedua:bambu xmlns:n_kedua="Namespace2"> <n_kedua:jumlah>100</n_kedua:jumlah> <n_kedua:hargasatuan>300</n_kedua:hargasatuan> </n_kedua:bambu> </bahan> Simpan dokumen tersebut dengan nama latihNamespace.xml 19