xml dan web & web services

180
Politeknik Telkom XML dan Web Service i XML dan WEB SERVICES POLITEKNIK TELKOM BANDUNG 2009

Upload: hendi-santika

Post on 05-Dec-2014

281 views

Category:

Documents


8 download

DESCRIPTION

XML Dan Web & Web Services

TRANSCRIPT

Page 1: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

i PAGE 10

XML dan WEB SERVICES

POLITEKNIK TELKOM

BANDUNG 2009

Page 2: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

ii PAGE 10

Penyusun

HENDRA KUSMAYADI

EKO DARWIYANTO

Editor

AGUS PRATONDO

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: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

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, Maret 2009

Christanto Triwibisono Wakil Direktur I

Bidang Akademik & Pengembangan

Page 4: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

iv PAGE 10

DAFTAR ISI

KATA PENGANTAR ............................. Error! Bookmark not defined. DAFTAR ISI .................................................................................... iv 1 Pengenalan XML ................................................................... 1 1.1 Keuntungan XML ........................................................................................... 2 1.2 Portable Data .................................................................................................... 3 1.3 Bagaimana XML Bekerja ............................................................................... 3 1.4 Evolusi dari XML ............................................................................................ 5 2 XML Fundamentals ................................................................. 9 2.1 Dokumen XML dan File XML ................................................................... 10 2.2 Elemen, Tag, dan Data karakter ............................................................... 10 2.3 Atribut ............................................................................................................ 13 2.4 XML Name ..................................................................................................... 14 2.5 Entity References ............................................................................................ 15 2.6 CDATA Sections .............................................................................................. 16 2.7 Komentar ....................................................................................................... 16 2.8 Processing Instruction ..................................................................................... 17 2.9 Deklarasi XML .............................................................................................. 19 2.10 Checking Documents for Well-Formedness ................................................. 20 3 Document Type Definitions (DTDs) ......................................22 3.1 Validation ......................................................................................................... 23 3.2 Element Declarations ..................................................................................... 25 3.3 Deklarasi Atribut.......................................................................................... 28 3.4 General Entity Declarations ........................................................................... 30 3.5 External Parsed General Entities ................................................................... 30 3.6 External Unparsed Entities and Notations................................................... 31 3.7 Parameter Entities .......................................................................................... 32 3.8 Conditional Inclusion....................................................................................... 34 3.9 Dua contoh DTD......................................................................................... 34 3.10 Menempatkan Standar DTD ...................................................................... 34 4 Namespaces ...........................................................................36 4.1 The Need for Namespaces ........................................................................... 37 4.2 Sintaks Namespace ........................................................................................ 37 4.3 How Parsers Handle Namespaces ............................................................... 40 4.4 Namespaces dan DTD ................................................................................. 41 5 XML pada Web.....................................................................44 5.1 XHTML .......................................................................................................... 45

Page 5: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

v PAGE 10

5.2 Direct Display of XML in Browsers ........................................................ 46 5.3 Authoring Compound Documents with Modular XHTML ......................... 49 5.4 Prospects for Improved Web-Search Methods ............................................ 49 6 XSL Transformations (XSLT) ..................................................52 6.1 An Example Input Document ........................................................................ 53 6.2 xsl:stylesheet dan xsl:transform ..................................................................... 53 6.3 Stylesheet Processors ...................................................................................... 54 6.4 Templates and Template Rules .................................................................... 55 6.5 Calculating the Value of an Element with xsl:value-of ................................ 56 6.6 Applying Templates with xsl:apply-templates .............................................. 56 6.7 The Built-in Template Rules .......................................................................... 57 6.8 Modes .............................................................................................................. 58 6.9 Attribute Value Templates ............................................................................. 58 6.10 XSLT and Namespaces ............................................................................... 59 6.11 Other XSLT Elements .................................................................................... 59 7 XPath ....................................................................................61 7.1 The Tree Structure of an XML Document .................................................. 62 7.2 Location Paths ................................................................................................. 62 7.3 Compound Location Paths ............................................................................. 65 7.4 Predicates ........................................................................................................ 66 7.5 Unabbreviated Location Paths ....................................................................... 67 7.6 General XPath Expressions ........................................................................... 68 7.7 XPath Functions .............................................................................................. 69 8 XLinks ...................................................................................72 8.1 Simple Links .................................................................................................... 73 8.2 Link Behavior................................................................................................... 73 8.3 Link Semantics ................................................................................................ 74 8.4 Extended Links ................................................................................................ 75 8.5 Linkbases ......................................................................................................... 77 8.6 DTD untuk XLink ........................................................................................ 77 9 XPointer................................................................................79 9.1 XPointers pada URL .................................................................................... 80 9.2 XPointers pada Link .................................................................................... 81 9.3 Bare Names .................................................................................................... 82 9.4 Child Sequences .............................................................................................. 82 9.5 Namespaces ................................................................................................... 82 9.6 Points ............................................................................................................... 83 9.7 Ranges ............................................................................................................. 84 10 XML Schemas .......................................................................86 10.1 Overview ....................................................................................................... 87

Page 6: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

vi PAGE 10

10.2 Skema Dasar ................................................................................................. 87 10.3 bekerja dengan Namespace ....................................................................... 89 10.4 Complex Types ............................................................................................... 90 10.5 Empty Elements .............................................................................................. 91 10.6 Simple Content ............................................................................................... 91 10.7 Mixed Content ................................................................................................ 92 10.8 Allowing Any Content ..................................................................................... 92 10.9 Controlling Type Derivation ........................................................................... 93 11 DOCUMENT OBJECT MODEL ..............................................97 11.1 Pengantar .......................................................................................................... 98 11.2 Implementasi dalam MSXML Parser .......................................................... 98 11.3 DOM Objects ............................................................................................... 100 12 SIMPLE API FOR XML (SAX) ...........................................112 12.1 Pengantar SAX API ...................................................................................... 113 12.2 Perbandingan SAX dan DOM .................................................................... 113 12.3 Implementasi SAX ........................................................................................ 114 12.4 Parser SAX ..................................................................................................... 115 12.5 SAX API ........................................................................................................ 115 12.5.1 Interface ContentHandler....................................................................... 116 12.5.2 Interface ErrorHandler ............................................................................ 116 12.5.3 Interface DTDHandler............................................................................. 116 12.5.4 Interface EntityResolver ......................................................................... 116 12.6 Parsing Dokumen XML ............................................................................... 116 13 Web Service Description Language .......................................126 13.1 Pengantar Web Service ........................................................................... 127 13.2 Arsitektur Web Sevice ............................................................................ 127 13.3 WSDL .......................................................................................................... 129 13.4 The WSDL Document Structure ................................................................ 129 13.5 The Full WSDL Syntax ............................................................133 14 SIMPLE OBJECT ACCESS PROTOCOL .............................139 14.1 Pengantar SOAP ........................................................................................ 140 14.2 SOAP Syntax ............................................................................................... 140 http://www.w3.org/2001/12/soap-encoding .................................................... 141 Gambar 10.1 berikut menggambarkan keterkaitan antar elemen. Gambar

10.2 mengambarkan tag-tagnya. ............................................................. 141 Gambar 10.1 SOAP Message .............................................................................. 141 14.3 Contoh SOAP ............................................................................................ 142 14.4 Elemen “Fault“ ........................................................................................... 143 Kode berikut menunjukkan contoh pesan SOAP yang berisi error. ......... 144 <Body xmlns=http://www.w3.org/2001/12/soap-envelope>....................... 144

Page 7: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

vii PAGE 10

<Fault> 144 <faultcode>Client</faultcode> .......................................................................... 144 <faultstring>Something went wrong</faultstring> ........................................ 144 <detail>Application specific error information</detail> ............................. 144 </Fault> 144 </Body> 144 14.5 Memproses SOAP Message .................................................................... 144 14.6 SOAP Toolkit 3.0 ...................................................................................... 145 15. UNIVERSAL DESCRIPTION, DISCOVERY AND INTEGRATION

(UDDI) ................................................................................150 15.1 Pengantar .................................................................................................... 151 UDDI, singkatan dari Universal Description, Discovery and Integration

(UDDI) Protocol, adalah standar berbasis XML untuk

menggambarkan, mempublikasikan dan menemukan Web service.

UDDI merupakan insisiatif industri terbuka, oleh Microsoft, IBM,

Ariba, dan sebagainya, yang memungkinkan pelaku bisnis saling

menemukan satu dengan yang lain dan mendefinisikan bagaimana

mereka berinteraksi melalui internet. .................................................. 151 15.2 Tiga tipe informasi UDDI ........................................................................ 151 15.3 Arsitektur Teknik...................................................................................... 152 15.4 Entitas bisnis ............................................................................................... 153 15.5 Business Service .............................................................................................. 154 15.6 Binding Template......................................................................................... 154 15.7 tModel ......................................................................................................... 155 15.8 Publisher Assertion ....................................................................................... 156 15.9 UDDI Query ................................................................................................ 157 16 IMPLEMENTASI WEB SERVICE ........................................161 16.1 Pengantar ....................................................................................................... 162 16.2 Contoh Di Apache AXIS ......................................................................... 163 16.2.1 Kode Web Service dengan Java ............................................................. 163 16.2.2 Install Web Service di Web Server....................................................... 164 a. Cara Instan. ........................................................................................................ 164 - ganti file .java menjadi file .jws (java web service)..................................... 164 - copy file.jws file ke direktori webapp ............................................................ 164 - Jadi!! 164 Axis menangani kompilasi, pembuatan WSDL dsb. ....................................... 164

Page 8: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

viii PAGE 10

b. Cara Custom ..................................................................................................... 164 Tahap 2: Buat stubs............................................................................................... 165 Gunakan WSDL2Java untuk membuat client stubs/bindings ....................... 165 java org.apache.axis.wsdl.WSDL2Java Calculator.wsdl membuat: ............. 165 - Calculator.java (interface) ................................................................................. 165 - CalculatorService.java (service interface) ..................................................... 165 - CalculatorServiceLocator.java ......................................................................... 165 (service factory, implements CalculatorService.java) .................................... 165 - CalculatorServiceSoapBindingStub.java ......................................................... 165 (stub for invoking service using SOAP, implements Calculator.java) ........ 165 DAFTAR PUSTAKA ....................................................................172

Page 9: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Pengenalan XML 1 PAGE 10

1 Pengenalan XML

Overview

XML kependekan dari eXtensible Markup Language, merupakan sebuah standar W3C-endorsed untuk Markup language yang dikembangkan mulai tahun 1996 dan baru mendapatkan pengakuan dari W3C pada bulan Februari 1998. Markup language itu sendiri merupakan suatu bahasa pemprograman untuk menandai suatu dokumen yang disebut dengan tag

agar dokumen tersebut lebih mudah dibaca, dipahami serta menarik.

Pada awalnya markup language digunakan oleh para penulis, editor, dan awak

percetakan dalam dunia penerbitan, untuk menandai bagaimana sebuah

naskah dipresentasikan. Editor menandai bagian-bagian naskah yang perlu

diperbaiki oleh penulis dengan tanda-tanda khusus. Editor juga melakukan hal

yang sama pada naskah yang akan di-layout oleh desainer (dahulunya

merupakan bagian dari awak percetakan), bagian mana yang dicetak miring,

tebal, dan lain-lain. Dengan kata lain, markup languange adalah gabungan

antara naskah dengan informasi tambahan tentang naskah itu sendiri.

Tujuan

1. Mahasiswa dapat memahami struktur dokumen XML

2. Mahasiswa dapat memahami penggunaan data dengan XML

3. Mahasiswa dapat membedakan antara data dokumen XML dengan

database server

Page 10: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

2 PAGE 10

1.1 Keuntungan XML

Teknologi yang digunakan pada XML sebenarnya turunan dari SGML yang

telah dikembangkan pada awal 80-an. Ketika HTML dikembangkan pada tahun 1990, para penggagas XML mengadopsi bagian paling penting pada SGML dan dengan berpedoman pada pengembangan HTML menghasilkan markup language yang tidak kalah hebatnya dengan SGML.

XML didesain sebagai solusi interoperabilitas antar aplikasi pada platform yang

berbeda. Misalnya aplikasi A berjalan di atas platform Java, ingin berbagi

informasi dengan apliksi yang berjalan di atas platform .NET. aplikasi A akan

membaca request dari apliksi B, kemudian menyediakan informasi yang

dibutuhkan oleh apliksi B dalam format XML. Atau bisa jadi apliksi A

menyediakan informasi yang sudah dikemas dalam format XML, yang dapat

dimanfaatkan oleh aplikasi B, C, D, dan seterusnya.

XML merupakan suatu metamarkup language yang digunakan untuk dokumen

text dimana data yang dimasukan kedalam dokumen XML harus berbentuk

string text. Seperti halnya HTML, data ini diapit oleh text markup yang

menjelaskan maksud dari data tersebut. Text markup pembuka diawali dengan

„<‟ dan diakhiri dengan „>‟, sedangkan markup penutup diawali dengan „</ „

dan diakhiri „>‟. Data tersebut dinamai dengan elemen.

Untuk mengakses informasi dalam format XML dapat menggunakan tools web

service. Contoh yang paling sederhana dari interoperablitas menggunakan

XML ini adalah RSS feed dan aggregator. RSS feed merupakan informasi yang

disediakan oleh sebuah website baik blog ataupun situs yang dikemas dalam

format XML. Sedangkan aggregator adalah yang mengambil informasi tersebut

adalah aplikasi desktop.

Adapun keuntungan menggunakan XML adalah :

1. Extensibilitas

Kita dapat menentukan tag-tag apasaja yang akan kita gunakan tanpa ada

batasan.

2. Memisahkan data dengan presentasi

Sebuah data dapat hanya berisi data saja tanpa ada informasi lain

bagaimana cara menampilkannya. Karena dokumen XML menjelaskan isi

datanya sendiri

Page 11: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Pengenalan XML 3 PAGE 10

3. Fungsi search lebih cepat

Informasi yang tersimpan akan lebih mudah ditemukan meskipun

berbeda platform.

4. Dapat ditukar atau digabung dengan dokumen lain

Dengan memisahkan isi data dengan presentasi, maka akan

mempemudah penggabungan data dari berbagaimacam sumber.

5. Penyederhanaan aplikasi

Untuk mengakses data menjadi lebih sederhana, client tidak perlu

memerlukan lisensi atau hak akses terhadap data

1.2 Portable Data

XML memungkinkan penggunaan data secara cross-platform, long-term data

format. Dengan demikian, dokumen yang kita buat melalui suatu platform

dapat digunakan diplatform lain bahkan dengan program yang berbeda.

XML sangat mudah, well-documented, format data terbuka. Dokumen XML

adalah text yang dapat dibaca dengan tools apapun yang dapat membaca data

text. Tidak hanya data, tapi text markup juga, dan ini dipresentasikan didalam

file XML sebagai tag. Untuk mencari dokumen yang sesuai, dapat dilakukan

dengan cara membaca tag name secara langsung, karena setiap elemen

dibatasi langsung dengan tag, sehingga kita dapat mengabaikan tag-tag yang

tidak ada hubungannya dengan pencarian hingga sampai pada akhir baris.

1.3 Bagaimana XML Bekerja

Seperti yang dijelaskan di atas, XML merupakan markup language. Namun,

berbeda dengan HTML yang memerintahkan web browser bagaimana

menampilkan informasi, XML hanya menandai informasi secara terstruktur

sehingga memudahkan aplikasi lain untuke menggunakannya 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.

Perhatikan contoh dibawah ini :

<?xml version="1.0"?>

<product barcode="2394287410">

<manufacturer>Verbatim</manufacturer>

<name>DataLife MF 2HD</name>

<quantity>10</quantity>

Page 12: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

4 PAGE 10

<size>3.5"</size>

<color>black</color>

<description>floppy disks</description>

</product>

Dokumen diatas merupakan text yang akan disimpan menjadi sebuah file

dengan extensi *.xml. Kita dapat mengubah file tersebut dengan berbagai

macam aplikasi text editor, seperti notepad, BBEdit, jEdit, UltraEdit, Emacs,

atau vi. Kita tidak perlu menggunakan editor XML secara khusus. Tetapi jika

kita ingin menggunakan editor XML secara khusus dimana proses editor akan

lebih mudah dan mengandung auto correct, kita dapat menggunakan

NetBeans IDE 6.x, Dreamweaver atau XML editor lainnya yang dapat

didownload disitus tertentu.

Program yang sebenarnya mencoba untuk memahami isi (conten) dari

dokumen XML dengan menggunakan XML parser untuk membaca dokumen

tersebut. Parser berfungsi membagi dokumen kedalam elemen, atribut, dan

bagian yang lain yang lebih kecil. Hasil parser dari dokumen XML ini

digunakan ke aplikasi secara bagian per bagian. Jika setiap pointer pada hasil

perser terdapat pelanggaran sintaks terhadap well-formedness rule dari XML,

maka parser akan mengirim pesan error keaplikasi dan aplikasi akan

menghentikan parsing. Pada beberapa kasus, parser mungkin akan

melanjutkannya pada sebuah dokumen, melewatkan original error, sehingga ini

dapat diketahui dan respon error lain yang akan terjadi didalam dokumen.

Aplikasi yang menerima data dari parser seperti :

1. Web browser seperti Netscape Navigator atau Internet Explorer yang

menampilkan document untuk dibaca

2. Word processor seperi StarOffice Writer yang yang memuat dokumen

XML untuk diubah

3. Database seperti Microsoft SQL Server yang menyimpan data XML

dalam record yang baru

4. Drawing program seperti Adobe Illustrator yang menginterpretasikan

XML sebagai koordinat dua dimensi untuk kontent dari sebuah gambar.

5. Spreadsheet seperti Gnumeric yang mem-parser XML untuk mencari

number dan fungsi yang digunakan pada kalkulator

6. Personal finance program seperti Microsoft Money yang membaca XML

sebagai bank statemen.

7. Syndication program yang membaca dokumen XML dan meng-extrak

headline untuk today's news

Page 13: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Pengenalan XML 5 PAGE 10

8. Program yang ditulis dengan Java, C, Python atau bahasa pemprograman

lain yang menggunakannya sesuai dengan keinginan pembuat program.

Pebedaan XML dengan yang lain adalah format yang fleksibel untuk data.

Dalam teori, semua data yang disimpan dikomputer dapat dijadikan XML

format. Pada kenyataannya XML hanya cocok untuk menyimpan dan

penukaran semua data yang dapat di-encode sebagai text. XML tidak cocok

untuk data multimedia seperti photographs, recorded sound, video, dan lain-

lain yang sangat besar bit sequence-nya.

1.4 Evolusi dari XML

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.

SGML bertujuan untuk mengatasi banyak dari beberapa masalah pemecahan

XML. Ini merupakan SGML semantik dan structural markup language untuk

dokumen text. SGML sangat powerful dan telah berhasil digunakan dalam

U.S. military dan pemerintahan, sektor penerbangan, dan bidang yang lainnya

yang membutuhkan pemecahan mengatur dokumen secara efisien yang

banyaknya puluhan hingga ratusan halaman.

Pada tahun 1996, Jon Bosak, Tim Bray, C. M. Sperberg-McQueen, James

Clark, dan dan beberapa yang lain mengawali "lite" version SGML yang

mengadopsi sebagian besar kemampuan SGML pada February 1998, XML 1.0,

telah dibesut dan ini akan segera mencapai kesuksesannya.

Selanjutnya XML telah menerapkan standar Namespaces, ini merupakan

sebuah usaha mengijinkan markup dari aplikasi XML yang berbeda untuk

digunakan pada dokumen yang sama tanpa ada konfig. Selanjutnya XML

menerapkan Extensible Stylesheet Language (XSL), yang merupakan sebuah

aplikasi XML untuk men-transform XML dokumen menjadi form dapat dilihat

pada web browser. Selanjutnya dibagi menjadi XSL Transformations (XSLT)

and XSL Formatting Objects (XSL-FO). XSLT telah menjadi general-purpose

language untuk transformasi suatu dokumen XML kedokumen yang lain, baik

untuk menampilkan halaman web maupun yang lain. XSL-FO adalah aplikasi

XML untuk mendeskripsikan susunan kedua print pages dan web pages.

Page 14: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

6 PAGE 10

Meski demikian, XSL tidak hanya dipilih untuk styling dokumen XML.

Cascading Style Sheets (CSS) language telah siap digunakan pada dokumen

HTML ketika XML telah menemukannya, dan itu dikembangkan untuk

menjadi layak untuk XML menjadi lebih baik. Dengan munculnya CSS Level 2,

W3C membuat styling dokumen XML eksplisit degan tujuan untuk CSS dan

menjadikannya sama pentingnya untuk HTML. Dokumen pre-existing Style

Sheet dan Semantics Language (DSSSL) telah diadopsi dari root CSS didalam

SGML world untuk style dokumen XML untuk print dan Web.

Extensible Linking Language (XLink), diawali dengan definisi struktur powerful

linking yang dapat terhubung dengan dokumen XML didalam hypertext

network yang membuat seperti tag A HTML.

Development of extensions to the core XML specification continues. Future

directions include :

1. XML Query Language

Bahasa generasi keempat untuk mengurai informasi yang cocok untuk

menspesifikasikan kriteriadari suatu atau dokumen XML lainnya

2. Canonical XML

Algoritma standar untuk menentukan apakan dua dokumen XML sama

setelah insignificant details, apakah single atau double quotes nilai atribut

delimiter.

3. XInclude

Yang berarti membangun single dokumen XML diluar multiple well-

formed, potensial valid XML documents dan bagian tersebut.

4. XML Signatures

Standar untuk penanda digital dokumen XML, dan menamamkan

penanda tersebut pada dokumen XML, dan autentifikasi dokumen hasil.

5. XML Encryption

Sebuah standard sintaks XML untuk encrypted konten secara digital,

memuat bagian dari dokumen XML.

6. SAX 2.1

satu set small extensions untuk SAX2 yang menyediakan extra informasi

tentang sebuah dokumen XML yang direkomendasikan oleh Infoset,

yang memuat deklarasi XML.

7. DOM Level 3

Bsnysk class tambahan, interface, dan method yang dibangun diatas

DOM2 untuk menyediakan skema pendukung, arti standar dari mengambil dan menyimpan dokumen XML, dan banyak tambahan

lainnya untuk menambah kemampuan.

Page 15: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Pengenalan XML 7 PAGE 10

8. XFragment

Usaha untuk menjelaskan bagian diluar dokumen XML yang mungkin

dokumen tersebut tidak well-formed.

Page 16: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

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

Page 17: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

XML Fundamental 9 PAGE 10

2 XML Fundamentals

Overview

Pada bab ini kita akan mencoba 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

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

emtity serta penggunaannya

Page 18: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

10 PAGE 10

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

Berikut adalah contoh penulisan dokumen XML sederhana, dokumen yang

well-formed XML sehingga XML parser dapat membaca dan memahaminya.

<person>

Alan Turing

</person>

Pada dokumen diatas, terlihat bahwa penulisan dokumen XML mengandung

informasi yang diapit oleh tag. Dalam standar penulisan yang paling umum, file

diatas akan disimpan dengan nama person.xml, atau 223.xml bahkan person.txt

sekalipun karena tidaklah mengutamakan nama filenya, tetapi isi dari

file/dokumen tersebut. Bahkan dokumen XML pun dapat disimpan tidak

didalam file. Kita dapat melakuka pencatatannya dengan menggunakan

database yang dapat dihasilkan dengan cepat menggunakan program CGI

untuk merespon perintah dari browser. Dokumen XML bahkan dapat

disimpan lebih dari satu file bahkan file tersebut berada pada server yang

berbeda lokasi, namun hal itu bukanlah untuk penanganan dokumen yang

sederhana seperti diatas. Hal tersebut dapat dilakukan jika dokumen yang

ditulis sangatlah kompleks.

2.2 Elemen, Tag, dan Data karakter

Pada contoh diatas, dokumen hanya mengandung satu elemen nama person.

Elemen tersebut diapit oleh tag awal <person> dan tag akhir </person>.

Semua yang berada pada tag awal dan tag akhir disebut elemen konten dan isi

dari elen tersebut adalah string. Misalnya pada contoh diatas, isi elemennya

adalah :

Alan Turing

spasi juga termasuk bagian dari elemen konten, meskipun pada kebanyakan

aplikasi mengabaikan hail ini. <person> dan </person> adalah markup,

Page 19: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

XML Fundamental 11 PAGE 10

sedangkan “Alan Turing” dan spasi disekitanya adalah elemen konten. Tag adalah hal yang paling umum untuk markup didalam dokumen XML.

Sintaks Tag

Tag XML secara sekilas tampak sama dengan tg HTML. Awal tag diawali

dengan “<” sedangkan akhir tag diawali dengan “</” dan keduanya diakhiri

dengan “>” sedangkan diantaranya merupakan nama elemen. Namun tag XML tidaklah seperti tag HTML, kita diizinkan untuk membuat tag baru sesuai

dengan keinginan kita yang dapat mendeskripsikan elemen data. Misalnya

untuk menjelaskan elemen tersebut adalah seseorang, maka tag-nya

menggunakan <person></person>, untuk menjelaskan sebuah alamat

dapat menggunakan tag <address></address>. Meskipun kita dapat

memberikan nama tag secara bebas, namun pada umumnya nama tag tersebut

mencerminkan atau mendeskripsikan isi elemen konten sehingga akan

memudahkan kita dalam penulisan dokumen.

Elemen Kosong

untuk elemen kosong yaitu elemen yang tidak memiliki konten, XML juga

menyediakan tag khusus, dimana penulisannya dimulai dengan tag “<” dan

diakhiri dengan “/>”. misalnya pada HTML penulisan yang dilakukan adalah

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

Namun penulisan tersebut sama artinya dengan <br></br>, <hr></hr>,

<input></input>.

Case sensitif

Tidak seperti HTML, penulisan tag XML merupakan case sensitif. Penulisan

<Person> tidak sama dengan <PERSEON> dan tidak sama pula dengan

<person>. Jika kita membuka tag dengan <person>, maka kita harus

menutupnya dengan </person>. Jika kita menutupnya menggunakan

</Person> atau </PERSON> maka dokumen kita salah. Dalam penulisan tag kita bebas menggunak huruf besar atau huruf kecil atau keduanya asalkan

kita konsisten dengan apa yang kita gunakan.

Page 20: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

12 PAGE 10

Pohon XML

Mari kita coba memahami dokumen XML agak sedikit rumit. Pada contoh

berikut dimana elemen person memiliki informasi lain yang memiliki art

tersendiri :

<person>

<name>

<first_name>Alan</first_name>

<last_name>Turing</last_name>

</name>

<profession>computer scientist</profession>

<profession>mathematician</profession>

<profession>cryptographer</profession>

</person>

Parents and children

Pada contoh dokumen diatas elemen name tidah hanya memiliki karakter

data, tetapi elemen tersebut memiliki elemen lain. Dokumen tersebut

memiliki empat child yaitu name, dan tiga elemen profession. Elemen

name berisi dia elemen lagi yaitu first_name dan last_name.

Elemen person disebut parrent dari elemen name dan tiga elemen

profession. Elemen name merupakan parrent dari elemen first_name

dan elemen last_name. Sedangkan elemen first_name dan elemen

last_name merupakan child dari elemen name dan elemen name dan tiga

elemen profession merupakan child dari elemen person.

Elemen root

Elemen root merupakan suatu elemen yang tidak memiliki parrent dan elemen

ini merupakan elemen pertama. Pada contoh diatas, kita dapat

merepresentasikan dokumen tersebut menjadi diagram tree seperti pada

gambar dibawah ini.

Page 21: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

XML Fundamental 13 PAGE 10

Mixed Conten

Maksud Mixed Content 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>

2.3 Atribut

Dalam penulisan dokumen XML, elemen dapat juga memiliki atribut layaknya

HTML. Atribut merupakan pasangan name-value yang menempel pada elemen

tag awal. 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 22: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

14 PAGE 10

Berikut ini penulisan yang juga benar dimana nilainya diapit dengan tanda kutip

satu dan menempatkan beberapa spasi diantaranya.

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

Alan Turing

</person>

Berikut ini adalah contoh penempatan atribut dimana dokumen yang

ditempati adalah elemen kosong.

<person>

<name first="Alan" last="Turing"/>

<profession value="computer scientist"/>

<profession value="mathematician"/>

<profession value="cryptographer"/>

</person>

Sekarang yang menjadi pertanyaan kita kapa kita menggunakan atribut.

Jawabannya tidak jelas penggunaan penggunaannya, namun penggunaannya

tergantung pada dimana informasi tersebut akan disimpan.

2.4 XML Name

Spesifikasi XML dapat memungkinkan untuk disederhanakan yaitu dengan

cara menggunakan kembali rule untuk item yang berbeda jika memungkinkan.

Misalnya rule XML untuk elemen name dan juga rule XML untuk nama atribut

dan untuk beberapa nama lainnya.

Elemen dan XML name lainnya harus mengandung karakter alphanumeric. Ini

termasuk karakter a-z, A-Z, 0-9, _(under score), - (hypen).

XML name tidak boleh mengandung tanda baca selain karakter seperti tanda

kutip, apostrophes, tanda-tanda dolar, carets, simbol persen, dan semicolon.

Name XML tidak boleh juga mengandung spasi, carriage return, dan

sebagainya. Selain itu kita juga tidak boleh menggunakan kata xml diawal name

atau kombinasinya.

Page 23: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

XML Fundamental 15 PAGE 10

Berikut adalah contoh penulisan yang benar :

<Drivers_License_Number>98 NY 32

</Drivers_License_Number>

<month-day-year>7/23/2001</month-day-year>

<first_name>Alan</first_name>

<_4-lane>I-610</_4-lane>

<téléphone>011 33 91 55 27 55 27</téléphone>

Sedangkan berikut adalah contoh penulisan yang salah

<Driver's_License_Number>98 NY 32

</Driver's_License_Number>

<month/day/year>7/23/2001</month/day/year>

<first name>Alan</first name>

<4-lane>I-610</4-lane>

2.5 Entity References

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

“>”. lantas bagaimana jika kita inging menuliskan karakter tersebut. Jalan

keluarnya adalah kita dapat menggunakan entity reference &lt; atau &gt;.

Ketika parser membaca dokumen, ia akan mengganti katakter &lt; dengan

string yang sebenarnya. Contohnya :

<SCRIPT LANGUAGE="JavaScript">

if (location.host.toLowerCase().

indexOf("cafeconleche") &lt; 0) {

location.href="http://www.cafeconleche.org/";

}

</SCRIPT>

Didalam karakter tidak boleh mengandung ampersand (&), tetapi untuk

penulisan itu dapat menggunakan entity reference &amp;. Misalnya terlihat

pada contoh berikut.

<publisher>O'Reilly &amp; Associates</publisher>

Page 24: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

16 PAGE 10

2.6 CDATA Sections

Pada bahasan sebelumnya kita telah membahas apa yang namannya entity

references dimana jika kita akan menuliskan string “<” maka kita tidak boleh

menuliskannya secara langsung, namun kita harus meng-encode string tersebut

menjadi “&lt”, begitu juga dengan string “>” akan di-encode menjadi “&gt”. Namun, jika kita menggunakan CData, kita dapat menuliskan string atau

karakter reference secara alami, misalnya karakter “<” atau “>” dapat ditulis

seperti itu juga sehingga elemen yang mengandung karakter “<” dan “>” bukan dianggap sebuan tag. Cara penulisannya adalah dengan diawali string

“<![CDATA[” dan diakhiri dengan “]]>”.

Contoh :

<p>You can use a default <code>xmlns</code>

attribute to avoid having to add the svg prefix to

all your elements:</p>

<![CDATA[

<svg xmlns="http://www.w3.org/2000/svg"

width="12cm" height="10cm">

<ellipse rx="110" ry="130" />

<rect x="4cm" y="1cm" width="3cm"

height="6cm" />

</svg>

]]>

Pada contoh diatas yang dituliskan dalan XHTML file tanpa menggunakan

karakter reference “&lt” dan “&gt”.

2.7 Komentar

Komentar merupakan kode atau string yang ditulis tetapi kode tersebut tidak

akan dieksekusi. Dokumen XML juga mengizinkan kita untuk menuliskan

komentar. 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 “-->”. Contoh :

Page 25: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

XML Fundamental 17 PAGE 10

<!-- I need to verify and update these links when I

get a chance. -->

Untuk penulisan double hyphen -- sebaiknya tidak diizinkan hingga

sampai pada penutup komentar -->. selain itu tiga hyphen ---> juga

tidak dibolehkan.

Pada komentarpenulisan string apapun dibolehkan. Komentar boleh dituliskan

sebelum root elemen atau setelah root elemen. Namun, tidak seperti pada

HTML, komentar pada XML tidak dibolehkan untuk dituliskan didalam tag

dan didalam komentar yang lain. Aplikasi yang membaca dan yang memproses

dokumen XML akan melewatkan informasi yang terdapat didalam komentar.

2.8 Processing Instruction

Pada HTML, comment biasanya disalahgunakan untuk mendukung ekstensi

yang tidak standart (nonstandart extensions). Contohnya, konten-konten dari

elemen script biasanya dilampirkan pada sebuah comment untuk menjaganya

dari penampakan dengan nonscript-aware browser. Apache web server

memparser comment-comment dalam bentuk file .shtml untuk mengenal

bagian yang mengandung server. Sayangnya, dokumen-dokumen ini tidak

mampu bertahan dalam melewati berbagai macam editor HTML (HTML

editor) dan prosesor dengan komentar dan associated semantics intact. Yang

lebih buruk, dimungkinkan untuk sebuah comment menjadi salah arti,

sehingga menjadi sebuah input pada aplikasi.

Olehkarenanya XML memberikan instruksi pemrosesan sebagai alternatif

parsing informasi tertentu melalui aplikasi yang dapat membaca dokumen.

Processing Instruction Merupakan perintah pengolahan dalam dokumen XML.

Node ini ditandai awali dengan karakter <? Dan diakhiri dengan ?>. <? merupakan XML name yang disebut target, mungkin nama aplikasi untuk

processing instruction ini yang dimaksudkan atau mungkin hanya sebuah

identifier untuk processing instruction secara khusus. Sisa pemrosesan instruksi

mengandung teks dalam format yang sesuai dengan aplikasi yang akan

digunakan. Tapi perlu diingat bahwa header standard XML <?xml

version=”1.0” encoding=”iso-8859-1”?> bukanlah processing instruction. Header standard bukanlah bagian dari hirarki pohon dokumen

XML.

Page 26: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

18 PAGE 10

Sebagai contoh, didalam HTML sebuah robots META tag digunakan untuk memberitahukan kepada search-engine dan pencarian lainnya dan bagaimana

mereka harus meng-index sebuah halaman web :

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

Target pemrosesan instruksi ini adalah robots. Sintaks dari instruksi ini adalah

proses dua atribut palsu, satu nama dan satu nama indeks, yang nilai-nilainya

yes atau no. Semantik dari pemrosesan instruksi ini adalah jika indeks atribut

memiliki nilai yes, kemudian search-engine robots harus mengiindek halaman

tersebut. Jika indeks memiliki nilai no, maka halaman tersebut tidak akan di-

index. sebaliknya, jika memiliki nilai yes, maka link dari dokumen ini akan

diikuti.

Pemprosesan instruksi lainnya mungkin saja dapat berbeda antara semantik

dan sintaksisnya. Contohnya, pemprosesan instruksi dapat mengandung

jumlah text yang unlimited. PHP include program yang besar dalam

pemprosesan instruksi. Sebagai contoh :

<?php

mysql_connect("database", "clerk", "password");

$result = mysql("HR", "SELECT LastName, FirstName

FROM Employees ORDER BY LastName, FirstName");

$i = 0;

while ($i < mysql_numrows ($result)) {

$fields = mysql_fetch_row($result);

echo "<person>$fields[1] $fields[0] </person>

\r\n";

$i++;

}

mysql_close( );

?>

Pemrosesan instruksi adalah markup tampak seperti elemen, tetapi bukan

elemen. Instruksi pemrosesan dapat muncul di manapun dalam dokumen

XML di luar tag, termasuk sebelum atau sesudah elemen root. Yang paling

umum pemrosesan instruksi, xml-stylesheet, digunakan untuk melampirkan stylesheets ke dokumen. Stylesheets selalu muncul sebelum elemen root, pada

contoh berikut, pemrosesan instruksi xml-stylesheet memberitahu browser

untuk menerapkan CSS stylesheet person.css ke dokumen ini sebelum tampil.

Page 27: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

XML Fundamental 19 PAGE 10

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

<person>

Alan Turing

</person>

2.9 Deklarasi XML

Sebuah dokumen XML boleh dideklarasikan boleh juga tidak. Pendeklarasian

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

Sebagai Contoh :

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

standalone="yes"?>

<person>

Alan Turing

</person>

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

dokumen ada pendeklarasian maka dek;arasi harus berada paling atas, tidak

boleh didahului sintaks apapun seperti komentar, spasi, dll.

Penjelas san atau arti dari bagiannya :

1. version

Merupakan versi penulisan dokumen XML yang digunakan

2. Encoding

Ini merupakan type encoding dari dokumen XML tersebut, misalnya

UTF-8, UTF-16, ISO-8859-1, ASCII, dll

3. Standalone

Apakah dokumen ini berdisi sendiri atau mmerupakan penggabungan

dari dokumen lain.

Page 28: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

20 PAGE 10

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

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

3. Harus memiliki tepat satu elemen root.

4. Nilai atribut harus diapit oleh tanda petik.

5. Satu elemen tidak boleh memiliki dua atribut yang sama

6. komentar pemprosesan intruksi tidak muncul didalam tag

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

Page 29: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

XML Fundamental 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 30: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

22 PAGE 10

3 Document Type Definitions (DTDs)

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 31: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Document Type Definitions (DTDs) 23 PAGE 10

3.1 Validation

Dokumen yang valid termasuk jenis dokumen mendeklarasikan DTD. DTD

yang mengandung selua elemen, atribut, dan entitas yang akan digunakan

didalam dokumen. Validitas operasinya pada prinsipnya bahwa semua yang

tidak diperbolehkan adalah dilarang. Semua dokumen yang akan ditulis harus

dideklarasikan didalam DTD. Jika pada suatu dokumen terdapat deklarasi

DTD, maka mau tidak mau isi dari dokumen yang akan ditulis harus sesuai

dengan DTDnya. Jika dokumen yang ditulis tersebut telah sesuai, maka

dokumen tersebut dapat dikatakan valid, jika tidak maka dokumen tersebut

tidak valid.

Selain itu, banyak hal-hal yang ditak diulas DTD, diantaranya :

1. Apa yang menjadi root element dari dokumen.

2. Berapa kasus dari tiap-tiap elemen yang muncul di dalam dokumen.

3. Karakter data apa yang tampak didalam elemen.

4. Semanting yang berarti dari sebuah elemen, apakah mengandung data

tanggal atau nama orang.

DTD memungkinkan untuk penempatan beberapa kostrain pada form sebuah

dokumen XML. Parser membaca apakah dokumen tersbut valid atau tidak.

Jika dokumen tersebut valid, maka program akan menerima data dari parser.

Dalam beberapa kasus, seperti memasukan record kedalam database,

validation error mungkin cukup serius, sehingga field yang dibutuhkan hilang.

Contoh sederhana penggunaan DTD :

<!DOCTYPE person [

<!ELEMENT person (name, profession*)>

<!ELEMENT name (first_name, last_name)>

<!ELEMENT first_name (#PCDATA)>

<!ELEMENT last_name (#PCDATA)>

<!ELEMENT profession (#PCDATA)>

]>

<person>

<name>

<first_name>Alan</first_name>

<last_name>Turing</last_name>

</name>

<profession>mathematician</profession>

<profession>cryptographer</profession>

</person>

Page 32: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

24 PAGE 10

pada contoh diatas maksudnya adalah person menjadi elemen root dimana

didalam elemen person harus ditulis satu kali element name dan elemen

profession boleh muncul atau boleh tidak. Sedangkan pada elemen name

harus memiliki dua elemen child yaitu first_name, last_name dan

kemunculannya msing-masing satu kali. Sedangkan (#PCDATA) menunjukan tipe isi dari elemen yaitu data karakter.

Contoh:

<!DOCTYPE person [

<!ELEMENT person (student+)>

<!ELEMENT student (name, hobbi | favorite)>

<!ELEMENT name (#PCDATA)>

<!ELEMENT hobbi (#PCDATA)>

<!ELEMENT favorite (#PCDATA)>

]>

<person>

<student>

<name>Alan Turing</name>

<hobbi>Tenis</hobbi>

</student>

<student>

<name>Johan</name>

<favorite>Arktis</favorite>

</student>

<student>

<name>Marie</name>

<hobbi>Tenis</hobbi>

<favorite>Arktis</favorite>

</student>

</person>

Pada contoh diatas, terdapat tanda “ | ” diantara hobbi dan faforite.

Maksudnya adalah didalam elemen student wajib mengandung satu elemen

nama dan boleh salah satu dari elemen hobbi atau faforite yang muncul atau keduanya muncul.

Selain itu, dokumen yang valid juga memasukan sebuah reference kedalam

DTD yang harus dibandingkan disajikan dalam dokumen dari satu jenis

Page 33: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Document Type Definitions (DTDs) 25 PAGE 10

dokumen deklarasi. Ini berguna jika kita menuliskan DTDnya didalam file yang

terpisah dengan dokumen. Contoh deklarasi dokument type adalah :

<!DOCTYPE person SYSTEM

"http://www.politekniktelkom.ac.id/person.dtd">

<person>

<name>

<first_name>Alan</first_name>

<last_name>Turing</last_name>

</name>

<profession>mathematician</profession>

<profession>cryptographer</profession>

</person>

sintaks tersebut dituliskan didalam dokumen XML dan DTDnya berada diluar

serve.

3.2 Element Declarations

Setiap elemen yang digunakan dalam dokumen yang valid harus dinyatakan

dalam dokumen DTD dengan elemen deklarasi. Deklarasi elemen meniliki

bentuk dasar :

<!ELEMENT element_name content_specification>

adapun beberapa hal yang merupakan bagian dari elemen declaration adalah :

#PCDATA

Konten yang terkandung didalam elemen yang dimaksud adalah text.

Meskipun data yang ada dielemen tersebut berupa angka, tetap dianggap

sebagai text. Contohnya :

<!ELEMENT phone_number (#PCDATA)>

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

Page 34: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

26 PAGE 10

Maksudnya adalah elemen phone_number merupakan anak dari

elemen fax.

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

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.

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.

Page 35: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Document Type Definitions (DTDs) 27 PAGE 10

Parentheses Dari yang telah kita bahas choices, sequences, dan suffixes sangat

tebatas penggunaannya, oleh karena itu kita dapat pula

manggabungkannya dari masing-masing bagian tadi. Misalnya :

<!ELEMENT circle (center, (radius | diameter))>

Atau

<!ELEMENT center ((x, y) | (y, x) | (r, θ) |

(θ, r) )>

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)*>

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 36: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

28 PAGE 10

ANY Kita dapat mengijinkan apapun dapat berada pada suatu elemen.

Penulisan deklarasinya adalah :

<!ELEMENT page ANY>

3.3 Deklarasi Atribut

Seperti halnya elemen, dokumen dikatakan valid jika dapat menyatakan semua

atribut elemen jika elemennya memiliki atribut. Yaitu sintaks ATTLIST dapat

mendeklarasikan beberapa atribut dalam suatu elemen.

Contoh berikut merupakan pendeklarasian ATTLIST pada elemen imaeg,

dimana elemen image memiliki atribut source :

<!ATTLIST image source CDATA #REQUIRED>

atau kita dapat menuliskan lebih dari satu atribut didalam suatu elemen :

<!ATTLIST image source CDATA #REQUIRED

width CDATA #REQUIRED

height CDATA #REQUIRED

alt CDATA #IMPLIED

>

maksud dari deklarasi diatas adalah elemen image memiliki atribut source,

width, height dan alt. Dengan type CDATA.

Type Atribut

Type atribut yang ada didalam XML adalah :

CDATA

Atribut yang hanya memiliki nilai text string.

NMTOKEN

Type atribut yang mengandung token XML name yang dipisahkan

dengan spasi

<performances dates="08-21-2001">

Kat and the Kings

</performances>

Page 37: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Document Type Definitions (DTDs) 29 PAGE 10

NMTOKENS Type atribut yang mengandung satu atau lebih token XML name yang

dipisahkan dengan spasi

<performances dates="08-21-2001 08-23-2001 08-

27-2001">

Kat and the Kings

</performances>

Enumeration

Atribut yang bukan merupakan keyword XML.

<!ATTLIST date month (January | February | March

| April | May | June | July | August |

September | October | November | December)

#REQUIRED >

ID

Sebuah type atribut ID harus berisi XML name yang unik didalam

dokumen.

IDREF

Mengacu pada type atribut ID dari beberapa elemen.

IDREFS

Mengandung spasi sebagai pemisah dan masing-masing harus mengacu

pada ID dari elemen didalam dokumen itu sendiri.

ENTITY Berisi name dari sebuah deklarasi entity unparsed di DTD

ENTITIES

Berisi name dari satu atau lebih deklarasi entity unparsed di DTD

NOTATION

Mengandung deklarasi notasi didalam DTD

Atribut Default

#IMPLIED

Tidak disediakan nilai default, jika kita mengisi nilai tersebut, maka nilai

atribut elemen menjadi sesuai yang dituliskan, jika kita tidak memberikan

nilai atributnya, maka nilai atributnya menjadi kosong.

Page 38: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

30 PAGE 10

#REQUIRED Merupakan default atribut. Artinya tidak disediakan nilai default untuk

atribut, jadi nilainya harus diisi, jika tidak maka parser akan menampilkan

pesan error.

#FIXED

Disediakan nilai default dan jika kita mengisikan nilai atribut pada

elemen, maka nilainya akan samadengan yang diisikan, sedangkan jika

dokosongkan maka parser akan mengenali nilai atributnya sesuai dengan

nilai default yang diberikan.

3.4 General Entity Declarations

Referensi entitas didefinisikan dengan pendeklarasian sebuah ENTITY didalam

DTD. Hal ini diberikan guna memberikan nama pada entiti. Dengan kata lain,

kita bisa menggantikan kalimat yang panjang atau satu blok elemen yang sering

kita gunakan dengan sebuah pengenal singkat. Dengan adanya pendeklarasian

entiti yang sesuai, kita dapat menuliskan text atau string apapun hanya dengan

menuliskan entity referencenya saja yang telah dideklarasikan tampa harus

menulis text tersebut secara utuh. Misalnya deklarasi entity mendefinisikan

&email; sebagai singkatan dari “[email protected]”, maka contoh

penulisannya :

<!ENTITY email "[email protected]">

<person>

<name>Peter Kok kok</name>

<email>&email;</email>

</person>

3.5 External Parsed General Entities

Pada umumnya situs-situs web yang beredar lebih memilih menyimpan

konten yang akan tampil berulang kedalam file external yang kemudian akan

ditampilkan kehalaman webnya menggunakan PHP atau bahasa

pemprograman web, termasuk server-site atau mekanisme yang lainnya.

Dalam hal ini, XML mendukung teknik tersebut melalui external general entity

references meskipun dalam hal ini client bukanlah sebagai server.

External general entity references dideklarasikan didalam DTD yang

menggunakan pendeklarasian ENTITY. Contohnya :

Page 39: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Document Type Definitions (DTDs) 31 PAGE 10

<!ENTITY footer SYSTEM

"http://www.oreilly.com/boilerplate/footer.xml">

atau kita juga dapat memasukan relative URL. Misalnya :

<!ENTITY footer SYSTEM "/boilerplate/footer.xml">

3.6 External Unparsed Entities and Notations

Tidak semua data itu XML. Terdapat banyak file ASCII didunia ini yang tidak

memberikan arti tentang “<” sebagai &lt; atau kendala lainnya yang pada

dokumen XML yang terbatas. Pada dokumen JPEG photographs, GIF line art,

QuickTime movies, MIDI sound files, dan sebagainya yang merupakan

komponen penting dari berbagai macam komponen namun tidak dapat

diimplementasikan menjadi dokumen XML. Namun mekanisme embeded

XML menyarankan untuk menggunakan External Unparsed Entities yang

dapat didefinisikan kedalam DTD sebagai entitas yang bukan dokumen XML.

Misalnya pendeklarasian ENTITY yang mengasisiasikan nama

turing_getting_off_bus dengan gambar JPEG pada

http://www.turing.org.uk/turing/pi1/bus.jpg :

<!ENTITY turing_getting_off_bus SYSTEM

"http://www.turing.org.uk/turing/pi1/bus.jpg" NDATA jpeg>

Notifikasi

Ini digunakan agar dokumen XML dapar mengenali file yang akan

dimasukan, misalnya dengan memberikan penamaan jpeg pada file JPEG

image. Contoh :

<!NOTATION jpeg SYSTEM "image/jpeg">

Meletakan Unparsed Entities didalam dokumen

Namun kita tidak bisa menempatkan entity reference, entitas reference

hanya dapat merujuk ke parsed entities.

Misalnya elemen image dan deklarasi atribut seperti :

<!ELEMENT image EMPTY>

<!ATTLIST image source ENTITY #REQUIRED>

Page 40: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

32 PAGE 10

kemudian elemen gambar ini akan merujuk pada

http://www.turing.org.uk/turing/pi1/bus.jpg

<image source="turing_getting_off_bus"/>

Notifikasi untuk target pemprosesan instruksi

Notasi dapat juga dapat digunakan untuk mengidentifikasi target yang

tepat dari instruksi proses. Notasi dapat mengidentifikasi nama singkat

XML dengan spesifikasi lebih lengkap. Misalnya targer path :

<!NOTATION tex SYSTEM "/usr/local/bin/tex">

3.7 Parameter Entities

tidak dapat digunakan pada multiple elemen untuk men-share semua atau

sebagian untuk atribut yang sama. Misalnya adda elemen simpel XLink yang

dijadikan xlink:type and atribut xlink:href, dan mungkin xlink:show and atribut

xlink:actuate.

Misalnya, aplikasi XML untuk perumahan daftar real-estate yang menyediakan

elemen terpisah untuk apartemen, sublets, coops untuk penjualan, Condos

untuk dijual, dan rumah untuk dijual. Elemen deklarasi mungkin terlihat

seperti ini:

<!ELEMENT apartment (address, rooms, baths, rent)>

<!ELEMENT sublet (address, rooms, baths, rent)>

<!ELEMENT coop (address, rooms, baths, price)>

<!ELEMENT condo (address, rooms, baths, price)>

<!ELEMENT house (address, rooms, baths, price)>

Parameter Entity Syntax

parameter entity reference banyak dinyatakan pada general entitas

reference. Namun, tanda persen (%) ditempatkan diantara <!ENTITY dan nama entitas.

<!ENTITY % residential_content "address,

footage, rooms, baths">

<!ENTITY % rental_content "rent">

<!ENTITY % purchase_content "price">

Page 41: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Document Type Definitions (DTDs) 33 PAGE 10

Parameter entity yang ditulis kembali sebagai general reference, hanya

dengan tanda persen.

<!ELEMENT apartment (%residential_content;,

%rental_content;)>

<!ELEMENT sublet (%residential_content;,

%rental_content;)>

<!ELEMENT coop (%residential_content;,

%purchase_content;)>

<!ELEMENT condo (%residential_content;,

%purchase_content;)>

<!ELEMENT house (%residential_content;,

%purchase_content;)>

Redefining Parameter Entities

Jika dokumen menggunakan both internal maupun eksternal DTD subset,

maka subset internal DTD dapat menentukan teks untuk entity. Jika

ELEMENT dan ATTLIST dideklarasi di luar subset DTD ditulis langsung

dengan parameter entitas reference.

<!ENTITY % residential_content "address,

footage, rooms, bedrooms, baths,

available_date">

External DTD Subsets Entitas parameter external dideklarasikan menggunakan normal ENTITY

dengan tanda %. Contoh, deklarasi ENTITY mendefinisikan sebuah

konten eksternal entitas yang disebut names yang kontennya diambil dari

file names.dtd. Kemudian entitas parameter referensi %name;

memasukkan isi file ke dalam DTD.

<!ENTITY % names SYSTEM "names.dtd">

%names;

Page 42: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

34 PAGE 10

3.8 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)>

]]>

Sintaks diatas sepertinya tidak berguna, karena kita bisa saja menggunakan

komentar. Namun tujuan ini adalah untuk menunjukan bahwa deklarasi yang

diberikan benar-benar digunakan didalam DTD. Contoh :

<![INCLUDE[

<!ELEMENT production_note (#PCDATA)>

]]>

3.9 Dua contoh DTD

Data-Oriented DTDs

Membuat penggunaan sequences menjadi lebih berat. Kadang

penggunaan pilihan dan hampir tidak ada penggunaan mixed content.

Narrative-Oriented DTDs Cendrung bebas dan membuat lebih banyak menggunakan mixed conten

menjadi DTD yang mendeskripsikan dokumen database-like lainnya.

3.10 Menempatkan Standar 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 43: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Document Type Definitions (DTDs) 35 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 44: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

36 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 45: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Namespaces 37 PAGE 10

4.1 The Need for Namespaces

Menggabungkan beberapa dokumen markup dari multiple aplikasi XML.

Misalnya pada dokumen XHTML dapat mengandung both gambar SVG dan

MathML equations. XSLT stylesheet mengandung both XSLT instruksi dan

elemen dari kosakata result-tree. XLinks selalu simbiotik dengan elemen-

elemen pada dokumen yang ada sejak XLink hanya mendefinisikan atribut

saja.

Dalam beberapa kasus, aplikasi ini dapat menggunakan nama yang sama untuk

merujuk ke berbagai hal. Misalnya pada SVG satu set elemen memberikan

nilai atribut untuk durasi waktu yang ditentukan. Sedangkan pada MathML

satu set memiliki elemen matematis. Hal ini sangatlah penting, jika ingin

menentukan kapan harus menggunakan SVG, kapan menggunakan MathML.

Jika tidak, maka validasi, rendering, pengindek-an, dan tugas lainnya akan

bingung dan failed.

4.2 Sintaks Namespace

Namespace membuat elemen tidak ambigu terhadap nama yang sama karena

pemberian elemen dan atribut pada URI. Secara umum, semua elemen dari

suatu aplikasi XML di-asign kepada satu URI dan semua elemen yang berasal

dari aplikasi XML yang berbeda di-asign dalam URI yang berbeda. URI inilah

disebut dengan nama namespaces. Elemen dan atribut URI dibagi kedalam

disjoint sets. Elemen yang sama dan URI yang sama adalah sama. Sebagian

besar waktu merupakan pemetaan one-to-one antara namespaces and aplikasi

XML, meskipun beberapa aplikasi menggunakan multi namespaces untuk

subdivide yang berbeda lokasi dari aplikasi. Misalnya, XSL menggunakan nama

yang berbeda untuk transformasi XSL (XSLT) dan XSL Formatting Objects

(XSL-FO).

Contoh penggunaan namespace, misalnya ada sebuah dokumen yang

mendiskripsikan tentang kebutuhan material pembuatan gardu jaga dari

bambu, dengan dokumen sederhana sebagai berikut :

<bambu>

<jenis>Jawa</jenis>

<panjang>2</panjang>

</bambu>

Page 46: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

38 PAGE 10

sedangkan ada dokumen lain yang menyatakan bahwa bambu itu adalah

sebuah merk produk dengan penulisan dokumen :

<bambu>

<jumlah>246</jumlah>

<hargasatuan>200</hargasatuan>

</bambu>

untuk mengatasi hal ini, namespace menyediakan metode dengan

menggunakan prefiks yang berbeda sehingga penulisan dokumen pertama

pada contoh tersebut adalah :

<n_pertama:bambu>

<n_pertama:jenis>Jawa</n_pertama:jenis>

<n_pertama:panjang>3m</n_pertama:panjang>

</n_pertama:bambu>

dan dokumen kedua menjadi :

<n_kedua:bambu>

<n_kedua:jumlah>100</n_kedua:jumlah>

<n_kedua:hargasatuan>300</n_kedua:hargasatuan>

<n_kedua:/bambu>

Dengan cara demikian konflik penamaan tag tidak terjadi lagi.

5. Qualified Names, Prefixes, and Local Parts

Karena URI mengandung karakter /, %, dan ~ yang tidak legal didalam

XML names, singkat awalan seperti rdf dan xsl dibuat didalam elemen

dan atribut names. Setiap awalan digabung dengan URI dan nama yang

awal digabung dengan URI yang sama didalam namespace yang sama.

Awalan elemen dan atribut didalam namespace memiliki nama yang

mengandung titik dua. Misalnya terlihat seperti dibawah :

rdf:description

xlink:type

xsl:template

Page 47: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Namespaces 39 PAGE 10

sebelum tanda titik dua disebut sebagai prefix, setelah titik dua disebut

sebagai local part, nama lengkap yang memasukan titik dua disebut

sebagai qualified name, QName, atau raw name.

6. Binding Prefixes to URIs

Setiap awalan dalam kualifikasi nama harus terkait dengan URI, misalnya

semua elemen XSLT digabung dengan URI http://www.w3.org/1999/XSL/Transform.

<rdf:RDF xmlns:rdf="http://www.w3.org/TR/REC-

rdf-syntax#">

<rdf:Description

about="http://www.cafeconleche.

org/examples/impressionists.xml">

<title> Impressionist Paintings </title>

<creator> Elliotte Rusty Harold </creator>

<description>

A list of famous impressionist paintings

organized by painter and date

</description>

<date>2000-08-22</date>

</rdf:Description>

</rdf:RDF>

7. Namespace URIs

Banyak aplikasi XML yang memiliki customary prefixes. Misalnya elemen

SVG sering menggunakan prefik svg dan elemen RDF sering

menggunakan prefik rdf. Sebelum prefik dapat digunakan ia haruslah ada

keterkaitan dengan URI seperti http://www.w3.org/2000/svg atau

http://www.w3.org/1999/02/22-rdf-syntax-ns# yang merupakan standar

URI dan bukan prefik.

Namespace URIs tidak harus menunjuk ke halaman atau dokumen yang

sebenarnya. Pada kenyataannya, namespace URI tidak perlu

menggunakan skema http, bahkan mungkin menggunakan beberapa

protokol lainnya seperti mailto URIs yang bahkan tidak mengarah ke

dokumen.

Page 48: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

40 PAGE 10

8. Setting a Default Namespace with the xmlns Attribute

<svg xmlns="http://www.w3.org/2000/svg"

width="12cm" height="10cm">

<ellipse rx="110" ry="130" />

<rect x="4cm" y="1cm" width="3cm" height="6cm"

/>

</svg>

walaupun tidak ada elemen yang memiliki prefik, namun elemen svg,

ellipse, dan rect berapa pada ruang yang sama yaitu

http://www.w3.org/2000/svg. Default namespace hanya berlaku untuk

elemen, bukan atribut. Olehkarena itu pada contoh, atribut width, height,

rx, ry, x, dan y tidak berada didalam naame space.

9. Attribute Declarations for xmlns

DTD dapat melampirkan atribut xmlns ke kontainer elemen utama

untuk sebuah aplikasi agar semuanya ditempatkan di sebelah kanan

namespace tanpa atribut xmlns. Misalnya :

<!ATTLIST svg xmlns CDATA #FIXED

"http://www.w3.org/2000/">

Hal tersebut memungkinkan kita untuk menghilangkan atribut xmlns

untuk semua elemen svg.

4.3 How Parsers Handle Namespaces

Namespace bukanlah bagian dari XML 1.0, namun titik dua-titik dua

merupakan karakter yang legal didalam elemen XML 1.0 dan nama atribut.

Sehingga parser akan menampilkan beberapa nama mengandung titik dua.

Namespace-aware parser telah menambahkan couple untuk memeriksa well-

formed dokumen. Pemeriksaan dikhususkan untuk melihat semua prefik yang

dipetakan ke URI. Hal ini akan merijek dokumen yang menggunakan

unmapped prefik (kecuali xmlns, xml).

Page 49: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Namespaces 41 PAGE 10

4.4 Namespaces dan DTD

Diperlukan DTD untuk menyatakan prefik names sebagai pengganti raw

names atau beberapa kombinasi local path dan namespace URI membuatnya

sulit untuk mengubah prefik didalam dokumen yang valid. Masalahnya adalah

dengan mengubah prefiknya, maka akan mengubah seluruh deklarasi yang

menggunakan prefiks DTD. Namun, denga sedikit trik, parameter entitas

referen dadpat meringankan masalahnya.

Triknya adalah dengan didefinisikan sebagai parameter entitas baik prefik

namespace dan titik dua yang memisahkan prefik dari nama lokal. Contohnya :

<!ENTITY % dc-prefix "dc">

<!ENTITY % dc-colon ":">

langkah yang kedua adalah dengan mendefinisikan kualifikasi names sebagai

parameter entitas yang lain. Contohnya :

<!ENTITY % dc-title

"%dc-prefix;%dc-colon;title">

<!ENTITY % dc-creator

"%dc-prefix;%dc-colon;creator">

<!ENTITY % dc-description

"%dc-prefix;%dc-colon;description">

<!ENTITY % dc-date

"%dc-prefix;%dc-colon;date">

Untuk penulisan deklarasi namespace pada DTD adalah dengan menuliskan :

<prefiks:nama_elemen

xmlns:prefiks=”http:/www.sesuatusitus.com/nspace”>

prefiks adalah awalan yang digunakan, nama_elemen merupakan nama elemen yang akan diberi namespace karena memiliki kesamaan nama dengan

elemen lain namun berbeda maksud. Sedangkan atribut namespace di

tambahkan pada tag. Syntax untuk atribut namespace adalah sebagai berikut:

xmlns:prefiks=”namespace”

Page 50: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

42 PAGE 10

Penulisan dokumen pada contoh sebelumnya yaitu tentang penulisan bambu

sebagai bahan pembuat gardu dan yakedua adalah bambu sebagai nama atau

merek produk, maka penulisan deklarasinya pada DTD adalah :

<n_pertama:bambu

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

<n_kedua:bambu

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

Pada deklarasi contoh diatas namespace-nya menggunakan alamat URL. W3C

namespace spesification menyatakan bahwa namespace haruslah merupakan

Uniform Resource Identifier (URI). Alamat URL tersebut tidak digunakan untuk

mendapatkan informasi, tapi hanya untuk memberikan nama yang unik bagi

namespace. Tetapi kebanyakan orang sering menyalahgunakannya. Sehingga

kebanyakan dari mereka menggunakan namespace untuk menunjuk pada

halaman web yang berisi informasi tentang namespace yang digunakan.

Page 51: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Namespaces 43 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: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

44 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: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

XML pada Web 45 PAGE 10

5.1 XHTML

XHTML merupakan rekomendasi resmi dari W3C, dan mendefinisikan XML-

compatible versi HTML, atau sebaliknya, dapat mengubah HTML sebagai

aplikasi XML, bukan sebagai aplikasi SGML. Dengan melihat dokumen

XHTML, mungkin kita tida menyadari ada sesuatu yang berbeda dalam hal ini,

seperti : tag <p> boleh dalam XHTML, tetapi tag <P> tidak boleh, <table

border="0" width="515"> bolej dalam XHTML, tapi <table border=0

width=515> tidak boleh.

Moving from HTML to XHTML

Sebagian besar pengubahan dokumen HTML menjadi dokumen XHTML

adalah dengan membuat dokumen well-formed. Misalnya perubahan yang

akan dilakukan :

1. Tambahkan missing end-tag seperti </p> and </li>

2. Tulis kembali dokumen yang timpang tindih, misalnya

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

3. Letakkan tanda petik pada nilai atribut. Misalnya <p

align=center> menjadi <p align="center">. 4. Tambahkan nilai pada atribut yang memiliki nilai boolean dengan

namanya sendiri. Misalnya <input type="checkbox"

checked> menjadi <input type="checkbox"

checked="checked">.

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

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

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

<hr></hr>

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

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

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

Tiga DTD untuk XHTML

1. Strict

Memasukan elemen dan atribut basik seperti p dan class.

Page 54: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

46 PAGE 10

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

Strict//EN" "DTD/xhtml1-strict.dtd" >

2. Transitional

Bentuk looser XHTML dan digunakan ketika kita sulit untuk melakukan

tanpa elemen dan atribut yang usang seperti applet and bgcolor. Ini

teridentifikasi sebagai deklarasi DOCTYPE.

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

Transitional//EN" "DTD/xhtml1-transitional.dtd"

>

3. Frameset

hampir sama dengan Transitional namun Frameset mengijinkan elemen frame-related sebagai framset dan iframe

Browser Support for XHTML

1. The XML declaration and processing instructions

Beberapa browser menampilkan pemrosesan instruksi dan deklarasi

XML inline. Ini harus dihilangkan jika memungkinkan.

2. Empty elements

Beberapa browser tidak konsekuen terhadap penanganan sintak kosong.

Misalnya beberapa browser mengerti <hr/> tapi tidak untuk <hr></hr>,

sedangkan yang lain mengerti <hr></hr> tetapi tidak <hr/>

3. Entity references

Embedded skrip sering mengandung karakter reserved seperti & atau <

sehingga dokumen tersebut tidak well-formed. Namun sebagian besar

interpreter JavaScript dan VBScript tidak mengenali &amp; atau &lt;

sebagai operator.

4. Other unsupported features

Ada beberapa perbedaan antara bagaimana browser meng-handle

XHTML dan bagaimana XHTML di-handle.

5.2 Direct Display of XML in Browsers

Kita berharap bahwa browser akan dapat menampilkan tidak hanya XHTML,

tetapi XML juga. Namun terlalu banyak untuk meminta browser unttuk

menyediakan semantik XML untuk semua aplikasi.

Page 55: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

XML pada Web 47 PAGE 10

The xml-stylesheet Processing Instruction

Stylesheet yang berhubungan dengan dokumen diindikasikan oleh xml-

stylesheet processing instruction didalam dokumen prolog, yang ditulis setelah

deklarasi XML tetapi sebelum elemen root. Pemprosesan intruksi ini

menggunakan atribut untuk mendeskripsikan stylesheet (yaitu, terlihat seperti

atribut tetapi bukan karena atribut xml-stylesheet merupakan pemrosesan

instruksi dan bukan elemen).

1. The required href and type pseudoattributes

Ada dua atribut palsu yang diperlukan untuk pemprosesan instruksi xml-stylesheet. Nilai atribut href berisi URL yang dapat berupa relatif path

atau absolute path. Tipe atribut palsu ini menjelaskan tipe MIME media

stylesheet, text/css untuk cascading stylesheets, application/xml untuk

XSLT stylesheets

<?xml version="1.0"?>

<?xml-stylesheet href="person.css"

type="text/css"?>

<person>

Alan Turing

</person>

2. Media untuk pseudoattribute

Media atribut palsu berisi string singkat untuk medium stylesheet yang

harus digunakan, misalnya :

Screen

monitor Komputer

tty Teletypes, terminal, xterm, dan monospacedlainnya, device text-

only.

Tv

Televisi, WebTVs, video game konsol, dan lain-lain

projection

Slide, transparansi, dan direct-from-laptop presentasi yang akan

ditampilkandi layar besar

handheld

PDA, ponsel, GameBoys, dan lain-lain

print kertas

braille

Page 56: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

48 PAGE 10

Tulisan Timbul

aural Screen readers dan speech synthesizers

all

<?xml-stylesheet href="http://www.cafeconleche.

org/style/titus.css" type="text/css"

media="tv, projection, print"?>

3. The charset pseudoattribute

Atribut palsu Charset yang menjelaskan dalam karakter yang mengatur

stylesheet, menggunakan nilai-nilai yang sama sebagai deklarasi

menggunakan encoding. Misalnya, untuk mengatakan bahwa CSS

stylesheet koran.css tertulis di dalam karakter ISO-8859-6 yang

digunakan :

<?xml-stylesheet href="koran.css"

type="text/css" charset="ISO-8859-6"?>

4. The alternate and title pseudoattributes

atribut palsu alternate menentukan apakah primary stylesheet untuk tipe

media atau alternate untuk special case.

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

alternate="yes" title="Large fonts"?>

<?xml-stylesheet href="small.css"

type="text/css"

alternate="yes" title="Small fonts"?>

<?xml-stylesheet href="medium.css"

type="text/css" title="Normal fonts"?>

Internet Explorer

Microsoft Internet Explorer 4.0 (IE4) include XML parser yang dapat diakses

dari VBScript atau JavaScript dan digunakan secara internal untuk mendukung

chanel dan desktop aktif. Internet Explorer 5 (IE5) and 5.5 (IE 5.5) telah

suport XML. Walaupun pada parsernya ada sedikit bug yang menolak

beberapa dokumen yang seharusnya tidak ditolak. Internet Explorer 6 (IE6)

telah meningkatkan sedikit perbaikan terhadap parsing XML, tetapi masih

belum sepenuhnya sesuai.

Page 57: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

XML pada Web 49 PAGE 10

Netscape and Mozilla

Netscape 4.x dan sebelumnya tidak menyediakan untuk menampilkan XML

pada browser. Netscape 4.0.6 dan setelahnya telah menggunakan XML

internal untuk beberapa fitur. Netscape 6.2 juga mendukung untuk XSLT 1.0

tetapi masih ada beberapa bug.

5.3 Authoring Compound Documents with Modular XHTML

Mixing XHTML into Your Applications

Keuntungan memisahkan HTML ke semua modul yang berbeda yang dapat

dipilihsesuai dengan yang diinginkan. Jika dokumen menggunakan tabel, maka

kita dapat menyertakan modul tabel.

Mixing Your Applications into XHTML

fitur modular XHTML yang lebih penting adalah pilihan untuk menambahkan

elemen baru yang tidak mendukung. Misalnya untuk memasukan gambar SVG

kedalam dokumen, hanya dengan import SVG DTD.

Mixing Your Own XHTML

XHTML 1.1 DTD tidak mendukung semua modul yang tersedia. Misalnya

frame dan turunan elemen presentational yang sengaja diabaikan.

5.4 Prospects for Improved Web-Search Methods

Bagian dari hype XML telah dimanfaatkan search engines untuk mencari arti

isi dokumen hanya isi yang di-markup. Sementara itu, untuk menambahkan

beberapa petunjuk XML ke halaman HTML, search engines dapat mengambil

keuntungan dari menggunakan :

Resource Description Framework (RDF)

RDF dapat difahami sebagai encoding XML untuk data model yang sederhana.

Elemen root dokumen RDF merupakan dokumen RDF.

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

Page 58: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

50 PAGE 10

</rdf:Description>

</rdf:RDF>

Dublin Core

Merupakan standart set dari sepuluh informasi item dengan spesifik semantik

yang mencerminkan jenis atau tipe data. Sepuluh informasi itu adalah : Title,

Creator, Subject, Description, Publisher, Contributor, Date, Type, Format, Identifier,

Source, Language, Relation, Coverage, Rights

Robots

Pada HTML, robots tag META memberi tahukan kepada searc- engine apakah

boleh mengindeks halaman atau tidak. Contoh penulisannya adalah :

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

Page 59: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

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 60: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

52 PAGE 10

6 XSL Transformations (XSLT)

Overview

XSLT merupakan aplikasi XML untuk menspesifikasikan aturan antara

dokumen XML yang satu ditranformasikan menjadi dokumen XML lainnya.

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

4. Mahasiswa bisa membedakan “perintah” XSLT dengan XPath

Page 61: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

XML Transformations (XSLT) 53 PAGE 10

6.1 An Example Input Document

<?xml version="1.0"?>

<people>

<person born="1912" died="1954">

<name>

<first_name>Alan</first_name>

<last_name>Turing</last_name>

</name>

<profession>computer scientist</profession>

<profession>mathematician</profession>

<profession>cryptographer</profession>

</person>

<person born="1918" died="1988">

<name>

<first_name>Richard</first_name>

<middle_initial>P</middle_initial>

<last_name>Feynman</last_name>

</name>

<profession>physicist</profession>

<hobby>Playing the bongoes</hobby>

</person>

</people>

Dokumen diatas disimpan kedalam file dengan nama people.xml. 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.

6.2 xsl:stylesheet dan xsl:transform

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=

Page 62: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

54 PAGE 10

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

</xsl:stylesheet>

6.3 Stylesheet Processors

XSLT processor sebuah perangkat lunak yang membaca XSLT stylesheet,

membaca dokumen input XML, dan membuat dokumen output sesuai dengan

petunjuk dalam stylesheet menjadi informasi didalam dokumen masukan.

XSLT processor dapat diterapkan pada web browser, seperti MSXML pada

Internet Explorer 6.

Command-Line Processors

Sebenarnya detail cara menginstal, konfigurasi, dan menjalankan XSLT

processor tidak seperti prosessor ke prosesor. Umumnya, kita harus

mengistal prosessor pada path tempat kita bekerja atau menambahkan file jar

ke class path jika itu ditulis dengan java. Contoh menggunakan Xalan :

% java org.apache.xalan.xslt.Process -IN people.xml

-XSL minimal.xsl

-OUT 8-3.txt

===Parsing file:D:/books/xian/minimal.xsl ====

Parse of file:D:/books/xian/minimal.xsl took 771

milliseconds

========= Parsing people.xml ==========

Parse of people.xml took 90 milliseconds

=============================

Transforming...

transform took 20 milliseconds

XSLProcessor: done

The xml-stylesheet Processing Instruction

XML dokumen yang ditampilkan ke web browser memiliki xml-stylesheet

processing instruction pada prolog yang memberitahukan browser dimana

lokasi stylesheet pada dokumen tersebut. Jika stylesheet-nya merupakan

XSLT stylesheet, maka tipe pseudoattribute harus memiliki nilai

application/xml. Contoh, pemprosesan instruksi xml-stylesheet menunjukan

browsers harus memakai stylesheet pada URL absolut

http://www.oreilly.com/styles/people.xsl. Namun, Relativ URLs juga bisa

digunakan.

Page 63: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

XML Transformations (XSLT) 55 PAGE 10

<?xml version="1.0"?>

<?xml-stylesheet type="application/xml"

href="http://www.oreilly.com/styles/people.xsl"?>

<people>

...

</people>

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

Pencocokan pola secara sederhana adalah pada elemen name. Dengan

demikian, template rule ini menunjukan elemen peson. stylesheet processor

harus mengeluarkan text “A person”. Contoh Templatenya :

<xsl:template match="person">A Person</xsl:template>

Template rule :

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

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

<xsl:template match="person">A Person</xsl:template>

</xsl:stylesheet>

Output proses :

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

A Person

A Person

Page 64: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

56 PAGE 10

6.5 Calculating the Value of an Element with xsl:value-of

Elemen XSLT lainnya dapat memilih konten tertentu dari dokumen input dan

memasukkannya ke dalam dokumen output. Elemen xsl:value-of akan

mengolah nilai string dari expresi XPath dan memasukannya kedalam output.

Nilai dari sebuah elemen merupakan text elemen setelah semua tag dihapus

serta entitas dan karakter reference telah berubah. Elemen yang nilainya

diambil diidentifikasikan dengan atribut select berisi expresi XPath. Contoh :

<?xml version="1.0"?>

<xsl:stylesheet version="1.0" xmlns:xsl=

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

<xsl:template match="person">

<p>

<xsl:value-of select="name"/>

</p>

</xsl:template>

</xsl:stylesheet>

Ketika XLS diproses, maka output dari hasil tersebut adalah :

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

<p>Alan Turing</p>

<p>Richard P Feynman</p>

6.6 Applying Templates with xsl:apply-templates

xsl:apply-templates dapat meng-eksplisitkan pilihan pemprosesan.

xsl:apply-templates digunakan untuk membuat XLS processor

untuk mengaplikasikan template yang digunakan.

Misalnya kita ingin menampilkan list people pada input dokumen, namun pada

output dokumen kita akan menampilkan nama belakang ditulis didepan.

Penulisan XSL nya adalah :

<xsl:template match="name">

<xsl:value-of select="last_name"/>,

<xsl:value-of select="first_name"/>

</xsl:template>

atau kita juga dapat menggunakan :

Page 65: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

XML Transformations (XSLT) 57 PAGE 10

<xsl:template match="person">

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

</xsl:template>

6.7 The Built-in Template Rules

Terdapat tujuh jenis node dalam sebuah dokumen XML yaitu : root node,

element nodes, attribute nodes, text nodes, comment nodes, processing instruction

nodes, and namespace nodes. XSLT menyediakan default template built-in

untuk ketujuh node tersebut. Namun template tersebut akan aktif jika :

The Default Template Rule for Text and Attribute Nodes

Yang paling mendasar dari built-in template rule adalah menyalin nilai text dan

atribut node kedalam dokumen output. Seperti terlihat pada contoh berikut :

<xsl:template match="text( )|@*">

<xsl:value-of select="."/>

</xsl:template>

node text ( ) merupakan pattern matching untuk semua node. Misalnya

first_name merupakan pattern matching untuk semua elemen node

first_name. Sedangkan @* merupakan pattern matching untuk semua

node atribut.

The Default Template Rule for Element and Root Nodes

Yang paling penting adalah bagai mana menjamin bahwa elemen child juga

akan diproses. Aturan penulisannya adalah :

<xsl:template match="*|/">

<xsl:apply-templates/>

</xsl:template>

The Default Template Rule for Comment and Processing Instruction

Nodes

<xsl:template match="processing-

instruction()|comment( )"/>

rule ini cocok untuk semua command dan pemprosesan instruksi.

Page 66: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

58 PAGE 10

6.8 Modes

Elemen xsl:apply-templates dan xsl:template dapat memiliki pilihan atribut

mode yang menghubungkan template rule yang berbeda ke penggunaan yang

berbeda. Atribut mode pada elemen xsl:template mengidentifikasi pada mode

yang template rulenya harus aktif. Elemen xsl:apply-templates dengan atribut

mode hanya berjalan dengan template rule dengan atribut mode yang cocok.

Contoh :

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

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

<xsl:template match="people">

<html>

<head><title>Famous Scientists</title></head>

<body>

<ul><xsl:apply-templates select="person"

mode="toc"/></ul>

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

</body>

</html>

</xsl:template>

<!-- Table of Contents Mode Templates -->

<xsl:template match="person" mode="toc">

<xsl:apply-templates select="name" mode="toc"/>

</xsl:template>

<xsl:template match="name" mode="toc">

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

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

</xsl:template>

<!-- Normal Mode Templates -->

<xsl:template match="person">

<p><xsl:apply-templates/></p>

</xsl:template>

</xsl:stylesheet>

6.9 Attribute Value Templates

Template rule membungkus elemen input person didalam elemen span HTML

yang memiliki atribut class dengan nilai person.

Page 67: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

XML Transformations (XSLT) 59 PAGE 10

<xsl:template match="person">

<span class="person"><xsl:apply-templates/></span>

</xsl:template>

Namun, permasalahannya adalah jika nilai atribut tidak diketaui ketika

stylesheet ditulis, tapi harus dibaca dari dokumen inputan. Solusinya dengan menggunakan nilai atribut template. Nilai atribut template merupakan

ekspresi XPath. Misalnya, kita ingin menulis nama template yang mengubah

input elemen name untuk elemen kosong dengan first_name, middle_initial,

last_name dan atribut seperti :

<name first="Richard" initial="P" last="Feynman"/>

Template ini menyelesaikan task berikut :

<xsl:template match="name">

<name first="{first_name}"

initial="{middle_initial}"

last="{last_name}" />

</xsl:template>

6.10 XSLT and Namespaces

XPath pattern, serta ekspresi yang sesuai dengan elemen yang dipilih,

mengidentifikasi elemen berdasarkan lokal path dan namespace URI tidak

mempertimbangkan awalan namespace. Yang paling umum dulakukan adalah

awalan namespace yang sama dipetakan ke URI yang sama pula pada okumen

XML dan stylesheet. Namun hal itu tidaklah diperlukan.

6.11 Other XSLT Elements

Fitur-ritur yang belum dan tidak akan kita bahas adalah :

1. Named templates

2. Numbering and sorting output elements

3. Conditional processing

4. Iteration

5. Extension elements and functions

6. Importing other stylesheets

Anda dapat mempelajari arti elemen-elemen diatas diluar kuliah ini.

Page 68: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

60 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 69: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Xpath 61 PAGE 10

7 XPath

Overview

XPath (Extensible Path Language) bukanlah bahasa XML, namun, XPath merupakan bahasa untuk mengalamati bagian-bagian didalam dokumen XML. Oleh karena itu, 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 70: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

62 PAGE 10

7.1 The Tree Structure of an XML Document

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 :

1. The root node

2. Element nodes

3. Text nodes

4. Attribute nodes

5. Comment nodes

6. Processing-instruction nodes

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

7.2 Location Paths

Yang paling berguna dalam ekspresi path adalah location path. 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. Setiap node location step dievaluasi terhadap

node tertentu didalam dokumen yang disebut node konteks.

The Root Location Path

Sederhananya adalah dengan memilih node root dari dokumen. Perintah ini

hanya ditulis dengan slash ( / ) yang menunjukan posisi absolut. Sebagai

contoh XSLT template rule menggunakan pola XPath slash untuk

mencocokan entri input dokumen tree dengan dan menuliskannya didalam

dokumen html.

Page 71: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Xpath 63 PAGE 10

<xsl:template match="/">

<html><xsl:apply-templates/></html>

</xsl:template>

Child Element Location Steps

Lokasi path selanjutnya adalah nama elemen single. Path ini akan memilih

semua elemen child dari konteks node denga spesifikasi nama yang sama.

Misalnya XPath profession akan mengarah kepada semua elemen

profession child pada konteks node.

<profession>computer scientist</profession>

<profession>mathematician</profession>

<profession>cryptographer</profession>

Misalnya pada dokumen :

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

xmlns:xsl=

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

<xsl:template match="people">

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

</xsl:template>

<xsl:template match="person">

<xsl:value-of select="name"/>

</xsl:template>

</xsl:stylesheet>

pada penggalan <xsl:value-of select="name"/> maksudnya adalah

akan menampilkan semua nilai (value-of) dari elemen name.

Attribute Location Steps

Kita juga dapat memilih elemen tertentu menggunakan nilai atribut tertentu

dengan menggunakan simbol “@”. Misalnya kita menggunakan @born, maka

yang akan ditampilkan adalah nilai yang dimiliki oleh atribut born.

<xsl:template match="person">

<tr>

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

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

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

Page 72: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

64 PAGE 10

</tr>

</xsl:template>

The comment(), text(), and processing-instruction( ) Location Steps

Dikarenakan komentar dan text tidak memiliki nama, maka node comment( )

dan text( ) dapat mencocokan semua node komentar atau text kedalam node

kontext. Setiap komentar merupakan node comment. Setiap node text yang

ada didalam elemen merupakan text yang kontigus selagi tidak dipisahkan

oleh tag. Entity references dan CDATA sections dipisahkan kedalam text dan

markup dan tidak mengganggu node text.

Secara default, XSLT stylesheets melakukan proses node teks tetapi tidak

untuk node komentar. Namun, kita juga dapat menambahkan proses node

komentar pada template XSLT stylesheets. Sebagai contoh, template rule

berikut menggantikan setiap comment dengan teks "Comment Deleted"

dengan tulisan italik.

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

<i>Comment Deleted</i>

</xsl:template>

Node processing-instruction( ) akan memilih semua processing-instruction child

dari node konteks. Jika itu merupakan argumen maka yang akan dipilih

hanyalah yang sesuai dengan spesifikasi target.

Wildcards

Wildcard cocok digunakan pada elemen dan tipe node yang berbeda. Ada tiga

jenis wildcard : *, node( ), and @*.

Tanda asterik (*) cocok dengan semua elemen node tanpa memperhatikan

namanya namun tidak dapat digunakan pada attributes, node teks, komentar,

atau node processing-instruction. Contoh penggunaan perikut akan

menampilkan semua nilai elemen yang ada pada dokumen :

<xsl:template match="*"><xsl:apply-templates

select="*"/></xsl:template>

wildcard node( ) tidak hanya untuk semua tipe elemen, namun dapat juga

dengan node teks, node processing-instruction, node namespace, node

attribute, dan node komentar.

Wildcard @* dapat digunakan pada semua node atribut.

Page 73: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Xpath 65 PAGE 10

Multiple Matches with |

terkadang kita sering ingin mencocokan node dengan beberapa jenis, misalnya

berdasarkan elemen atau atribut ataupun yang lainnya. Dengan sebab itu, kita

dapat mengkombinasikan semua location path dan step node dengan vertikal

bar ( | ). Misalnya kita ingin menampilkan semua elemen first_name,

last_name, profession dan hobby :

<xsl:template

match="first_name|last_name|profession|hobby">

<xsl:value-of select="text( )"/>

</xsl:template>

7.3 Compound Location Paths

Sepanjang yang telah kita pelajari, yang kita ketaui adalah pencocokan elemen,

/, comment( ), text( ) dll. Namaun kesemuanya itu dapat kita gabungkan

dengan /. namun ada pengecualian untuk //, ini sama halnya dengan Unix Shell

sintaks untuk untuk navigasi hirarki filesistem.

Building Compound Location Paths from Location Steps with /

Lokasi step dapat dikombinasikan dengan slash ( / ) untuk membuat lokasi

compound. Penulisan ini hampir sama dengan penulisan lokasi file atau folder

pada direktori hardisk. Misal ada dokumen XML :

<people>

<person>

<name>

<first_name>Alan</first_name>

<first_name>Richard</first_name>

</name>

</person>

</people>

Contoh expresi XPart untuk menampilkan “Alan” dan “Richard” :

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

Page 74: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

66 PAGE 10

Selecting from Descendants with //

Double slash ( // ) digunakan untuk memilih semua konteks node termasuk

dirinya sendiri. Misalnya kita ingin memilih semua elemen nama yang ada

didalam dokumen, maka expresi XPath-nya adalah :

//name

Selecting the Parent Element with ..

double period ( .. ) digunakan untuk memilih parent node. Misalnya kita ingin

memilih semua atribut id pada dokumen, maka expresi XPath-nya adalah :

//@id/..

Selecting the Context Node with .

Single period ( . ) digunakan untuk mengindikasi konteks node. Didalam

XSLT, hal ini sering digunakan jika kita ingin mengambil nilai yang sedang

dicocokan. Misalnya, template rule berikut menyalin konten pada setiap

komentar didalam input dokumen ke elemen span pada output dokumen :

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

<span class="comment">

<xsl:value-of select=".">

</span>

</xsl:template>

7.4 Predicates

Secara umum, sebuah ekspresi XPath dapat merujuk ke lebih dari satu node.

Setiap langkah dilokasi path mungkin memiliki predikat yang dipilih dari

current list node pada step expression. Predikat yang berisi expresi boolean

akan diuji untuk masing-masing node dalam konteks daftar node. Jika expresi

tersebut palsu, maka node tersebut akan dihapus dari daftar, jika tidak maka node tersebut akan tetap ada.

Misalnya kita ingin mencari semua elemen profession yang mempunyai nilai

“physicist”. Maka expresi XPath-nya adalah : //profession[. = "physicist"].

Selain double quote, kita juga dapat menggunakan single-quote untuk mengapit

Page 75: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Xpath 67 PAGE 10

elemen. Contohnya : <xsl:apply-templates select=

"//profession[.= 'physicist']" />. selain itu jika kita ingin

menampilkan semua elemen porson yang mempunyai elemen anak profession

dengan nilai physicist, maka Ekspresi XPathnya adalah //person[profession="physicist"]. Atau jika ingin mencari elemen person

dengan id p4567, kita dapat menyisipkan karakter “@” pada depan nama

atribut : //person[@id="p4567"]. Selain tanda “ = ”, kita juga dapat

menggunakan expresi boolean yang lain, misalnya <, >, <=, >= dan !=.

misalnya kita akan menampilkan seluruh elemen person yang mempunyai

atribut born antara 1910 dan 1920 : //person[@born<=1920 and

@born>=1910], namun jika itu ditulis dalam sebuah dokumen XML, maka

expresi tersebut harus ditulis dengan : <xsl:apply-templates

select="//person[@born&lt;=1920 and @born&gt;=1910]"/>

7.5 Unabbreviated Location Paths

Setiap location step didalam location path, mempunyai dua bagian, yaitu axis

dan node test. Axis berfungsi untuk mengarahkan perjalanan dari konteks

node untuk mencari node selanjutnya yang akan dikunjungi. Sedangkan node

test menunjukan node yang mana yang akan diincludekan dedalam axis.

Dalam abbreviated location path, axis dan node test dikombinasikan, sedangkan

didalam unabbreviated location path, akan dipisahkan dengan double colon ( : :

). misalnya abbreviated location path people/person/@id diubah untuk location

path. Langkah pertama adalah memilih node elemen people mendekati child

axis. Selanjutnya pilih node elemen person mendekati child axis. Selanjutnya pilih node atribut id mendekati chidl axis. Jika ditulis dengan sintaks

unabbreviated, maka location pathnya dapat dituliskan dengan :

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

Unabbreviated location path boleh mempunyai dan digunakan didalam predikat.

Misalnya abbreviated path

/people/person[@born<1950]/name[first_name="Alan"] akan menjadi

/child::people/child::person[ attribute::born < 1950 ] /child::name[

child::first_name = "Alan" ].

Page 76: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

68 PAGE 10

7.6 General XPath Expressions

Location path tidak hanya digunakan didalam ekspresi XPath, namun XPath

juga mengambalikan nilai number, boolean, dan string.

Numbers

Nilai yang number boleh diisikan adalah semua number 8-byet, IEEE 754

floating-point double. Selain itu floating-point numbers dengan rentang dari

4.94065645841246544e-324 sampai 1.79769313486231570e+308 (positif

atau negatif) dan nol. XPath menyediakan lima operator aritmatika dasar yaitu

:

+ Addition

- Subtraction

* Multiplication

div Division

mod Taking the remainder

Contoh penggunaannya adalah : <xsl:value-of select="6*7"/>, dalam template

XSLT sisipan string 42 ke output tree ketika template diinstansiasi.

Contohlain adalah template rule akan menghitung abad pada tahun lahir

person :

<xsl:template match="person">

<century>

<xsl:value-of select="(@born - (@born mod 100))

div 100"/>th

</century>

</xsl:template>

Strings

kita dapat menggunakan “=” dan “!=” untuk membandingkan apakan dua buah

string sama atau tidak. Selain itu, kita juga dapat menggunakan operator <, >,

<=, dan >= untuk membandingkan string, tapi kecuali kedua string

tersebut direpresentasikan dengan number.

Page 77: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Xpath 69 PAGE 10

Booleans

Boolean merupakan nilai pasti yaitu true atau false. Namun, XPath tidak

menyediakan literal untuk nilai boolean. Jika kita menggunakan <xsl:value-of

select="true"/> pada XSLT stylesheet, maka XSLT processor akan

menganggap elemen child dari conteks node dengan nama true. Namun fungsi

true( ) and false( ) dapat menggantikan literatur tadi. Selain itu, kita juga dapat

menggunakan ekspresi =, !=, <, >, >=, dan <= dimana hasil dari operasi

tersebut menghasilkan nilai boolean. Selain itu kita juga dapat menggabungkan

nilai expresi dengan operator and dang or. Contoh penggunaannya didalam XSLT :

<xsl:template match="profession">

<xsl:if test=".='computer scientist'

or .='physicist'">

<xsl:value-of select="."/>

</xsl:if>

</xsl:template>

7.7 XPath Functions

XPath memberikan beberapa fungsi yang akan berguna dalam penggunaan

predikat atau raw expression. Nilai kembali dari fungsi XPath adalah :

Node-Set Functions

Fungsi node-set digunakan untuk mengetahu informasi tentang node-set.

Fungsi yang sering digunakan adalah position( ) yang berguna untuk

mengarahkan pencarian langsung pada posisi tertentu. Selain itu kita juga bisa

menentukan posisi dasar yaitu kita dapat menggunakan fungsi last( ) untuk

mengarahkan langsung pada elemen terahit atau fungsi firts( ) untuk

mengarahkan pencarian pada elemen pertama. Fungsi count( ) berguna untuk

menghitung jumlah elemen yang dimaksud. Misalnya penggunaannya adalah

count(//name), maka akan mengembalikan nilai jumlah semua elemen name

didalam dokumen. Fungsi id( ) umumnya digunakan untuk penyingkatan

sintaks XPath. Ini mengijinkan kita untuk membentuk absolut location path

yang tidak dimulai dari elemen root. Fungsi local-name( ) menggunakan node-

set sebagai argumen dan mengembalikan local part dari node ptertama dalam

set itu sendiri. Fungsi namespace-uri( ) menggunakan node-set sebagai

argumen dan mengembalikan namespace URI dari node pertama didalam set.

Page 78: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

70 PAGE 10

Fungsi name( ) menggunakan node-set sebagai argumen dan mengembalikan

nama prefiks dari node pertama didalam set.

String Functions

XPath mengandung fungsi basik pemprosesan string misalnya, menghitung

panjang string, mengubah string menjadi hurup besar atau sebaliknya,

memotong string, dll. Fungsi string berguna untuk mengkonfersi semua

argumen menjadi string. Termasuk boolean akan dikofersi menjadi string

“true” atau “false”. Fungsi starts-with( ) mengambil dua argumen string. Fungsi ini mengembalikan nilai true jika argumen pertama diawali dengan

argumen yang kedua. Funsi contains( ) mengambil dua string yang digunakan

untuk memeriksa apakan suatu string ada pada string yang lain. Fungsi ini

mengembalikan nilai true jika string pada argumeng pertama mengandung

string pada argumen kedua. Fungsi substring-before( ) berguna untuk

mengambil kata-kata pada argumen pertama sebelum string pada argumen

yang kedua.

Boolean Functions

fungsi boolean adalah mengembalikan nilai true atau false. Fungsi yang

digunakan adalah true( ) dan false( ). selain kedua tersebut, kita juga dapat

mengoperasikan string atau number sehingga menjadi nilai boolea. Misalnya

dengan menggunakan operator =, !=, <, >, <=, >=. selain itu kita jga dapat

menggunakan fungsi not( ). Contohnya not(@id>400).

Number Functions

Fungsi yang disediakan adalah fungsi untuk mengolah number. Misalnya fungsi

number( ) digunakan untuk menkonfersi semua ekspresi menjadi number.

Namun dengan catatan bahwa nilai tersebut harus angka. Selain itu ada juga

fungsi round( ) untuk mengubah nilai decimal menjadi pembulatan kebawah,

floor( ) untuk membulatkan nilai desimal sesuai dengan nilainya, and ceiling( )

untuk membulatkan nilai desimal dengan pembulatan keatas.

Page 79: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Xpath 71 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 80: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

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

Saat ini banyak sekali browser yang telah mendukung simple

XLink yang lebih sedikit dibanding dengan fungsionalitas

elemen A pada HTML. Banyak web browser yang tidak mendukung Xling sama sekali. Namun aplikasi yang kita buat

sendiri dapat mengeturnya lebih banyak. XLink dapat

mendeskripsikan tabel konten atau indeks. Dengan aplikasi

yang berbeda maka akan berbeda pula mengartikan XLink.

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 81: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Xlink 73 PAGE 10

8.1 Simple Links

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

dua resource. Source awal dari koneksi terdapat elemen link pada dirinya

sendiri. Sedangkan target diidentifikasikan oleh Uniform Resource Identifier

(URI). Link mulai berjalan dari source asal ke source target. source asal selalu

berupa elemen XML. Sedangkan source target dapat berupa dokumen XML,

atau elemen-elemen tertentu didalam dokumen XML, grup elemen dalam

dokumen XML, teks span didalam dokumen XML, atau sesuatu yang bukan

merupakan dokumen XML seperti MPEG movie, file PDF, atau gambar JPG.

Simple XLink ditulis didalam dokumen XML sebagai elemen yang mempunyai

atribut xlink:type dengan nilai simple dan atribut xlink:href dengan nilai URI

target. Contohnya kita mempunyai dokumen XML pada ftp server dengan

alamat ftp://archive.org/pub/etext/etext93/wizoz10.txt :

<novel>

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

<author>L. Frank Baum</author>

<year>1900</year>

</novel>

Selanjutnya dokumen berikut akan menggunakan XLink untuk dihubungkan

dengan dirinya dengan file dokumen diatas :

<novel xmlns:xlink= "http://www.w3.org/1999/xlink"

xlink:type = "simple" xlink:href =

"ftp://archive.org/pub/etext/etext93/wizoz10.txt">

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

<author>L. Frank Baum</author>

<year>1900</year>

</novel>

8.2 Link Behavior

Jika kita lihat bagaimana XLink dipresentasikan dengan hubungan antara dua

resource. Misalnya ketika browser menemukan elemen novel yang

menggunakan elemen http URL, seharusnya browser akan mengambil link

novel dan menampilkannya didalam jendela browser sehingga menggantikan

isi dari browser, atau bisa saja membukanya pada jendela yang baru. Misalnya,

Page 82: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

74 PAGE 10

konten yang terdapat pada beberapa link yang terhubung langsung dalam

dokumen, seperti pada lemen image berikut :

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

xlink:href="http://www.turing.org.uk/turing/pi1/bus.

jpg" />

xlink:show

pilinah atribut xlink:show mempunyai lima kemungkinan nilai :

1. new

Membuka wondow baru dan menampilkan kontent link URI (source

target) pada window tersebut.

2. replace

Menampilkan resource target pada window awal dan menggantikan

dokumen awal

3. embed

menampilkan resource target didalam dokumen awal pada lokasi link

4. other

5. none

xlink:actuate

pilinah atribut xlink:actuate mempunyai lima kemungkinan nilai :

1. onLoad

Link harus diikuti pada saat aplikasi baru dijalankan.

2. OnRequest

Link yang harus diikuti bila pengguna meminta rekues.

3. Other

Ketika mengikuti link ditentukan oleh markup lain dalam dokumen yang

tidak ditentukan oleh XLink.

4. None

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

8.3 Link Semantics

Merupakan sebuah link yang menghubungkan antara dua buah resource

dimana resourcenya dapat berupa dokumen XML atau bukan. Tapi jika filenya

berberbentuk dokumen XML, maka hubungan keduanya dapat sedikit diubah.

Misalnya link dapat mengindikasikan hubungan parent-child, hubungan previous-

Page 83: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Xlink 75 PAGE 10

next, hubungan employer-employee, hubungan customer-supplier, dan yang

lainnya. Atribut XLink dapat memiliki atribut xlink:title dan xlink:role untuk

menspesifikasikan maksud dan tujuan serta arti hubungan antara keduanya.

atribut xlink:title mengandung sedikit keseluruhan mendeskripsikan remote

resource untuk ditunjukan sebagai tooltip saat user memindahkan kursor ke

link. Sedangkan xlink:role mengandung URI. 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>

8.4 Extended Links

Olehkarena simple link tidak mendeskripsikan arah hubungan antara dokumen

dengan remote resource, maka Extended Link dapat mendeskripsikan

kumpulan resource dan kumpulan path antara resource. Setiap koneksi path

terdapat dua resource. Mungkin saja setiap resource terhubung dengan satu

resource lain, dua resource lain atau bahkan tidak memiliki resource (nol

resource), resource yang lain, atapun subser sesource didalam kumpulan

tersebut.

Didalam XML, Extended Link direpresentasikan oleh elemen Extended Link,

yang tipe elemen atributnya adalah xlink:type dengan nilai extended.

Contohnya adalah sebagai berikut :

<novel xlink:type="extended">

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

<author>L. Frank Baum</author>

<year>1900</year>

</novel>

Page 84: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

76 PAGE 10

selain extended, nilai untuk atributnya dapat berupa locator dan arc. Atribut

dengan nilai locator mengandung URI untuk resource pada lokasi tersebut,

sedangkkan arc merupakan path antara resource, selain atribut dirinya sendiri

arc juga memiliki atribut xlink:from dan xlink:to dimana atribut xlink:from

untuk identifikasi resource sumber sedangkan atribut xlink:to untuk

identifikasi resource tujuan.

Local resource

locator merepresentasikan remote resource, yaitu resouce yang tidak terletak pada dokumen yang mengandung extended link. Sedangkan extended

link harus memiliki local resource. Olehkarena itu, untuk mendeskripsikan

local resouce adalah dengan cara :

<author xlink:type="resource">L. Frank Baum</author>

atau kita juga dapat menambahkan label pada link tersebut. Contoh

penggunaannya adalah pada contoh berikut ini :

<author xlink:type="resource" xlink:label="baum">L.

Frank Baum</author>

Element title

kita dapat menggunakan atribut xlink:title untuk mendeskripsikannya. Atribut

ini dubuat dengan tujuan untu memberikan judul dari link. Contoh

penggunaannya adalah :

<edition xlink:type="locator"

xlink:href="urn:isbn:0700609857"

xlink:title="University Press of Kansas"

xlink:role="http://www.kansaspress.ku.edu/"

xlink:label="ISBN0700609857">

<publisher_info xlink:type="title">

<ul>

<li>The Kansas Centennial Edition</li>

<li>Illustrated by Michael McCurdy</li>

<li>Foreword by Ray Bradbury</li>

<li>1999</li>

<li>216 pages</li>

<li>SRP: $24.95</li>

</ul>

Page 85: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Xlink 77 PAGE 10

</publisher_info>

</edition>

8.5 Linkbases

Salah satu revolusi pada pada fitur XLink dimana memiliki kemampuan untuk

mendefinisikan antar dokumen tanpa kita harus mengontrolnya. Misalnya

dokumen yang memiliki third-party Link. Sebuah dokumen XML yang

mengandung link third-party disebut linkbase. Linkbase membentuk link dari

dokumen lain ke dirinya.

8.6 DTD untuk XLink

Sebuah link pada dokumen XML harus falid, 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 novel (title, author, year)>

<!ATTLIST novel xmlns:xlink CDATA #FIXED

'http://www.w3.org/1999/xlink' xlink:type (simple)

#FIXED 'simple' xlink:href CDATA #REQUIRED>

<!ELEMENT title (#PCDATA)>

<!ELEMENT author (#PCDATA)>

<!ELEMENT year (#PCDATA)>

contoh penggunaan deklarasi tersebut pada dokumen adalah sebagai berikut :

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

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

<author>L. Frank Baum</author>

<year>1900</year>

</novel>

Page 86: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

78 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 87: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

XPointer 79 PAGE 10

9 XPointer

Overview

XPointer bukanlah merupakan sintaks XML. 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 88: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

80 PAGE 10

9.1 XPointers pada URL

URL yang mengidentifikasi 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>

ketika menemukannya, maka browser akan langsung menscrol halaman sehingga bagian tersebut langsung ditampilkan. Namun hal tersebut

bekerja pada HTML dokumen. Namun hal itu masih memiliki kekurangan, untuk mengarah ke point tersentu, kita kita harus mengubah dokumen yang akan dituju agar kita dapat memasukan penandanya. XPointer berupaya menghilangkan haltersebut, dimana kita dapat menentukan sendiri dimana kita akan menentukan link penggunaan ekspresi XPath sebagai penanda bagian dokumen. Selain itu, XPointer dapat meng-ekspan

XPath dengan menyediakan operasi untuk memilih poin tertentu pada

Page 89: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

XPointer 81 PAGE 10

dokumen XML. misalnya, sebuah XPointer dapat menjelaskan berbagai teks yang dipilih oleh mouse.

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)

jika kita tidak dapat menemukan apa yang dlakukan XPointer, kita dapat memberikan langkah alternatif pencarian dengan XPointer pula. Misalnya, jika XPointer tidak menemukan elemen lat_name, ia mencari elemen

last_name sebagai penggantinya :

xpointer(//first_name)xpointer(//last_name)

9.2 XPointers pada Link

XPointer dapat digunakan dimanapun dia dipasang. Baik itu didalam URL

ataupun link. Misalnya, kita ingin mengarahkan langsung pada bagian dokumen yang langsung mengarah pada dokumen nama pada posisi pertama, dapat kita tuliskan linknya menjadi :

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

Page 90: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

82 PAGE 10

“<” dapat ditulis dengan %3C, tanda petik dua ( “ ) akan ditulis dengan %22, é dapat dutuliskan dengan %C3%A9 dan sebagainya.

9.3 Bare Names

XPointers dapat memberikan sejumlah ekstensi yang cocok untuk XPath.

Salah satu contohnya adalah 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.

Contohnya, kita ingin meng-link ke pilihan Motivation dan Summary

namespace pada dokumen XML yang dialamati dengan :

http://www.w3.org/TR/1999/REC-xml-names-19990114/xml-names.xml. Penulisannya tagnya dapat ditulis dengan :

<div1 id='sec-intro'>

9.4 Child Sequences

XPointer dapat memilih elemen dengan posisi relatif untuk elemen yang

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

2]/child::*[position( ) = 3]) memilih tiga elemen child pada elemen child kedua

dari elemen root. Namun, 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( ).

9.5 Namespaces

XPointers memerlukan mekanisme sendiri untuk mengikat prefiks namespace

ke URI namespace. Hal ini dilakukan dengan menempatkan satu atau lebih

bagian xmlns sebelum bagian xpointer dan dapat ditulis dengan

Page 91: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

XPointer 83 PAGE 10

xmlns(prefix=URI). Misalnya pemetaan XPointer prefiks svg pada namespace

http://www.w3.org/2000/svg mencari semua elemen rect dalam namespace :

xmlns(svg=http://www.w3.org/2000/svg)

xpointer(//svg:rect)

9.6 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 92: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

84 PAGE 10

9.7 Ranges

Range merupakan jangkauan parsing karakter data antara dua poin. Fungsi yang ada pada XPointer untuk range adalah :

1. Fungsi range( )

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

2. Fungsi range-inside( )

Untuk setiap elemen node akan sama sebagai batasan yang

dikembalikan oleh range( ).

3. Fungsi range-to( ) Mengambil sebuah lokasi yang harus mengembalikan tepat satu

lokasi. Start-points dari konteks node merupakan start-points yang akan dikembalikan

4. Fungsi string-range( ) Mengambil argumen sebagai sebuah ekspresi XPath dan

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

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

eksplisit.

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

yang mengandung XPointer.

7. Fungsi Origin( )

Digunakan ketika dokumen link out-of-line dan mengarah pada node asal.

Page 93: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

XPointer 85 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 94: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

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

Tujuan

1. Mahasiswa dapat memahami penggunaan schema

2. Mahasiswa dapat menggunakan schema pada dokumen XML

3. Mahasiswa dapat membedakan antara schema dan DTD

Page 95: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

XML Schemas 87 PAGE 10

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

1. Element nesting

2. Element occurrence constraints

3. Permitted attributes

4. Attribute types and default values

Sedangkan skema standar memasukan :

1. Simple and complex data types

2. Type derivation and inheritance

3. Element occurrence constraints

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

10.2 Skema Dasar

Contoh penulisan skema :

<?xml version="1.0"?>

<xs:schema

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

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

</xs:schema>

Document Organization

Setiap dokumen skema terdiri dari satu elemen root xs:schema yang berisi

elemen deklarasi untuk semua elemen dan atribut yang mungkin muncul.

Page 96: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

88 PAGE 10

Elemen yang dideklarasikan oleh elemen top-level pada skema dianggap

elemen global.

Annotations

dengan menggunakan komentar pada XML, parser tidak menjamin bahwa

komentar akan tetap utuh hingga proses parsing selesai. Untuk

mengakomodasi hal tersebut, elemen skema memiliki sebuah optional elemen

xs:annotation sebagai elemen anak pertama. Annotation memiliki konbinasi:

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>

xml:lang untuk mengidentifikasi bahasa pesan singkat.

Elemen xs:appinfo berisi kombinasi karakter data atau markup dari skema yang akan

diincludekan

Element Declarations

kita juga dapat mendeklarasikan elemen yang akan digunakan. Contoh

pendeklarasian berikut dengan deklarasi single elemen :

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

Simple Types

kita juga dapat mendeklarasikan tipe data yang ingin kita gunakan. Adapun tipe

data yang dapat digunakan dalam hal ini adalah : anyURI, base64Binary,

Page 97: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

XML Schemas 89 PAGE 10

boolean, byte, dateTime, duration, integer, language, Name, normalizedString,

string dan token

Attribute Declarations

atribut dideklarasikan menggunakan elemen xs:attribute. Atribut dapat

dideklarasikan secara global atau pada bagian elemen tertentu saja. Contoh :

<xs:element name="fullName">

<xs:complexType>

<xs:simpleContent>

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

<xs:attribute name="language"

type="xs:language"/>

</xs:extension>

</xs:simpleContent>

</xs:complexType>

</xs:element>

10.3 bekerja dengan Namespace

Skema dibuat dengan tujuan untuk mendukung dan menjelaskan XML

namespace.

Target Namespaces

Menggabungkan skema dengan XML namespace sangat sederhana. Kita hanya

menambahkan atribut targetNamespace ke lemen root xs:schema seperti :

<xs:schema

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

targetNamespace="http://namespaces.oreilly.com/xmlnu

t/address">

Controlling Qualification

ElementFormDefault dan atribut attributeFormDefault dari elemen

xs:schema kontrol lokal menyatakan apakah elemen dan atribut harus

memenuhi namespace-qualified dalam dokumen. Misalnya atribut

Page 98: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

90 PAGE 10

attributeFormDefault yang ditetapkan untuk memenuhi syarat dalam skema

seperti ini:

<xs:schema

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

targetNamespace="http://namespaces.oreilly.com/xmlnu

t/address"

xmlns:addr="http://namespaces.oreilly.com/xmlnut/add

ress" attributeFormDefault="qualified">

10.4 Complex Types

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.

Occurrence Constraints

salah satu fitur skema yang harus sesuai dengan DTD kemampuan untuk

secara eksplisit menetapkan minimum dan maksimum jumlah elemen yang

mungkin terjadi pada titik tertentu di dalam dokumen menggunakan

minOccurs dan atribut yang maxOccurs xs:elemen.

<xs:element name="fullName">

<xs:complexType>

<xs:sequence>

<xs:element name="first"

type="addr:nameComponent"/>

<xs:element name="middle"

type="addr:nameComponent" minOccurs="0"/>

<xs:element name="last"

type="addr:nameComponent"/>

</xs:sequence>

</xs:complexType>

</xs:element>

Page 99: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

XML Schemas 91 PAGE 10

Types of Element Content

Empty

Simple content

Mixed content

Any type

10.5 Empty Elements

Contoh deklarasi untuk tipe contactsType :

<xs:complexType name="contactsType">

<xs:sequence>

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

<xs:complexType>

<xs:attribute name="number"

type="xs:string"/>

</xs:complexType>

</xs:element>

</xs:sequence>

</xs:complexType>

pendeklarasian elemen kosong pada dokumen diatas adalah xs:element

deklarasi untuk elemen phone yang mengandung definisi tipe kompleks.

10.6 Simple Content

Elemen xs:simpleContent telah digunakan untuk mendeklarasikan elemen

sederhana.

<xs:element name="fullName">

<xs:complexType>

<xs:simpleContent>

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

<xs:attribute name="language"

type="xs:language"/>

</xs:extension>

</xs:simpleContent>

</xs:complexType>

</xs:element>

Page 100: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

92 PAGE 10

10.7 Mixed Content

Allowing Mixed Content

Atribut mixed dari complexType mengontrol apakah karakter data mungkin

muncul didalam elemen yang terkait

Controlling Element Placement

kita dapat menggunakan elemen xs:all menyusuk bagian dokumen. Elemen

xs:all harus muncul diatas konten model. xs:all memberitahukan schema

processor bahwa setiap yang mengandung elemen harus muncul pada

dokumen target.

Using Groupsappear

hanya elemen xs:attributeGroup yang memungkinkan untuk penggunaan

atribut yang dikelompokan dan mereferensi sebagai unit. Elemen xs:group

memungkinkan untuk sekuensial, memilih, dan grup model.

10.8 Allowing Any Content

Skema aplikasi mendukung kita sebuah elemen xs:any dimana elemen ini

membolehkan atribut yang menunjukan tingkat validasi yang harus diberikan

pada konten jika ada. Selain itu dia juga dapat menerima namespace target

yang digunakan sebagai batas konten. 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>

Using Multiple Documents

skema yang besar juga dapar dipisahkan menjadi beberapa bagian yang lebih

kecil sehingga bagian-bagian tadi dapat menjadi beberapa modul yang juga

dapat digunakan pada dokumen lain. Jika ada beberapa dokumen XML ada yg

memiliki ciri yang sama, maka haltersebut dapat dituliskan dengan skema

Page 101: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

XML Schemas 93 PAGE 10

menjadi satu modul dan digunakan oleh beberapa dokumen. Ada tiga

mekanisme yang diberikana, yaitu : xs:include, xs:redefine, dan xs:import.

Derived Complex Types

kita dapat menggunakan elemen xs:extension dan xs:restriction untuk

mengetahui cara kerjanya tanpa harus berangkat kedalam node. Tipe yang

dihasilkan oleh xs:extension setara dengan penambahan konten dengan

deklarasi baru ke conten deklarasi dasar. Sedangkan elemen xs:restriction

memungkinkan hubungan secara langsun antara dokumen.

Substitution Groups

merupakan kimpulan elemen yang semuanya dapat dipertukankan dengan

elemen tertentu dan subtitution goup juga sdisebtu sebagai head element.

Untuk membuat substitution group, elemen yang diperlukan harus dideklarasi

termasuk atribut substitutionGroup yang merupakan nama head untuk grup

tersebut. Dan dimanapun elemen head itu dideklarasikan yang merujuk pada

skema, maka setiap anggota substitution group juga muncul.

10.9 Controlling Type Derivation

Abstract Elements and Types

atribut abstract berlaku untuk tipe dah deklarasi elemen. Jika diset true, maka

elemen atau tipe tersebut tidak dapat mencul secara langsung. Jika sebuah

elemen dinyatakan sebagai abstract, maka member dari substitution group

harus muncul. Namun jika sebuah tipe dinyatakan dengan abstract, maka tidak

ada elemen yang bertipe tersebut akan muncul.

The Final Attribute

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

Page 102: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

94 PAGE 10

Setting fixed Facets

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

cara menambahkan atribut fixed="true".

Uniqueness and Keys

dengan keterbatasan kemampuan atribut ID dan IDREF, skema XML

mengatasi keunikan sebuah elemen dengan yang lainnya dengan 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"/>

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

Page 103: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

XML Schemas 95 PAGE 10

</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 104: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

96 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 105: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Document Object Model 97 PAGE 10

11 DOCUMENT OBJECT MODEL

Overview

Bab ini mengenalkan DOM (Document Object Model) dan penggunaannya

dalam program untuk mengakses dan memanipulasi dokumen XML.

Tujuan

1. mengenal DOM XML

2. menggunakan objek-objek DOM XML untuk mengakses berbagai

bagian dokumen XML.

Page 106: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

98 PAGE 10

11.1 Pengantar

Document Object Model (DOM) mendefinisikan struktur lojik

dokumen XML, cara mengakses dan memanipulasinya. Ia menyediakan

Application Programming Interface (API) untuk dokumen XML dan HTML.

Nama DOM dipilih karena ia dirancang dekat dengan paradigma object-

oriented: dokumen XML tersusun atas object-object. Setiap object memiliki

property dan method pengaksesnya. Menggunakan DOM, pemrogram dapat

membuat dokumen XML, menelusuri strukturnya, menambah, memodifikasi,

atau menghapus elemen-elemen dan isinya.

Object-object dan method-method yang disediakan oleh DOM

dapat digunakan dalam beragam bahasa pemrograman, semisal Java, C++, dan

Visual Basic. Object-object ini dapat juga digunakan dalam bahasa script,

seperti VBScript dan JavaScript.

Untuk dapat menggunakan fitur-fitur XML, DOM menggunakan

parser DOM-enabled, misalnya MSXML. Parser DOMenabled membaca

dokumen XML, menelusurinya, meyakinkan bahwa ia valid. Kemudian, ia

membuat representasi memori dalam struktur data tree. Struktur tree

terbuat dari node-node. Anda dapat menggunakan object-object DOM yang

disediakan parser DOM-enabled untuk memanipulasi node-node ini.

11.2 Implementasi dalam MSXML Parser

Implementasi DOM dalam Microsoft XML Parser (MSXML)

menyediakan interface dasar dan lanjut. Interface dasar DOMDocument dan

IXMLDOMNode, dipakai untuk me-load atau membuat dokumen. Dengan

interface tambahan, dapat dilakukan operasi pelacakan error.

MSXML parser membuat struktur tree DOM. Struktur tree ini dapat

digunakan beragam aplikasi untuk mengakses dan memanipulasi dokumen

XML. Gambar 10.1 menunjukkan bagaimana struktur tree DOM digunakan

aplikasi untuk mengakses informasi dalam dokumen XML. Hal yang sama

berlaku untuk parser berbasis Java dan lainnya.

Bangunan dasar struktur tree DOM adalah node. Node adalah wadah

umum yang menyimpan informasi tentang elemen, atribut, isi, komentar, dan

instruksi pemrosesan dokumen XML. Dokumen XML dapat dipandang

sebagai node tunggal yang berisi seluruh node lain.

Page 107: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Document Object Model 99 PAGE 10

Gambar 10.1 DOM, Dokumen XML dan Application

Perhatikan potongan program berikut:

<PRODUCTDETAILS>

<PRODUCT>

<PRODID>P001</PRODID>

<PRODNAME> Beras </PRODNAME>

<PROD>5000</SALARY>

</PRODUCT>

<PRODUCT>

<PRODID>P002</PRODID>

<PRODNAME> Jagung </PRODNAME>

<PROD>5000</SALARY>

</PRODUCT>

</PRODUCTDETAILS>

Gambar berikut menunjukkan struktur tree-nya:

Dokumen XML

MSXML Library

Aplikasi Parser DOM Tree Root Child text Child text

PRODUCTDETAILS

PRODUCT PRODUCT

PRODID PRODNAME PRODPRICE PRODID PRODNAME PRODPRICE

P001 Beras 5000 P002 Jagung 4000

Page 108: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

100 PAGE 10

Setiap node tree memiliki nama, tipe dan nilai. Contoh node PRODID,

namanya PRODID, tipenya element, nilainya P001.

11.3 DOM Objects

Object-object utama XML DOM untuk mengakses tree adalah:

- Document : untuk mengakses seluruh dokumen XML.

- Element : untuk mengakses elemen

- Node : untuk mengakses node tree.

- NodeList : untuk mengakses beberapa node tree.

- Attr : untuk mengakses node attribute di tree.

- Text : untuk mengakses text dalam element.

- CDataSection : untuk mengakses node CData dalam node tree.

- ParseError : untuk memvalidasi dokumen XML berdasarkan XSD atau

DTD.

11.3.1 Document

Objek Document merupakan object level teratas. Method dan contoh

pemakainnya ditunjukkan dalam tabel berikut.

Method-method objek “Document”

Method Contoh Penjelasan

createElement(e

lementname)

docobj.createElement(“

PRODUCT”)

Membuat element baru

<PRODUCT>…</PROD

UCT>

createAttribute(

attributename)

docobj.createAttribute(“P

RODID”)

Membuat atribut

<PRODUCT

PRODID=…>…<PROD

UCT>

createCommen

t(text)

docobj.createComment(“

This is an XML

document”)

Membuat komentar

createTextNod

e(text)

docobj.createTextNode(

“Mini Bus”)

Membuat text untuk

node

createNode(typ

e,name,namespa

docobj.createNode(“elem

ent”, “PRODUCT”, “”)

Membuat node

Page 109: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Document Object Model 101 PAGE 10

ce-URI)

docobj.createNode(“elem

ent”, “prod:PRODUCT”,

“www.ecomatcybershopp

e.com/Products”)

docobj.createNode(1,

“PRODUCT”, “”)

getElementsByTagName(elemen

tName)

docobj.getElementsByTagName(“PRICE”)

Mengambil semua node dengan nama tag PRICE

load(XMLdocu

ment)

docobj.load(“http://www.

ecomatcybershoppe.com/

products.xml”)

docobj.load(“c:\products.

xml”)

Mengambil dokumen xml

loadXML(string) docobj.loadXML(“<?xmlv

ersion=‟1.0‟>

<PRODUCTS>

<PRODUCT>

<NAME> Barbie Doll

</NAME> </PRODUCT>

</PRODUCTS>”)

Mengambil dokumen

XML dari string

transformNode(

style

sheet object)

docobj.transformNode(“

products.xsl”)

This method takes a

style sheet object as its

parameter and

processes the node by

applying the

corresponding style

sheet template on the

XML document and

returns the result of

transformation.

Mengatur format

dokumen XML menurut

style sheet

appendChild(chi

ld node)

docobj.appendChild(root)

Membuat child baru dari

suatu node

Page 110: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

102 PAGE 10

save(destination

)

docobj.save(“http://www.

ecomatcybershoppe.com/

product.xml”)

Menyimpan dokumen

XML yang ada di RAM ke

disk

createDocumen

tFragment()

docobj.createDocumentF

ragment()

Membuat fragment

(bagian) dokumen XML

createProcessin

gInstruction(tar

get, text)

docobj.createProcessingIn

struction(“XML”,

“version=1.0”)

Membuat

ProcessingInstruction

createEntityReference(referenc

e name)

docobj.createEntityReference(“newref”)

Membuat objek EntityReference

createElementN

S(namespaceUR

I, qualifiedname)

docobj.createElementNS(„

http://www.cybershoppe.

com/element‟,

„NewE‟)

Membuat element di

namespace

createAttribute

NS(namespace

URI,

qualifiedName)

docobj.createAttributeNS

(„http://www.cybershoppe

.com/attribute‟,

„NewA‟)

Membuat atribut di

namespace

getElementsByT

agNameNS()

Docobj.getElementsByTag

NameNS(„http://www.w3.

org/1998/Math/MathML‟

,„apply‟)

Mengambil semua elemen

dengan tag yang sama dari

namespace

Objek Document memiliki property, ditunjukkan dalam tabel berikut.

Property Contoh Penjelasan

Async docobj.async = true

Jika true, script jalan terus

meskipun dokumen XML

sedang diload.

childNodes var firstelem =

docobj.childNodes.item(1

)

Daftar node anak dari

suatu parent node.

documentEleme

nt

var

root=docobj.documentEl

ement

Elemen root.

firstChild var

firstelem=docobj.firstChil

d

Anak pertama

Page 111: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Document Object Model 103 PAGE 10

lastChild var

firstelem=docobj.lastchild

Anak terakhir

parseError var error =

docobj.parseError

Memberikan object

ParseError yang berisi

status load dokumen

XML

readyState var stateinfo =

docobj.readyState if (stateinfo == 4)

//Document loading

//completed

{

:

[perform someaction]

: }

Status load mungkin :

1:loading; 2:loaded; 3:interactive;

4:completed.

readyState melihat

statusnya ini

xml document.write

(docobj.xml)

Menulis isi xml ke

browser

validateOnParse docobj.validateOnParse=

true

Jika true, berarti parser

harus memvalidasi

dokumen XML

Biasanya mengakses dokumen XML dengan method dan property object

Dokumen sudah cukup. Oleh karena itu, untuk object-object berikutnya,

penjelasan tidak dilakukan secara rinci.

11.3.2 Element

Object Element menyatakan seluruh node element dalam dokumen. Atribut

element dipandang sebagai property, bukan element child. Berikut adalah

method-method yang disediakan di object ini.

- getAttribute(attributeName)

- getAttributeNode(attributeName)

- getElementsByTagName(tagName)

- normalize()

- removeAttribute(attributeName)

Page 112: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

104 PAGE 10

- removeAttributeNode(attributeNode)

- setAttribute(attributeName, attributeValue)

- setAttributeNode(attributeNodeName)

- getAttributeNS(namespaceURI, localName)

- setAttributeNS(namespaceURI, qualifiedname,value)

- removeAttributeNS(namespaceURI, localName)

- getAttributeNodeNS(namespaceURI, localName)

- setAttributeNodeNS(namespaceURI, attribute)

- getElementsByTagNameNS(namespaceURI,localName)

11.3.3 Node

Object node menyatakan suatu node tree. Boleh jadi berupa elemen yang

berisi elemen anak. Objek node memiliki method berikut :

- appendChild(newChild)

- insertBefore(newNode, refNode)

- removeChild(nodeName)

- replaceChild(newNode, oldNode)

- hasChildNodes()

- cloneNode(Boolean)

Objek node juga memiliki property berikut:

- nodeName

- nodeType

- nodeValue

- childNodes

- firstChild

- lastChild

- text

- xml

11.3.4 NodeList

Objek NodeList menyediakan daftar node yang ada di tree. Dengan node list,

programmer dapat mengakses node manapun yang dikehendaki. Objek

NodeList memiliki method berikut:

- item(Number)

- nextNode()

Objek node memiliki property “length” untuk mengetahui berapa banyak

node dalam daftar node.

Page 113: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Document Object Model 105 PAGE 10

Perhatikan kode JavaScript berikut:

myelement=myxmlDoc.getElementsByTagName("emp");

for(i=0; i< myelement.length; i++)

alert(myelement.item(i).xml);

Kode ini mengambil daftar node dengan nama “emp”, disimpan di variabel

“myelement”. Looping for sepanjang “length” selanjutnya menelusuri node

dan menampilkan isinya.

11.3.5 Attr

Objek Attr menyatakan “attribute” suatu objek Element. Objek ini mewarisi

property dan method objek Node. Hanya, oleh DOM ia tidak dipandang

sebagai node anak dari suatu element, tetapi sebagai property.

11.3.6 Text

Objek ini menyatakan text dalam node tree, memiliki method

“splitText(number)”, untuk memisahkan text.

11.3.7 CDataSection

Objek ini menyatakan seksi CDATA dalam node tree. Node ini digunakan

untuk mengabaikan bagian teks yang biasanya dikenali sebagai markup.

11.3.8 ParseError

Objek ini memberi informasi tentang error penelusuruan terkini. Objek ini

memiliki atribut berikut:

- errorCode

- reason

- line

- linePos

- srcText

Perhatikan kode berikut:

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

Page 114: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

106 PAGE 10

prodxml.async = false;

prodxml.load("product.xml");

if (prodxml.parseError.errorCode != 0) {

alert("A parse error occurred.");

} else {

alert(prodxml.documentElement.xml);

}

Setelah diload, akan diperiksa apakah ada error. Jika “errorCode” bernilai 0 berarti tidak ada kesalahan dalam dokumen XML.

Berikut adalah contoh kode product.xml dan JavaScript yang mengaksesnya.

<?xml version="1.0"?>

<productdetails>

<product>

<prodid>P001</prodid>

<prodname>Beras</prodname>

<price>5000</price>

</product>

<product>

<prodid>P002</prodid>

<prodname>Jagung</prodname>

<price>6000</price>

</product>

<productdetails>

Kode Javascript berikut digunakan untuk menampilkan rincian setiap

karyawan.

<HTML>

<HEAD>

<SCRIPT LANGUAGE="JavaScript">

function Navigate() {

//Create an instance of the DOMDocument object.

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

var i;

myxmldoc.async=false;

//Load the XML document. Specify the appropriate path.

myxmldoc.load("product.xml");

//Check whether the process of loading is complete and that

//there are no errors in the XML document.

Page 115: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Document Object Model 107 PAGE 10

if (myxmldoc.readyState == 4 &&

myxmldoc.parseError.errorCode==0)

{

//Store the reference to the root element of the XML

//document in the variable “root”

var root=myxmldoc.documentElement;

//Traverse through the child nodes of the root element.

for (i=0; i< root.childNodes.length; ++ i)

{ //Display the XML code for each child node.

alert (root.childNodes.item(i).xml);

}

}

//If the XML document contains an error, display an error

//message.

else

{

alert("Failed to load the document. Check whether your

XML document is well-formed");

}

}

</SCRIPT>

</HEAD>

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

</BODY>

</HTML>

Contoh lain akan diberikan di buku praktikum.

Page 116: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

108 PAGE 10

Rangkuman

1. DOM adalah antarmuka pemrograman aplikasi yang mengijinkan

aplikasi mengakses dokumen XML.

2. Objek-objek DOM dipakai untuk mengakses dan memanipulasi

dokumen XML.

3. MSXML parser membuat struktur tree representasi dokumen XML.

4. Node adalah wadah berisi informasi tentang elemen, atribut, dan isi

dokumen XML.

5. Objek DOM berikut digunakan untuk memanipulasi data dalam

dokumen XML: Document , Element, Node, NodeList, Attr, Text,

CDataSection, ParseError

Page 117: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Document Object Model 109 PAGE 10

Kuis Benar Salah

1. Data XML dikelola DOM dalam bentuk struktur linked list (list berkait). 2. DOM dibuat oleh Microsoft.

3. Object yang merupakan root dari struktur tree DOM adalah “Element”

4. ParseError digunakan untuk memeriksa kesalahan validasi dokumen

XML.

5. Mendapatkan node-node anak digunakan properti ChildNodes.

Page 118: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

110 PAGE 10

Pilihan Ganda

Petunjuk: Pilihlah jawaban yang paling tepat!

1.

DOM singkatan dari :

A. Directory Object Model D. Document Object Medium

B. Document Oriented Medium E. Document Object Model

C. Document Oriented Model

2 DOM dibuat untuk :

A. Mengakses dokumen XML D. Memanipulasi dokumen XML

B. Memodelkan dokumen XML E. Jawaban A dan D benar

C.

Membuat objek dokumen

XML

3. DOM merepresentasikan data dokumen XML dalam bentuk

A. struktur data tree D. struktur data stack

B. struktur data graph E. struktur data queue

C. struktur data stack

4. Berikut adalah objek-objek DOM kecuali:

A. Tree D. Node

B. Document E. NodeList

C. Element

5. Property Node untuk mendapatkan node-node anak adalah:

A. nodeName D. childNodes

B. nodeType E. firstChild

C. nodeValue

Page 119: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Document Object Model 111 PAGE 10

Latihan

1. Apa manfaat DOM?

2. Sebutkan objek-objek dalam DOM!

3. Sebutkan method-method dalam objek Document dan kegunaannya.

4. Sebutkan property dalam objek Dokumen dan kegunaannya.

5. Jika diketahui :

….

xmldoc = load(“product.xml”

var root = xmldoc.DocumentElement;

...

File product.xml berisi data berikut:

<?xml version="1.0"?>

<productdetails>

<product>

<prodid>P001</prodid>

<prodname>Beras</prodname>

<price>5000</price>

</product>

<product>

<prodid>P002</prodid>

<prodname>Jagung</prodname>

<price>6000</price>

</product>

<productdetails>

Bagaimana mencari data price dari prodid “P002”?

Page 120: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

112 PAGE 10

12 SIMPLE API FOR XML (SAX)

Overview

Bab ini mengenalkan “Simple API for XML” (SAX) dan menggunakannya

untuk mengakses dokumen XML.

Tujuan

1. Mempelajari SAX sebagai alternative selain DOM untuk mengakses

dokumen XML

2. Melihat fitur-fitur SAX

3. Menelusuri dokumen XML dengan SAX API

Page 121: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Simple API for XML (SAX) 113 PAGE 10

12.1 Pengantar SAX API

Simple API for XML (SAX) dibuat oleh David Megginson dan bersifat

open source. Versi awal SAX dibuat untuk Java, tetapi versi SAX2, juga

mendukung VB 6.0 dan VB.NET. SAX API digunakan untuk memproses

dokumen XML.

Software yang menggunakan SAX untuk memproses dokumen XML

disebut SAX parser. SAX parser tidak mengambil seluruh dokumen XML

dalam memori, tetapi hanya yang dibutuhkan saja. SAX parser adalah parser

event-driven yang membaca data di dokumen XML berurutan dari awal

hingga akhir. SAX API cocok untuk memproses dokumen XML yang besar

karena menggunakan sedikit memori.

12.2 Perbandingan SAX dan DOM

SAX berbeda dengan DOM dalam hal :

Kriteria DOM SAX

Cara penelusuran DOM membaca

keseluruhan

SAX membaca satu per

satu komponen XML

Organisasi

informasi

DOM menggunakan

struktur tree

SAX bukan tree

Akses informasi dalam DOM dilakukan

dengan penelusuran

pohon

dalam SAX sekuensial

Kecepatan DOM me-load semua

data XML. Jika dokumen

besar, akan lambat.

untuk browse SAX lebih

bagus

kompleksitas

pengembangan

Sudah disedikana object

berikut property dan

methodnya

Di SAX harus meng-

override method terkait.

penggunaan

memori

DOM butuh memori

untuk menyimpan tree

SAX tidak

kemampuan

navigasi

Setelah tersimpan di

memori, tree DOM dapat

diakses bebas

dalam SAX jika ingin

mengulang, selalu dari awal

lagi

kemudahan

transformasi

dalam DOM isi dokumen

XML dapat diubah

dalam SAX dokumen XML

hanya untuk dibaca

Page 122: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

114 PAGE 10

12.3 Implementasi SAX

SAX menggunakan class dan interface SAX API untuk memproses

dokumen XML. SAX memiliki beragam event listener yang memberitahu

parser SAX tentang beragam kejadian di dokumen, apakah “start document”,

“end document”, “start tag”, “end tag”, atau lainnya. SAX parser

memberitahu aplikasi SAX setiap kali ia mendapatkan event tersebut.

Pemberitahuan dikerjakan dengan method callback: startDocument(),

characters(), endDocument(). Method-method ini didefinisikan oleh handler

interfaces, semisal ContentHandler, DTDHandler, ErrorHandler, dan

EntityResolver

Handler interface mendefinisikan method untuk setiap event.

Lakukan implements handler interfaces dalam aplikasi SAX dan override

method callback untuk menerima pemberitahuan event penelusuran. Sebagai

contoh, parser SAX memanggil method startElement() ketika ia menemukan

<, memanggil endElement() ketika menemukan </. Apa yang akan dilakukan

ketika menemukan <, perlu dituliskan dalam method startElement().

SAX bekerja dengan cara callbacks: Anda panggil SAX parser, parser

memanggil method yang Anda sediakan. Gambar berikut menunjukkan cara

kerja SAX.

Gambar 11.1 Callback pada SAX

Kode berikut menjelaskan bagaimana beragam method callback dipanggil

ketika memproses dokumen XML:

<!-- parser memanggil method startElement()-->

<Address>

Program Anda

main(...)

startDocument(...)

startElement(...)

characters(...)

endElement(…)

endDocument( )

parse(...)

The SAX parser

Page 123: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Simple API for XML (SAX) 115 PAGE 10

<!-- parser memanggil method startElement(), characters() dan endElement() -->

<name> Tony </name>

<!-- parser memanggil method startElement(), characters(), dan

endElement() -->

<street> 172,Churchill</street>

<!--parser memanggil method startElement(), characters(), dan endElement()--> <phone-number>01-8282882</phone-number>

<!-- parser memanggil method endElement() --->

</Address>

12.4 Parser SAX

Tabel berikut mendaftar beberapa SAX parser yang mendukung

SAX2.

Nama Sumber Bahasa yang

didukung

Xerces http://xml.apache.org Java, C++, Perl

MSXML

4.0

http://www.microsoft.com/downloads/details.aspx C++, VB

JAXP http://java.sun.com/xml/downloads/jaxp.html Java

12.5 SAX API

SAX API terdiri dari beragam paket yang digunakan untuk

menelusuri dokumen XML. Paket org.xml.sax berisi interface dasar SAX API.

Handler interface inti dari paket ini adalah:

- ContentHandler

- ErrorHandler

- DTDHandler

- EntityResolver

Page 124: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

116 PAGE 10

12.5.1 Interface ContentHandler

Interface ini menyediakan beragam method callback yang dipanggil

ketika SAX parser menelusuri dokumen XML. Method-methodnya adalah

sebagai berikut :

- setDocumentLocator()

- startDocument()

- endDocument()

- startElement()

- endElement() - characters()

12.5.2 Interface ErrorHandler

Interface ini mendefinisikan beragam method callback untuk

menangani berbagai error yang mungkin terjadi selama penelusuran. Sesuai

jenis kesalahan yang terjadi, interface ini memiliki method:

- warning()

- error()

- fatalError()

12.5.3 Interface DTDHandler

Interface ini mendefinisikan method untuk menangani event yang

terjadi ketika suatu parser memproses DTD dokumen XML. Method yang

disediakan :

- notationDecl()

- unparsedEntityDecl()

12.5.4 Interface EntityResolver

Interface ini mendefinisikan method callback untuk menangani

entitas external selama penelusuran, yaitu resolveEntity().

12.6 Parsing Dokumen XML

Untuk menelusuri dokumen XML dan menampilkan isinya, gunakan

JAXP dalam class Java. Tahapan membuat aplikasinya sendiri adalah:

Page 125: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Simple API for XML (SAX) 117 PAGE 10

1. import package terkait.

2. extends class DefaultHandler.

3. parse dokumen XML.

4. override method callback.

Berikut adalah contoh bagaimana menampilkan isi dokumen XML

dengan menggunakan Java. File product.xml berisi data berikut.

<?xml version="1.0"?>

<productdetails>

<product>

<prodid>P001</prodid>

<prodname>Beras</prodname>

<price>5000</price>

</product>

<product>

<prodid>P002</prodid>

<prodname>Jagung</prodname>

<price>6000</price>

</product>

<productdetails>

Kode Java berikut digunakan untuk menampilkan isi product.xml.

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 displayProductSax extends DefaultHandler

{

static private Writer writerOut;

StringBuffer stringBuffer;

public static void main(String fileName[])

{

if (fileName.length != 1)

{

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

System.exit(1);

Page 126: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

118 PAGE 10

}

DefaultHandler defaultHandler = new displayProductSax();

SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();

try

{

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

SAXParser Sax_Parser = saxParserFactory.newSAXParser();

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

}

catch (Throwable thr)

{

thr.printStackTrace();

}

System.exit(0);

}

/* Method that handles the start document event notification */

public void startDocument() throws SAXException

{

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

/* To print a new line character */

newLine();

}

/* Method that handles the end document event notification */

public void endDocument() throws SAXException

{

try

{

newLine();

writerOut.flush();

}

catch (IOException e)

{

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

}

}

Page 127: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Simple API for XML (SAX) 119 PAGE 10

/* Method that handles the start element event notification */

public void startElement(String namespaceURI, String sName, StringqName,

Attributes attrs) throws SAXException

{

displayText();

String eName = sName;

if ("".equals(eName))

eName = qName;

IOHandler("<" + eName); if (attrs != null)

{

/* Get the length of the attribute */

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

{

/* Gets the attribute local name */

String aName = attrs.getLocalName(i);

if ("".equals(aName))

aName = attrs.getQName(i);

IOHandler(" ");

/* Retrieve the value of an attribute */

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

}

}

IOHandler(">");

}

/* Method that handles the end element event notification */

public void endElement(String namespaceURI, String sName, StringqName)

throws SAXException

{

displayText();

String eName = sName;

if ("".equals(eName))

eName = qName;

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

}

/* Method that handles the character data event */

Page 128: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

120 PAGE 10

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

SAXException

{

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

/* if the string buffer is empty */

if (stringBuffer == null)

{

stringBuffer = new StringBuffer(s);

} else

{

/* Add the character to the string buffer */

stringBuffer.append(s);

}

}

/* Display text accumulated in the string buffer */

private void displayText() throws SAXException

{

/* If the string buffer is empty */

if (stringBuffer == null)

return;

String s = ""+stringBuffer;

IOHandler(s);

stringBuffer = null;

}

/* Write the content in the string buffer to the output console */

private void IOHandler(String s) throws SAXException

{

try

{

writerOut.write(s);

writerOut.flush();

}

catch (IOException IOExcep)

{

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

/* Any I/O error is wrapped in SAXException.

The generated Exception is thrown back to the SAX

Page 129: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Simple API for XML (SAX) 121 PAGE 10

parser*/

}

}

/* Prints a new line character */

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

}

}

}

Ketikkan program di atas di Notepad. Simpan dengan nama

displayProductSax.java. Lakukan kompilasi dengan perintah :

C:\>javac displayProductSax.java

Jalankan dengan perintah

C:\>java displayProductSax product.xml.

Page 130: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

122 PAGE 10

Rangkuman

1. SAX adalah alternatif selain DOM untuk mengakses dokumen XML.

2. Dibanding DOM, SAX menelusuri dokumen XML dari awal hingga

akhir, tidak membentuk tree, lebih cepat untuk browse, harus meng-

override method callback, lebih hemat memori, hanya membaca

dokumen XML, tidak mengubahnya.

3. Package Java org.xml.sax. berisi interface dasar SAX API.

4. Ada beragam interface yang dapat diimplement oleh program

pengguna : ContentHandler, ErrorHandler, DTDHandler.

5. Untuk membuat aplikasi JAXP yang menelusuri dokumen XML

menggunakan SAX dilakukan tahap berikut:

- Import package yang dibutuhkan

- Extend class DefaultHandler.

- Telusuri dokumen XML.

- Override method callback.

Page 131: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Simple API for XML (SAX) 123 PAGE 10

Kuis Benar Salah

1. SAX sama dengan DOM dalam hal tujuannya untuk mengakses

dokumen XML, namun berbeda caranya. 2. SAX membentuk struktur tree dari dokumen XML. 3. SAX terakhir dibuat khusus untuk Java. 4. Harus meng-override method yang disediakan untuk membuat

aplikasi parser SAX. 5. Disebut callback karena memanggil kembali method yang dibuat

programmer.

Page 132: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

124 PAGE 10

Pilihan Ganda

Petunjuk: Pilihlah jawaban yang paling tepat!

1. SAX singkatan dari:

A. Simple API for XML D. Synchronized API for XML

B. Simple Access for XML E. Standardized Access for XML

C. Standardized API for XML

2. SAX awal mula dibuat khusus untuk bahasa:

A. Java D. JavaScript

B. C# E. VBScript

C. VB.net

3. Struktur data yang digunakan SAX adalah:

A. tree D. graph

B.

linked list

E.

tidak menggunakan struktur

data apapun

C. stack

4. SAX lebih unggul daripada DOM dari sisi :

A. Kecepatan browse D. Penelusuran elemen

B. Kebutuhan memori E. A dan B benar

C. Kemampuan mengubah data

5.

Ketika menemukan simbol “<” di dokumen XML, SAX parser akan

memanggil method :

A. startDocument() D. endDocument()

B. startElement() E. endElement()

E. Characters()

Page 133: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Simple API for XML (SAX) 125 PAGE 10

Latihan

1. Jelaskan persamaan dan perbedaan antara SAX dan DOM.

2. Apakah program displayProductSax.java di atas dapat digunakan

untuk menelusuri semua dokumen XML? Jelaskan dan buktikan.

Page 134: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

126 PAGE 10

13 Web Service Description Language

Overview

Bagaimana jika akses web site tidak hanya file html? Atau upload dan

download file? Akses internet akan lebih berdaya guna jika antar program

aplikasi dapat berkomunikasi. Komponen program yang ada di suatu web site

yang dapat diakses dari web site lain dikenal dengan istilah Web Service.

XML, yang tag-tagnya bebas didefiniskan oleh pengguna, dapat

digunakan untuk menggambarkan Web Service. WSDL (Web Service

Description Language) dibuat berbasis XML untuk menggambarkan Web

Service dan bagaimana mengaksesnya.

Tujuan

1. Mengenal Web Services dan arsitekturnya

2. Mengenal WSDL dan komponennya

Page 135: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Web Service Definition Language 127 PAGE 10

13.1 Pengantar Web Service

Konsep komunikasi antar program aplikasi sesungguhnya bukan

konsep baru. Beberapa terapannya sudah dilakukan sebelumnya :

• Sun RPC (1985)

• CORBA (1992)

• DCE / RPC (1993)

• Microsoft COM (1993)

• Microsoft DCOM (1996)

• Java RMI (1996) Method yang dimiliki suatu class yang ada di suatu computer dicoba untuk

dapat diakses oleh class di computer lain. Konsep ini melahirkan ide

pembuatan Web Service, aplikasi di suatu web site dapat diakses dari web

site lain.

Gambar berikut mungkin lebih menjelaskan konsep Web Service.

Gambar 9.1 Akses aplikasi di web site lain melalui XML

Web Service itu dapat dibuat dalam suatu bahasa pemrograman, dan

dikenali oleh bahasa pemrograman lain. Interfacenya didefinisikan dengan

XML. Antar aplikasi berinteraksi menggunakan pesan-pesan berbasis XML

yang dibawa oleh protokol Internet. Web Service diidentifikasi dengan URI

(universal resource identifier).

13.2 Arsitektur Web Sevice

Web Services dibangun pada landasan protokol XML. Untuk

pertukaran pesan, mungkin digunakan SOAP, XML-RPC. Untuk

menggambarkan service digunakan WSDL. Untuk pencarian service

digunakan UDDI. SOAP, WSDL dan UDDI adalah standard de fakto

implementasi Web Service. Gambar berikut diharapkan lebih menjelaskan

peranan masing-masing.

XML

Application 2 Application 1

Website 1 Website 2

Page 136: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

128 PAGE 10

Gambar 9.2 Protokol pendukung Web Service

Arsitektur Web Service diimplementasikan dalam lima layer berikut:

Gambar 9.3 Lima lapis teknologi pendukung Web Service

Layer teratas, “Discovery”, menyediakan mekanisme standar untuk

mendaftarkan dan menemukan Web service, UDDI. Direktori UDDI berisi

pointer ke Web service dan dokumenWSDLnya. Direktori UDDI digunakan

aplikasi client untuk menemukan Web service.

Service Consum

er

Service Provider

Service Registry

Publish (UDDI)

Find (UDDI)

Describe

(WSDL)

Bind

(SOAP)

DISCOVERY

DESCRIPTION

PACKAGING

TRANSPORT

NETWORK

Page 137: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Web Service Definition Language 129 PAGE 10

Layer bawahnya, “Description”, mendeskripsikan Web service,

menggunakan standar WSDL.

Layer bawahnya, “Packaging”, menyediakan mekanisme pemaketan

informasi yang akan dikirimkan atau diterima. Format paket yang sering

digunakan adalah SOAP, yang dibangun di atas XML. Dengan SOAP, aplikasi

dan komponen dapat mengkomunikasikan pesan call dan return-nya.

Layer bawahnya, “Transport” dan “Network” disediakan protocol

TCP/IP untuk komunikasi pesan.

13.3 WSDL WSDL singkatan dari Web Services Description Language, dibuat utuk

menggambarkan Web Service. WSDL ditulis dalam format XML, sehingga

WSDL adalah dokumen XML. WSDL juga dimanfaatkan untuk mencari Web

Service. WSDL sejak 2007 direkomendasikan oleh W3C.

13.4 The WSDL Document Structure

Dokumen WSDL berisi informasi berikut: daftar web services yang

tersedia, fungsi Web service, apa parameternya, apa outputnya, format cara

pakai, alamat URLnya.

Tag-tag yang digunakan dalam dokumen WSDL ditunjukkan dalam

tabel berikut.

Tabel 9.1 Tag-tag dokumen WSDL

Element Penjelasan <types> tipe data yang akan digunakan web service <message> messages yang akan dikirimkan web service <portType> operasi (function) yang disediakan the web service.

<binding> Protokol komunikasi yang digunakan web service

- Bagaimana message dikirim di kabel?

- Apa rincian spesifik protokol message protocol

disana

<service> Dimana service disimpan

Struktur utama dokumen WSDL adalah sebagai berikut:

<definitions>

Page 138: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

130 PAGE 10

<types>

definition of types........

</types>

<message>

definition of a message....

</message>

<portType>

definition of a port.......

</portType>

<binding>

definition of a binding....

</binding>

</definitions>

Gambar 9.3 Contoh Dokumen WSDL

WSDL biasanya tidak dibuat manual oleh programmer, namun dibuat

otomatis oleh toolkit, semisal Altova® XMLSpy® di www.w3schools.com.

Page 139: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Web Service Definition Language 131 PAGE 10

Gambar 9.4 Port Web Service

Gambar 9.4 memberikan gambaran kerangka kerja Web Service.

Service punya beberapa port. Oleh karenannya, elemen <portType>

merupakan elemen terpenting. Port adalah lokasi pengiriman pesan, misalnya :

http://cs.cf.ac.uk/axis/service. Tiap port dikaitkan ke protokol message

protocol. “Port type” menyatakan: Nama Operation, tipe message masukan,

tipe message keluaran.

Elemen <message>, mirip parameter, mendefinisikan elemen-

elemen data operasi. Setiap message dapat terdiri dari satu atau beberapa bagian.

Port

(http://host/axis)

Binding

(e.g. SOAP)

Port

Binding

Port Type

Operation(s) (in) Message (out)

Message

Service

Page 140: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

132 PAGE 10

Elemen <types> mendefinisikan tipe data yang digunakan web

service. Untuk netralitas maksimum, WSDL menggunakan skema XML untuk

mendefinisikan tipe data.

Elemen <binding> mendefinisikan format message dan rincian

protokol untuk setiap port.

Berikut adalah contoh dokumen WSDL yang disederhanakan:

<message name="getBookResponse">

<part name="resp" element="book"/>

</message>

<portType name="bookPortType">

<operation name="getBook">

<input message="getBookRequest"/>

<output message="getBookResponse"/>

</operation>

</portType>

<binding type="bookPortType" name="bookBind">

<soap:binding style="document"

transport="http://schemas.xmlsoap.org/soap/http"/>

<operation>

<soap:operation soapAction="getBook"/>

<input> <soap:body use="literal"/> </input>

<output> <soap:body use="literal"/> </output>

</operation>

</binding>

<service name="Hello_Service">

<port binding="bookBind" name="bookPort">

<soap:address location="http://localhost/bookservice"/>

</port>

</service>

Di contoh ini elemen <portType> mendefinisikan "bookPortType"

sebagai nama port, dan "getBook" sebagai nama operation. Operasi

"getTerm" memiliki input message yang disebut "getBookRequest" dan

output message yang disebut "getBookResponse".

Page 141: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Web Service Definition Language 133 PAGE 10

13.5 The Full WSDL Syntax

Syntax WSDL 1.2 yang digambarkan oleh Draft Kerja W3C adalah sebagai

berikut.

<wsdl:definitions name="nmtoken"?

targetNamespace="uri">

<import namespace="uri" location="uri"/> *

<wsdl:documentation .... /> ?

<wsdl:types> ?

<wsdl:documentation .... /> ?

<xsd:schema .... /> *

</wsdl:types>

<wsdl:message name="ncname"> *

<wsdl:documentation .... /> ?

<part name="ncname" element="qname"?

type="qname"?/> *

</wsdl:message>

<wsdl:portType name="ncname"> *

<wsdl:documentation .... /> ?

<wsdl:operation name="ncname"> *

<wsdl:documentation .... /> ?

<wsdl:input message="qname"> ?

<wsdl:documentation .... /> ?

</wsdl:input>

<wsdl:output message="qname"> ?

<wsdl:documentation .... /> ?

</wsdl:output>

<wsdl:fault name="ncname"

message="qname"> *

<wsdl:documentation .... /> ?

</wsdl:fault>

</wsdl:operation>

</wsdl:portType>

<wsdl:serviceType name="ncname"> *

<wsdl:portType name="qname"/> +

</wsdl:serviceType>

<wsdl:binding name="ncname" type="qname"> *

<wsdl:documentation .... /> ?

Page 142: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

134 PAGE 10

<-- binding details --> *

<wsdl:operation name="ncname"> *

<wsdl:documentation .... /> ?

<-- binding details --> *

<wsdl:input> ?

<wsdl:documentation .... /> ?

<-- binding details -->

</wsdl:input>

<wsdl:output> ?

<wsdl:documentation .... /> ?

<-- binding details --> *

</wsdl:output>

<wsdl:fault name="ncname"> *

<wsdl:documentation .... /> ?

<-- binding details --> *

</wsdl:fault>

</wsdl:operation>

</wsdl:binding>

<wsdl:service name="ncname" serviceType="qname">

*

<wsdl:documentation .... /> ?

<wsdl:port name="ncname" binding="qname"> *

<wsdl:documentation .... /> ?

<-- address details -->

</wsdl:port>

</wsdl:service>

</wsdl:definitions>

Page 143: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Web Service Definition Language 135 PAGE 10

Rangkuman

1. Web Service adalah komponen program di suatu web site yang dapat diakses dari web site lain.

2. Untuk menggambarkan service yang disediakan digunakan WSDL

(Web Service Description Language)

3. WSDL, dibuat dengan XML, terdiri dari tag-tag : <message>,

<portType>, <binding>, <service>, masing-masing dengan

manfaatnya sendiri.

Page 144: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

136 PAGE 10

Kuis Benar Salah

1. Programmer biasanya lebih senang menggunakan coding karya

sendiri. Web Service, meski kelihatannya bagus, tidak akan

berkembang pesat seperti yang dibayangkan. 2. Web Service yang dibuat dengan bahasa Java harus diakses dengan

program berbahasa Java juga. 3. Pengaksesan service harus menggunakan format yang sudah

ditentukan oleh WSDL. 4. WSDL untuk menggambarkan service, SOAP untuk mengaksesnya,

UDDI untuk mendaftarkannya. 5. Program pengakses seharusnya “membayar” service yang disediakan

program lain.

Page 145: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Web Service Definition Language 137 PAGE 10

Pilihan Ganda

Petunjuk: Pilihlah jawaban yang paling tepat!

1. Berikut adalah terapan konsep komunikasi antar program:

A. RPC D. Web Service

B. RMI E. Semua benar

C. Corba

2.

Komponen berikut penting untuk berjalannya suatu Web Service:

A. WSDL D. XML-RPC

B. UDDI E. Semua benar

C. SOAP

3

WSDL digunakan untuk:

A. Menggambarkan service. D. Port mana yang dipakai

B.

Apa yang harus disiapkan

program lain yang akan

mengakses suatu service.

E.

Semua benar.

C.

Apa masukan dan keluaran

service

4.

Tag-tag berikut digunakan di WSDL kecuali:

A. <message> D. <binding>

B. <portType> E. <html>

C. <type>

5. Tag paling penting dalam dokumen WSDL adalah :

A. <message> D. <binding>

B. <portType> E. <service>

C. <type>

Page 146: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

138 PAGE 10

Latihan

1. Apakah Web Service itu?

2. Jelaskan arsitektur Web Service.

3. Sebutkan apa saja yang dibutuhkan agar Web Service dapat bekerja.

4. Sebutkan tag-tag dalam dokumen WSDL dan manfaatnya.

5. Apakah programmer perlu membuat sendiri WSDL?

Page 147: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

UNIVERSAL DESCRIPTION, DISCOVERY AND INTEGRATION (UDDI) 139 PAGE 10

14 SIMPLE OBJECT ACCESS PROTOCOL

(SOAP)

Overview

SOAP adalah protokol berbasis XML yang mengijinkan aplikasi

bertukar informasi melalui HTTP. Bab ini akan menjelaskan apa itu SOAP, dan

bagaimana menggunakan XML untuk bertukar informasi di antara aplikasi.

Tujuan

1. mengenal apakah SOAP itu dan apa manfaatnya

2. mengetahui bagaimana menggunakannya

Page 148: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

140 PAGE 10

14.1 Pengantar SOAP

Banyak aplikasi saat ini berkomunikasi menggunakan Remote

Procedure Calls (RPC) antar objek seperti DCOM dan CORBA, tetapi HTTP

tidak dirancang untuk ini.

SOAP, singkatan Simple Object Access Protocol, adalah protokol

berbasis XML yang memungkinkan aplikasi bertukar informasi melalui HTTP.

Dalam SOAP diatur format pengiriman pesan.

Selain menggunakan HTTP, mungkin juga menggunakan FTP atau

SMTP. SOAP bebas platform, tidak seperti RMI yang harus Java atau DCOM.

SOAP efektif untuk membangun Web services. SOAP sederhana dan ringan

untuk pengiriman data dibanding CORBA, RMI, DCOM. SOAP mudah

dipelajari dan diimplementasikan. SOAP didukung IBM, Microsoft, Apache,

direkomendasikan W3C, sejak 2003.

Output Web service akan dipakai aplikasi client yang mungkin beda

platform. Format XML berbasis plain-text, dapat digunakan untuk pertukaran

data. XML digunakan untuk menggambarkan data dalam pesan SOAP.

14.2 SOAP Syntax

Pesan SOAP digunakan untuk bertukar data. Pesan berisi : data yang

dikirim dan diterima, skema pengkodean dan alamat HTTP tujuan.

Message SOAP adalah dokumen XML berisi elemen berikut:

elemen Envelope yang menunjukkan dokumen XML sebagai pesan SOAP.

Elemen ini merupakan elemen tertinggi, dan merupakan container

seluruh elemen SOAP Message.

elemen Header yang berisi informasi tambahan, memungkinkan otentikasi data atau untuk manajemen transaksi, informasi routing,

informasi sumber.

elemen Body yang berisi data yang dikirimkan.

elemen Fault berisi informasi error dan status.

Page 149: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

UNIVERSAL DESCRIPTION, DISCOVERY AND INTEGRATION (UDDI) 141 PAGE 10

Seluruh elemen diatas dideklarasikan dalam namespace default untuk

SOAP envelope:

http://www.w3.org/2001/12/soap-envelope

dan namespace default untuk kode SOAP dan tipe datanya di:

http://www.w3.org/2001/12/soap-encoding

Gambar 10.1 berikut menggambarkan keterkaitan antar elemen.

Gambar 10.2 mengambarkan tag-tagnya.

Gambar 10.1 SOAP Message

Beberapa aturan penting pembuatan SOAP Message:

harus menggunakan SOAP Envelope namespace

harus menggunakan SOAP Encoding namespace

harus tidak berisi rujukan DTD

harus tidak mengandung “XML Processing Instructions”

SOAP Envelope (Required)

SOAP Header (Optional)

Extension Information e.g. routing, security

SOAP Body (Required)

Application Data

e.g. request, response error

Page 150: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

142 PAGE 10

<?xml version="1.0"?>

<soap:Envelope

xmlns:soap="http://www.w3.org/2001/12/soap-envelope"

soap:encodingStyle="http://www.w3.org/2001/12/soap-

encoding">

<soap:Header>

...

...

</soap:Header>

<soap:Body>

...

...

<soap:Fault>

...

...

</soap:Fault>

</soap:Body>

</soap:Envelope>

Gambar 10.2 Tag-tag SOAP Message

14.3 Contoh SOAP

Berikut adalah contoh SOAP Message yang dikirim dan yang diterima.

SOAP Message yang dikirim.

POST /InStock HTTP/1.1

Host: www.stock.org

Content-Type: application/soap+xml; charset=utf-8

Content-Length: nnn

<?xml version="1.0"?>

<soap:Envelope

xmlns:soap="http://www.w3.org/2001/12/soap-envelope"

soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Header>

... (optional header information)

</soap:Header>

Page 151: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

UNIVERSAL DESCRIPTION, DISCOVERY AND INTEGRATION (UDDI) 143 PAGE 10

<soap:Body xmlns:m="http://www.stock.org/stock">

<m:GetStockPrice>

<m:StockName>IBM</m:StockName>

</m:GetStockPrice>

</soap:Body>

</soap:Envelope>

SOAP Message yang diterima

HTTP/1.1 200 OK

Content-Type: application/soap; charset=utf-8

Content-Length: nnn

<soap:Envelope

xmlns:soap="http://www.w3.org/2001/12/soap-envelope"

soap:encodingStyle ="http://www.w3.org/2001/12/soapencoding">

<soap:Header>

... (optional header information)

</soap:Header>

<soap:Body xmlns:m ="http://www.stock.org/stock">

<m:GetStockPriceResponse>

<m:Price>34.5</m:Price>

</m:GetStockPriceResponse>

</soap:Body>

</soap:Envelope>

14.4 Elemen “Fault“

Elemen “Fault”, bersifat optional, menyimpan inofrmasi error dan

status untuk suatu SOAP message. Jika ada, ia harus menjadi elemen anak dari

elemen “Body”, dan hanya boleh muncul satu kali.

Page 152: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

144 PAGE 10

Elemen Fault berisi sub elemen berikut:

Sub Elemen Penjelasan

<faultcode> Kode kesalahan <faultstring> Penjelasan error <faultactor> Informasi siapa penyebab kesalahan <detail> Berisi rincian kesalahan terkait elemen “Body”

Kode berikut menunjukkan contoh pesan SOAP yang berisi error.

<Body xmlns=http://www.w3.org/2001/12/soap-envelope> <Fault>

<faultcode>Client</faultcode>

<faultstring>Something went wrong</faultstring>

<detail>Application specific error information</detail>

</Fault>

</Body>

Kode kesalahan berikut digunakan untuk menggambarkan kesalahan yang

terjadi.

Error Penjelasan VersionMismatch namespace tidak sesuai MustUnderstand Elemen anak dari Header bertanda mustUnderstand tidak

dapat dipahami. Client Kesalahan dari client Server Kesalahan dari server

14.5 Memproses SOAP Message

Aplikasi dan komponen yang memproses SOAP message disebut

SOAP node. SOAP node mungkin berperan sebagai : Sender, Receiver, atau

Intermediary. Perannya disimpan di Header SOAP message. Sender mengirim

SOAP message ke receiver. Pengirim awal SOAP disebut initial SOAP sender.

Node perantara menerima dari SOAP sender dan mengirim ulang ke SOAP

node lain.

Page 153: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

UNIVERSAL DESCRIPTION, DISCOVERY AND INTEGRATION (UDDI) 145 PAGE 10

SOAP Header dapat berisi dua atribut global:

- SOAP role : menyatakan peran SOAP node ketika pesan

diterima.

- SOAP mustUnderstand : menyatakan apakah block Header diproses oleh

SOAP node.

14.6 SOAP Toolkit 3.0

SOAP Toolkit 3.0 dibuat Microsoft untuk membangun aplikasi yang

menggunakan SOAP message. Toolkit ini cepat untuk mengakses Web

service. Toolkit ini mendukung:

- standar W3C SOAP,

- spesifikasi skema XML W3C

- pembuatan tipe data simple dan complex dalam skema XML.

Dalam toolkit ini ada Wizard untuk membuat dokumen WSDL dan

WSML utilitas untuk melacak lintasan SOAP message. Web Services Meta

Language (WSML) adalah dokumen XML yang berisi informasi komponen di

server untuk memproses request.

Jika digunakan Soap Messaging Object (SMO) untuk memproses

SOAP Messages, maka

• SOAP message diproses di client dan di server tempat Web service.

• SMO adalah framework yang menyatakan setiap komponen message sebagai object.

• SMO dapat digunakan untuk mengakses dokumen WSDL dan WSML

menggunakan beragam bahasa script.

Aliran data di sisi Client:

• Aplikasi client mengirim request ke Web server.

• Object SoapClient dibuat di komputer client untuk mengirim dan

menerima messages menggunakan SOAP.

Aliran Data di sisi Server:

• Web server memproses request.

• SOAP listener di Web server menerima request.

• Listener menggunakan object SoapServer yang disediakan SMO.

Page 154: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

146 PAGE 10

• Object SoapServer menggunakan informasi dalam dokumen WSML untuk me-load komponen, memanggil servis yang diminta, dan

mendapatkan outputnya.

Tool WSDL Generator digunakan untuk men-generate dokumen

WSDL dan WSML untuk suatu Web service. Dokumen WSDL, WSML dan

file ASP listener yang dibuat dengan SOAP Toolkit 3.0 harus disimpan di Web

server. Generator WSDL membuat file ASP. File ASP listener menggunakan

object SoapServer object di Web server. File-file WSDL dan WSML di server

di-load oleh method init() object SoapServer.

Method SoapInvoke() dari object SoapServer meng-ekstrak

informasi tentang request dari file WSDL, menggunakan file WSML, me-load

Web service yang dikehendaki, dan memberi output ke client sebagai object

SoapResponse.

Object SoapSerializer memungkinkan Anda membangun SOAP

message.

• menyediakan akses ke beragam komponen SOAP message : Envelope, Header, Body, and Fault.

• Method yang didefinisikan Web service dipanggil pada saat menggunakan

Web service.

Page 155: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

UNIVERSAL DESCRIPTION, DISCOVERY AND INTEGRATION (UDDI) 147 PAGE 10

Rangkuman

1. SOAP digunakan untuk bertukar informasi antar aplikasi melalui

HTTP.

2. SOAP message terdiri dari tag-tag : <envelope>, <header>, <body>

dan <fault>, masing-masing dengan fungsinya sendiri.

3. SOAP Message dikirim oleh client ke server. Client menerima

jawaban dari server dalam bentuk SOAP Message juga.

Page 156: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

148 PAGE 10

Kuis Benar Salah

1. Isi pesan SOAP harus sesuai dengan pesan yang diminta oleh WSDL. 2. Pesan SOAP dibuat manual oleh programmer client, bukan toolkit.

3. Pesan SOAP boleh tanpa tag <envelope>

4. Pesan SOAP boleh tanpa tag <header>

5. Pesan SOAP boleh tanpa tag <fault>

Pilihan Ganda

Petunjuk: Pilihlah jawaban yang paling tepat!

1. SOAP digunakan untuk:

A. Menggambarkan service D. Mengakses objek sederhana

B. Mempublikasikan service E. Bertukar informasi

C. Mengakses service

2. Berikut ciri SOAP, kecuali

A. Bebas platform D. Dikirim melalui HTTP

B. Bebas bahasa pemrograman E. Untuk menggambarkan service

C. Dibuat dengan XML

3. Elemen tertinggi dalam SOAP Message adalah:

A. Header D. Fault

B. Envelope E. Attachment

C. Body

Berikut adalah sub-sub elemen tag <Fault>, kecuali:

Page 157: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

UNIVERSAL DESCRIPTION, DISCOVERY AND INTEGRATION (UDDI) 149 PAGE 10

4.

A. <faultcode> D. <detail>

B. <faultstring> E. <body>

C. <faultactor>

5.

Kode kesalahan VersionMismatch berarti:

A. Versi html tidak sama D. Versi namespace berbeda

B. Versi xml berbeda E. Versi Windows berbeda

C. Versi SOAP berbeda

Latihan

1. Jelaskan hubungan antara SOAP dengan WSDL.

2. Sebutkan komponen SOAP, tag-tag dan kegunaannya.

3. Haruskah programmer membuat SOAP sendiri? Jelaskan.

4. Pesan SOAP yang diterima pasti berbeda dengan yang dikirim.

Benarkah? Jelaskan

5. Apa manfaat namespace dalam SOAP? Jelaskan.

Page 158: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

150 PAGE 10

15. UNIVERSAL DESCRIPTION, DISCOVERY

AND INTEGRATION (UDDI)

Overview

UDDI, singkatan dari Universal Description, Discovery and Integration,

adalah standar berbasis XML untuk menggambarkan, mempublikasikan, dan

menemukan Web services. Di bab ini akan dipelajari apa itu UDDI, mengapa

dan bagaimana kita menggunakannya.

Tujuan

1. Apakah UDDI itu?

2. Apa yang dimaksud dengan :

- Entitas bisnis

- Bisnis service

- Binding template

- tModels

- UDDI query

Page 159: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

UNIVERSAL DESCRIPTION, DISCOVERY AND INTEGRATION (UDDI) 151 PAGE 10

15.1 Pengantar

UDDI, singkatan dari Universal Description, Discovery and

Integration (UDDI) Protocol, adalah standar berbasis XML untuk

menggambarkan, mempublikasikan dan menemukan Web service. UDDI

merupakan insisiatif industri terbuka, oleh Microsoft, IBM, Ariba, dan

sebagainya, yang memungkinkan pelaku bisnis saling menemukan satu dengan

yang lain dan mendefinisikan bagaimana mereka berinteraksi melalui internet.

UDDI bebas platform, merupakan kerangka kerja terbuka, dapat

berkomunikasi melalui SOAP, CORBA, dan protocol RMI Java.

UDDI menggunakan WSDL untuk menggambarkan interface ke web

service. Bersama SOAP dan WSDL merupakan tiga fondasi standar web

service.

UDDI terdiri dari dua bagian:

direktori seluruh metadata web service termasuk pointer ke WSDL-nya

direktori yang digunakan aplikasi client untuk menemukan Web service.

15.2 Tiga tipe informasi UDDI

Perusahaan dapat mendaftarkan dirinya ke dalam tiga tipe informasi

dalam UDDI registry. Informasi ini dimasukkan dalam tiga elemen UDDI. Tiga

elemen itu adalah :

- white page

- yellow page - green page.

Kategori “white page” berisi : informasi dasar tentang perusahaan

dan bisnisnya, informasi kontak bisnis : nama bisnis, alamat, nomor telpon,

NPWP, dsb. Informasi ini penting bagi pihak lain yang ingin tahu bisnis

perusahaan tersebut.

Kategori “yellow page” berisi : rincian lebih lanjut tentang

perusahaan, termasuk kemampuan e-commerce. Di sini digunakan skema

kategorisasi industri, kode industri, kode produk, kode identifikasi bisnis.

Informasi ini memudahkan customer mencari produk yang mereka ingingkan.

Kategori “green pages” berisi informasi teknik tentang web service:

lokasi URL, informasi “discovery” dan data terkait untuk menemukan dan

menjalankan Web Service.

Page 160: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

152 PAGE 10

Jadi, UDDI tidak hanya dibatasi untuk menggambarkan web service

berdasarkan SOAP. Lebih daripada itu UDDI dapat digunakan untuk

menggambarkan beragam service, dari sebuah halaman web atau alamat email,

hingga SOAP, CORBA, dan servis Java RMI.

15.3 Arsitektur Teknik

Arsitektur Teknik UDDI terdiri dari tiga bagian :

- UDDI data model : skema XML untuk menggambarkan bisnis dan

web service.

- UDDI API specification : spesifikasi API untuk mencari dan

mempuplikasikan data UDDI

- UDDI cloud services : ini adalah situs operator yang menyediakan

implementasi spesifikasi UDDI dan mensinkronkan secara peridoik.

Gambar 11.1 Arsitektur Teknik UDDI

UDDI Business Registry (UBR), adalah sistem konseptual tunggal dari

beberapa node yang memiliki data tersinkronisasi melalui replikasi.

Page 161: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

UNIVERSAL DESCRIPTION, DISCOVERY AND INTEGRATION (UDDI) 153 PAGE 10

UDDI berisi skema XML yang menggambarkan lima struktur data:

businessEntity

businessService

bindingTemplate

tModel

publisherAssertion

15.4 Entitas bisnis

Entitas bisnis menyatakan penyedia web services dalam UDDI registry.

Informasinya meliputi : nama perusahaan, deskripsi bisnis, informasi kontak,

informasi lain. Gambar 11.2 menunjukkan contoh kasus.

Gambar 11.2 Entitas bisnis dalam UDDI

<businessEntity

businessKey=“ABCD”>

<name>BBC</name>

<description>

...

</description>

</businessEntity>

Page 162: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

154 PAGE 10

15.5 Business Service

Disini disimpan semua web service yang disediakan entitas bisnis.

Berisi informasi : bagaimana menemukan web service, apa tipe web

servicenya, termasuk kategori taxonomi yang mana. Gambar 11.3

menunjukkan contoh kasus ini.

Gambar 11.3 Business Service dalam UDDI

Perhatikan penggunaan Universally Unique Identifiers (UUIDs) dalam

atribut businessKey dan serviceKey. Setiap entitas bisnis dan business service

diidentifikasi unik dalam seluruh registry UDDI melalui UUID yang diberikan

registry ketika informasi pertama kali dimasukkan.

15.6 Binding Template

Pada bagian ini disimpan informasi teknis bagaimana service dapat

diakses. Terkait Web Service ada alamat Web Service dan parameter. Tidak

terkait Web Service ada E-mail, FTP, CORBA, Telephone.

Suatu service mungkin memiliki beberapa binding, kaitan (misalnya

web service binding, telephone binding). Gambar 11.4 diharapkan

memperjelas konsep ini.

<businessEntity

businessKey=“ABCD”>

<name>BBC</name>

<description>

...

</description>

</businessEntity>

<businessService

serviceKey=“EFGH”

businessKey=“ABCD”>

<name>News</name>

</businessService>

<businessService

serviceKey=“IJKL”

businessKey=“ABCD”>

<name>Weather</name>

</businessService>

Page 163: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

UNIVERSAL DESCRIPTION, DISCOVERY AND INTEGRATION (UDDI) 155 PAGE 10

Gambar 11. 4 Binding Template dalam UDDI

Business service boleh memiliki beberapa binding templates. Service

boleh menyatakan implementasi berbeda dari service yang sama, masing-

masing dikaitkan dengan sekumpulan protokol atau alamat jaringan yang

berbeda.

15.7 tModel

Tidak ada hubungan eksplisit antara UDDI dan WSDL. Binding

template berisi access point tetapi belum ada informasi bagaimana cara

memakainya (misalnya tipe data yang diharapkan). tModel (Technical Model)

menghubungkan deskripsi interface dengan suatu binding. Beberapa binding

boleh merujuk interface yang sama. Mirip dengan industri penerbangan

mendefinisikan interface standar pemesanan tiket, maskapai penerbangan

menerapkan interface ini.

<bindingTemplate>

bindingKey=“IJKL”

serviceKey=“EFGH”>

<description>

Web Page

</description>

<accessPoint>

http://news.bbc.co.uk

</accessPoint>

</businessTemplate>

<bindingTemplate>

bindingKey=“MNOP”

serviceKey=“EFGH”>

<description>

Web Service

</description>

<accessPoint>

http://bbc.co.uk/news

</accessPoint>

<tModelInstanceDetails>

<tModelInstanceInfo tModelKey=”QRST”/>

</tModelInstanceDetails>

</businessTemplate>

<businessEntity

businessKey=“ABCD”>

<name>BBC</name>

<description>

...

</description>

</businessEntity>

<businessService

serviceKey=“EFGH”

businessKey=“ABCD”>

<name>News</name>

</businessService>

Page 164: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

156 PAGE 10

Gambar 11.5 tModel dalam UDDI

15.8 Publisher Assertion

Bagian ini menjelaskan hubungan antara dua atau lebih entitas bisnis :

bagian, atau departemen. Struktur publisherAssertion terdiri dari tiga elemen:

fromKey (businessKey pertama), toKey (businessKey kedua) dan

keyedReference. Tag keyedReference berisi hubungannya. Gambar 11.6

menunjukkan contohnya.

<element name="publisherAssertion" type="uddi:publisherAssertion"

/>

<complexType name="publisherAssertion">

<sequence>

<element ref="uddi:fromKey" />

<element ref="uddi:toKey" />

<element ref="uddi:keyedReference" />

</sequence>

</complexType>

<bindingTemplate>

bindingKey=“MNOP”

serviceKey=“EFGH”>

<description>

Web Service

</description>

<accessPoint>

http://bbc.co.uk/news

</accessPoint>

<tModelInstanceDetails>

<tModelInstanceInfo tModelKey=”QRST”/>

</tModelInstanceDetails>

</businessTemplate>

<tModel tModelKey=”QRST”>

<overviewDoc>

<overviewURL>

http://bbc.co.uk/news?wsdl

</overviewURL>

</overviewDoc>

</tModel>

<businessEntity

businessKey=“ABCD”>

<name>BBC</name>

<description>

...

</description>

</businessEntity>

<businessService

serviceKey=“EFGH”

businessKey=“ABCD”>

<name>News</name>

</businessService>

Page 165: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

UNIVERSAL DESCRIPTION, DISCOVERY AND INTEGRATION (UDDI) 157 PAGE 10

15.9 UDDI Query

Interface inquiry mendefinisikan sepuluh operasi untuk pencarian

registry UDDI dan mengambil rincian registrasi khusus:

find_binding: mencari web service yang cocok dengan informasi

binding.

find_business: mencari entitas bisnis.

find_ltservice: mencari daftar web service.

find_tModel: mencari tModel.

get_bindingDetail: mendapatkan informasi rinci web service yang sesuai dengan binding.

get_businessDetail: mendapatkan rincian entitas bisnis dan web

servucenya.

get_businessDetailExt: mendapatkan informasi registrasi entitas

bisnis selengkapnya.

get_serviceDetail: mendapatkan rincian bisnis service.

get_tModelDetail: mendapatkan rincian informasi registrasi sesuai tModel.

find_relatedBusinesses: menemukan bisnis terkait melalaui uddi-

org:relationships model.

Page 166: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

158 PAGE 10

Rangkuman

1. UDDI digunakan untuk mendaftarkan web service ke UDDI registry.

2. Ada tiga tipe informasi dapat disimpan dalam UDDI registri : white yellow

(entitas bisnis), yellow page (business service), dan green page (web

service).

3. Ada lima struktur data dalam skema XML UDDI : businessEntity,

businessService, bindingTemplate, tModel, publisherAssertion

4. Disediakan beragam query untuk mendapatkan data dari UDDI registry.

Kuis Benar Salah

1. UDDI dibuat untuk bertukar informasi antar aplikasi.

2. UDDI, dibuat oleh Microsoft, hanya berlaku di lingkungan sistem

operasi Window.

3. UDDI tidak berhubungan dengan WSDL.

4. Green page berisi data entitas bisnis.

5. UDDI tidak hanya dibatasi untuk menggambarkan web service

berdasarkan SOAP.

Page 167: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

UNIVERSAL DESCRIPTION, DISCOVERY AND INTEGRATION (UDDI) 159 PAGE 10

Pilihan Ganda

Petunjuk: Pilihlah jawaban yang paling tepat!

1.

Dari komponen arsitektur teknik berikut yang mana yang merupakan

situs operator yang menyediakan implementasi spesifikasi UDDI?

A. UDDI data model D. Business Entity

B. UDDI API Spesification E. Business Service

C. UDDI cloud services

2.

Di antara komponen skema XML UDDI, yang berisi identitas

perusahan adalah:

A. businessEntity D tModel

B. businessService E. publisherAssertion

C. bindingTemplate

3.

Di antara komponen skema XML UDDI, yang berisi produk yang

ditawarkan perusahan adalah:

A. businessEntity D tModel

B. businessService E. publisherAssertion

C. bindingTemplate

4.

Di antara komponen skema XML UDDI, yang berisi informasi teknis

bagaimana mengakses web service adalah:

A. businessEntity D tModel

B. businessService E. publisherAssertion

C. bindingTemplate

5.

Di antara komponen skema XML UDDI, yang berisi hubungan antar

entitas bisnis:

A. businessEntity D tModel

B. businessService E. publisherAssertion

C. bindingTemplate

Page 168: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

160 PAGE 10

Latihan

1. Jika perusahan PT.ABC beralamat di Jl.Abc 11 mendaftarkan diri

sebagai entitas bisnis, bagaimana bentuk skema XMLnya?

2. Jika perusahaan tersebut menjual barang-barang elektronik, TV,

radio, dsb, bagaimana bentuk skema XMLnya?

3. Jika perusahaan ini membuat web service “salesOrderSystem”,

bagaimana bentuk skema XMLnya?

4. Jika salesOrderSystem dapat diakses dari www.ABC.com bagaimana

bentuk skema XMLnya?

5. Apakah ada hubungan antara UDDI dengan WSDL? Jelaskan.

Page 169: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Implemenetasi Web Service 161 PAGE 10

16 IMPLEMENTASI WEB SERVICE

Overview

Di bagian terdahulu sudah dibahas Web Service dibangun dari tiga

komponen: SOAP, UDDI dan WSDL. Pada bab ini dibahas bagaimana

mengimplementasikan Web Service.

Tujuan

1. Mengenal Web Service Toolkit

2. Mencoba salah satu Web Service Toolkit untuk

mengimplementasikan Web Service.

Page 170: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

162 PAGE 10

16.1 Pengantar

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 171: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Implemenetasi Web Service 163 PAGE 10

Berikut adalah contoh Web Service Toolkit, bahasa yang didukung dan Web

Servernya :

Web Service Toolkit Bahasa Web Server

Apache AXIS

(open source)

Java, C++ Apache Tomcat

Microsoft .Net

Visual Basic, C#, Perl…

(SO Windows)

IIS

SOAP::Lite Perl bebas

16.2 Contoh Di Apache AXIS

Apache AXIS adalah engine 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/.

16.2.1 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 172: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

164 PAGE 10

16.2.2 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

16.2.3 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 173: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Implemenetasi Web Service 165 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;

}

Page 174: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

166 PAGE 10

Tahap 3: Tulis kode client

import Calculator.*;

public class CalcClient {

public static void main(String[] args) {

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 175: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Implemenetasi Web Service 167 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 (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)

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

Page 176: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

168 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

Page 177: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Implemenetasi Web Service 169 PAGE 10

Kuis Benar Salah

1. Dengan adanya Web Service Toolkit, pemrograman Web Service

menjadi mudah.

2. Tanpa Web Service Toolkit, programmer harus membuat XML,

SOAP, HTTP sendiri.

3. Kita bebas mendownload Web Service Toolkit Apache AXIS.

4. Kita bebas mendownload Microsoft.NET

5. Deploy cara instant lebih mudah daripada cara custom.

Page 178: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

170 PAGE 10

Pilihan Ganda

Petunjuk: Pilihlah jawaban yang paling tepat!

1. Berikut adalah Web Service Toolkit yang bebas didownload:

A. Apache AXIS D. J2EE Server

B. Microsoft .NET E. IIS

C. SOAP :: Lite

2. Untuk menjalankan Apache AXIS perlu diinstall berikut, kecuali:

A. Apache Tomcat D Sistem Operasi

B. Java E Microsoft .NET

C. Apache AXIS

Page 179: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

Implemenetasi Web Service 171 PAGE 10

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 180: XML Dan Web & Web Services

Politeknik Telkom XML dan Web Service

172 PAGE 10

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