Praktikum XML

189
Politeknik Telkom Praktikum Pemrograman XML Praktikum Pemrograman EXtensible Markup Languange XML POLITEKNIK TELKOM BANDUNG 2009

Transcript of Praktikum XML

Page 1: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum

Pemrograman EXtensible Markup Languange

XML

POLITEKNIK TELKOM

BANDUNG 2009

Page 2: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Penyusun dan Editor Hendra Kusmayadi

Eko Darwiyanto

Dilarang menerbitkan kembali, menyebarluaskan atau menyimpan baik

sebagian maupun seluruh isi buku dalam bentuk dan dengan cara apapun

tanpa izin tertulis dari Politeknik Telkom.

Hak cipta dilindungi undang-undang @ Politeknik Telkom 2009

No part of this document may be copied, reproduced, printed, distributed, modified,

removed and amended in any form by any means without prior written

authorization of Telkom Polytechnic.

Page 3: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

iii PAGE 10

Kata Pengantar

Assalamu’alaikum Wr. Wb

Segala puji bagi Allah SWT karena dengan karunia-Nya courseware ini

dapat diselesaikan.

Atas nama Politeknik Telkom, kami sangat menghargai dan ingin

menyampaikan terima kasih kepada penulis, penerjemah dan

penyunting yang telah memberikan tenaga, pikiran, dan waktu sehingga courseware ini dapat tersusun.

Tak ada gading yang tak retak, di dunia ini tidak ada yang sempurna,

oleh karena itu kami harapkan para pengguna buku ini dapat

memberikan masukan perbaikan demi pengembangan selanjutnya.

Semoga courseware ini dapat memberikan manfaat dan membantu

seluruh Sivitas Akademika Politeknik Telkom dalam memahami dan

mengikuti materi perkuliahan di Politeknik Telkom. Amin.

Wassalamu’alaikum Wr. Wb.

Bandung, Mei 2009

Christanto Triwibisono Wakil Direktur I

Bidang Akademik & Pengembangan

Page 4: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

iv PAGE 10

Daftar Isi

Kata Pengantar................................................................................iii Daftar Isi .......................................................................................... iv 1 Pengenalan XML ................................................................... 1 Hubungan XML Dengan HTML .............................................................................. 2 Cara Kerja XML ......................................................................................................... 5 2 XML Fundamentals ............................................................... 8 Dokumen XML dan File XML ................................................................................. 9 Elemen, Tag, dan Data karakter .............................................................................. 9 Atribut ........................................................................................................................ 12 Entity References ..................................................................................................... 13 CDATA Sections ...................................................................................................... 14 Komentar ................................................................................................................... 15 Deklarasi XML .......................................................................................................... 17 Checking Documents for Well-Formedness ..................................................... 17 3 Document Type Definitions (DTD) .....................................23 Validation ................................................................................................................... 24 Deklarasi Elemen ...................................................................................................... 25 Deklarasi Atribut ...................................................................................................... 34 General Entity Declarations................................................................................... 35 External Parsed General Entities .......................................................................... 36 External Unparsed Entities and Notations ......................................................... 36 Parameter Entity ....................................................................................................... 37 Conditional Inclusion ............................................................................................... 37 Contoh Two DTD ................................................................................................... 38 Standar Penempatan DTD ..................................................................................... 39 4 Namespaces ..........................................................................41 Kebutuhan Namespace ........................................................................................... 42 Sintaks Namespace ................................................................................................... 42 Namespaces dan DTD ............................................................................................ 44 5 XML pada Web.....................................................................46 XHTML....................................................................................................................... 47 Direct Display pada browser................................................................................. 49 Authoring Compound Documents with Modular XHTML ............................ 50 Prospects for Improved Web-Search Methods ................................................ 50 6 XSL Transformations (XSLT) .............................................52 Contoh Dokumen XML.......................................................................................... 53 xsl:stylesheet ............................................................................................................. 53 Contoh Stylesheet Processors .............................................................................. 54

Page 5: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

v PAGE 10

Templates and Template Rules ............................................................................. 54 Elemen with xsl:value-of ......................................................................................... 56 Element xsl:apply-templates ................................................................................... 56 Built-in Pada Template Rule ................................................................................... 59 Mode ......................................................................................................................... 60 Template untuk nilai Attribute .............................................................................. 60 XSLT dan Namespace ............................................................................................. 63 Elemen XSLT ............................................................................................................. 64 7 XPath ....................................................................................66 Struktur Dokumen XML ........................................................................................ 67 Location Paths ........................................................................................................... 67 Menggabungkan Location Part ............................................................................... 75 Predikat ...................................................................................................................... 75 Unabbreviated Location Paths .............................................................................. 76 General XPath Expressions ................................................................................... 76 Fungsi XPath .............................................................................................................. 78 8 XLinks ...................................................................................80 Simple Links ............................................................................................................... 81 Link Behavior ............................................................................................................ 82 Link Semantics .......................................................................................................... 85 Extended Links .......................................................................................................... 86 DTD untuk XLink .................................................................................................... 86 9 XPointer................................................................................89 XPointers pada URL ................................................................................................ 90 Child Sequences ....................................................................................................... 93 Namespace ................................................................................................................ 94 Points ......................................................................................................................... 94 Ranges ......................................................................................................................... 95 10 XML Schemas .......................................................................97 Overview ................................................................................................................... 98 Skema Dasar .............................................................................................................. 98 Bekerja dengan Namespace ................................................................................ 103 Elemen Kosong ...................................................................................................... 103 Tipe kompleks ........................................................................................................ 104 Mixed Content....................................................................................................... 105 Controlling Type Derivation .............................................................................. 105 11 PRAKTIKUM DOM ............................................................108 11.1 Menampilkan data XML ........................................................................... 109 11.2 Insert Data .................................................................................................. 111 11.3 Pencarian Data ........................................................................................... 114

Page 6: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

vi PAGE 10

11.4 Update Data ............................................................................................... 117 11.5 Delete Data ................................................................................................ 121 12 PRAKTIKUM DOM (2).......................................................126 12.1 Validasi dokumen XML dengan DTD ................................................... 127 12.2 Validasi dokumen XML dengan XSD .................................................... 132 12.3 Menampilkan XML dengan XSL ............................................................. 137 13 PRAKTIKUM SAX ..............................................................145 13.1 Menampilkan data XML ........................................................................... 146 13.2 Tampilkan Data XML tanpa tag ............................................................. 151 13.3 Perhitungan terhadap data XML ............................................................ 154 14 PRAKTIKUM WSDL ..........................................................158 14.1 Membuat WSDL dengan wscompile Java ............................................ 159 15 PRAKTIKUM WEB SERVICE(1) .......................................169 15.1 Persiapan ..................................................................................................... 170 15.2 Kode Web Service dengan Java ............................................................. 172 15.3 Install Web Service di Web Server....................................................... 173 a. Cara Instan. ........................................................................................................ 173 - ganti file .java menjadi file .jws (java web service)..................................... 173 - copy file.jws file ke direktori webapp ............................................................ 173 - Jadi!! ...................................................................................................................... 173 Axis menangani kompilasi, pembuatan WSDL dsb. ....................................... 173 b. Cara Custom ..................................................................................................... 173 15.4 Memanggil Web Service .......................................................................... 173 Tahap 2: Buat stubs............................................................................................... 174 Gunakan WSDL2Java untuk membuat client stubs/bindings ....................... 174 java org.apache.axis.wsdl.WSDL2Java Calculator.wsdl membuat: ............. 174 - Calculator.java (interface) ................................................................................. 174 - CalculatorService.java (service interface) ..................................................... 174 - CalculatorServiceLocator.java ......................................................................... 174 (service factory, implements CalculatorService.java) .................................... 174 - CalculatorServiceSoapBindingStub.java ......................................................... 174 (stub for invoking service using SOAP, implements Calculator.java) ........ 174 12 PRAKTIKUM WEB-SERVICE (2) ......................................178 Web Service di ASP.NET ............................................................179 12.1.1 Contoh ..................................................................................................... 179 12.1.2 Penjelasan.................................................................................................... 180 12.2 ASP.NET mengotomatisasikan proses ................................................. 181 Daftar Pustaka

Page 7: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Pengenalan XML 1 PAGE 10

1 Pengenalan XML

Overview

EXtensible Markup Language (XML) merupakan sebuah bahasa markup yang digunakan untuk menandai suatu dokumen data. Markup language

merupakan suatu bahasa pemprograman untuk menandai suatu dokumen. Penandaan dilakukan menggunakan dua buah string tertentu yang mengapit data yang ditandai. String tersebut disebut dengan tag. Tujuan penandaan adalah agar dokumen tersebut lebih mudah dibaca, dipahami serta menarik.

Hal ini dapat kita ibaratkan dengan buku pelajaran yang berisi berbagai macam

tulisan dalam bentuk teks. Saat kita membacanya tentulah hal tersebut

membosankan dan kurang menarik. Pada saat kita kuliah, dosen akan

menerangkan hal-hal yang penting yang ada pada buku tersebut. Sehingga kita

terinisiatif untuk menandai tulisan tersebut pada bagian yang kita anggap

penting dengan menggunakan stabilo. Dengan demikian, apabila ujuan telah

dekat maka yang kita lakukan adalah membaca bagian yang kita telah tandai

tersebut. Penandaan inilah kita sebut dengan markup.

Tujuan

1. Mahasiswa dapat memahami struktur dokumen HTML

2. Mahasiswa dapat memahami penggunaan data dengan XML

Page 8: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

2 Pengenalan XML PAGE 10

Hubungan XML Dengan HTML

HTML merupakan bahasa markup yang menjadi standar penulisan yang dapat

menjelaskan arti tiap bagian yang ditandai dengan tag. Tag-tag yang digunakan

telah didefinisikan, sehingga kita harus menggunakannya sesuai dengan yang

didefinisikan. HTML digunakan sebagai standar pertukarang data melalui

internet. Misalnya kita memiliki sebuah data yang akan kita berikan kepada

orang lain melalui internet, agar orang lain dapat mengerti dengan jelas

maksud dari data kita, maka data tersebut haruslah ditulis menggunakan

HTML dengan format-format tertentu agar web browser dapat membukanya

dan menampilkannya dengan baik. Tampilan data yang akan ditampilkan oleh

web browser sesuai dengan informasi dari masing-masing bagian yang

ditandai. Misalnya pada bagian-bagian tertentu kita tampilkan tulisan dengan

tabel, dapat pula tulisannya ditampilkan dengan cetak tebal, dalam baris yang

berbeda dan lain sebagainya sesuai dengan keinginan kita.

Sebagai contoh, kita akan memberikan data mahasiswa sebagai berikut :

nim : 30100005

nama : Susanto

nim : 30200010

nama : Susilo

nim : 30201011

nama : Susilawati

Jika data tersebut kita tulis hanya seperti itu saja, maka data tersebut akan

tampak seperti berikut :

Page 9: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Pengenalan XML 3 PAGE 10

Tentunya jika kita membacanya sangatlah bingung. Tetapi apabila data

tersebut ditulis dengan format penulisan HTML, yaitu :

<html>

<head>

<title>Contoh pertama</title>

</head>

<body>

<table border='1'>

<tr><th>Nim</th><th>Nama</th></tr>

<tr><td>30100005</td><td>Susanto</td></tr>

<tr><td>30200010</td><td>Susilo</td></tr>

<tr><td>30201011</td><td>Susilawati</td></tr>

</table>

</body>

</html>

simpan file tersebut dengan nama contih1.html. Dengan demikian, maka

tampilan yang akan kita lihat akan lebih jelas dan mudah difahami. Tampilannya

adalah sebagai berikut :

Page 10: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

4 Pengenalan XML PAGE 10

Lalu apa hubungan antara HTML dan XML...?. HTML dan XML adalah sama-

sama dikembangkan dari SGML (Standard Generalized Markup Language).

Namun, perbedaan antara keduanya adalah jika HTML tag-tag yang digunakan

sangat terbatas dan tag-tag tersebut digunakan untuk mengatur penampilan

data, sedangkan XML tag-tag yang digunakan kita dapat definisikan sendiri dan

tag-tag tersebut hanya digunakan untuk penanda bagian dokumen yang

mengandung informasi-informasi dan arti tertentu.

Jika kita menuliskan tekks diatas dan menyimpannya kedalam format XML

(simpan dengan nama contoh1.html), maka browser akan menampilkan sebagai

berikut (dengan menggunakan browser Mozilla Firefox) :

Page 11: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Pengenalan XML 5 PAGE 10

Namun, jika dibuka menggunakan browser Internet Explorer 6 tampilannya

adalah sebagai berikut :

dengan demikian, dapatlah kita lihat perbedaan antara HTML dan XML. Yaitu

HTML menyatukan data dan interface, sedangkan XML hanya berkonsentrasi

pada data saja tanpa mementingkan interface.

Cara Kerja XML

Seperti yang dijelaskan di atas, tentang perbedaan antara HTML dan XML.

Yaitu HTML yang memerintahkan web browser bagaimana menampilkan

informasi yang ada, sedangkan XML hanya menandai informasi secara

terstruktur sehingga memudahkan aplikasi lain untuk menggunakan dokumen

tersebut. Seperti halnya HTML, XML juga menggunakan tag-tag. Jika tag-tag

pada HTML bersifat baku, tag-tag XML dapat dibuat sendiri, sesuai dengan

kebutuhan. Untuk memudahkan aplikasi membaca tag-tag apa saja yang

memuat informasi serta struktur hirarkinya.

Page 12: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

6 Pengenalan XML PAGE 10

Buatlah sebuah contoh dokumen XML seperti pada contoh dibawah ini dan

simpan kedalam file contoh2.xml :

<?xml version="1.0"?>

<product barcode="2394287410">

<manufacturer>Verbatim</manufacturer>

<name>DataLife MF 2HD</name>

<quantity>10</quantity>

<size>3.5"</size>

<color>black</color>

<description>floppy disks</description>

</product>

jika dokumen tersebut kita buka menggunakan web browser, maka tampak

seperti gambar dibawah ni :

Dokumen diatas menjelaskan sebuah data produk yang ada pada suatu

supermarket. Produk tersebut memiliki kode barcode= 2394287410,

manufacturer=Verbatim, name=DataLife MF 2HD, quantity=10,

size=3.5", color=black, description=floppy disks.

Page 13: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Pengenalan XML 7 PAGE 10

Rangkuman

1. EXtensible Markup Language (XML), merupakan sebuah standar W3C-endorsed untuk Markup language

2. Markup language merupakan suatu bahasa pemprograman untuk

menandai suatu dokumen yang disebut dengan tag agar dokumen tersebut lebih mudah dibaca, dipahami serta menarik

3. XML memungkinkan penggunaan data secara cross-platform, long-term data format.

4. XML merupakan keturunan dari SGML yaitu Standard Generalized Markup Language. SGML diciptakan oleh Charles F. Goldfarb, Ed Mosher, dan Ray Lorie di IBM pada tahun 1970an dan dikembangkan

oleh banyak orang sehingga akhirnya dijadikan sebagai standart ISO 8879 pada tahun 1986.

5. XML memungkinkan kita untuk mengumpulkan informasi dan menggunakannya kembali dengan berbagai cara.

Latihan

1. Buatlah sebuah dokumen HTML yang dapat menampilkan data pegawai

suatu perusahaan yang teridiri dari NIP, Nama dan golongan seperti

terlihat pada gambar dibawah ini :

keterangan : tag <b> : untuk menebalkan tulisan

tag <i> : untuk tulisan miring

tag <u> : untuk tulisan garis bawah

Page 14: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

8 XML Fundamentals PAGE 10

2 XML Fundamentals

Overview

Pada bab berikut kita akan belajar bagaimana cara menuliskan dokumen

XML. Kita akan melihat bagaimana penulisan dokumen yang disusun dengan

konten markup dengan text tag seperti halnya pada dokumen HTML. Namun

seperti yang telah dijelaskan sebelumnya, dokumen HTML memiliki tag yang

terbatas yang dapat menjelaskan format halaman web. Sedangkan dengan

menggunakan XML, kita dapat menentukan tag sesuai dengan keinginan kita

dimana tag tersebut akan menjelaskan konten lebih banyak. Meskipun

penulisan tag dalam XML lebih bebas daripada HTML, XML tetap saja

memiliki aturan-aturan dalam penulisannya. Semua dokumen XML harus well-

formed. Well-formed merupakan aturan penulisan yang sesuai, Dalam hal ini,

penulisan masing-masing tag harus berada dalam posisi nested yang sama.

Misalnya penulisan setiap tag awal harus memiliki tag akhir yang sesuai, nilai

atribut harus didalam tanda petik.

Tujuan

1. Mahasiswa dapat membuat dokumen XML dan file XML yang well-

formed

2. Mahasiswa dapat membedakan antara tag, elemen, atribut, Cdata, emtity

serta penggunaannya

Page 15: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XML Fundamentals 9 PAGE 10

Dokumen XML dan File XML

Dokumen XML mengandung data text bukan data binary. Sehingga dokumen

tersebut dapat dibuka atau diubah menggunakan aplikasi text editor seperti

motepad, wordpad, notepad++, dreamweaver atau kita dapat langsung

mengunakan aplikasi XML editor. Contoh penulisan sederhana dari dokumen

adalah :

<person>

Alan Turing

</person>

File dokumen XML dapat disimpan degang extensi *.xml, atau apapun asalkan

file tersebut digunakan sebagai file XML atau isinya adalah file XML. Contoh

penulisan sederhana telah kita bahas pada bab 1.

Elemen, Tag, dan Data karakter

Dokumen XML tersusun atas elemen-elemen yang membentuk hirarki tree /

pohon dimana isi dari elemen dapat berisi elemen lain atau sebuah karakter

data. Spasi termasuk juga bagian dari elemen konten, meskipun pada

kebanyakan aplikasi mengabaikan hail ini.

Sintaks Tag

tag terdiri dari dua baian yaitu tag pembuka dan tag penutup. tag pembuka

diawali dengan “<” dan diakhiri dengan “>”. Sedangkan tag penutup diawali

dengan “</” dan diakhiri dengan “>”. Sedangkan diantara keduanya

merupakan nama elemen dan penulisan nama elemen pada tag pembuka dan

penutup harus sama baik dari segi case sekalipun. Nama elemen kita dapat

tuliskan sesuai dengan keinginan kita, yang penting nama tersebut dapat

mendeskripsikan isi dari elemen. Misalnya suatu elemen menjelaskan

seseorang, maka tag-nya dapat kita tulis dengan <person></person>

atau <orang></orang>, untuk menjelaskan sebuah alamat dapat

menggunakan tag <address></address> atau

<alamat></alamat>.

Elemen Kosong

untuk elemen kosong adalah sebuah elemenyang tidak memiliki isi atau

konten, XML juga menyediakan tag khusus, dimana penulisannya dimulai

dengan tag “<” dan diakhiri dengan “/>”. misalnya pada HTML penulisan yang

Page 16: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

10 XML Fundamentals PAGE 10

dilakukan adalah <br />, <hr />, <input /> bukan dengan <br>,

<hr>, <input>. Namun penulisan tersebut sama artinya dengan

<br></br>, <hr></hr>, <input></input>.

Elemen root

Dokumen XML haruslah memiliki sebuah elemen root dan tidak boleh ada

elemen lain yang sejajar dengannya. Elemen root merupakan suatu elemen

yang terletak paling luar dan tidak memiliki parrent dan elemen ini merupakan

elemen pertama dalam suatu dokumen.

Mixed Conten

Maksud Mixed Conten adalah dimana pada dalam elemen mengandung elemen

dan data text. Misalnya contoh dibawah ini :

<biography>

<name>

<first_name>Alan</first_name>

<last_name>Turing</last_name>

</name>

was one of the first people to truly

deserve the name

…..........

</biography>

sekarang mari kita mencoba membuat sebuah dokumen XML yang mencakup

apa yang telah dibahas sebelumnya. Tulislah kode dibawah ini dan simpan

kedalam sebuah file contoh2_2.xml.

<orang>

<mahasiswa>Joni Saputra</mahasiswa>

<mahasiswa>

<nim>30200011</nim>

<nama>Andriani Sapitri</nama>

</mahasiswa>

<mahasiswa></mahasiswa>

<mahasiswa>

<nim>30200123</nim>

<nama>

<nama_depan>Budi</nama_depan>

<nama_belakang>Susanto</nama_belakang>

Page 17: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XML Fundamentals 11 PAGE 10

</nama>

</mahasiswa>

<mahasiswa />

<mahasiswa>

<nim>30101043</nim>

<nama>Andana Sari</nama>

<kamut>

Jadilah seorang yang baik dan

<sifat>jujur</sifat> serta bewibawa

</kamut>

</mahasiswa>

<mahasiswa>

<nim>30101043</nim>

<nama>Andana Sari</nama>

<teman>Andriani Sapitri</teman>

</mahasiswa>

</orang>

pada contoh diatas jika kita menjalankannya dengan browser, maka tampilan

seperti yang kita lihat dibawah ini :

Page 18: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

12 XML Fundamentals PAGE 10

Atribut

Atribut adalah suatu sifat atau ciri dari suatu elemen. Atribut merupakan

pasangan name-value yang menempel pada elemen tag pembuka. Penggunaan

atritribut tidaklah mutlak. Kita dapat menggunakannya jika kita

menginginkannya, namun jika tidak, maka penulisan atribut tidaklah dianggap

perlu. Penulisan nama atribut dipisahkan dengan spasi dan nilainya diapit

dengan petik satu atau petik dua. Sebagai contoh person memiliki atribut

born dan memiliki nilai 1912-06-23, maka penulisannya :

<person born="1912-06-23" died="1954-06-07">

Alan Turing

</person>

Page 19: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XML Fundamentals 13 PAGE 10

Atau penulisannya dapat juga dengan pengapit petik satu (').

<person died = '1954-06-07' born = '1912-06-23' >

Alan Turing

</person>

Sebagai contoh, buatlah dokumen yang menyatakan data seperti dibawah ini

dan disimpan pada file dengan nama contoh2_2.xml:

<orang>

<nama depan="Ani" belakang="Anindiya"/>

<teman nama="Citra Sari"/>

<teman nama="Permata Indah"/>

<teman nama="Intan Purnama"/>

<teman nama="Mawar Indah"/>

</orang>

Jika dokumen tersebut kita jalankan, maka akan tampak seperti berikut :

Entity References

Dalam penulisan karakter data kita tidak boleh menggunakan tanda “<” atau

“>”. Namun jika karakter sebut adalah penting untuk kita tulis, ada cara untuk kita dapat menuliskannya yaitu dengan cara menuliskan entitasnya. Jika kita

ingin menuliskan string “<” maka sebagai penulisannya adalah &lt;

Page 20: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

14 XML Fundamentals PAGE 10

sedangkan “>” dapat kita tuliskan dengan &gt;. Sebagai contoh, misalnya

kita ingin menuliskan data tutorial XML :

<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;

</isi>

</tutorial>

Jika dokumen tersebut dijalankan, maka tampilan tersebut akan terlihat

seperti gambar dibawah ini :

CDATA Sections

Pada bahasan sebelumnya kita telah membahas apa yang namannya 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 “]]>”.

Sebagai contoh, buatlah kode berikut yang menerapkan CDATA dan simpan

file tersebut dengan nama contoh2_4.xml.

<tutorial>

<judul>Menuliskan Elemen Sedrhana</judul>

<penulis>Hendra Kusmayadi</ penulis >

<isi>

Page 21: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XML Fundamentals 15 PAGE 10

Berikut adalah contoh penulisan elemen sederhana

<![CDATA[

<mahasiswa>Joni Suraya</mahasiswa>

]]>

</isi>

</tutorial>

Jika kita menjalankan kode diatas maka akan terlihat tampilannya seperti

berikut :

Namun ada string tententu yang tidak boleh digunakan pada CDATA, yaitu

“]]>”, karena nantinya string tersebut akan dianggap sebagai sebuah penutup

komentar.

Komentar

Komentar merupakan kode atau string yang ditulis tetapi kode tersebut tidak

akan dieksekusi. Pada kebanyakan bahasa pemprograman, komentar biasanya

ditulis untuk menjelaskan kode yang ditulis agar untuk kemudian hari jika kita ingin melihat kembali kode kita, kita akan dimudahkan dengan melihat

komentar yang kita tulis. Penulisan komentar pada XML sama seperti pada

HTML yaitu dengan diawali dengan “<!--” dan diakhiri dengan “-->”.

Page 22: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

16 XML Fundamentals PAGE 10

Sebagai contoh, buatlah kode berikut yang mengandung komentar dan simpan

file tersebut dengan nama contoh2_5.xml.

<tutorial>

<!-- judul tutorial -->

<judul>Menuliskan Elemen Sedrhana</judul>

<!-- penulis isi tutorial -->

<penulis>Hendra Kusmayadi</penulis>

<isi><!-- isi tutorial -->

Berikut adalah contoh penulisan elemen sederhana

<![CDATA[

<mahasiswa>Joni Suraya</mahasiswa>

]]>

</isi>

</tutorial>

Jika kita menjalankan kode diatas maka akan terlihat tampilannya seperti

berikut :

Namun ada string tententu yang tidak boleh digunakan pada komentar, yaitu

“--”, karena nantinya string tersebut akan dianggap sebagai sebuah penutup komentar.

Page 23: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XML Fundamentals 17 PAGE 10

Deklarasi XML

Sebuah dokumen XML boleh dideklarasikan boleh juga tidak. Pendeklarasian

XML mengandung name dan version, standalone, dan encoding atribut.

Sebagai contoh buatlah dokumen XML dengan kode dibawah ini dan

simpanlah dengan nama contoh2_6.xml :

<?xml version="1.0" encoding="ASCII"

standalone="yes"?>

<mahasiswa>

Johan Sabima

</mahasiswa>

pendeklarasian tidak perlu ditulis pada dokumen XML. Namun, jika pada

dokumen ada pendeklarasian maka deklarasi harus berada paling atas, tidak

boleh didahului sintaks apapun seperti komentar, spasi, dll.

Checking Documents for Well-Formedness

Setiap dokumen XML harus well-formed. Ini berarti harus sesuai dengan

aturan yang ada misalnya :

1. Setiap awal tag harus diakhiri dengan tag yang sama.

<mahasiswa>Johan Sabima</Mahasiswa>

Jika dijalankan maka akan tampak seperti berikut :

Page 24: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

18 XML Fundamentals PAGE 10

2. Elemen boleh bersarang, tetapi tidak boleh saling tumpang tindih

<mahasiswa>

<nama>Johan Sabima</mahasiswa>

</nama>

Jika dijalankan maka akan tampak seperti berikut :

3. Harus memiliki tepat satu elemen root.

<mahasiswa>Johan Sabima</mahasiswa>

<siswa>Adit Pramana</siswa>

Page 25: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XML Fundamentals 19 PAGE 10

Jika dijalankan maka akan tampak seperti berikut :

4. Nilai atribut harus diapit oleh tanda petik.

<mahasiswa nim=30100123>Johan Sabima</mahasiswa>

Jika dijalankan maka akan tampak seperti berikut :

5. Satu elemen tidak boleh memiliki dua atribut yang sama

<mahasiswa nim='30100123' nim='30100132'>

Johan Sabima

</mahasiswa>

Page 26: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

20 XML Fundamentals PAGE 10

Jika dijalankan maka akan tampak seperti berikut :

6. Tidak ada unescaped “<” atau “&” atau tanda-tanda lainnya

<mahasiswa>Johan < Sabima</mahasiswa>

Jika dijalankan maka akan tampak seperti berikut :

Page 27: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XML Fundamentals 21 PAGE 10

Rangkuman

1. Dokumen XML dapat disimpan dengan extensi XML ataupun yang

lainnya asal didalam file tersebut merupakan dokumen XML

2. Penulisan XML name harus mengandung karakter yang sering diunakan

seperti a-z, A-Z, 0-9, -, _.

3. CData digunakan untuk membolehkan kita untuk menuliskan karakter

yang merupakan karakter entity.

4. Komentar merupakan kode yang tidak akan dieksekusi oleh parser

Page 28: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

22 XML Fundamentals PAGE 10

Latihan

1. Buatlah dokumen mahasiswa yang terdiri dari nama, kelas, hobi dan

nim merupakan atribut dari mahasiswa tersebut. Sehingga tampilannya seperti berikut :

gambar soal

Page 29: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Document Type Definitions 23 PAGE 10

3 Document Type Definitions (DTD)

Overview

Meskipun XML sangatlah fleksibel, namun tidak semua program dapat

membaca dokumennya secara baik. Banyak program yang dapat bekerja

dengan beberapa aplikasi XML tetapi terkadang tidak untuk yang lain. Aplikasi

XML harus memastikan bahwa dokumen yang diberikan adalah benar-banar

mematuhi aturan. Misalnya didalam XHTML, pada elemen li merupakan child

dari elemen ol. Dalam hal ini, apakan li atau ul tersebut merupakan bagian

dari tag XML ataukah elemen isi. Solusi untuk permasalahan seperti itu adalah

dengan menggunakan 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

kita tahu bahwa seperti apa struktur dokumen dan dapat membedakan yang

mana tag dan yang mana elemen.

Tujuan

1. Mahasiswa mehamami apa yang dimaksud dengan DTD

2. Mahaiswa dapat menggunakan DTD untuk elemen dan atribut.

3. Mahasiswa dapat membuat dokumen XML berdasarkan DTD yang

sudah ada.

Page 30: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

24 Document Type Definitions PAGE 10

Validation

Dokumen yang valid termasuk jenis dokumen mendeklarasikan DTD. DTD

digunakan untuk mendeklarasikan semua elemen, atribut, dan entitas yang

akan digunakan didalam dokumen. Semua dokumen yang akan ditulis harus

dideklarasikan didalam DTD.

Sebagai contoh, buatlah dokumen XML beririkut yang menyertakan deklarasi

DTD. Simpan file tersebut dengan nama contoh3_1.xml.

<?xml version=”1.0” encoding=”UTF-8”

standalone=”yes” ?>

<!DOCTYPE orang [

<!ELEMENT orang (nama, profesi)>

<!ELEMENT nama (nama_depan, nama_belakang)>

<!ELEMENT nama_depan (#PCDATA)>

<!ELEMENT nama_belakang (#PCDATA)>

<!ELEMENT profesi (#PCDATA)>

]>

<orang>

<nama>

<nama_depan>Hendra</nama_depan>

<nama_belakang>Kusmayadi</nama_belakang>

</nama>

<profesi>Dosen</profesi>

</orang>

Pada contoh diatas, jika kita menjalankan dokumen diatas, maka tampilan

tidak akan berbeda dengan tidak menggunakan DTD. Tampilan yang ada dapat

kita lihat seperti berikut :

Page 31: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Document Type Definitions 25 PAGE 10

Mengapa bisa demikian...? Seperti yang telah kita bahas sebelumnya, bahwa

DTD tidak mempengaruhi ke well-formed-an suatu dokumen. Sehingga

dokumen diatas dianggap dokumen yang well-formed. Namun, meski demikian,

dokumen selain memiliki sifat well-formed, juga memiliki valid atau tidak.

Dengan DTD ini kita akan mengetahui bahwa sebuah dokumen valid atau

tidak. Untuk menyatakan suatu dokumen falid atau tidaknya, kita memerlukan

alat bantu atau tools XML validation yang dapat didownload di

http://msdn.microsoft.com/xml atau http://xmlsoftware.com atau disitus

lainnya. Dalam hal ini penulis menggunakan software IEXMLTLS yang dapat

digunakan pada browser Microsoft Internet Explorer. Atau sekarang kita

sepakati saja bahwa kita menggunakan IEXMLTLS untuk validasi dokumen

XML.

Instal file tesebt dan arahkan lokasi intalnya pada drive C. selanjutnya buka

folder C:\IEXMLTLS dan klik kanan pada file msxmlval.inf kemudian pilih instal.

Lakukan hal yang sama pada file msxmlvw.inf. Jika kita ingin memvalidasi

dokumen, kita hanya dengan mengklik kanan pada space kosong pada IE dan

pilih Validated XML (IEXMLTLS hanya bisa digunakan pada Microsoft Internet

Explorer).

Deklarasi Elemen

Jika dokumen tersebut diatas dijalankan, dan kita memvalidasinya, maka

tampak seperti gambar dibawah ini :

Page 32: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

26 Document Type Definitions PAGE 10

Sekarang kita akan melihat dokumen yang tidak valid dengan mengubah

dokumen menjadi :

<?xml version=”1.0” encoding=”UTF-8”

standalone=”yes” ?>

<!DOCTYPE orang [

<!ELEMENT orang (nama, profesi)>

<!ELEMENT nama (nama_depan, nama_belakang)>

<!ELEMENT nama_depan (#PCDATA)>

<!ELEMENT nama_belakang (#PCDATA)>

<!ELEMENT profesi (#PCDATA)>

]>

<orang>

<nama>

<nama_depan>Hendra Kusmayadi</nama_depan>

</nama>

<profesi>Dosen</profesi>

</orang>

Jika kita menvalidasi dokumen tersebut, maka akan tampak seperti berikut :

Page 33: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Document Type Definitions 27 PAGE 10

Pada contoh diatas, validasi menjadi error karena pada DTDnya elemen nama

harus berisi elemen nama_depan dan nama_belakang. Agar dokumen

tersebut valid, maka pada DTDnya kita dapat dengan mengganti tanda koma (,) menjadi “|” sehingga kodenya menjadi :

<?xml version=”1.0” encoding=”UTF-8”

standalone=”yes” ?>

<!DOCTYPE orang [

<!ELEMENT orang (nama, profesi)>

<!ELEMENT nama (nama_depan | nama_belakang)>

<!ELEMENT nama_depan (#PCDATA)>

<!ELEMENT nama_belakang (#PCDATA)>

<!ELEMENT profesi (#PCDATA)>

]>

<orang>

<nama>

<nama_depan>Hendra Kusmayadi</nama_depan>

</nama>

<profesi>Dosen</profesi>

</orang>

Page 34: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

28 Document Type Definitions PAGE 10

Jika dijalankan dokumen akan tampak seperti berikut :

Jika kita mengubah isi dokumen tersebut menjadi :

<?xml version=”1.0” encoding=”UTF-8”

standalone=”yes” ?>

<!DOCTYPE orang [

<!ELEMENT orang (nama, profesi)>

<!ELEMENT nama (nama_depan | nama_belakang)>

<!ELEMENT nama_depan (#PCDATA)>

<!ELEMENT nama_belakang (#PCDATA)>

<!ELEMENT profesi (#PCDATA)>

]>

<orang>

<nama>

<nama_depan>Hendra Kusmayadi</nama_depan>

</nama>

<profesi>Dosen</profesi>

<profesi>Pedagang</profesi>

</orang>

Page 35: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Document Type Definitions 29 PAGE 10

Maka jika kita validasi akan error, tampak seperti berikut :

Pada dokumen diatas yang membuat validasinya gagal adalah karena elemen

profesi ditulis dua kali, sedangkan pada deklarasinya hanya sekali. Agar sebuah

elemen dapat kita tulis berulang, maka kita dapat menambahkan karakter *, +

atau ?.

Jika dokumen diatas diubah menjadi :

<?xml version=”1.0” encoding=”UTF-8”

standalone=”yes” ?>

<!DOCTYPE orang [

<!ELEMENT orang (nama, profesi*)>

<!ELEMENT nama (nama_depan | nama_belakang)>

<!ELEMENT nama_depan (#PCDATA)>

<!ELEMENT nama_belakang (#PCDATA)>

<!ELEMENT profesi (#PCDATA)>

]>

<orang>

Page 36: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

30 Document Type Definitions PAGE 10

<nama>

<nama_depan>Hendra Kusmayadi</nama_depan>

</nama>

<profesi>Dosen</profesi>

<profesi>Pedagang</profesi>

</orang>

Maka jika kita jalankan hasilnya adalah :

Kita juga dapat membuat file DTD pada file yang terpisah dengan dokumen

XML aslinya. Caranya denga penulisan DTDnya menjadi :

<!DOCTYPE nama_dokumen SYSTEM "lokasi_file_DTD">

Sekarang kita ubah lagi file contoh3_1.xml diatas menjadi :

<?xml version=”1.0” encoding=”UTF-8”

standalone=”no” ?>

<!DOCTYPE orang SYSTEM “orang.dtd”>

<orang>

<nama>

<nama_depan>Hendra Kusmayadi</nama_depan>

</nama>

Page 37: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Document Type Definitions 31 PAGE 10

<profesi>Dosen</profesi>

<profesi>Pedagang</profesi>

</orang>

Dan membuat dokumen baru dengan nama orang.dtd yang isinya sebagai

berikut :

<!ELEMENT orang (nama, profesi*)>

<!ELEMENT nama (nama_depan | nama_belakang)>

<!ELEMENT nama_depan (#PCDATA)>

<!ELEMENT nama_belakang (#PCDATA)>

<!ELEMENT profesi (#PCDATA)>

Jika kita jalankan dan kita validasi file contoh3_1.xml akan tampak seperti

berikut :

Jika kita lihat pada dokumen diatas, ada beberapa bagian darideklarasi elemen

adalah :

6. #PCDATA

Konten yang terkandung didalam elemen yang dimaksud adalah text.

Meskipun data yang ada dielemen tersebut berupa angka, tetap dianggap

sebagai text. Contohnya :

Page 38: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

32 Document Type Definitions PAGE 10

<!ELEMENT phone_number (#PCDATA)>

7. Elemen anak

Penspesifikasi konten sederhana adalah salah satu elemen yang harus

memiliki satu anak dari type yang sesuai. Pada kasus ini, nama anak

ditulis didalam kurung. Contohnya :

<!ELEMENT fax (phone_number)>

Maksudnya adalah elemen phone_number merupakan anak dari

elemen fax.

8. 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 name (first_name, last_name)>

9. Jumlah anak

Penulisan jumlah anak daru suatu elemen dapat kita tuliskan dengan cara

menambahkan tanda berikut pada akhir nama elemen.

Karakter Arti

+ Muncul saatu kali atau lebih. Minimal muncul satu kali

* Muncul 0 kali atau lebih

? Boleh tidak muncul, tapi jika muncul maksimal satu kali

| Fungsi atau

Contoh penggunaannya adalah sebagai berikut :

<!ELEMENT people (phone_number*)>

artinya elemen people boleh memiliki satu atau lebih elemen

phone_number atau bisa juga kosong.

Page 39: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Document Type Definitions 33 PAGE 10

10. Pilihan

Terkadang pada kasus tertentu ada suatu elemen yang memiliki anak

tetapi berbeda-beda. Cara pendeklarasiannya dapat dilakukan dengan :

<!ELEMENT methodResponse (params | fault)>

penulisannya tidak hanya dibatasi dua elemen saja, tetapi kita dapat

menuliskan lebih dari itu.

Selain hal diatas, kita juga dapat mendeklarasikan elemen yang sesuai dengan :

11. Mixed Content

Dimana kita memungkinkan untuk menulsikan text dan elemen dalam

suatu elemen. Contoh :

<definition>The <term>Turing Machine</term> is an

abstract finite state automaton with infinite

memory that can be proven equivalent to any any

other finite state automaton with arbitrarily

large memory. Thus what is true for a Turing

machine is true for all equivalent machines no

matter how implemented.

</definition>

dimana deklarasi elemen adalah :

<!ELEMENT definition (#PCDATA | term)*>

12. 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>

Page 40: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

34 Document Type Definitions PAGE 10

13. ANY

Kita dapat mengijinkan apapun dapat berada pada suatu elemen.

Penulisan deklarasinya adalah :

<!ELEMENT page ANY>

Deklarasi Atribut

Sama seprti elemen, dokumen dikatakan valid jika dapat menyatakan semua

atribut elemen jika elemennya memiliki atribut. Sintaks penulisannya adalah

dengan ATTLIST.

Sebagai contoh, mari kita buat sebuah file baru dengan nama contoh3_2.xml.

Dan isinya adalah sebagai berikut :

<?xml version=”1.0” encoding=”UTF-8”

standalone=”yes” ?>

<!DOCTYPE orang [

<!ELEMENT orang (nama, profesi*)>

<!ELEMENT nama (#PCDATA)>

<!ATTLIST nama profesi CDATA #REQUIRED

hobi CDATA “Olahraga”

umur CDATA #IMPLIED

jenis_kelamain CDATA #FIXED “Laki-laki”

>

]>

<orang>

<nama profesi=”Dosen”>Hendra Kusmayadi</nama>

</orang>

Page 41: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Document Type Definitions 35 PAGE 10

Jika kita jalankan dokumen diatas akan tampak seperti gambar berikut :

General Entity Declarations

Kita juga dapat mendeklarasikan entidas sesuai dengan yang kita inginkan.

Sebagai contoh, buatlah file dengan nama contoh3_3.xml dengan isi sebagai

berikut :

<!DOCTYPE orang [

<!ELEMENT orang (nama, email)>

<!ELEMENT nama (#PCDATA)>

<!ELEMENT email (#PCDATA)>

<!ENTITY mail "[email protected]">

]>

<orang>

<nama>Hendra Kusmayadi</nama>

<email>&mail;</email>

</orang>

Jika kita jalankan maka tampilannya akan seperti gambar dibawah :

Page 42: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

36 Document Type Definitions PAGE 10

External Parsed General Entities

Selain dengan cara diatas, kita juga dapat menggunakan halaman suatu web

atau yang lainnya untuk penulsain entitas. Sebagai contoh, buatlah dile dengan

nama contoh3_4.xml dengan isinya sebagai berikut :

<!DOCTYPE orang [

<!ELEMENT orang (nama, komentar)>

<!ELEMENT nama (#PCDATA)>

<!ELEMENT komentar (#PCDATA)>

<!ENTITY cmd SYSTEM "komentar.txt">

]>

<orang>

<nama>Hendra Kusmayadi</nama>

<komentar>&cmd;</komentar>

</orang>

sebelum kita menjalankan dokumen diatas, terlebihdahulu kita membuat

sebuah file dengan nama komentar.txt dan simpan pada folder yang sama.

Selanjutnya isi file tersebut tulisan terserah saja. Dan jika dokumen diatas

dijalankan, maka hasilnya menjadi :

External Unparsed Entities and Notations

Selain itu, kita juga dapat menempatkan file bukan text dengan cara :

<!ENTITY nama_entitas SYSTEM

"Lokasi_file" NDATA tipe_file>

Dan selanjutnya silahkan docoba sendiri.

Page 43: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Document Type Definitions 37 PAGE 10

Parameter Entity

Parameter entiti digunakan sebagi shortcut untuk menuliskan entiti didalan

DTD. Penulisan parameter entiti menggunakan persen (%) dan titik koma (;).

format penulisan parameter entiti adalah sebagai berikut :

<!ENTITY % nama_parameter "teks yang ingin kita

representasikan didalam entiti">

Contoh penulisannya adalah dengan :

<!ENTITY % pub "Editions Gallimard" >

<!ENTITY rights "All rights reserved" >

<!ENTITY book "La Peste: Albert Camus, &#xA9; 1947

%pub;. &rights;">

Adapun maksud dari deklarasi diatas adalah string “%pub” akan diisi oleh

“&#xc9;ditions Gallimard”, sehingga jika kita menuliskan &book

pada dokumen XML, maka hasilnya adalah :

La Peste: Albert Camus, © 1947 Editions Gallimard.

Conditional Inclusion

XML memberikan IGNORE derektif untuk tujuan "commenting out" sebuah

selection deklarasi. Misalnya parser akan mengabaikan deklarasi dari elemen

production_note :

<![IGNORE[

<!ELEMENT production_note (#PCDATA)>

]]>

Tujuan penulisan diatas adalah untuk menunjukan bahwa deklarasi yang

diberikan benar-benar digunakan didalam DTD. Contoh :

<![INCLUDE[

<!ELEMENT production_note (#PCDATA)>

]]>

Silahkan docoba dengan penerapan pada dokumen XML.

Page 44: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

38 Document Type Definitions PAGE 10

Contoh Two DTD

Disisilain kita dapat membuat atau menggabungkan dua dokumen XML yang

berbeda. Caranya adalah seperti contoh penulisan DTD berikut :

<!ATTLIST biography xmlns:xlink CDATA #FIXED

"http://www.w3.org/1999/xlink">

<!ELEMENT person (first_name, last_name)>

<!ATTLIST person born CDATA #IMPLIED

died CDATA #IMPLIED>

<!ELEMENT date (month, day, year)>

<!ELEMENT month (#PCDATA)>

<!ELEMENT day (#PCDATA)>

<!ELEMENT year (#PCDATA)>

<!ATTLIST emphasize xlink:type (simple) #IMPLIED

xlink:href CDATA #IMPLIED>

<!ELEMENT profession (#PCDATA)>

<!ELEMENT footnote (#PCDATA)>

<!ATTLIST footnote source CDATA #REQUIRED>

<!ELEMENT first_name (#PCDATA)>

<!ELEMENT last_name (#PCDATA)>

<!ELEMENT image EMPTY>

<!ATTLIST image source CDATA #REQUIRED

width NMTOKEN #REQUIRED

height NMTOKEN #REQUIRED

ALT CDATA #IMPLIED >

<!ENTITY % top_level "( #PCDATA | image | paragraph

| definition | person | profession | emphasize |

last_name | first_name | footnote | date )*">

<!ELEMENT paragraph %top_level; >

<!ELEMENT definition %top_level; >

<!ELEMENT emphasize %top_level; >

<!ELEMENT biography %top_level; >

Page 45: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Document Type Definitions 39 PAGE 10

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.

Page 46: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

40 Document Type Definitions PAGE 10

Rangkuman

1. Aplikasi XML harus memastikan bahwa dokumen yang diberikan adalah

benar-banar mematuhi aturan

2. DTD digunakan untuk mendeklarasikan semua elemen dan atribut yang

akan digunakan pada dokumen XML

3. DTD dibuat untuk memeriksa kevalid-ad sebuah dokumen XML, apakan

dokumen XML yang dibuat sudah mengacu pada DTD yang ada.

Page 47: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Namespaces 41 PAGE 10

4 Namespaces

Overview

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 adalah dipetakan ke URI oleh atribut

xmlns:prefix. URI default juga dapat diberikan untuk elemen yang tidak memiliki prefix oleh atribut xmlns. Elemen dan atribut yang melekat pada URI

yang sama merupakan berada pada namespace yang sama.

Tujuan namespaces adalah untuk membedakan antara nama elemen dan 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.

Tujuan

1. Mahasiswa dapat memahami maksud dan tujuan dari pembuatan

namespace

2. Mahasiswa dapat membedakan kapan harus menggunakan namespace

dan kapan tidak

3. Mahasiswa Menggunakan namespace pada kasus yang sesuai

Page 48: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

42 Namespaces PAGE 10

Kebutuhan Namespace

Seperti telah kita ketahui bersama bahwa sebuah dokumen XML memiliki

nama elemen dan atribut yang digunakan oleh aplikasi untuk memproses

dokumen XML tersebut. Namun, seperti kita ketahui bersama bahwa

penamaan tersebut dapat kita definisikan sendiri. Namun dengan demikian

ada kemungkinan suatu nama elemen yang kita gunakan memiliki nama yang

sama dengan elemen lain padahal maksudnya berbeda. Jika kita menggunakan

dokumen untuk diri kita sendiri, itu tidak jadi masalah, karena kita dapat

memberikan nama elemen tersebut berbeda. Namun jika dokumen kita

digunakan oleh bayak orang atau kita yang menggunakan dokumen orang lain,

maka ada kemungkinan hal tersebut terjadi. Dan aplikasi bisa saja salah dalam

menampilkan dokumen sehingga hasil keluaran berbeda dengan yang kita

harapkan. Jadi solusi untuk menghindari hal itu adalah dengan menambahkan

namespace. Penggunaan Namespace dengan memberikan awalan tertentu

sebagai pembeda dengan elemen lainnya dan dipisahkan tanda titik dua

dengan nama elemen.

Sintaks Namespace

Untuk kasus penggunaan elemen adalah 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 keduamenyatakan bahwa bambu itu adalah

sebuah merk produk dengan penulisan dokumen :

<bambu>

<jumlah>246</jumlah>

<hargasatuan>200</hargasatuan>

</bambu>

Page 49: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Namespaces 43 PAGE 10

Jika kita menggabungkan elemen tersebut dengan penulisan seperti berikut :

<bambu>

<jenis>Jawa</jenis>

<panjang>2</panjang>

</bambu>

<bambu>

<jumlah>246</jumlah>

<hargasatuan>200</hargasatuan>

</bambu>

maka dalam pemprosesannya akan ambigu antara elemen bambu, maka

solisinya adalah dengan menggunakan namespace, sehingga penulisan dokumen

tersebut adalah :

<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 file tersebut dengan nama contoh4_1.xml dan jalankan. Jika dokumen

tersebut dijalankan maka hasilnya adalah sebagai berikut :

Page 50: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

44 Namespaces PAGE 10

Namespaces dan DTD

Namespace perludideklarasikan pada Document Type Definition (DTD) agar

dokumen yang kita buat menjadi falid. Pendeklarasiannya dengan menuliskan :

<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.

Sebagai contoh, buatlah file XML dengan nama filenya adalah contoh4_2.xml

yang isinya adalah sebagai berikut :

<!DICTYPE barang [

<!ELEMENT barang (bambu+)>

<n_pertama:bambu

xmlns:n_pertama=”http:/www.sesuatu.com/gardu”>

<n_kedua:bambu

xmlns:n_kedua=”http:/www.sesuatu.com/merk”>

]>

Page 51: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Namespaces 45 PAGE 10

Rangkuman

1. Namespaces dibuat dengan tujuan untuk membedakan nama elemen

yang sama namun memiliki atri yang berbeda.

2. Namespaces diimplementasikan dengan menempelkan awalan untuk

setiap elemen dan atribut.

Page 52: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

46 XML pada Web PAGE 10

5 XML pada Web

Overview

XML berawal sebagai upaca untuk membawa semua kemampuan dan struktur SGML ke web dengan bentuk yang sederhana. Seperti apa yang dibayangkan para ahli, ternyata XML telah jauh melebihi apa yang dibayangkan. Sebenarnya banyak aplikasi selain XML yang digunakan di web, namun XML adalah bahasa yang masih sangat menarik untuk gunakan didalam halaman web. Karena dokumen XML harus well-formed dan parser akan menolaknya jika dokumen salah, halaman XML mungkin kurang kompatibel untuk cross-browser. Oleh karena dokumen XML

sangat terstuktur, sehingga memudahkan untuk robots parsing. Karena tag XML dan nama atribut dapat mencerminkan sifat konten, sehingga search-engine spiders dapat dengan mudah menentukan makna dari konten.

Tujuan

1. Mahasiswa Dapat mengerti XHTML

2. Mahasiswa dapt membedakan antara XHTML dengan HTML

3. Mahasiswa dapat menuliskan XHTML dengan aturan-aturan yang telah

ditetapkan

4. Mahasiswa memahamin cara kerja XHTML dalam menampilkan

dokumen

Page 53: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XML pada Web 47 PAGE 10

XHTML

XHTML merupakan definisikan XML-compatible versi HTML, atau sebaliknya.

XHTML dapat mengubah HTML sebagai aplikasi XML. XHTML merupakan

standard dalam menyusun kode-kode HTML yang baik dan terstruktur.

Sebagian besar pengubahan dokumen HTML menjadi dokumen XHTML

adalah dengan membuat dokumen well-formed. Misalnya perubahan yang

akan dilakukan :

14. Tambahkan missing end-tag seperti </p> dan </li> jika pada dokumen tidak ada end-tag-nya.

15. Tulis kembali dokumen yang yag-nya saling timpang tindih, misalnya

<b><i>apa</b></i> menjadi <b><i>apa</i></b>

16. Letakkan tanda petik pada nilai atribut jika kita sering menggunakan nilai

atribut tanpa tanda petik. Misalnya <p align=center> menjadi <p

align="center">. 17. Tambahkan nilai pada atribut yang memiliki nilai boolean dengan

namanya sendiri. Misalnya <input type="checkbox" checked>

menjadi <input type="checkbox" checked="checked">.

18. Ganti karakter & atau < dalam data atau atribut dengan nilai-nilai

&amp; and &lt;. Misalnya ubah A&P menjadi A&amp;P 19. Jadikan dokuen sebagai single root element html.

20. Ubah empty elemen. Misalnya <hr> menjadi <hr/> atau <hr></hr>

21. Tambahkan hyphens kedalam komentar. Misalnya <! this is a

comment> menjadi <!-- this is a comment -->

22. Encode kedalam UTF-8 atau UTF-16.

XHTML dibagi menjadi tiga bagian, yaitu :

23. Strict

Merupakan puncaknya standard, ini digunakan apabila kita benar-benar

menginginkan kode yang benar-benar terstruktur. Beberapa tag sudah

dihilangkan disini seperti <iframe>. Kita harus mengkombinasikan

antara XHTML dan CSS. Penulisannya adalah sebagai berikut :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0

Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-

strict.dtd">

Page 54: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

48 XML pada Web PAGE 10

24. Transitional

Digunakan apabila kita tidak ingin ada file CSS

yang terlibat. Penulisannya adalah sebagai berikut :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0

Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-

transitional.dtd" >

25. Frameset

hampir sama dengan Transitional namun Frameset mengijinkan elemen

frame-related sebagai framset dan iframe. Contoh penulisannya adalah

sebagai berikut :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0

Frameset//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-

frameset.dtd">

bagian diatas, dituliskan pada awal dokumen sebagai deklarasi dari dokumen

XHTML. Contoh penulisan dokumen XHTML adalah sebagai berikut :

<!DOCTYPE html

PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-

transitional.dtd">

<html>

<head>

<title>Judul Halaman Web</title>

</head>

<body>

<p>Isi halaman Web</p>

</body>

</html>

jika dijalankan akan tampil seperti pada gambar dibawah ini :

Page 55: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XML pada Web 49 PAGE 10

Direct Display pada browser

Dalam menampilkan sebuah dokumen pada browser, kita dapat mengambil

pengaturan tampilannya dari file lain. Hal ini disebut dengan direct display.

Contoh yang sering digunakan adalah CSS (Casecading Style Sheet). Sekarang

mari kita coba membuat dokumen css dan simpan dengan nama “css.css”,

dimana kodenya adalah sebagai berikut :

orang {

color:#FF0000;

font-family:Tahoma;

font-weight:bold;

text-decoration:underline;

}

kemudian buatlah dokumen XML yang disimpan dengan nama

“contoh5_1.xml” sebagai data yang akan ditampilkan seperti berikut :

<?xml version="1.0"?>

<?xml-stylesheet href="css.css" type="text/css"?>

<orang>

Susilawati

</orang>

Page 56: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

50 XML pada Web PAGE 10

Selanjutnya jalankan dokumen XML, maka dapat kita lihat tampilannya sebagai

berikut :

Authoring Compound Documents with Modular XHTML

Kita dapat menggabungkan dokumen XML yang telah kita buat kedalam aplikasi lainnya. Misalnya menggabungkan XHTML kedalam aplikasi, atau yang

lainnya dan dapat pula aplikasi yang kita buat kita gabungkan dengan dokumen

XHTML. Kita dapat menggunakan modul-modul yang telah ada sebelmnya.

Prospects for Improved Web-Search Methods

Resource Description Framework (RDF) dapat diartikan sebagai XML

encoding untuk model data sederhana yang partikular. Misalnya kita

menuliskan sebuah dokumen yang menyatakan bahwa W. Scott Means dan

Elliotte Rusty Harold adalah penulis buku XML in a Nutshell.

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-

rdf-syntax-ns#">

<rdf:Description about="urn:isbn:0596002920">

<author>Elliotte Rusty Harold</author>

<author>W. Scott Means</author>

</rdf:Description>

</rdf:RDF>

Pada contoh diatas, nilai propertis author hanya teks saja.

Pada HTML, META tag robot memberitahukan kepada search engin dan

robot yang lainnya apakan mereka dapat mengindeks halamannya.

Penulisannya dapat dilihat pada kode berikut :

<?robots index="yes" follow="no"?>

Page 57: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XML pada Web 51 PAGE 10

Rangkuman

1. XML merupakan bahasa yang masih sangat menarik untuk gunakan didalam halaman web

2. Penggunaan XML pada web berbentuk XHTML 3. Dokumen XHTML mendefinisikan kompetibeliti dar XML

4. Dokumen XHTML harus well-formed agar bisa ditampilkan pada

halaman browser

Page 58: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

52 XSL Transformation (XSLT) PAGE 10

6 XSL Transformations (XSLT)

Overview

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.

Tujuan

1. Mahasiswa dapat memahami XSLT

2. Mahasiswa dapat menspesifikasikan XSLT pada dokumen XML

3. Mahasiswa dapat membuat XSLT pada dokumen XML

Page 59: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XSL Transformation (XSLT) 53 PAGE 10

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 version="1.0" xmlns:xsl=

"http://www.w3.org/1999/XSL/Transform">

</xsl:stylesheet>

untuk memanggil dokumen XSL kedalam dokumen XML yang kita inginkan,

kita dapat mengginakan seperti script sebagai berikut :

Page 60: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

54 XSL Transformation (XSLT) PAGE 10

<?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"/>

Page 61: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XSL Transformation (XSLT) 55 PAGE 10

<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.

Page 62: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

56 XSL Transformation (XSLT) PAGE 10

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:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<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"?>

Page 63: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XSL Transformation (XSLT) 57 PAGE 10

<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

Page 64: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

58 XSL Transformation (XSLT) PAGE 10

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 :

Page 65: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XSL Transformation (XSLT) 59 PAGE 10

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.

Page 66: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

60 XSL Transformation (XSLT) PAGE 10

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

Page 67: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XSL Transformation (XSLT) 61 PAGE 10

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>

Page 68: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

62 XSL Transformation (XSLT) PAGE 10

<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 :

Page 69: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XSL Transformation (XSLT) 63 PAGE 10

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 :

Page 70: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

64 XSL Transformation (XSLT) PAGE 10

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.

Page 71: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XSL Transformation (XSLT) 65 PAGE 10

Rangkuman

1. XSLT merupakan aplikasi XML untuk menspesifikasikan aturan antara

dokumen XML yang satu ditranformasikan menjadi dokumen XML

lainnya

2. XSLT mirip dengan bahasa pemprograman

3. Tujuan pembuatan XSLT adalah untuk memilih-milah elemen dokumen

yang akan dotampilkan sesuai dengan keinginan

Page 72: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

66 XPath PAGE 10

7 XPath

Overview

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

Tujuan

1. Mahasiswa dapt memahami arti XPath

2. Mahasiswa dapat mengetahui semua bagian-bagian XPath

3. Mahasiswa dapat membuat XPath pada XSLT

Page 73: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XPath 67 PAGE 10

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" ?>

Page 74: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

68 XPath PAGE 10

<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 :

Page 75: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XPath 69 PAGE 10

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:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<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 :

Page 76: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

70 XPath PAGE 10

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:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/orang">

<xsl:apply-templates select="//nama"/>

</xsl:template>

</xsl:stylesheet>

Jika dijalankan akan tampil seperti pada gambar berikut :

Page 77: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XPath 71 PAGE 10

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:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<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 :

Page 78: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

72 XPath PAGE 10

<xsl:template match="/orang">

<xsl:apply-templates

select="//nama[@hobi='Olahraga']"/>

</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>

Page 79: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XPath 73 PAGE 10

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:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="comment()">

Sesuatu Teks

</xsl:template>

</xsl:stylesheet>

Page 80: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

74 XPath PAGE 10

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:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">

<xsl:apply-templates

select="/orang/mahasiswa/nama/text()"/>

</xsl:template>

</xsl:stylesheet>

Page 81: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XPath 75 PAGE 10

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.

//mahasiswa/@angkatan

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

Page 82: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

76 XPath PAGE 10

elemen mahasiswa yang angkatannya lebih dari 2007, maka penulisanhya

seperti berikut :

...

<xsl:apply-templates

select="/mahasiswa[@angkatan>=2007]"/>

...

Unabbreviated Location Paths

Unablbreviated location path merupakan penulisan lain untuk path.

Misalnya untuk penulisan xpath :

people/person/@id

maka penulisannya menjadi :

child::people/child::person/attribute::id

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

Page 83: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XPath 77 PAGE 10

menambahkan angkatan menjadi tahun lulus, asumsi bahwa mahasiswa akan

lulus tepat tiga tahun. Sintaksnya adalah sebagai berikut :

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/orang">

<xsl:apply-templates select="mahasiswa" />

</xsl:template>

<xsl:template match="mahasiswa">

<xsl:value-of

select="/orang/mahasiswa/@angkatan + 3" />

</xsl:template>

</xsl:stylesheet>

kita juga dapat membuat XPath dengan ekpresi boolean. Perhatikan Contoh

berikut :

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<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 :

Page 84: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

78 XPath PAGE 10

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].

Page 85: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XPath 79 PAGE 10

Rangkuman

1. XPath merupakan bahasa untuk mengalamati bagian-bagian didalam dokumen XML

2. struktur XPath mirip dengan hirarki direktori pada hardisk 3. Untuk mengarahkan kita pada data tertentu, kita dapat memanggilnya

dengan menggunakan pemanggilan mirip dengan direktori folter pada

hardisk.

4. XPath dijalankan dengan menggunakan XSLT.

Page 86: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

80 XLinks PAGE 10

8 XLinks

Overview

XML Linking Language (XLink) merupakan atribut yang berbasi sistaks untuk

melampirkan link dokumen XML. Dengan menggunakan XLink dapat

memungkinkan user untuk menambahkan hyperlinking kesuatu dokumen.

XLink sama halnya dengan link pada HTML dengan elemen A. Bedanya, pada

HTML hanya bisa mengarah pada satu dokumen, sedangkkan untuk XLink kita

bisa mengarahkan kelebih dari satu dokumen.

Tujuan

1. Mahasiswa dapat mengerti yang dimaksud dengan XLink

2. Mahasiswa dapat membedakan XLink pada XML dan tag A pada HTML

3. Mahasiswa dapat memahami struktur serta atrubut yang ada pada XLink

4. Mahasiswa dapat menggunakan XLink pada Dokumen XML.

Page 87: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XLinks 81 PAGE 10

Simple Links

Simple link didefinisikan dengan koneksi atau hubungan secara one-way antara

dua resource. Hubungan ini akan langsung ditampilkan pada halaman browser.

Contoh nya adalah buat dokumen XML dengan nama contoh8_1.xml dimana

kodenya adalah sebagai berikut :

<mahasiswa>

<nama>Andi Santoso</nama>

<nim>12442</nim>

<hoby>Olah Raga</hoby>

<kelas>XWS-02</kelas>

</mahasiswa>

Selanjutnya buat sebuah dokumen XML lagi dengan nama contoh8_2.xml

dimana kodenya adalah sebagai berikut :

<mahasiswa xmlns:xlink=

"http://www.w3.org/1999/xlink"

xlink:type = "simple" xlink:href =

"contoh8_1.xml">

<nama>Andi Santoso</nama>

<nim>12442</nim>

</mahasiswa>

Selanjutnya, jalankan dokumen yang kedua, maka tampilannya akan seperti

berikut :

Page 88: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

82 XLinks PAGE 10

Selanjutnya, pada dokumen contoh kedua, klik pada salah satu elemen, maka

setelah kita klik-kan, maka halaman browser akan mengarah ke dokumen

pertama seperti terlihat pada gambar berikut :

Link Behavior

Kita juga dapat mengarahkan XLink kesebuah gambar, misalnya :

<image xmlns:xlink=

"http://www.w3.org/1999/xlink"

width="152" height="345" xlink:type="simple"

xlink:href="Water lilies.jpg" />

Jika kita menjalankan dokumen diatas, maka tampilannya seperti berikut :

Page 89: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XLinks 83 PAGE 10

Kita juga dapat mengisikan atribut seperti berikut xlink:show

dengan kemungkinan nilai atribut :

39. new

Membuka wondow baru dan menampilkan kontent link URI (source

target) pada window tersebut.

40. replace

Menampilkan resource target pada window awal dan menggantikan

dokumen awal

41. embed

menampilkan resource target didalam dokumen awal pada lokasi link

42. other

43. none

Page 90: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

84 XLinks PAGE 10

Contohnya :

<mahasiswa xmlns:xlink=

"http://www.w3.org/1999/xlink"

xlink:type="simple" xlink:show='new'

xlink:href="contoh8_1.xml">

<nama>Andi Santoso</nama>

<nim>12442</nim>

</mahasiswa>

Dapat kita lihat saat diklik, dokumen target akan ditampilkan pada

window/tab baru :

Kita juga dapat mengisikan atribut seperti berikut xlink:actuate dengan

kemungkinan nilai atribut :

Page 91: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XLinks 85 PAGE 10

44. onLoad

Link harus diikuti pada saat aplikasi baru dijalankan.

45. OnRequest

Link yang harus diikuti bila pengguna meminta rekues.

46. Other

Ketika mengikuti link ditentukan oleh markup lain dalam dokumen yang

tidak ditentukan oleh XLink.

47. None

Tidak ada rincian mengenai kapan atau apakah akan mengikuti link ini.

Contohnya :

<mahasiswa xmlns:xlink=

"http://www.w3.org/1999/xlink"

xlink:type="simple" xlink:actuate='onLoad'

xlink:href="contoh8_1.xml">

<nama>Andi Santoso</nama>

<nim>12442</nim>

</mahasiswa>

Dapat kita lihat saat kita jalankan dokumen tersebut, maka halaman akan

langsung mengarah pada dokumen yang kita inginkan.

Link Semantics

Merupakan sebuah link yang menghubungkan antara dua buah resource

dimana resourcenya dapat berupa dokumen XML atau bukan. Contoh

penggunaannya adalah sebagai berikut :

<novel xlink:type="simple"

xlink:href="ftp://archive.org/pub/etext/etext93/wizo

z10.txt"

xlink:title= "The complete text of the novel from

Project Gutenberg"

xlink:role="http://promo.net/pg/" >

<title>The Wonderful Wizard of Oz</title>

<author>L. Frank Baum</author>

<year>1900</year>

</novel>

Page 92: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

86 XLinks PAGE 10

Extended Links

Extended Link ditulsikan dengan :

<novel xlink:type="extended">

<title>The Wonderful Wizard of Oz</title>

<author>L. Frank Baum</author>

<year>1900</year>

</novel>

Extended Link dapat mendeskripsikan kumpulan resource dan kumpulan path

antara resource berbeda dengan simple link yang hanya mendeskripsikan arah

hubungan antara dokumen dengan remote resource.

Local resource

Kita dapat mendeskripsikan link yang akan menuju remote resource pada

elemen lokal. Contohnya adalah sebagai berikut :

<nama xlink:type="resource">Santoso</nama>

DTD untuk XLink

Semua link yang ada didalam dokumen dapat kita deklarasikan didalam DTD

sama seperti atribut yang lain. Kita juga dapat menggunakan #FIXED untuk

mendeklarasikannya. Contoh berikut adalah :

<!ELEMENT mahasiswa (nim, nama, kelas)>

<!ATTLIST mahasiswa

xmlns:xlink CDATA #FIXED

'http://www.w3.org/1999/xlink'

xlink:type #FIXED 'simple'

xlink:href CDATA #REQUIRED>

<!ELEMENT nim (#PCDATA)>

<!ELEMENT nama (#PCDATA)>

<!ELEMENT kelas (#PCDATA)>

Page 93: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XLinks 87 PAGE 10

contoh penggunaan deklarasi tersebut pada dokumen adalah sebagai berikut :

<mahasiswa xlink:href = "urn:isbn:0688069444">

<nim>11132</nim>

<nama>Johan Jonata</nama>

<kelas>XWS-01</kelas>

</novel>

Page 94: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

88 XLinks PAGE 10

Rangkuman

1. XLink merupakan atribut yang berbasi sistaks untuk melampirkan link

dokumen XML yang memungkinkan user untuk menambahkan

hyperlinking kesuatu dokumen.

2. XLink dapat berarti tag a pada HTML yang dapat menampilkan resource

tujuan pada halaman browser

Page 95: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XLinks 89 PAGE 10

9 XPointer

Overview

XPointer digunakan untuk mengidentifikasi lokasi didalam dokumen XML.

Sebuah Xpointer ditambahkan untuk mengakhiri URI sebagai identifikasi bagian-bagian untuk mengidikasikan keterangan-keterangan masing-masin

bagian pada sebuah dokumen XML. Sintaks XPointer ditulis pada bagian sintaks XPath yang digunakan pada XSLT. Untuk tipe data XPath yang utama seperti Boolean, node-set, number, dan string, XPointer menambahkan point dan batas karena fungsi tersebut membutuhkannya untuk bekerja pada tipe tersebut.

Tujuan

1. Mahasiswa dapat memahami XPointer

2. Mahasiswa dapat menjelaskan struktur yang ada dalam XPointer

3. Mahasiswa dapat membuat XPointer dalam dokumen XML

Page 96: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

90 XLinks PAGE 10

XPointers pada URL

Penulisan XPointer diasanya seletlah alamat URL yang dipisahkan dengan

tanda shap (#). URL merupakan identifikasi sebuah dokumen biasanya

penulisannya dengan : http://java.sun.com:80/products/jndi/index.html. Pada skema tersebut, http menunjukan aplikasi protokol protokol yang digunakan sebagai penyampaian dokumen. sedangkan java.sun.com:80 menunjukan alamat asal atau darimana dokumen tersebut diambil dimana angka 80 menandakan bahwa data yang diambil dilewatkan melalui port 80, port ini biasanya dapat diakses secara bebas oleh siapapun, namun terkadang penyedia juga dapat melewatkan melalui port lain dan akan

memberikan autektifikasi username dan password untuk mengaksesnya. Pada bagian /products/jndi/index.html menunjukan lokasi file tersebut disimpan pada server. File yang akan dikirim adalah index.html yag tersimpan pada folder /products/jndi pada direktori server.

Selain penulisan seperti diatas, kita juga dapat menandai bagian-bagian

tertentu pada dokumen, dimana dokumen tersebut sebelumnya sudah terbagi sesuai dengan kriteria tertentu. Untuk mengaksesnya kita dapat menggunakan tanda sharp ( # ). misalnya kita ingin mengarahkan pada dokumen seperti contoh diatas, tetapi kita ingin langsung mengarahkan halaman tersebut bukan pada awal dokumen, namun pada bagian-bagian tertentu. Misalnya kita langsung ingin mengarah pada bagian download.

URL yang dituliskan untuk melakukan hal tersebut adalah : http://java.sun.com:80/products/jndi/index.html#download. Ketika browser menampilkan halaman dokumen tersebut, browser akan mencari nama penanda bagian dengan nama download pada dokumen tersebut yang ditulis dengan sintaks :

<a name="download"></a>

Contoh untuk pointer adal sebagai berikut : buatlah dokumen HTML dengan kode sebagai berikut :

<html>

<head>

Page 97: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XLinks 91 PAGE 10

</head>

<body>

<a name='top'><h2>Judul Dokumennya</h2></a>

<hr/>

isi dokumen baris 1<br/>

isi dokumen baris 2<br/>

isi dokumen baris 3<br/>

isi dokumen baris 4<br/>

isi dokumen baris 5<br/>

...

isi dokumen baris 17<br/>

isi dokumen baris 18<br/>

isi dokumen baris 19<br/>

isi dokumen baris 20<br/>

<a href='#top'>kembali keatas</a>

</body>

</html>

jika kita menjalankan dokumen diatas, maka tampak seperti berikut :

Page 98: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

92 XLinks PAGE 10

jika kita mengklik link “kembali keatas”, maka halaman browser akan segera menscrol langsung ke bagian atas pada pointer yang diberi nama “top”.

Pada XML, kita dapat menambahkan setelah tanda shrap sintaks berikut sesuai dengan kebutuhan.

xpointer(/)

xpointer(//first_name)

xpointer(id('sec-intro'))

xpointer(/people/person/name/first_name/text( ))

xpointer(//middle_initial[position(

)=1]/../first_name)

xpointer(//profession[.="physicist"])

xpointer(/child::people/child::person[@index<4000

])

xpointer(/child::people/child::person/attribute::

id)

Penulisan pada XPointer kita menggunakan XPath untuk menuju kesatu lokasi tertentu. Namun, dalam penerapannya ini agak sulit dilakukan. Sehingga dalam bab ini kita hanya sekedar memahaminya saja.

Page 99: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XLinks 93 PAGE 10

Penulisan XPointer pada link sama halnya dengan pada URL, intnya setelah sebuah URL, kita tambahkan XPointer. Hanya saja, link merupakan penulisan dari URL yang terdapat bisa pada dokumen itu sendiri atau dokumen lain. Contoh penulisannya :

http://www.cafeconleche.org/people.xml#xpointer(/

/name[position( )=1])

namun, jika XPointer menggunakan karakter yang tidak dibolehkan penulisan URI didalam XML, misalnya tanda “<”, atau non-ASCII seperti

é maka harus dijadikan heksadesimal sebagaimana telah ditentukan sebelum URI XPointer terpasang. Dengan kata lain, setiap karakter tersebut dapat ditulis dengan tanda persen ( % ) yang diikuti nilai heksadesimal masing-masing karakter UTF-8 daru unicode. Misalnya tanda “<” dapat ditulis dengan %3C, tanda petik dua ( “ ) akan ditulis dengan %22, é dapat dutuliskan dengan %C3%A9 dan sebagainya.

XPointers dapat memberikan sejumlah ekstensi yang cocok untuk XPath.

Misalnya bare name. Bare name pada XPointer sama dengan nama kerangka pada HTML, yaitu bare name XPointer mengidentifikasi elemen dengan

namanya sendiri. Untuk membuat link ke salah satu elemen dengan sebuah

bare name, tambahkan bagian pemisah # untuk URL yang diikuti oleh ID dari

elemen yang akan dihubungkan. Misalnya link URL

http://www.w3.org/TR/1999/REC-xpath-19991116.xml#NT-AbsoluteLocationPath

ke-elemen XPath pada atribut tipe ID dengan nilai NT-AbsoluteLocationPath.

Child Sequences

XPointer dapat memilih elemen dengan posisi relatif untuk elemen yang

sejajar. Contohnya xpointer(/child::*[position() =

1]/child::*[ position( ) = 2]/child::*[position( ) =

3]) yang digunakan untuk memilih tiga elemen child pada elemen child kedua

dari elemen root. XPointer memungkinkan kita untuk mengyingkat siktaks

diatas dengan menyatakan jumlah elemen child yang dipisahkan oleh slash ( / )

dan hal ini disebut dengan child sequence. Misalnya kita dapat menuliskannya

menjadi 1/2/3. Namun child sequence tidak boleh berada pada kurung

xpointer( ).

Page 100: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

94 XLinks PAGE 10

Namespace

Pada XPointer kita juga dapat menggunakan namespace. Jika kita

memanggilnya maka dapat kita tuliskan dengan sintaks sesuai dengan lokasi

pada namespacenya. Contohnya pada dokumen XML yang telah kita bahas

(bambu) sebelumnya. Kita dapat menuliskannya dengan :

xmlns(b:=”Namespace2”) xpointer(//b:jenis)

Points

Terkadang kita ingin megarah pada yang sesuatu yang tidak ada nodenya,

misalnya ingin ke paragran ke tiga dari teks atau selainnya. XPointer

menambahkan points dan ranges pada sintaks XPath untuk membuat hal

tersebut mungkin. Point merupakan posisi sebelum, setelah atau diantara tag,

komentar, pemprosesan instruksi, atau karakter pada #PCDATA. Contoh

penggunaan pada dokumen XML berikut :

<?xml version="1.0"?>

<?xml-stylesheet type="text/css" value="novel.css"?>

<!--You may recognize this from the last chapter-->

<novel copyright="public domain">

<title>The Wonderful Wizard of Oz</title>

<author>L. Frank Baum</author>

<year>1900</year>

</novel>

Ada delapan poin elemen novel diatas yaitu nomor 0-7, satu dekan setelah

dan satu dekat sebelum setiap tag.

XPointer menambahkan dua fungsi untuk hal tersebut yang memudahkan

kita untuk memilih poin pertama dan terakhir dalam node yaitu start-point( ) and end-point( ). misalnya kita ingin mengidentifikasi point pertama elemen title, yaitu point antara node title dan teks nodenya. xpointer(start-point(//title))

selain itu XPointer berikut mengindikasi sebelum tag </author> :

xpointer(end-point(//author))

Page 101: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XLinks 95 PAGE 10

Ranges

Range merupakan jangkauan parsing karakter data antara dua poin. Fungsi

yang ada pada XPointer untuk range adalah :

48. Fungsi range( )

fungsi range( ) mengembalikan batasan antara start-point sebelum batasan lokasi sampai end-point setelah batasan lokasi.

49. Fungsi range-inside( ) Untuk setiap elemen node akan sama sebagai batasan yang

dikembalikan oleh range( ).

50. Fungsi range-to( ) Mengambil sebuah lokasi yang harus mengembalikan tepat satu lokasi. Start-points dari konteks node merupakan start-points yang akan dikembalikan

51. Fungsi string-range( ) mengambil argumen sebagai sebuah ekspresi XPath dan

mengidentifikasi lokasi dan substring dan mencocokkan terhadap nilai string XPath pada setiap lokasi

52. Relative XPointers Dapat digunakan pada dirinya sendiri tanpa harus menggunakan URL eksplisit.

53. Fungsi Here( ) Hanya digunakan pada dokumen itu sendiri dan merujuk pada node

yang mengandung XPointer.

54. Fungsi Origin( ) digunakan ketika dokumen link out-of-line dan mengarah pada node asal.

Page 102: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

96 XLinks PAGE 10

Rangkuman

1. XPointer digunakan untuk mengidentifikasi lokasi didalam dokumen

XML

2. XPointer dapat digunakan pada URL dan link

3. XPointer dibuat untuk menandai gaiang-bagian yang ada didalam

dokumen XML dan semua sintaksnya dapat langsung mengarahkan

penampilah pada lokasi yang diinginkan.

4. Selain pada bagian penanda, XPointer juga dapat menandai sesuatu

didalam elemen berdasarkan tag, komentar dan yang lainnya

Page 103: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XLinks 97 PAGE 10

10 XML Schemas

Overview

Meskipun Document Type Definitions (DTD) dapat menerapkan aturan-dasar struktural pada dokumen, banyak aplikasi yang membutuhkan metode validasi. Sehingga W3C membuat XML Schema Recommendation, yang dirilis pada 2 Mei 2001 untuk menjawab pertanyaan diatas. Skema dapat menjelaskan complex restrictions pada elemen dan atribut. Beberapa skema dapat dikombinasikan menjadi dokumen yang menggunakan beberapa kosakata XML. Dengan demikinan, skema dapat lebih powerful menggambarkan struktur dokumen XML. XML Schema merupakan informasi mengenai metadata yang mendefinisikan cara yang tepat penstrukturan file XML.

Tujuan

1. Mahasiswa dapat memahami penggunaan schema

2. Mahasiswa dapat menggunakan schema pada dokumen XML

3. Mahasiswa dapat membedakan antara schema dan DTD

Page 104: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

98 XLinks PAGE 10

Overview

Sebuah dokumen XML yang dideskripsikan oleh skema disebut dengan

instance document. Jika dokumen memenuhi semua konstrain yang

dispesifikasikan oleh skema, maka dianggap sebagai schema-valid.

Schemas Versus DTDs

DTDs memberikan kemampuan dasar untuk melakukan validasi item berikut

dalam dokumen XML:

55. Element nesting

56. Element occurrence constraints

57. Permitted attributes

58. Attribute types and default values

Sedangkan skema standar memasukan :

59. Simple and complex data types

60. Type derivation and inheritance 61. Element occurrence constraints

62. Namespace-aware element and attribute declarations

Namespace Issues

DTDs tidak memberikan dukungan bagi eksplisit menyatakan namespace-

aware aplikasi XML. Skema tidak seperti DTD yang menambahkan prefik

pada elemen, skema memvalidasi kombinasi dari namespace URI dan lokal

name yang mempunyai prefiks.

Skema Dasar

Misalnya kita mempunyai dokumen XML :

<?xml version="1.0" ?>

<note>

<to>Ridho</to>

<from>Someone</from>

<heading>Reminder</heading>

<body>Don't forget me this weekend!</body>

</note>

Page 105: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XLinks 99 PAGE 10

Kita dapat menuliskan schema-nya seperti berikut :

<?xml version="1.0" ?>

<xs:schema

xmlns:xs="http://www.w3.org/2001/XMLSchema"

targetNameSpace="http://www.w3school.com"

xmlns="http://www.w3school.com"

elementFormDefault="qualified">

<xs:element name="note">

<xs:complexType>

<xs:sequence>

<xs:element name="to" type="xs:string"/>

<xs:element name="from" type="xs:string"/>

<xs:element name="heading"

type="xs:string"/>

</xs:sequence>

</xs:complexType>

</xs:element>

</xs:schema>

File XML Schema biasanya disimpan dengan ektensi *.xsd. Untuk

mempraktekannya, biatlah file XSD diatas dan simpan dengan nama

XMLSchema.xsd. Selanjutnya buat dokumen XML diatas dengan nama file

contoh10_1.xml, mamun tambahkan atribut dan manespace pada elemen root, Sehingga kodenya menjadi seperti berikut :

<?xml version="1.0">

<note xmlns:xsi="http://www.w3.org/2001/XMLSchema-

instance"

xsi:noNamespaceSchemaLocation="XMLSchema.xsd">

<to>Ridho</to>

<from>Someone</from>

<heading>Reminder</heading>

<body>Don't forget me this weekend!</body>

</note>

jika kita menjalankan dokumen diatas dan memvalidasinya, maka tampak

bahwa dokumen tersebut valid. Seperti dapat dilihat pada gambar dibawah ini

:

Page 106: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

100 XLinks PAGE 10

XML Scema juaga memiliki atribut xs:annotation yang digunakan untuk

menjamin bahwa komentar akan tetap utuh hingga proses parsing selesai. Annotation memiliki konbinasi:

7. Elemen xs:documentation

<xs:schema

xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:annotation>

<xs:documentation xml:lang="en-us">

Simple schema example from O'Reilly's

<a

href="http://www.oreilly.com/catalog/xmlnut">XML

in a Nutshell.</a>

Copyright 2002 O'Reilly &amp; Associates

</xs:documentation>

</xs:annotation>

<xs:element name="fullName" type="xs:string"/>

</xs:schema>

Page 107: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XLinks 101 PAGE 10

8. Elemen xs:appinfo

berisi kombinasi karakter data atau markup dari skema yang akan

diincludekan

Dari contoh diatas, kita dapat melihat elemen berikut : <xs:element

name="from" type="xs:string"/>. Elemen tersebut berfungsi sebagai pendeklarasian dari elemen. Pada contoh diatas kita akam mengisi

elemen from dengan data yang tipenya string. Jika kita ingin menuliskan

elemen lain dalam siatu elemen, maka kita definisikan pada contoh diatas

adalah :

<xs:element name="note">

<xs:complexType>

<xs:sequence>

<xs:element name="to" type="xs:string"/>

<xs:element name="from" type="xs:string"/>

<xs:element name="heading" type="xs:string"/>

</xs:sequence>

</xs:complexType>

</xs:element>

Maksudnya contoh diatas adalah elemen note dapat berisi elemen lain seperti

to, from dan heading.

untuk mendeklarasikan atribut, kita dapat menggunakanelemen

xs:attribute sehingga penulisannya menjadi <xs:attribute

name="language" type="xs:language"/>. Misalnya pada dokumen XML diatas kita tambahkan sebuah atribut sehingga sintaksnya

menjadi :

<note>

<to age='34'>Ridho</to>

<from age='34'>Someone</from>

<heading>Reminder</heading>

<body>Don't forget me this weekend!</body>

</note>

maka penulisan XML Schemanya adalah :

<xs:element name="note">

Page 108: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

102 XLinks PAGE 10

<xs:complexType>

<xs:sequence>

<xs:element name="to">

<xs:complexType>

<xs:attribute name="umur"

type="xs:language"/>

</xs:complexType>

</xs:element>

<xs:element name="from">

<xs:complexType>

<xs:attribute name="umur"

type="xs:language"/>

</xs:complexType>

</xs:element>

<xs:element name="heading" type="xs:string"/>

</xs:sequence>

</xs:complexType>

</xs:element>

Jika kita jalankan dokumen diatas, mak akan tampak seperti berikut :

Page 109: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XLinks 103 PAGE 10

Tipe baru dapat didefinisikan dengan elemen xs:complexType atau

xs:simpleType. Jika tipe tersebut dideklarasikan secara global, perlu diberikan nama agar dari atribut atau elemen dalam skema. jika tipenya

dedefinisikan secara inline, maka tidak perlu diberi nama dan tidak dapat

diarahkan oleh atribut dan elemen didalan skema karena tidak memiliki nama.

Bekerja dengan Namespace

Untuk penulisan namespace pada schema kita dapat menuliskan langsung pada

elemen yang akan kita beri namespace. Misalnya kita ingin menamai sebuah

elemen, maka kita dapat menuliskannya dengan :

<?xml version="1.0"?>

<Book xmlns:lib="http://www.library.com">

<lib:Title>Sherlock Holmes</lib:Title>

<lib:Author>Arthur Conan Doyle</lib:Author>

</Book>

Elemen Kosong

Penulisan elemen kosong adalah dengan cara tidak mengisikan elemen

kedalam deklarasi. Misalnya pada contoh berikut kita katakan bahwa elemen

heading adalah kosong, maka format penulisan untuk XML Schema adalah

seperti berikut :

<?xml version="1.0" ?>

<xs:schema

xmlns:xs="http://www.w3.org/2001/XMLSchema"

targetNameSpace="http://www.w3school.com"

xmlns="http://www.w3school.com"

elementFormDefault="qualified">

<xs:element name="note">

<xs:complexType>

<xs:sequence>

<xs:element name="to" type="xs:string"/>

<xs:element name="from" type="xs:string"/>

<xs:element name="heading" />

</xs:sequence>

</xs:complexType>

</xs:element>

</xs:schema>

Page 110: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

104 XLinks PAGE 10

atau apabila elemen heading memiliki atribut, maka penulisannya menjadi :

<xs:element name="heading">

<xs:complexType>

<xs:attribute name="number" type="xs:string"/>

</xs:complexType>

</xs:element>

Elemen xs:simpleContent digunakan untuk mendeklarasikan elemen sederhana.

<xs:element name="heading">

<xs:complexType>

<xs:simpleContent>

<xs:extension base="xs:string">

<xs:attribute name="number"

type="xs:language"/>

</xs:extension>

</xs:simpleContent>

</xs:complexType>

</xs:element>

Tipe kompleks

jika kita ingin mendefinisikan semua elemen apapun, maka kita dapat menuliskan elemen xs:any dimana elemen ini membolehkan atribut yang

menunjukan tingkat validasi yang harus diberikan pada konten jika ada.

Contohnya :

<xs:element name="notes" minOccurs="0">

<xs:complexType>

<xs:sequence>

<xs:any namespace="http://www.w3.org/1999/xhtml"

minOccurs="0" maxOccurs="unbounded"

processContents="skip"/>

</xs:sequence>

</xs:complexType>

</xs:element>

Page 111: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XLinks 105 PAGE 10

Mixed Content

Untuk menggabungkan dokumen XML dengan schema (xsd), kita dapat

menggunakan kode sebagai berikut :

<letter xmlns:xsi="http://www.w3.org/2001/XMLSchema-

instance"

"xsi:noNamespaceSchemaLocation="formletter.xsd">

<greeting><hello/> Bob!</greeting>

<body>

Thank you for ordering the <item/> ($<price/>),

it should arrive

by <arrivalDate/>.

</body>

<closing/>

</letter>

Controlling Type Derivation

Atribut final dapat ditambahkan pada sebuah definisi tipe kompleks untuk

mengatur #all, extension, atau restriction. Apabila suatu tipe berasal dari tipe

lain yang memiliki atribut final, schema processor memverifikasi. Contoh

penulisan :

<xs:complexType name="physicalAddressType"

final="extension">

kita dapat men-setnya secara permanen dengan nilai yang diberikan dengan

cara menambahkan atribut fixed="true".

Untuk membuat suatu elemen menjadi unik, maka ktia dapat menggunakan

elemen xs:unique dan xs:key. Elemen xs:unique akan memaksa

nilai elemen dan atribut menjaid unik untuk spesifikasi elemen dalam skema

dokumen. Contoh :

<xs:element name="contacts" type="addr:contactsType"

minOccurs="0">

<xs:unique name="phoneNums">

<xs:selector xpath="phone"/>

<xs:field xpath="@addr:number"/>

Page 112: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

106 XLinks PAGE 10

</xs:unique>

</xs:element>

Sedangkan elemen xs:key hampir sama xs:unique namun, xs:key

menggunakan elemen xs:selector untuk mendefinisikan satu set elemen. Contoh penggunaanya adalah :

<xs:element name="address">

<xs:complexType>

<xs:sequence>

<xs:element name="fullName">

. . .

</xs:element>

<xs:element name="kids" minOccurs="0">

<xs:complexType>

<xs:sequence maxOccurs="unbounded">

<xs:element name="kid">

<xs:complexType>

<xs:attribute name="ssn"

type="addr:ssn"/>

</xs:complexType>

</xs:element>

</xs:sequence>

</xs:complexType>

</xs:element>

. . .

</xs:sequence>

<xs:attributeGroup ref="addr:nationality"/>

<xs:attribute name="ssn" type="addr:ssn"/>

<xs:anyAttribute

namespace="http://www.w3.org/1999/xlink"

processContents="skip"/>

</xs:complexType>

</xs:element>

Page 113: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

XLinks 107 PAGE 10

Rangkuman

1. Pada dasarnya kegunaan skema adalah untuk melengkapi kekurangan-

kekurangan yang ada pada DTD.

2. Skema dapat menjelaskan complex restrictions pada elemen dan atribut

bahkan Beberapa skema dapat dikombinasikan menjadi dokumen yang

menggunakan beberapa kosakata XML

3. Sebuah dokumen XML yang dideskripsikan oleh skema disebut dengan

instance document.

Page 114: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

108 Praktikum DOM PAGE 10

11 PRAKTIKUM DOM

Overview

Bab ini menunjukkan bagaimana mengakses dokumen XML dengan DOM.

Tujuan

Menggunakan DOM untuk :

1. menampilkan data dokumen XML

2. mengisi dokumen XML

3. mencari data dari XML

4. mengganti data XML

5. menghapus data XML

Page 115: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum DOM 109 PAGE 10

11.1 Menampilkan data XML

Diketahui file product.xml berikut

<PRODUCTDETAILS>

<PRODUCT>

<PRODID> P001 </PRODID>

<PRODNAME> Beras </PRODNAME>

<PRICE> 5000 </PRICE>

</PRODUCT>

<PRODUCT>

<PRODID> P002 </PRODID>

<PRODNAME> Jagung </PRODNAME>

<PRICE> 4000 </PRICE>

</PRODUCT>

<PRODUCT>

<PRODID> P003 </PRODID>

<PRODNAME> Kedelai </PRODNAME>

<PRICE> 4500 </PRICE>

</PRODUCT>

</PRODUCTDETAILS>

Ditampilkan dengan Mozilla, product.xml akan nampak sebagai berikut:

Bagaimana menampilkannya menggunakan JavaScript?

Page 116: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

110 Praktikum DOM PAGE 10

Kode berikut dapat digunakan untuk menampilkan isi file product.xml.

Ketik dan simpan dengan nama TampilProduk.html.

<HTML>

<HEAD>

<SCRIPT LANGUAGE="JavaScript">

function Navigate()

{

var xmldoc=new ActiveXObject("Msxml2.DOMDocument.4.0");

xmldoc.async=false;

xmldoc.load("product.xml");

if (xmldoc.readyState == 4 && xmldoc.parseError.errorCode==0)

{

alert(xmldoc.xml);

}

else

{

alert("Load XML belum berhasil. Periksa tag-tagnya.");

}

}

</SCRIPT>

</HEAD>

<BODY onload="javascript:Navigate()">

</BODY>

</HTML>

Perintah paling penting pada program di atas adalah alert(xmldoc.xml). Alert

adalah perintah JavaScript untuk memberi pesan, xmldoc.xml berarti

mengambil property xml dari dokumen DOM. Variabel xmldoc digunakan

untuk menyimpan msxml parser.

Yakinkan file product.xml ada dalam folder yang sama dengan file TampilProduct.html. Yakinkan juga file msxml4.dll dan msxml4r.dll

ada di system32-nya Windows dan telah terdaftar di registry. (Jika belum

yakin, berikan perintah dari command prompt : c:\regsvr32

%windir%\system32\msxml4.dll). Karena DOM parser ini milik Microsoft, dan

Mozilla belum dilengkapi dengan fitur ini, maka browser Web yang dapat

Page 117: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum DOM 111 PAGE 10

digunakan adalah Internet Explorer. Program di atas jika dipanggil dengan

Internet Explorer akan menghasilkan :

11.2 Insert Data

Bagaimana jika data berikut akan ditambahkan pada file product.xml?

<PRODUCT>

<PRODID> P004 </PRODID>

<PRODNAME> Kacang tanah </PRODNAME>

<PRICE> 3500 </PRICE>

</PRODUCT>

Kode berikut dapat dicoba. Ketikkan dan simpan dengan nama

TambahProduk.html.

<HTML>

<HEAD>

<TITLE> Tambah Product </TITLE>

<SCRIPT language="JavaScript">

Page 118: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

112 Praktikum DOM PAGE 10

function insertXMLData()

{

var xmldoc= new ActiveXObject("Msxml2.DOMDocument.4.0");

xmldoc.load("product.xml");

var error=xmldoc.parseError;

if(error!=""){

document.write("Error, alasan : "+error.reason);

return false;

}

else

{

var newelPRODUCT;

var newelPRODID;

var newelPRICE;

var x =

xmldoc.getElementsByTagName("PRODUCTDETAILS")[0];

newelPRODUCT=xmldoc.createElement("PRODUCT");

x.appendChild(newelPRODUCT);

objelementsPRODUCT=xmldoc.getElementsByTagName("

PRODUCT");

last=objelementsPRODUCT.length;

y=objelementsPRODUCT[last-1];

newelPRODID=xmldoc.createElement("PRODID");

y.appendChild(newelPRODID);

y.lastChild.text = 'P004';

newelPRODNAME=xmldoc.createElement("PRODNAME")

; y.appendChild(newelPRODNAME);

y.lastChild.text = 'Kacang tanah';

newelPRICE=xmldoc.createElement("PRICE");

y.appendChild(newelPRICE);

y.lastChild.text = '3500';

Page 119: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum DOM 113 PAGE 10

alert(xmldoc.xml);

//MENYIMPAN KE FILE

var OutputXML = xmldoc.xml;

var mfObject, NewSampleFile;

mfObject = new

ActiveXObject("Scripting.FileSystemObject");

NewSampleFile =

mfObject.CreateTextFile("C:/Documents and Settings/Toshiba/My

Documents/1. POLTEK-TELKOMdanNTC/BUKUXML/2. BUKU-

PRAKT-XML-EDO-Chptr7-12/Data Files For

Faculty/Bab7/product.xml", true);

NewSampleFile.write(OutputXML);

NewSampleFile.close();

}

}

</SCRIPT>

</HEAD>

<BODY onload="javascript:insertXMLData()">

</BODY>

</HTML>

</SCRIPT>

</HEAD>

<BODY onload="javascript:insertXMLData()">

</BODY>

</HTML>

Kode di atas jika dijalankan akan menampilkan product.xml setelah

ditambahkan data product baru. Objek ActiveXObject akan mengkonfirmasi

apakah object akan dibuat. Ketikkan OK. File baru akan dibuat, dan jika

ditampilkan dengan Mozilla, hasilnya adalah sebagai berikut:

Page 120: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

114 Praktikum DOM PAGE 10

Cara insert data tidak hanya seperti program di atas. Mungkin dibuat program

lain untuk maksud tersebut.

11.3 Pencarian Data

Jika ingin ditampilkan produk dengan kode masukan, misalnya “P003”, bagaimana mendapatkan rincian datanya?

Kode berikut, CariProduk.html dapat digunakan untuk maksud tersebut.

<HTML>

<HEAD>

<TITLE> Cari Product </TITLE>

<SCRIPT language="JavaScript">

function CariData()

{

var xmldoc= new ActiveXObject("Msxml2.DOMDocument.4.0");

xmldoc.load("product.xml");

var error=xmldoc.parseError;

Page 121: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum DOM 115 PAGE 10

if(error!=""){

document.write("Error, alasan : "+error.reason);

return false;

}

else

{

var prodid = form1.prid.value;

var

objPRODID=xmldoc.getElementsByTagName("PRODID");

var

objPRODNAME=xmldoc.getElementsByTagName("PRODNAME");

var objPRICE=xmldoc.getElementsByTagName("PRICE");

for(ctr=0; ctr<objPRODID.length;ctr++){

if (objPRODID[ctr].text==prodid)

{

form1.prname.value =

objPRODNAME[ctr].text;

form1.price.value = objPRICE[ctr].text;

break;

}

}

}

}

</SCRIPT>

</HEAD>

<BODY>

<FORM name="form1">

Kode Produk : <input type=text name="prid">

<input type=button value="Cari!" onClick="javascript:CariData()">

<br>

Nama Produk : <input type=text name="prname"><br>

Harga : <input type=text name="price">

</FORM>

</BODY>

</HTML>

Page 122: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

116 Praktikum DOM PAGE 10

Jika dijalankan, akan muncul form kosong, dan silahkan diisi text untuk Kode

Produk.

Jika button Cari! di-klik, maka akan didapatkan hasil berikut:

Page 123: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum DOM 117 PAGE 10

11.4 Update Data

Jika harga suatu produk berubah, misalnya untuk “P004”, harganya berubah

dari 3500 menjadi 4000, bagaimana melakukannya?

Kode berikut, GantiHarga.html dapat digunakan untuk maksud tersebut.

<HTML>

<HEAD>

<TITLE> Ganti Harga </TITLE>

<SCRIPT language="JavaScript">

function CariData()

{

var xmldoc= new ActiveXObject("Msxml2.DOMDocument.4.0");

xmldoc.load("product.xml");

var error=xmldoc.parseError;

if(error!=""){

document.write("Error, alasan : "+error.reason);

return false;

} else

{

var prodid = form1.prid.value;

var

objPRODID=xmldoc.getElementsByTagName("PRODID");

var

objPRODNAME=xmldoc.getElementsByTagName("PRODNAME");

var objPRICE=xmldoc.getElementsByTagName("PRICE");

for(ctr=0; ctr<objPRODID.length;ctr++)

{

if (objPRODID[ctr].text==prodid)

{

form1.prname.value =

objPRODNAME[ctr].text;

form1.price.value = objPRICE[ctr].text;

break;

Page 124: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

118 Praktikum DOM PAGE 10

}

}

}

}

function SimpanData()

{

var xmldoc= new ActiveXObject("Msxml2.DOMDocument.4.0");

xmldoc.load("product.xml");

var error=xmldoc.parseError;

if(error!=""){

document.write("Error, alasan : "+error.reason);

return false;

}

else

{

var prodid = form1.prid.value;

var

objPRODID=xmldoc.getElementsByTagName("PRODID");

var

objPRODNAME=xmldoc.getElementsByTagName("PRODNAME");

var objPRICE=xmldoc.getElementsByTagName("PRICE");

for(ctr=0; ctr<objPRODID.length;ctr++){

if (objPRODID[ctr].text==prodid)

{

objPRODNAME[ctr].text=

form1.prname.value;

objPRICE[ctr].text=form1.price.value;

break;

}

}

alert(xmldoc.xml);

//MENYIMPAN KE FILE

var OutputXML = xmldoc.xml;

var mfObject, NewSampleFile;

Page 125: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum DOM 119 PAGE 10

mfObject = new

ActiveXObject("Scripting.FileSystemObject");

NewSampleFile = mfObject.CreateTextFile("C:/Documents

and Settings/Toshiba/My Documents/1. POLTEK-

TELKOMdanNTC/BUKUXML/2. BUKU-PRAKT-XML-EDO-Chptr7-12/Data

Files For Faculty/Bab7/product.xml", true);

NewSampleFile.write(OutputXML);

NewSampleFile.close();

}

}

</SCRIPT>

</HEAD>

<BODY>

<FORM name="form1">

Kode Produk : <input type=text name="prid">

<input type=button value="Cari!" onClick="javascript:CariData()">

<br>

Nama Produk : <input type=text name="prname"><br>

Harga : <input type=text name="price"><br>

<input type=button value="Simpan" onClick="javascript:SimpanData()">

</FORM>

</BODY>

</HTML>

Data yang akan diubah akan dicari dulu, hasilnya sebagai berikut:

Page 126: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

120 Praktikum DOM PAGE 10

Setelah diganti harganya, dan button simpan di-clik, data akan diubah dan

disimpan ke file produk.xml. Ditampilkan hasil akhirnya dengan Mozilla

sebagai berikut:

Page 127: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum DOM 121 PAGE 10

11.5 Delete Data

Jika data produk P003 akan dihapus, bagaimana melakukannya?

Kode berikut HapusProduk.html dapat digunakan untuk maksud ini.

<HTML>

<HEAD>

<TITLE> Hapus Produk </TITLE>

<SCRIPT language="JavaScript">

function CariData()

{

var xmldoc= new ActiveXObject("Msxml2.DOMDocument.4.0");

xmldoc.load("product.xml");

var error=xmldoc.parseError;

if(error!=""){ document.write("Error, alasan : "+error.reason);

return false;

}

else

{

var prodid = form1.prid.value;

var

objPRODID=xmldoc.getElementsByTagName("PRODID");

var

objPRODNAME=xmldoc.getElementsByTagName("PRODNAME");

var objPRICE=xmldoc.getElementsByTagName("PRICE");

for(ctr=0; ctr<objPRODID.length;ctr++)

{

if (objPRODID[ctr].text==prodid)

{

Page 128: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

122 Praktikum DOM PAGE 10

form1.prname.value =

objPRODNAME[ctr].text;

form1.price.value = objPRICE[ctr].text;

break;

}

}

}

}

function HapusData()

{

var xmldoc= new ActiveXObject("Msxml2.DOMDocument.4.0");

xmldoc.load("product.xml");

var error=xmldoc.parseError;

if(error!=""){

document.write("Error, alasan : "+error.reason);

return false;

}

else

{

var prodid = form1.prid.value;

var

objRoot=xmldoc.getElementsByTagName("PRODUCTDETAILS")[0];

var

objPRODUCT=xmldoc.getElementsByTagName("PRODUCT");

var

objPRODID=xmldoc.getElementsByTagName("PRODID");

for(ctr=0; ctr<objPRODID.length;ctr++){

if (objPRODID[ctr].text==prodid)

{

objRoot.removeChild(objRoot.childNodes.item(ctr)); break;

}

}

alert(xmldoc.xml);

//MENYIMPAN KE FILE

Page 129: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum DOM 123 PAGE 10

var OutputXML = xmldoc.xml;

var mfObject, NewSampleFile;

mfObject = new

ActiveXObject("Scripting.FileSystemObject");

NewSampleFile = mfObject.CreateTextFile("C:/Documents

and Settings/Toshiba/My Documents/1. POLTEK-

TELKOMdanNTC/BUKUXML/2. BUKU-PRAKT-XML-EDO-Chptr7-12/Data

Files For Faculty/Bab7/product.xml", true);

NewSampleFile.write(OutputXML);

NewSampleFile.close();

}

}

</SCRIPT>

</HEAD>

<BODY>

<FORM name="form1">

Kode Produk : <input type=text name="prid">

<input type=button value="Cari" onClick="javascript:CariData()">

<br>

Nama Produk : <input type=text name="prname"><br>

Harga : <input type=text name="price"><br>

<input type=button value="Hapus" onClick="javascript:HapusData()">

</FORM>

</BODY>

</HTML>

Jika dijalankan, dan diberi masukan P003 pada Kode Produk dan ditekan

tombol Cari, akan didapatkan hasil berikut.

Page 130: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

124 Praktikum DOM PAGE 10

Dan jika tombol Hapus ditekan, dokumen XML akan disimpan, dan jika

ditampilkan dengan Mozilla, akan didapatkan hasil berikut:

Page 131: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum DOM 125 PAGE 10

Rangkuman

1. DOM dapat digunakan untuk mengakses dokumen XML.

2. Fungsi alert pada JavaScript dan property “xml” dari objek Dokumen

dapat digunakan untuk menampilkan isi dokumen XML.

3. Method createElement(x), appendChild(x), dan property “text” dari elemen bermanfaat untuk menyisipkan data baru.

4. Method getElementsByTagName(tag) bermanfaat untuk mencari data

yang dikehendaki. Untuk selanjutnya dapat diganti.

5. Method removeChild(node) bermanfaat untuk menghapus.

Latihan

1. Integrasikan modul-modul di atas dalam suatu kesatuan halaman

HTML, sedemikian rupa, dari satu halaman utama, dapat melakukan

semua yang telah disebutkan tersebut.

2. Kembangkan lebih lanjut aplikasi di atas untuk mengelola data

pelanggan dan order produknya sekaligus.

Page 132: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

126 Praktikum DOM 2 PAGE 10

12 PRAKTIKUM DOM (2)

Overview

Jika di bab sebelumnya dibahas cara memanfaatkan DOM untuk mengakses

dokumen XML, bab ini akan membahas pemakaian DOM untuk menguji

dokumen XML dengan skema DTD dan XSD, serta menampilkan dokumen

XML dengan XSL

Tujuan

Memanfaatkan DOM untuk :

1. menguji data dokumen XML dengan DTD

2. menguji data dokumen XML dengan XSD

3. menampilkan data XML dengan XSL

Page 133: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum DOM 2 127 PAGE 10

12.1 Validasi dokumen XML dengan DTD

Diketahui file product.xml sebagai berikut

<PRODUCTDETAILS>

<PRODUCT>

<PRODID> P001 </PRODID>

<PRODNAME> Beras </PRODNAME>

<PRICE> 5000 </PRICE>

</PRODUCT>

<PRODUCT>

<PRODID> P002 </PRODID>

<PRODNAME> Jagung </PRODNAME>

<PRICE> 4000 </PRICE>

</PRODUCT>

<PRODUCT>

<PRODID>P004</PRODID>

<PRODNAME>Kacang Tanah</PRODNAME>

<PRICE>4000</PRICE>

</PRODUCT>

</PRODUCTDETAILS>

File DTD-nya, product.dtd sebagai berikut:

<!ELEMENT PRODUCTDETAILS (PRODUCT)+>

<!ELEMENT PRODUCT (PRODID, PRODNAME, PRICE)>

<!ELEMENT PRODID (#PCDATA)>

<!ELEMENT PRODNAME (#PCDATA)>

<!ELEMENT PRICE (#PCDATA)>

Bagaimana membuktikan product.xml sesuai dengan skema yang dibuat dalam

product.dtd menggunakan DOM?

Objek DOMDocument dan ParseError dibutuhkan untuk

memvalidasi dokumen XML terhadap DTD . Ketikkan kode berikut di

Notepad dan simpan sebagai CekXMLDTD.htm.

<html>

<head> <title>Penguji XML DTD</title>

Page 134: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

128 Praktikum DOM 2 PAGE 10

<script Language="javascript">

var transformedwindow;

function doValidate()

{

if ((document.frmTransform.TxtXMLFileName.value).length == 0)

{

alert("Maaf, File XML kosong");

return;

}

var xmldoc= new ActiveXObject("Msxml2.DOMDocument.4.0");

xmldoc.validateOnParse = true;

//dengan true berarti akan divalidasi dengan DTD atau XSD

xmldoc.load(document.frmTransform.TxtXMLFileName.value);

//load dokumen XML yang diminta masukan.

var error=xmldoc.parseError;

//barangkali ada error.

transformedwindow=window.open('Hasil.html', '_new', 'location=0,

status=1, toolbar=0, menuBar=0, srollBars=0,

directories=0,resizable=0,width=600,height=600');

if(error!="")

{

transformedwindow.document.write('<HTML><TITLE>Chek XML

DTD</Title><BODY><P><b>Error Validating the

document</b></p><br>');

//Buat pesan

transformedwindow.document.write('<b>Error URL: </b><br>' + error.url + '<br>');

//Tulis Error URL.

transformedwindow.document.write('<b>Error Line:

</b><br>' + error.line + '<br>');

//Tulis nomor baris yang salah

Page 135: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum DOM 2 129 PAGE 10

transformedwindow.document.write('<b>Error Position:

</b><br>' + error.linepos + '<br>');

//Tulis posisi kesalahan

transformedwindow.document.write('<b>Error Reason:

</b><br>' + error.reason + '<br>');

//Tulis alasan kesalahan

transformedwindow.document.write('</BODY></HTML>');

}

else

{

transformedwindow.document.write('<HTML><TITLE>Chek XML

DTD </Title><BODY><b>Tidak ada kesalahan </b><br>');

//Tulis pesan

transformedwindow.document.write('</BODY></HTML>');

}

}

function doReset()

{

/*

document.frmTransform.TxtXMLFileName.value="";

if (!(typeof transformedwindow == "undefined"))

transformedwindow.close();

*/

}

</script> </head>

<body bgcolor="#6699CC" text="#FFFFFF">

<p>&nbsp;</p>

<p align="center"><font face="Verdana, Arial, Helvetica, sans-

serif"><b><u>Penguji XML DTD

Page 136: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

130 Praktikum DOM 2 PAGE 10

</u></b></font></p>

<p>&nbsp;</p>

<form name="frmTransform" method="post" action="">

<table width="75%" border="0" align="center">

<tr>

<td width="31%">

<div align="center"><b>File XML:</b></div>

</td>

<td width="18%">

<input type="text" name="TxtXMLFileName">

<font face="Verdana, Arial, Helvetica, sans-serif" size="2"></font>

</td>

<td width="10%">

<font face="Verdana, Arial, Helvetica, sans-serif" size="2">

<a href="#" onClick="javascript:doValidate()">Cek</a>

<!--buat link Validate memanggil fungsi dovalidate() jika di-clicked-->

</font>

</td>

<td width="41%">

<font face="Verdana, Arial, Helvetica, sans-serif" size="2">

<a href="#" onClick="javascript:doReset()">Reset</a>

</font>

</td>

</tr>

<tr>

<td width="31%"> </td>

<td colspan="3"> </td>

</tr>

<tr>

<td colspan="4">

<div align="left"></div>

<div align="left"></div>

</td> </tr>

</table>

<p>&nbsp;</p>

<p>&nbsp; </p>

<p>&nbsp; </p>

Page 137: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum DOM 2 131 PAGE 10

<p> <font face="Verdana, Arial, Helvetica, sans-serif" size="2"> </font></p>

</form>

</body>

</html>

Untuk menjalankan program di atas, bukalah CekXMLDTD.htm

dalam browser web. Ketikkan product.xml di teks fieldnya dan klik button

“Cek”. Jika ada error, rinciannya : nomor baris, alasan, dan posisinya

ditampilkan. Jika benar, pesan “Tidak ada kesalahan” akan ditampilkan.

Berikut adalah contoh masukan “product.xml” untuk program di atas.

Page 138: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

132 Praktikum DOM 2 PAGE 10

Dan hasilnya :

12.2 Validasi dokumen XML dengan XSD

Diketahui file product.xml seperti di atas. Dan file product.xsd sebagai

berikut.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:element name="PRODUCTDETAILS" type="prdata"/>

<xsd:complexType name="prdata" maxOccurs=”unbounded”>

<xsd:sequence>

<xsd:element name="PRODUCT" type="prdt"/>

</xsd:sequence>

</xsd:complexType>

<xsd:complexType name="prdt">

<xsd:sequence>

<xsd:element name="PRODID" type="xsd:string"/>

<xsd:element name="PRODNAME" type="xsd:string"/>

<xsd:element name="PRICE" type="xsd:positiveInteger"/>

</xsd:sequence>

Page 139: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum DOM 2 133 PAGE 10

</xsd:complexType>

</xsd:schema>

Bagaimana membuktikan product.xml sesuai dengan skema yang dibuat dalam

product.xsd menggunakan DOM? Kode berikut CekXMLXSD.html dapat

digunakan untuk memvalidasi XML berdasarkan XSD.

<html>

<head>

<title>Penguji XML XSD</title>

</head>

<body bgcolor="#6699CC" text="#FFFFFF" vLink="Yellow" >

<script Language="javascript">

var transformedwindow;

function doValidate()

{

if((document.frmTransform.TxtXMLFileName.value).length == 0)

{

alert("Maaf, file XML kosong.");

return;

}

if((document.frmTransform.TxtXSDFileName.value).length ==0)

{

alert("Maaf, file XSD kosong");

return;

}

var xmlDoc = new

ActiveXObject("Msxml2.FreeThreadedDomDocument.4.0");

xmlDoc.async = false;

xmlDoc.load(document.frmTransform.TxtXMLFileName.value);

var namespace=xmlDoc.documentElement.namespaceURI;

xmlDoc.validateOnParse=true;

var xsdschemacache = new

ActiveXObject("Msxml2.XMLSchemaCache.4.0");

xsdschemacache.add(namespace,document.frmTransform.TxtXSDFil

eName.value);

xmlDoc.schemas=xsdschemacache;

Page 140: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

134 Praktikum DOM 2 PAGE 10

xmlDoc.load(document.frmTransform.TxtXMLFileName.value);

var error=xmlDoc.parseError;

transformedwindow=window.open('Hasil.html','_new','location=0,st

atus=1,toolbar=0,menuBar=0,scrollBars=0,directories=0,resizable=0,width=6

00,height=600');

if(error!="")

{

transformedwindow.document.write('<HTML><TITLE>Penguji

Skema</Title><BODY><P><b>Kesalahan saat validasi

dokumen</b></p><br>');

transformedwindow.document.write('<b>Error

URL:</b><br>' + error.url + '<br>');

transformedwindow.document.write('<b>Error

Line:</b><br>' + error.line + '<br>');

transformedwindow.document.write('<b>Error

Position:</b><br>' + error.linepos + '<br>');

transformedwindow.document.write('<b>Error

Reason:</b><br>' + error.reason + '<br>');

transformedwindow.document.write('</BODY></HTML>');

}

else

{

transformedwindow.document.write('<HTML><TITLE>Penguji

Skema</Title><BODY><b>Tidak ada kesalahan </b><br>');

transformedwindow.document.write('</BODY></HTML>');

}

}

function doReset() {

document.frmTransform.TxtXSDFileName.value="";

document.frmTransform.TxtXMLFileName.value="";

if (!(typeof transformedwindow == "undefined"))

transformedwindow.close();

}

Page 141: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum DOM 2 135 PAGE 10

</script>

<p>&nbsp;</p>

<p align="center"><font face="Verdana, Arial, Helvetica,

sans-serif"><b><u>Penguji XML - XSD </u></b></font></p>

<p>&nbsp;</p>

<form name="frmTransform" method="post" action="">

<table width="75%" border="0" align="center">

<tr>

<td>

<div align="center"><b>File XML:</b></div>

</td>

<td>

<input type="text" name="TxtXMLFileName">

<font face="Verdana, Arial, Helvetica, sans-serif"

size="2"><a href="#"

onclick="javascript:doValidate()">Check</a></font>

</td>

</tr>

<tr>

<td>

<div align="center"><b>File XSD:</b></div>

</td>

<td>

<input type="text" name="TxtXSDFileName">

<font face="Verdana, Arial, Helvetica, sans-serif"

size="2"><a

href="#"

onclick="javascript:doReset()">Reset</a></font>

</td>

</tr>

<tr>

<td colspan="2">

<div align="left"></div> <div align="left"></div>

</td>

</tr>

</table>

<p>&nbsp;</p>

<p>&nbsp;</p>

Page 142: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

136 Praktikum DOM 2 PAGE 10

<p>&nbsp;</p>

<p><font face="Verdana, Arial, Helvetica, sans-serif" size="2">

</font></p>

</form>

</body>

</html>

Pastikan product.xml dan product.xsd berada di folder yang sama dengan file

program ini. Berikut adalah contoh masukan product.xml dan product.xsd.

Dan hasilnya adalah pesan form “Tidak ada kesalahan”.

Page 143: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum DOM 2 137 PAGE 10

12.3 Menampilkan XML dengan XSL

Diketahui file productTable.xsl sebagai berikut:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

version="1.0"> <xsl:template match="/">

<html>

<body>

<table border="2" bgcolor="pink">

<tr>

<th>Product ID</th>

<th>Product Name</th>

<th>Price</th>

</tr>

<xsl:for-each select="PRODUCTDETAILS/PRODUCT">

<tr>

<td><xsl:value-of select="PRODID"/></td>

<td><xsl:value-of select="PRODNAME"/></td>

<td><xsl:value-of select="PRICE"/></td>

Page 144: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

138 Praktikum DOM 2 PAGE 10

</tr>

</xsl:for-each>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

Jika product.xml ditampilkan menggunakan productTable.xsl akan

menghasilkan tampilan berikut.

Diketahui juga file productList.xsl sebagai berikut:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

version="1.0">

<xsl:template match="/">

<html> <body>

<xsl:for-each select="PRODUCTDETAILS/PRODUCT">

<li><xsl:value-of select="PRODID"/></li>

<li><xsl:value-of select="PRODNAME"/></li>

Page 145: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum DOM 2 139 PAGE 10

<li><xsl:value-of select="PRICE"/></li>

<br></br>

</xsl:for-each>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

Jika product.xml ditampilkan menggunakan productList.xsl akan menghasilkan

tampilan berikut.

Bagaimana menampilkan product.xml dalam bentuk tabel atau list (dapat

dipilih dari halaman HTML) melalui DOM? Kita buat dokumen HTML berisi

dua frame, frame atas untuk menampilkan hasil, frame bawah untuk

menampilkan pilihan.

File frameAtas.html digunakan untuk mengisi frame atas.

<html>

<head>

<title>Hasil XSL</title>

Page 146: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

140 Praktikum DOM 2 PAGE 10

</head>

<body bgcolor="#FFFFFF">

</body>

</html>

File frameBawah.html untuk menampilkan pilihan.

<html>

<head>

<title>Pilihan</title>

<script language="javascript">

function displayTable()

{

document.VIEW.optList.checked=false;

document.VIEW.optReset.checked=false;

var xslt = new ActiveXObject("Msxml2.XSLTemplate.4.0");

var xslDoc = new

ActiveXObject("Msxml2.FreeThreadedDOMDocument.4.0");

var xslProc;

xslDoc.async = false;

xslDoc.load("productTable.xsl");

xslt.stylesheet = xslDoc;

var xmlDoc = new

ActiveXObject("Msxml2.FreeThreadedDOMDocument.4.0");

xmlDoc.async = false;

xmlDoc.load("product.xml");

xslProc = xslt.createProcessor();

xslProc.input = xmlDoc;

xslProc.transform();

//alert(xslProc.output);

parent.TOP.document.write(xslProc.output);

}

function displayList()

{ document.VIEW.optTable.checked=false;

document.VIEW.optReset.checked=false;

var xslt = new ActiveXObject("Msxml2.XSLTemplate.4.0");

var xslDoc = new ActiveXObject

("Msxml2.FreeThreadedDOMDocument.4.0");

var xslProc;

Page 147: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum DOM 2 141 PAGE 10

xslDoc.async = false;

xslDoc.load("productList.xsl");

xslt.stylesheet = xslDoc;

var xmlDoc = new ActiveXObject

("Msxml2.FreeThreadedDOMDocument.4.0");

xmlDoc.async = false;

xmlDoc.load("product.xml");

xslProc = xslt.createProcessor();

xslProc.input = xmlDoc;

xslProc.transform();

parent.TOP.document.write(xslProc.output);

}

function displayReset()

{

parent.TOP.document.location="frameAtas.html";

document.VIEW.optList.checked=false;

document.VIEW.optTable.checked=false;

}

</script>

</head>

<body bgcolor="#FFFFFF">

<form name="VIEW" method="post" action>

<p>

<input type="radio" name="optTable" value="radiobutton"

onClick="javascript:displayTable();">

Tampilan Tabel XML

<input type="radio" name="optList" value="radiobutton"

onClick="javascript:displayList();">

Tampilan List XML

<input type="radio" name="optReset" value="radiobutton"

onClick="javascript:displayReset();">

Reset

</p> </form>

</body>

</html>

Page 148: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

142 Praktikum DOM 2 PAGE 10

Fungsi displayTable() menampilkan XML dalam bentuk tabel, displayList()

menampilkan XML dalam bentuk List, displayReset() mengosongkan

frameAtas.

File Utama.html berikut digunakan untuk membuat halaman utama.

<html>

<head>

<title>Utama</title>

</head>

<frameset rows="85%,103*" cols="*">

<frame name="TOP" scrolling="AUTO" src="frameAtas.html" noresize

frameborder="NO">

<frame name="BOTTOM" src="frameBawah.html" scrolling="NO" noresize

frameborder="NO">

</frameset>

</html>

Jika dijalankan hasilnya adalah ada pilihan untuk menampilkan dalam bentuk

Tabel atau List di bawah.

Page 149: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum DOM 2 143 PAGE 10

Jika tampilan tabel dipilih, maka akan dihasilkan tampilan berikut.

Jika tampilan list dipilih, maka akan dihasilkan tampilan berikut.

Page 150: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

144 Praktikum DOM 2 PAGE 10

Rangkuman

1. Property “validateOnParse” jika diset true akan bermanfaat untuk

memvalidasi dokumen XML dengan DTD.

2. Dibutuhkan objek XMLSchemaCache, property “schemas” dokumen

DOM yang diisi nama file xsl, dan “validateOnParse” yang diisi true bermanfaat untuk memvalidasi dokumen XML dengan XSL.

3. Untuk menampilkan dokumen XML menggunakan XSL dibutuhkan :

- dua objek FreeThreadedDOMDocument untuk mengambil

masing-masing file XSL dan XML

- Objek XSLTemplate, property “stylesheet”nya diisi file

XSL, method createProcessor() diaktifkan disimpan di suatu

objek dan property “input” diisi file XML-nya, dan method

transform() diaktifkan.

Latihan

Lengkapi Latihan di bab sebelumnya dengan fasilitas pengujian dokumen XML

dengan DTD dan XSD, serta menampilkan dokumen XML dengan XSL.

Page 151: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum SAX 145 PAGE 10

13 PRAKTIKUM SAX

Overview

Bab ini akan menunjukkan bagaimana mengakses dokumen XML dengan SAX.

Tujuan

Menggunakan SAX untuk menampilkan :

1. isi dokumen XML apa adanya

2. isi dokumen XML tanpa tag

3. dengan melakukan perhitungan

Page 152: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

146 Praktikum SAX PAGE 10

13.1 Menampilkan data XML

Diketahui file product.xml berikut

<PRODUCTDETAILS>

<PRODUCT>

<PRODID> P001 </PRODID>

<PRODNAME> Beras </PRODNAME>

<PRICE> 5000 </PRICE>

</PRODUCT>

<PRODUCT>

<PRODID> P002 </PRODID>

<PRODNAME> Jagung </PRODNAME>

<PRICE> 4000 </PRICE>

</PRODUCT>

<PRODUCT>

<PRODID> P003 </PRODID>

<PRODNAME> Kedelai </PRODNAME>

<PRICE> 4500 </PRICE>

</PRODUCT>

</PRODUCTDETAILS>

Ditampilkan dengan Mozilla, product.xml akan nampak sebagai berikut:

Page 153: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum SAX 147 PAGE 10

Bagaimana menampilkannya menggunakan Java?

Buat program TampilProduk.java berikut.

import java.io.*;

//package-package yang diperlukan untuk mengakses SAX

import org.xml.sax.*;

import org.xml.sax.helpers.DefaultHandler;

import javax.xml.parsers.SAXParserFactory;

import javax.xml.parsers.ParserConfigurationException;

import javax.xml.parsers.SAXParser;

public class TampilProduk extends DefaultHandler

{

static private Writer writerOut;

StringBuffer stringBuffer;

/* Masukan nama file XML */

public static void main(String fileName[])

{

if (fileName.length != 1)

{

System.err.println("Usage: cmd filename");

System.exit(1);

}

DefaultHandler defaultHandler = new TampilProduk();

SAXParserFactory saxParserFactory =

SAXParserFactory.newInstance();

try

{

/* untuk tampilan */

writerOut = new OutputStreamWriter(System.out,"UTF8");

/* buat objek SAXParser class */

SAXParser Sax_Parser = saxParserFactory.newSAXParser();

/* telusuri file XML */ Sax_Parser.parse( new File(fileName[0]), defaultHandler);

}

catch (Throwable thr)

{

thr.printStackTrace();

}

Page 154: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

148 Praktikum SAX PAGE 10

System.exit(0);

}

/* Method yang menangani startDocument */

public void startDocument() throws SAXException

{

IOHandler("<?xml version = '1.0' encoding = 'UTF-8'?>");

newLine();

}

/* Method yang menangani endDocument */

public void endDocument() throws SAXException

{

try

{

newLine();

writerOut.flush();

}

catch (IOException e)

{

throw new SAXException("I/O error", e);

}

}

/* Method yang menangani startElement */

public void startElement(String namespaceURI, String sName, String

qName, Attributes attrs) throws SAXException

{

displayText();

String eName = sName;

if ("".equals(eName))

eName = qName;

IOHandler("<" + eName);

if (attrs != null) {

for (int i = 0; i < attrs.getLength(); i++)

{

String aName = attrs.getLocalName(i);

if ("".equals(aName))

aName = attrs.getQName(i);

Page 155: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum SAX 149 PAGE 10

IOHandler(" ");

IOHandler(aName + "=\"" + attrs.getValue(i) + "\"");

}

}

IOHandler(">");

}

/* Method yang menangani endElement */

public void endElement(String namespaceURI, String sName, String

qName) throws SAXException

{

displayText();

String eName = sName;

if ("".equals(eName))

eName = qName;

IOHandler("</" + eName + ">");

}

/* Method yang menangani characters */

public void characters(char buf[], int offset, int len) throws SAXException

{

String s = new String(buf, offset, len);

if (stringBuffer == null)

{

stringBuffer = new StringBuffer(s);

}

else

{

stringBuffer.append(s);

}

}

/* Tampilkan text yang terkumpul di string buffer */

private void displayText() throws SAXException {

if (stringBuffer == null)

return;

String s = ""+stringBuffer;

IOHandler(s);

stringBuffer = null;

Page 156: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

150 Praktikum SAX PAGE 10

}

/* Tulis isi string buffer ke layar */

private void IOHandler(String s) throws SAXException

{

try

{

writerOut.write(s);

writerOut.flush();

}

catch (IOException IOExcep)

{

throw new SAXException("I/O error", IOExcep);

}

}

/* Buat baris baru */

private void newLine() throws SAXException

{

String lineEnd = System.getProperty("line.separator");

try

{

writerOut.write(lineEnd);

}

catch (IOException e)

{

throw new SAXException("I/O error", e);

}

}

}

Kompilasi program di atas dengan :

C>javac TampilProduk.java

Jalankan program di atas dengan :

C>java TampilProduk product.xml

Hasilnya adalah sebagai berikut:

Page 157: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum SAX 151 PAGE 10

13.2 Tampilkan Data XML tanpa tag

Jika ingin ditampilkan produk tanpa tag, bagaimana caranya?

Kode berikut, TampilProduk2.java dapat digunakan untuk maksud

tersebut.

import java.io.*;

import org.xml.sax.*;

import org.xml.sax.helpers.DefaultHandler;

import javax.xml.parsers.SAXParserFactory;

import javax.xml.parsers.ParserConfigurationException;

import javax.xml.parsers.SAXParser;

public class TampilProduk2 extends DefaultHandler

{

StringBuffer stringBuffer;

Page 158: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

152 Praktikum SAX PAGE 10

public static void main(String fileName[])

{

if (fileName.length != 1)

{

System.err.println("Usage: cmd filename");

System.exit(1);

}

DefaultHandler defaultHandler = new TampilProduk2();

SAXParserFactory saxParserFactory =

SAXParserFactory.newInstance();

try

{

SAXParser Sax_Parser = saxParserFactory.newSAXParser();

Sax_Parser.parse( new File(fileName[0]), defaultHandler);

}

catch (Throwable thr)

{

thr.printStackTrace();

}

System.exit(0);

}

public void startDocument() throws SAXException

{

}

public void endDocument() throws SAXException

{

System.out.println(stringBuffer.toString());

}

public void startElement(String namespaceURI, String sName, String

qName, Attributes attrs) throws SAXException {

}

public void endElement(String namespaceURI, String sName, String

qName) throws SAXException

{

Page 159: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum SAX 153 PAGE 10

}

public void characters(char buf[], int offset, int len) throws SAXException

{

String s = new String(buf, offset, len);

if (stringBuffer == null)

{

stringBuffer = new StringBuffer(s);

}

else

{

stringBuffer.append(s);

}

}

}

Kompilasi dan jalankan dengan :

C:\java TampilProduk2 product.xml

Hasilnya adalah sebagai berikut.

Page 160: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

154 Praktikum SAX PAGE 10

13.3 Perhitungan terhadap data XML

Diketahui data item.xml berikut:

<ItemsInfo>

<Item>

<type>Book</type>

<price>100</price>

</Item>

<Item>

<type>CD</type>

<price>600</price>

</Item>

<Item>

<type>Greeting Card</type>

<price>500</price>

</Item>

</ItemsInfo>

Bagaimana menjumlahkan data-data price?

Kode HitungPrice.java berikut dapat digunakan.

import java.io.*;

import org.xml.sax.*;

import org.xml.sax.helpers.DefaultHandler;

import javax.xml.parsers.SAXParserFactory;

import javax.xml.parsers.SAXParser;

public class HitungPrice extends DefaultHandler

{

StringBuffer stringBuffer = new StringBuffer();

private int amt=0;

public static void main(String fileName[])

{

if (fileName.length != 1)

{

System.err.println("Usage: cmd filename");

System.exit(1);

Page 161: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum SAX 155 PAGE 10

}

DefaultHandler defaultHandler = new HitungPrice();

SAXParserFactory saxParserFactory =

SAXParserFactory.newInstance();

try

{

SAXParser Sax_Parser = saxParserFactory.newSAXParser();

Sax_Parser.parse( new File(fileName[0]), defaultHandler);

}

catch (Throwable thr)

{

thr.printStackTrace();

}

System.exit(0);

}

public void startDocument() throws SAXException

{

}

public void endDocument() throws SAXException

{

System.out.println("The total amount is:"+amt);

}

public void startElement(String namespaceURI, String sName, String

qName, Attributes attrs) throws SAXException

{

stringBuffer.setLength(0);

}

public void endElement(String namespaceURI, String sName, String

qName) throws SAXException {

if(qName.equals("price") && !qName.equals(""))

amt += Integer.parseInt(stringBuffer.toString().trim());

stringBuffer.setLength(0);

}

Page 162: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

156 Praktikum SAX PAGE 10

public void characters(char buf[], int offset, int len) throws SAXException

{

stringBuffer.append(buf, offset, len);

}

}

Jika dijalankan akan menghasilkan:

Page 163: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum SAX 157 PAGE 10

Rangkuman

Tidak banyak yang dapat dilakukan dengan SAX, kecuali sekedar menampilkan

data, dan operasi-operasi terkait dengan tag-tag yang ditemukan : startDocument(), endDocument(), startElement(), endElement().

Latihan

Buatlah program SAX untuk menampilkan produk dengan format berikut:

Produk : P001, Beras, 5000

Produk : P002, Jagung, 4000

Produk : P003, Kedelai, 4500

Page 164: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

158 Praktikum WSDL PAGE 10

14 PRAKTIKUM WSDL

Overview

Bab ini akan menunjukkan bagaimana membuat WSDL, Web Service

Description Language dari Web Service Java.

Tujuan

Membuat WSDL dengan perintah wscompile Java

Page 165: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum WSDL 159 PAGE 10

14.1 Membuat WSDL dengan wscompile Java

Contoh 1. Diinginkan membuat Web Service untuk mengkonversikan suhu

dari Celcius menjadi Fahrenheit. Bagaimana membuat WSDL-nya?

Pertama, dibuat file interface TempConverterIntf.java sebagai berikut:

package temp_converter;

import java.rmi.Remote;

import java.rmi.RemoteException;

public interface TempConverterIntf extends Remote

{

public double getFahrenheit(double celcius) throws RemoteException;

}

Kedua, dibuat file implementasinya TempConverterImpl.java sebagai

berikut:

package temp_converter;

import java.rmi.RemoteException;

public class TempConverterImpl implements TempConverterIntf

{

public double getFahrenheit(double celcius) throws RemoteException {

double fahrenheit = 0;

fahrenheit = ((1.8) * celcius) + 32.0;

return fahrenheit;

}

}

Kedua file tersebut dikompilasi sebagai berikut:

C>....Folder>javac –d . TempConverter*.java

Ketiga, buat file konfigurasi awal untuk membuat WSDL, config.xml,

sebagai berikut:

<?xml version="1.0" encoding="UTF-8"?>

<configuration xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config">

<service

name="TempConverterWebService"

Page 166: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

160 Praktikum WSDL PAGE 10

targetNamespace="urn:Foo"

typeNamespace="urn:Foo"

packageName="temp_converter">

<interface name="temp_converter.TempConverterIntf"/>

</service>

</configuration>

Gunakan perintah berikut di command prompt untuk membuat file wsdl,

sekaligus mapping.xml :

C>..Folder>wscompile –define –mapping ./mapping.xml –d .

–nd . –classpath . config.xml

Berikut adalah file hasil WSDLnya, TempConverterWebService.wsdl :

<?xml version="1.0" encoding="UTF-8"?>

<definitions name="TempConverterWebService"

targetNamespace="urn:Foo" xmlns:tns="urn:Foo"

xmlns="http://schemas.xmlsoap.org/wsdl/"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">

<types/>

<message name="TempConverterInterface_getFahrenheit">

<part name="double_1" type="xsd:double"/></message>

<message name="TempConverterInterface_getFahrenheitResponse">

<part name="result" type="xsd:double"/></message>

<portType name="TempConverterInterface">

<operation name="getFahrenheit" parameterOrder="double_1">

<input message="tns:TempConverterInterface_getFahrenheit"/>

<output

message="tns:TempConverterInterface_getFahrenheitResponse"/></operatio

n></portType>

<binding name="TempConverterInterfaceBinding"

type="tns:TempConverterInterface"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http"

style="rpc"/>

<operation name="getFahrenheit">

<soap:operation soapAction=""/>

<input>

Page 167: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum WSDL 161 PAGE 10

<soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

use="encoded" namespace="urn:Foo"/></input>

<output>

<soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

use="encoded" namespace="urn:Foo"/></output></operation></binding>

<service name="TempConverterWebService">

<port name="TempConverterInterfacePort"

binding="tns:TempConverterInterfaceBinding">

<soap:address

location="REPLACE_WITH_ACTUAL_URL"/></port></service></definition

s>

Perhatikan tag-tag penting elemen file WSDL yang ditandai bold di atas.

Disamping file WSDL di atas, juga dihasilkan file mapping.xml berikut:

<?xml version="1.0" encoding="UTF-8"?>

<java-wsdl-mapping xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.1"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

http://www.ibm.com/webservices/xsd/j2ee_jaxrpc_mapping_1_1.xsd">

<package-mapping>

<package-type>temp_converter</package-type>

<namespaceURI>urn:Foo</namespaceURI>

</package-mapping>

<package-mapping>

<package-type>temp_converter</package-type>

<namespaceURI>urn:Foo</namespaceURI>

</package-mapping>

<service-interface-mapping>

<service-interface>temp_converter.TempConverterWebService</service-

interface>

<wsdl-service-name

xmlns:serviceNS="urn:Foo">serviceNS:TempConverterWebService</wsdl-

service-name> <port-mapping>

<port-name>TempConverterInterfacePort</port-name>

<java-port-name>TempConverterInterfacePort</java-port-name>

</port-mapping>

</service-interface-mapping>

<service-endpoint-interface-mapping>

Page 168: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

162 Praktikum WSDL PAGE 10

<service-endpoint-

interface>temp_converter.TempConverterInterface</service-endpoint-

interface>

<wsdl-port-type

xmlns:portTypeNS="urn:Foo">portTypeNS:TempConverterInterface</wsdl-

port-type>

<wsdl-binding

xmlns:bindingNS="urn:Foo">bindingNS:TempConverterInterfaceBinding</ws

dl-binding>

<service-endpoint-method-mapping>

<java-method-name>getFahrenheit</java-method-name>

<wsdl-operation>getFahrenheit</wsdl-operation>

<method-param-parts-mapping>

<param-position>0</param-position>

<param-type>double</param-type>

<wsdl-message-mapping>

<wsdl-message

xmlns:wsdlMsgNS="urn:Foo">wsdlMsgNS:TempConverterInterface_getFahre

nheit</wsdl-message>

<wsdl-message-part-name>double_1</wsdl-message-part-name>

<parameter-mode>IN</parameter-mode>

</wsdl-message-mapping>

</method-param-parts-mapping>

<wsdl-return-value-mapping>

<method-return-value>double</method-return-value>

<wsdl-message

xmlns:wsdlMsgNS="urn:Foo">wsdlMsgNS:TempConverterInterface_getFahre

nheitResponse</wsdl-message>

<wsdl-message-part-name>result</wsdl-message-part-name>

</wsdl-return-value-mapping>

</service-endpoint-method-mapping>

</service-endpoint-interface-mapping>

</java-wsdl-mapping>

Contoh 2. Misal akan dibuat web service ramalan bintang. Bagaimana

membuat file WSDL-nya?

Pertama, perlu dibuat file interface-nya, HoroscopeInterface.java, sebagai

berikut.

Page 169: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum WSDL 163 PAGE 10

package horoscope;

import java.rmi.Remote;

import java.rmi.RemoteException;

public interface HoroscopeInterface extends Remote

{

public String getSunSignTrait(int sunsign) throws RemoteException;

}

Berikutnya file implementasinya, HoroscopeImplementation.java, senagai

berikut:

package horoscope;

import java.rmi.RemoteException;

import java.sql.*;

public class HoroscopeImplementation implements HoroscopeInterface

{

public String getSunSignTrait(int sunsign) throws RemoteException

{

String sunSignTrait[] = new String[12];

/* Aries sun sign trait */

sunSignTrait[0] = "Arians are adventurous, ambitious,

impulsive, enthusiastic, and full of energy.";

/* Taurus sun sign trait */

sunSignTrait[1] = "Taureans are practical, stable,

conservative, and lovers of peace.";

/* Gemini sun sign trait */

sunSignTrait[2] = "Geminis are dual-natured, elusive,

complex, and contradictory.";

/* Cancer sun sign trait */

sunSignTrait[3] = "Cancerians are timid and shy. They are also dull and conservative.";

/* Leo sun sign trait */

sunSignTrait[4] = "Leos are ambitious, courageous, strong-

willed, independent, and self-confident.";

/* Virgo sun sign trait */

Page 170: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

164 Praktikum WSDL PAGE 10

sunSignTrait[5] = "Virgos are characterized by preciseness,

refinement, love for cleanliness, hygiene, and good order.";

/* Libra sun sign trait */

sunSignTrait[6] = "Librans are elegant, charming, naturally

kind, gentle, and lovers of beauty, harmony and justice.";

/* Scorpio sun sign trait */

sunSignTrait[7] = "Scorpios are the most intense, profound,

and powerful among the zodiacs.";

/* Sagittarius sun sign trait */

sunSignTrait[8] = "Sagittarians are full of energy, versatility,

adventurousness, and eagerness to extend experience.";

/* Capricorn sun sign trait */

sunSignTrait[9] = "Capricorns are confident, strong-willed,

and calm.";

/* Aquarius sun sign trait */

sunSignTrait[10] = "Aquarians basically possess strong and

attractive personalities.";

/* Pisces sun sign trait */

sunSignTrait[11] = "Pisceans are gentle, patient, malleable,

generous, friendly, creative, and sensitive to others' feelings.";

switch(sunsign)

{

case 0:

/* Returns sun sign trait of Aries */

return sunSignTrait[0];

case 1:

/* Returns sun sign trait of Taurus */

return sunSignTrait[1];

case 2:

/* Returns sun sign trait of Gemini */

return sunSignTrait[2];

case 3:

/* Returns sun sign trait of Cancer */ return sunSignTrait[3];

case 4:

/* Returns sun sign trait of Leo */

return sunSignTrait[4];

case 5:

/* Returns sun sign trait of Virgo */

Page 171: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum WSDL 165 PAGE 10

return sunSignTrait[5];

case 6:

/* Returns sun sign trait of Libra */

return sunSignTrait[6];

case 7:

/* Returns sun sign trait of Scorpio */

return sunSignTrait[7];

case 8:

/* Returns sun sign trait of Sagittarius */

return sunSignTrait[8];

case 9:

/* Returns sun sign trait of Capricorn */

return sunSignTrait[9];

case 10:

/* Returns sun sign trait of Aquarius */

return sunSignTrait[10];

case 11:

/* Returns sun sign trait of Pisces */

return sunSignTrait[11];

default:

return null;

}

}

}

File konfigurasi awal untuk membuat WSDL, config.xml, dibuat sebagai

berikut:

<?xml version="1.0" encoding="UTF-8"?>

<configuration xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config">

<service

name="HoroscopeWebService"

targetNamespace="urn:Foo" typeNamespace="urn:Foo"

packageName="horoscope">

<interface name="horoscope.HoroscopeInterface"/>

</service>

</configuration>

Page 172: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

166 Praktikum WSDL PAGE 10

Gunakan perintah berikut di command prompt untuk membuat file wsdl,

sekaligus mapping.xml :

C>..Folder>wscompile –define –mapping ./mapping.xml –d .

–nd . –classpath . config.xml

Berikut adalah file hasil WSDLnya, HoroscopeWebService.wsdl :

<?xml version="1.0" encoding="UTF-8"?>

<definitions name="HoroscopeWebService" targetNamespace="urn:Foo"

xmlns:tns="urn:Foo" xmlns="http://schemas.xmlsoap.org/wsdl/"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">

<types/>

<message name="HoroscopeInterface_getSunSignTrait">

<part name="int_1" type="xsd:int"/></message>

<message name="HoroscopeInterface_getSunSignTraitResponse">

<part name="result" type="xsd:string"/></message>

<portType name="HoroscopeInterface">

<operation name="getSunSignTrait" parameterOrder="int_1">

<input message="tns:HoroscopeInterface_getSunSignTrait"/>

<output

message="tns:HoroscopeInterface_getSunSignTraitResponse"/></operation>

</portType>

<binding name="HoroscopeInterfaceBinding"

type="tns:HoroscopeInterface">

<soap:binding transport="http://schemas.xmlsoap.org/soap/http"

style="rpc"/>

<operation name="getSunSignTrait">

<soap:operation soapAction=""/>

<input>

<soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

use="encoded" namespace="urn:Foo"/></input>

<output> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

use="encoded" namespace="urn:Foo"/></output></operation></binding>

<service name="HoroscopeWebService">

<port name="HoroscopeInterfacePort"

binding="tns:HoroscopeInterfaceBinding">

Page 173: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum WSDL 167 PAGE 10

<soap:address

location="REPLACE_WITH_ACTUAL_URL"/></port></service></definition

s>

Selain file WSDL juga dihasilkan file mapping.xml sebagai berikut:

<?xml version="1.0" encoding="UTF-8"?>

<java-wsdl-mapping xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.1"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

http://www.ibm.com/webservices/xsd/j2ee_jaxrpc_mapping_1_1.xsd">

<package-mapping>

<package-type>horoscope</package-type>

<namespaceURI>urn:Foo</namespaceURI>

</package-mapping>

<package-mapping>

<package-type>horoscope</package-type>

<namespaceURI>urn:Foo</namespaceURI>

</package-mapping>

<service-interface-mapping>

<service-interface>horoscope.HoroscopeWebService</service-interface>

<wsdl-service-name

xmlns:serviceNS="urn:Foo">serviceNS:HoroscopeWebService</wsdl-

service-name>

<port-mapping>

<port-name>HoroscopeInterfacePort</port-name>

<java-port-name>HoroscopeInterfacePort</java-port-name>

</port-mapping>

</service-interface-mapping>

<service-endpoint-interface-mapping>

<service-endpoint-interface>horoscope.HoroscopeInterface</service-

endpoint-interface>

<wsdl-port-type

xmlns:portTypeNS="urn:Foo">portTypeNS:HoroscopeInterface</wsdl-port-

type> <wsdl-binding

xmlns:bindingNS="urn:Foo">bindingNS:HoroscopeInterfaceBinding</wsdl-

binding>

<service-endpoint-method-mapping>

<java-method-name>getSunSignTrait</java-method-name>

<wsdl-operation>getSunSignTrait</wsdl-operation>

Page 174: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

168 Praktikum WSDL PAGE 10

<method-param-parts-mapping>

<param-position>0</param-position>

<param-type>int</param-type>

<wsdl-message-mapping>

<wsdl-message

xmlns:wsdlMsgNS="urn:Foo">wsdlMsgNS:HoroscopeInterface_getSunSignTr

ait</wsdl-message>

<wsdl-message-part-name>int_1</wsdl-message-part-name>

<parameter-mode>IN</parameter-mode>

</wsdl-message-mapping>

</method-param-parts-mapping>

<wsdl-return-value-mapping>

<method-return-value>java.lang.String</method-return-value>

<wsdl-message

xmlns:wsdlMsgNS="urn:Foo">wsdlMsgNS:HoroscopeInterface_getSunSignTr

aitResponse</wsdl-message>

<wsdl-message-part-name>result</wsdl-message-part-name>

</wsdl-return-value-mapping>

</service-endpoint-method-mapping>

</service-endpoint-interface-mapping>

</java-wsdl-mapping>

Page 175: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum Web Service 1 169 PAGE 10

15 PRAKTIKUM WEB SERVICE(1)

Overview

Bab ini akan membahas implementasi Web Service di Apache AXIS di Apache

Tomcat.

Tujuan

Mengimplementasikan Web Service di Apache AXIS di server Apache

Tomcat

Page 176: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

170 Praktikum Web Service 1 PAGE 10

15.1 Persiapan

Pemrograman Web Services itu mudah, dengan menggunakan Web

Service Toolkit. XML, SOAP, HTTP seluruhnya disembunyikan dari

programmer.

Web Server menangani komunikasi HTTP. Web Service Toolkit

menangani pemrosesan SOAP/XML :

- secara otomatis membuat WSDL untuk web service (dari class Java),

- mengkonversikan SOAP request menjadi subroutine call (yaitu pemanggilan

method Java),

- mengkonversikan output dari subroutine ke SOAP response.

Gambar 12.1 Web Service Toolkit memudahkan pekerjaan

Web Server (e.g. Apache Tomcat)

Web Service Toolkit (e.g. Apache Axis)

Web Service Code (e.g. Java)

Page 177: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum Web Service 1 171 PAGE 10

Apache AXIS adalah SOAP engine open source, merupakan

framework untuk membuat processor SOAP client dan server. Implementasi

server dipasang ke servlet engines (dapat dipasang dalam framework Web

server tradisional). Apache AXIS memebuat WSDL untuk setiap Web service

yang di-deploy.

Untuk menjalankan Axis, perlu di-install:

- Apache Tomcat (version 4.1.x), dari http://jakarta.apache.org/tomcat/

- Java, dari http://java.sun.com/

- Apache Axis, dari http://ws.apache.org/axis/.

Jika install Tomcat sukses, Tomcat dapat dipanggil dari Mozilla dengan

http://localhost:8080/ dan diperoleh tampilan berikut:

Page 178: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

172 Praktikum Web Service 1 PAGE 10

Jika install axis sukses, maka dapat dipanggil dari Mozilla dengan

http://localhost:8080/axis/ akan diperoleh tampilan berikut:

15.2 Kode Web Service dengan Java

Buat file Calculator.java berikut:

public class Calculator {

public int add(int i1, int i2)

{ return i1 + i2; }

public int subtract(int i1, int i2)

{ return i1 - i2; }

}

Page 179: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum Web Service 1 173 PAGE 10

15.3 Install Web Service di Web Server

a. Cara Instan.

- ganti file .java menjadi file .jws (java web service)

- copy file.jws file ke direktori webapp

- Jadi!!

Axis menangani kompilasi, pembuatan WSDL dsb.

b. Cara Custom

- Kompilasi code dan kopi ke web server - Buat Web Service Deployment Descriptor (WSDD), XML yang

menggambarkan service yang di-deploi, yaitu deploy.wsdd

<deployment xmlns="http://xml.apache.org/axis/wsdd/"

xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

<service name="Calculator" provider="java:RPC">

<parameter name="className" value="Calculator"/>

<parameter name="allowedMethods" value="*"/>

</service>

</deployment>

– panggil client admin AXIS dengan file WSDD file, yaitu:

java org.apache.axis.client.AdminClient deploy.wsdd

15.4 Memanggil Web Service

Tahap 1: Dapatkan WSDL

Umumnya di URL web service + ?wsdl

misalnya http://<host>/axis/services/Calculator?wsdl

Gunakan UDDI untuk menemukan lokasi WSDL

Page 180: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

174 Praktikum Web Service 1 PAGE 10

Tahap 2: Buat stubs

Gunakan WSDL2Java untuk membuat client stubs/bindings

java org.apache.axis.wsdl.WSDL2Java Calculator.wsdl membuat:

- Calculator.java (interface)

- CalculatorService.java (service interface)

- CalculatorServiceLocator.java

(service factory, implements CalculatorService.java)

- CalculatorServiceSoapBindingStub.java

(stub for invoking service using SOAP, implements Calculator.java)

File CalculatorService.java berisi :

public interface CalculatorService extends Service {

public String getCalculatorAddress();

public Calculator getCalculator() throws ServiceException;

public Calculator getCalculator(URL portAddress) throws

ServiceException;

}

File Calculator.java

public interface Calculator extends Remote {

public int add(int i1, int i2) throws RemoteException;

public int subtract(int i1, int i2) throws RemoteException;

}

Tahap 3: Tulis kode client

import Calculator.*;

public class CalcClient {

public static void main(String[] args) {

Page 181: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum Web Service 1 175 PAGE 10

try {

CalculatorService service = new CalculatorServiceLocator();

Calculator calulator = service.getCalculator();

int res = calculator.add(10, 5);

System.out.println("Result=" + res);

} catch(Exception except) {

except.printStackTrace();

}

}

}

Jika kode client adalah Java, maka situasi pengaksesan digambarkan sebagai

berikut:

Web Server (e.g. Apache Tomcat)

Web Service Toolkit (e.g. Apache Axis)

Client (e.g. CalcClient.java)

SOAP Binding

SOAP Request

Web Service Code (e.g. Calculator.java)

Java to SOAP

Java

Java SOAP to Java

Page 182: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

176 Praktikum Web Service 1 PAGE 10

Pesan SOAP dan data yang dikirimkan adalah:

Dan jawabannya adalah:

Web Server (e.g. Apache Tomcat)

Web Service Toolkit (e.g. Apache Axis)

Client

SOAP Binding

SOAP Response

Web Service Code

SOAP to Java

Java

Java Java to SOAP

Web Server (e.g. Apache Tomcat)

Web Service Toolkit (e.g. Apache Axis)

Client (e.g. CalcClient.java)

SOAP Binding

SOAP Request

Web Service Code (e.g. Calculator.java)

Java to SOAP

Java

Java SOAP to Java

<soap:Envelope

<soap:Body>

<add>

<i1>10</i1>

<i2>5</i2>

</add>

</soap:Body>

</soap:Envelope>

calculator.add(10, 5)

add(10, 5)

Page 183: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum Web Service 1 177 PAGE 10

Rangkuman

1. Pemrograman Web Services itu mudah!

2. Web Service Toolkits (yaitu Apache Axis) melindungi programmer dari

XML, SOAP, WSDL dsb.

3. Pembuatan WSDL otomatis 4. Pembuatan client stub otomatis

Latihan

1. Buatkan web service untuk mengkonversikan suhu Fahrenheit ke

Celcius dan sebaliknya di Apache AXIS.

2. Buatkan web service untuk mencari Keliling dan Luas Lingkaran di

Apache AXIS.

Page 184: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

178 Praktikum Web Service 2 PAGE 10

16 PRAKTIKUM WEB-SERVICE (2)

Overview

Apache AXIS adalah software open source. Tidak ada yang menjamin source

code-nya jalan. Kesulitan biasanya dialami justru pada instalasi APACHE AXIS

di Web Server. Bab ini memberikan alternatif lain implementasi Web Service

di ASP.NET.

Tujuan

Mengenalkan pembuatan Web Service di ASP.NET

Page 185: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum Web Service 2 179 PAGE 10

16.1 Web Service di ASP.NET

Beragam aplikasi dapat memiliki komponen Web Service. Web Service dapat

dibuat dalam bahasa apapun.

16.2 Contoh

Pada contoh berikut digunakan ASP.NET untuk membuat Web Service

sederhana yang mengkonversikan suhu Fahrenheit ke Celsius, dan sebaliknya:

<%@ WebService Language="VBScript"

Class="TempConvert" %>

Imports System

Imports System.Web.Services

Public Class TempConvert :Inherits WebService

<WebMethod()> Public Function FahrenheitToCelsius

(ByVal Fahrenheit As String) As String

dim fahr

fahr=trim(replace(Fahrenheit,",","."))

if fahr="" or IsNumeric(fahr)=false then return

"Error"

return ((((fahr) - 32) / 9) * 5)

end function

<WebMethod()> Public Function CelsiusToFahrenheit

(ByVal Celsius As String) As String

dim cel

cel=trim(replace(Celsius,",","."))

if cel="" or IsNumeric(cel)=false then return

"Error"

return ((((cel) * 9) / 5) + 32)

end function

end class

Dokumen ini disimpan sebagai file .asmx. Ini adalah esktensi file ASP.NET

untuk Web Service XML.

Page 186: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

180 Praktikum Web Service 2 PAGE 10

16.3 Penjelasan

Untuk menjalankan contoh di atas, diperlukan server .NET. Baris pertama

dalam contoh menyatakan bahwa ini adalah Web Service, ditulis dalam

VBScript, dan punya nama class "TempConvert":

<%@ WebService Language="VBScript"

Class="TempConvert" %>

Baris berikutnya meng-import namespace "System.Web.Services" dari .NET

framework:

Imports System

Imports System.Web.Services

Baris berikutnya mendefinisikan class "TempConvert" adalah tipe class

WebService:

Public Class TempConvert :Inherits WebService

Tahap berikutnya adalah pemrograman dasar VB. Aplikasi ini memiliki dua

fungsi. Yang satu mengkonversikan dari Fahrenheit ke Celcius, dan satunya

sebaliknya.

Perbedaan utama dari aplikasi biasa adalah pada fungsi yang didefinisikan

sebagai "WebMethod()". Gunakan "WebMethod()" untuk mengkonversikan

aplikasi menjadi web service:

<WebMethod()> Public Function FahrenheitToCelsius

(ByVal Fahrenheit As String) As String

dim fahr

fahr=trim(replace(Fahrenheit,",","."))

if fahr="" or IsNumeric(fahr)=false then return

"Error"

return ((((fahr) - 32) / 9) * 5)

Page 187: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Praktikum Web Service 2 181 PAGE 10

end function

<WebMethod()> Public Function CelsiusToFahrenheit

(ByVal Celsius As String) As String

dim cel

cel=trim(replace(Celsius,",","."))

if cel="" or IsNumeric(cel)=false then return

"Error"

return ((((cel) * 9) / 5) + 32)

end function

Dan terakhir adalah akhir class:

end class

Publikasikan file .asmx pada server dengan dukungan .NET, dan hasilnya sudah

dapat dilihat.

16.4 ASP.NET mengotomatisasikan proses

Dengan ASP.NET, dokumen WSDL and SOAP tidak perlu dibuat manual.

ASP.NET otomatis membuat rquest WSDL dan SOAP.

Page 188: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

182 Praktikum Web Service 2 PAGE 10

Rangkuman

1. Alternatif selain Java untuk membuat web service adalah ASP.NET

2. ASP.NET membuat otomatis WSDL dan SOAP.

Latihan

1. Lihat dokumen WSDL dan SOAP yang disediakan ASP.NET,

benarkah dalam bentuk XML?

2. Buatkan web service untuk mencari Keliling dan Luas Lingkaran di

ASP.NET.

Page 189: Praktikum XML

Politeknik Telkom Praktikum Pemrograman XML

Daftar Pustaka

1. Ian Wang, “Deploying Web Service”, users.cs.cf.ac.uk/

I.N.Wang/teaching/lecture a Deploying Web Services.ppt, Maret

2009

2. NIIT, XML Courseware, “02-Querying XML Documents”, NIIT

Publishing, 2004

3. www.w3schools.com, Web Services Tutorial, Maret 2009

4. www.w3schools.com, WSDL Tutorial, Maret 2009

5. www.w3schools.com, SOAP Tutorial, Maret 2009

6. www.w3schools.com, UDDI Tutorial, Maret 2009

7. http://jakarta.apache.org/tomcat , Apache Tomcat (version 4.1.x)

8. http://java.sun.com , java

9. http:/ws.apache.org/axis/, Apache AXIS