You are on page 1of 180

Politeknik Telkom

XML dan Web Service

XML dan WEB SERVICES

POLITEKNIK TELKOM
BANDUNG
2009

i
PAGE 10

Politeknik Telkom

XML dan Web Service

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.
ii
PAGE 10

Politeknik Telkom

XML dan Web Service

KATA PENGANTAR
Assalamualaikum 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.
Wassalamualaikum Wr. Wb.
Bandung, Maret 2009

Christanto Triwibisono
Wakil Direktur I
Bidang Akademik & Pengembangan

iii
PAGE 10

Politeknik Telkom

XML dan Web Service

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
iv
PAGE 10

Politeknik Telkom

5.2
5.3
5.4
6
6.1
6.2
6.3
6.4
6.5
6.6
6.7
6.8
6.9
6.10
6.11
7
7.1
7.2
7.3
7.4
7.5
7.6
7.7
8
8.1
8.2
8.3
8.4
8.5
8.6
9
9.1
9.2
9.3
9.4
9.5
9.6
9.7
10
10.1

XML dan Web Service

Direct Display of XML in Browsers ........................................................46


Authoring Compound Documents with Modular XHTML .........................49
Prospects for Improved Web-Search Methods ............................................49
XSL Transformations (XSLT) ..................................................52
An Example Input Document ........................................................................53
xsl:stylesheet dan xsl:transform .....................................................................53
Stylesheet Processors ......................................................................................54
Templates and Template Rules ....................................................................55
Calculating the Value of an Element with xsl:value-of ................................56
Applying Templates with xsl:apply-templates ..............................................56
The Built-in Template Rules ..........................................................................57
Modes ..............................................................................................................58
Attribute Value Templates .............................................................................58
XSLT and Namespaces ...............................................................................59
Other XSLT Elements ....................................................................................59
XPath ....................................................................................61
The Tree Structure of an XML Document ..................................................62
Location Paths .................................................................................................62
Compound Location Paths .............................................................................65
Predicates ........................................................................................................66
Unabbreviated Location Paths .......................................................................67
General XPath Expressions ...........................................................................68
XPath Functions ..............................................................................................69
XLinks ...................................................................................72
Simple Links ....................................................................................................73
Link Behavior...................................................................................................73
Link Semantics ................................................................................................74
Extended Links ................................................................................................75
Linkbases .........................................................................................................77
DTD untuk XLink ........................................................................................77
XPointer................................................................................79
XPointers pada URL ....................................................................................80
XPointers pada Link ....................................................................................81
Bare Names ....................................................................................................82
Child Sequences ..............................................................................................82
Namespaces ...................................................................................................82
Points ...............................................................................................................83
Ranges .............................................................................................................84
XML Schemas .......................................................................86
Overview .......................................................................................................87
v
PAGE 10

Politeknik Telkom

XML dan Web Service

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
vi
PAGE 10

Politeknik Telkom

XML dan Web Service

<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

vii
PAGE 10

Politeknik Telkom

XML dan Web Service

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

viii
PAGE 10

Politeknik Telkom

XML dan Web Service

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

Mahasiswa dapat memahami struktur dokumen XML


Mahasiswa dapat memahami penggunaan data dengan XML
Mahasiswa dapat membedakan antara data dokumen XML dengan
database server

Pengenalan XML

1
PAGE 10

Politeknik Telkom

XML dan Web Service

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

2
PAGE 10

Politeknik Telkom

3.
4.
5.

1.2

XML dan Web Service

Fungsi search lebih cepat


Informasi yang tersimpan akan lebih mudah ditemukan meskipun
berbeda platform.
Dapat ditukar atau digabung dengan dokumen lain
Dengan memisahkan isi data dengan presentasi, maka akan
mempemudah penggabungan data dari berbagaimacam sumber.
Penyederhanaan aplikasi
Untuk mengakses data menjadi lebih sederhana, client tidak perlu
memerlukan lisensi atau hak akses terhadap data

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

3
PAGE 10

Politeknik Telkom

XML dan Web Service

<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
4
PAGE 10

Politeknik Telkom

8.

XML dan Web Service

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

Pengenalan XML

5
PAGE 10

Politeknik Telkom

XML dan Web Service

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 wellformed, 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.
6
PAGE 10

Politeknik Telkom

8.

XML dan Web Service

XFragment
Usaha untuk menjelaskan bagian diluar dokumen XML yang mungkin
dokumen tersebut tidak well-formed.

Pengenalan XML

7
PAGE 10

Politeknik Telkom

XML dan Web Service

Rangkuman

1.

2.
3.
4.

5.

EXtensible Markup Language (XML ), merupakan sebuah standar


W3C-endorsed untuk Markup language

Markup language merupakan suatu bahasa pemprograman untuk


menandai suatu dokumen yang disebut dengan tag agar dokumen
tersebut lebih mudah dibaca, dipahami serta menarik
XML memungkinkan penggunaan data secara cross-platform, longterm data format.
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.
XML memungkinkan kita untuk mengumpulkan informasi dan
menggunakannya kembali dengan berbagai cara.

8
PAGE 10

Politeknik Telkom

XML dan Web Service

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

Mahasiswa dapat membuat dokumen XML dan file XML


Mahasiswa dapat membedakan antara tag, elemen, atribut, Cdata,
emtity serta penggunaannya

XML Fundamental

9
PAGE 10

Politeknik Telkom

2.1

XML dan Web Service

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,
10
PAGE 10

Politeknik Telkom

XML dan Web Service

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.

XML Fundamental

11
PAGE 10

Politeknik Telkom

XML dan Web Service

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.

12
PAGE 10

Politeknik Telkom

XML dan Web Service

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

13
PAGE 10

Politeknik Telkom

XML dan Web Service

Berikut ini penulisan yang juga benar dimana nilainya diapit dengan tanda kutip
satu dan menempatkan beberapa spasi diantaranya.
<person died = '1954-06-07'
Alan Turing
</person>

born = '1912-06-23' >

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.

14
PAGE 10

Politeknik Telkom

XML dan Web Service

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>
<tlphone>011 33 91 55 27 55 27</tlphone>
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>

XML Fundamental

15
PAGE 10

Politeknik Telkom

2.6

XML dan Web Service

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 :
16
PAGE 10

Politeknik Telkom

XML dan Web Service

<!-- 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.
XML Fundamental

17
PAGE 10

Politeknik Telkom

XML dan Web Service

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 diindex. 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.
18
PAGE 10

Politeknik Telkom

XML dan Web Service

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

XML Fundamental

19
PAGE 10

Politeknik Telkom

XML dan Web Service

2.10 Checking Documents for Well-Formedness


Setiap dokumen XML harus well-formed. Ini berarti harus sesuai dengan
aturan yang ada misalnya :
1.
2.
3.
4.
5.
6.
7.

Setiap awal tag harus diakhiri dengan tag yang sama.


Elemen boleh bersarang, tetapi tidak boleh saling tumpang tindih
Harus memiliki tepat satu elemen root.
Nilai atribut harus diapit oleh tanda petik.
Satu elemen tidak boleh memiliki dua atribut yang sama
komentar pemprosesan intruksi tidak muncul didalam tag
Tidak ada unescaped < atau & atau tanda-tanda lainnya

20
PAGE 10

Politeknik Telkom

XML dan Web Service

Rangkuman

1.
2.
3.
4.

Dokumen XML dapat disimpan dengan extensi XML ataupun yang


lainnya asal didalam file tersebut merupakan dokumen XML
Penulisan XML name harus mengandung karakter yang sering
diunakan seperti a-z, A-Z, 0-9, -, _.
CData digunakan untuk membolehkan kita untuk menuliskan
karakter yang merupakan karakter entity.
Komentar merupakan kode yang tidak akan dieksekusi oleh parser

XML Fundamental

21
PAGE 10

Politeknik Telkom

XML dan Web Service

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

Mahasiswa mehamami apa yang dimaksud dengan DTD


Mahaiswa dapat menggunakan DTD untuk elemen dan atribut.
Mahasiswa dapat membuat dokumen XML berdasarkan DTD yang
sudah ada.

22
PAGE 10

Politeknik Telkom

3.1

XML dan Web Service

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>
Document Type Definitions (DTDs)

23
PAGE 10

Politeknik Telkom

XML dan Web Service

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
24
PAGE 10

Politeknik Telkom

XML dan Web Service

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)>
Document Type Definitions (DTDs)

25
PAGE 10

Politeknik Telkom

XML dan Web Service

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.
26
PAGE 10

Politeknik Telkom

XML dan Web Service

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>
Document Type Definitions (DTDs)

27
PAGE 10

Politeknik Telkom

XML dan Web Service

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
width
height
alt
>

image
CDATA
CDATA
CDATA

source CDATA #REQUIRED


#REQUIRED
#REQUIRED
#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>
28
PAGE 10

Politeknik Telkom

XML dan Web Service

NMTOKENS
Type atribut yang mengandung satu atau lebih token XML name yang
dipisahkan dengan spasi
<performances dates="08-21-2001
27-2001">
Kat and the Kings
</performances>
Enumeration
Atribut yang bukan merupakan keyword XML.

08-23-2001

08-

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

Document Type Definitions (DTDs)

29
PAGE 10

Politeknik Telkom

XML dan Web Service

#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 admin@somethingweb.com, maka contoh
penulisannya :
<!ENTITY email "admin@somethingweb.com">
<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
menggunakan pendeklarasian ENTITY. Contohnya :

didalam

DTD

yang

30
PAGE 10

Politeknik Telkom

XML dan Web Service

<!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>
Document Type Definitions (DTDs)

31
PAGE 10

Politeknik Telkom

XML dan Web Service

kemudian
elemen
gambar
ini
http://www.turing.org.uk/turing/pi1/bus.jpg

akan

merujuk

pada

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

apartment
sublet
coop
condo
house

(address,
(address,
(address,
(address,
(address,

rooms,
rooms,
rooms,
rooms,
rooms,

baths,
baths,
baths,
baths,
baths,

rent)>
rent)>
price)>
price)>
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">

32
PAGE 10

Politeknik Telkom

XML dan Web Service

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
footage,
rooms,
bedrooms,
available_date">

"address,
baths,

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;

Document Type Definitions (DTDs)

33
PAGE 10

Politeknik Telkom

3.8

XML dan Web Service

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.

34
PAGE 10

Politeknik Telkom

XML dan Web Service

Rangkuman

1.
2.
3.

Aplikasi XML harus memastikan bahwa dokumen yang diberikan


adalah benar-banar mematuhi aturan
DTD digunakan untuk mendeklarasikan semua elemen dan atribut
yang akan digunakan pada dokumen XML
DTD dibuat untuk memeriksa kevalid-ad sebuah dokumen XML,
apakan dokumen XML yang dibuat sudah mengacu pada DTD yang
ada.

Document Type Definitions (DTDs)

35
PAGE 10

Politeknik Telkom

XML dan Web Service

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

Mahasiswa dapat memahami maksud dan tujuan dari pembuatan


namespace
Mahasiswa dapat membedakan kapan harus menggunakan namespace
dan kapan tidak
Mahasiswa Menggunakan namespace pada kasus yang sesuai

36
PAGE 10

Politeknik Telkom

4.1

XML dan Web Service

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

37
PAGE 10

Politeknik Telkom

XML dan Web Service

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

38
PAGE 10

Politeknik Telkom

XML dan Web Service

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

Namespaces

39
PAGE 10

Politeknik Telkom

8.

XML dan Web Service

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
"http://www.w3.org/2000/">

CDATA

#FIXED

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 wellformed dokumen. Pemeriksaan dikhususkan untuk melihat semua prefik yang
dipetakan ke URI. Hal ini akan merijek dokumen yang menggunakan
unmapped prefik (kecuali xmlns, xml).

40
PAGE 10

Politeknik Telkom

4.4

XML dan Web Service

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

Namespaces

41
PAGE 10

Politeknik Telkom

XML dan Web Service

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.

42
PAGE 10

Politeknik Telkom

XML dan Web Service

Rangkuman

1.
2.

Namespaces dibuat dengan tujuan untuk membedakan nama elemen


yang sama namun memiliki atri yang berbeda.
Namespaces diimplementasikan dengan menempelkan awalan untuk
setiap elemen dan atribut.

Namespaces

43
PAGE 10

Politeknik Telkom

XML dan Web Service

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 searchengine spiders dapat dengan mudah menentukan makna dari konten.

Tujuan

1.
2.
3.
4.

Mahasiswa Dapat mengerti XHTML


Mahasiswa dapt membedakan antara XHTML dengan HTML
Mahasiswa dapat menuliskan XHTML dengan aturan-aturan yang
telah ditetapkan
Mahasiswa memahamin cara kerja XHTML dalam menampilkan
dokumen

44
PAGE 10

Politeknik Telkom

5.1

XML dan Web Service

XHTML

XHTML merupakan rekomendasi resmi dari W3C, dan mendefinisikan XMLcompatible 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.

XML pada Web

45
PAGE 10

Politeknik Telkom

XML dan Web Service

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


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

XHTML

1.0

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.

46
PAGE 10

Politeknik Telkom

XML dan Web Service

The xml-stylesheet Processing Instruction


Stylesheet yang berhubungan dengan dokumen diindikasikan oleh xmlstylesheet 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 xmlstylesheet. 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 textonly.
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

XML pada Web

47
PAGE 10

Politeknik Telkom

XML dan Web Service

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.
48
PAGE 10

Politeknik Telkom

XML dan Web Service

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/22rdf-syntax-ns#">
<rdf:Description about="urn:isbn:0596002920">
<author>Elliotte Rusty Harold</author>
<author>W. Scott Means</author>
XML pada Web

49
PAGE 10

Politeknik Telkom

XML dan Web Service

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

50
PAGE 10

Politeknik Telkom

XML dan Web Service

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

XML pada Web

51
PAGE 10

Politeknik Telkom

XML dan Web Service

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

Mahasiswa dapat memahami XSLT


Mahasiswa dapat menspesifikasikan XSLT pada dokumen XML
Mahasiswa dapat membuat XSLT pada dokumen XML
Mahasiswa bisa membedakan perintah XSLT dengan XPath

52
PAGE 10

Politeknik Telkom

6.1

XML dan Web Service

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=
XML Transformations (XSLT)

53
PAGE 10

Politeknik Telkom

XML dan Web Service

"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.
54
PAGE 10

Politeknik Telkom

XML dan Web Service

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

XML Transformations (XSLT)

55
PAGE 10

Politeknik Telkom

6.5

XML dan Web Service

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 :
56
PAGE 10

Politeknik Telkom

XML dan Web Service

<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
instruction()|comment( )"/>

match="processing-

rule ini cocok untuk semua command dan pemprosesan instruksi.


XML Transformations (XSLT)

57
PAGE 10

Politeknik Telkom

6.8

XML dan Web Service

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.
58
PAGE 10

Politeknik Telkom

XML dan Web Service

<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.
XML Transformations (XSLT)

59
PAGE 10

Politeknik Telkom

XML dan Web Service

Rangkuman

1.
2.
3.

XSLT merupakan aplikasi XML untuk menspesifikasikan aturan


antara dokumen XML yang satu ditranformasikan menjadi dokumen
XML lainnya
XSLT mirip dengan bahasa pemprograman
Tujuan pembuatan XSLT adalah untuk memilih-milah elemen
dokumen yang akan dotampilkan sesuai dengan keinginan

60
PAGE 10

Politeknik Telkom

XML dan Web Service

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

Xpath

Mahasiswa dapt memahami arti Xpath


Mahasiswa dapat mengetahui semua bagian-bagian Xpath
Mahasiswa dapat membuat XPath pada XSLT

61
PAGE 10

Politeknik Telkom

7.1

XML dan Web Service

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.

62
PAGE 10

Politeknik Telkom

XML dan Web Service

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

63
PAGE 10

Politeknik Telkom

XML dan Web Service

</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.
64
PAGE 10

Politeknik Telkom

XML dan Web Service

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

Xpath

65
PAGE 10

Politeknik Telkom

XML dan Web Service

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
66
PAGE 10

Politeknik Telkom

XML dan Web Service

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

Xpath

67
PAGE 10

Politeknik Telkom

7.6

XML dan Web Service

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
:
+
*
div
mod

Addition
Subtraction
Multiplication
Division
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.

68
PAGE 10

Politeknik Telkom

XML dan Web Service

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

Xpath

69
PAGE 10

Politeknik Telkom

XML dan Web Service

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.

70
PAGE 10

Politeknik Telkom

XML dan Web Service

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

Xpath

memanggilnya dengan menggunakan pemanggilan mirip dengan


direktori folter pada hardisk.
XPath dijalankan dengan menggunakan XSLT.

71
PAGE 10

Politeknik Telkom

XML dan Web Service

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

Mahasiswa dapat mengerti yang dimaksud dengan Xlink


Mahasiswa dapat membedakan XLink pada XML dan tag A pada
HTML
Mahasiswa dapat memahami struktur serta atrubut yang ada pada
Xlink
Mahasiswa dapat menggunakan XLink pada Dokumen XML.

72
PAGE 10

Politeknik Telkom

8.1

XML dan Web Service

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

73
PAGE 10

Politeknik Telkom

XML dan Web Service

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 previous74
PAGE 10

Politeknik Telkom

XML dan Web Service

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>

Xlink

75
PAGE 10

Politeknik Telkom

XML dan Web Service

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"
Frank Baum</author>

xlink:label="baum">L.

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>
76
PAGE 10

Politeknik Telkom

XML dan Web Service

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

Xlink

77
PAGE 10

Politeknik Telkom

XML dan Web Service

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

78
PAGE 10

Politeknik Telkom

XML dan Web Service

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

Mahasiswa dapat memahami Xpointer


Mahasiswa dapat menjelaskan struktur yang ada dalam Xpointer
Mahasiswa dapat membuat XPointer dalam dokumen XML

XPointer

79
PAGE 10

Politeknik Telkom

9.1

XML dan Web Service

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
80
PAGE 10

Politeknik Telkom

XML dan Web Service

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
XPointer

81
PAGE 10

Politeknik Telkom

XML dan Web Service

< 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#NTAbsoluteLocationPath ke-elemen XPath pada atribut tipe ID dengan nilai NTAbsoluteLocationPath.
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

82
PAGE 10

Politeknik Telkom

XML dan Web Service

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

XPointer

83
PAGE 10

Politeknik Telkom

9.7

XML dan Web Service

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.

84
PAGE 10

Politeknik Telkom

XML dan Web Service

Rangkuman

1.
2.
3.
4.

XPointer digunakan untuk mengidentifikasi lokasi didalam dokumen


XML
XPointer dapat digunakan pada URL dan link
XPointer dibuat untuk menandai gaiang-bagian yang ada didalam
dokumen XML dan semua sintaksnya dapat langsung mengarahkan
penampilah pada lokasi yang diinginkan.
Selain pada bagian penanda, XPointer juga dapat menandai sesuatu
didalam elemen berdasarkan tag, komentar dan yang lainnya

XPointer

85
PAGE 10

Politeknik Telkom

XML dan Web Service

10 XML Schemas

Overview

Meskipun Document Type Definitions (DTD) dapat menerapkan aturandasar 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.
2.
3.

Mahasiswa dapat memahami penggunaan schema


Mahasiswa dapat menggunakan schema pada dokumen XML
Mahasiswa dapat membedakan antara schema dan DTD

86
PAGE 10

Politeknik Telkom

XML dan Web Service

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 namespaceaware 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.
XML Schemas

87
PAGE 10

Politeknik Telkom

XML dan Web Service

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,
88
PAGE 10

Politeknik Telkom

XML dan Web Service

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

89
PAGE 10

Politeknik Telkom

XML dan Web Service

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>

90
PAGE 10

Politeknik Telkom

XML dan Web Service

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>

XML Schemas

91
PAGE 10

Politeknik Telkom

XML dan Web Service

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

92
PAGE 10

Politeknik Telkom

XML dan Web Service

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
final="extension">

XML Schemas

name="physicalAddressType"

93
PAGE 10

Politeknik Telkom

XML dan Web Service

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>
94
PAGE 10

Politeknik Telkom

XML dan Web Service

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

XML Schemas

95
PAGE 10

Politeknik Telkom

XML dan Web Service

Rangkuman

1.
2.
3.

Pada dasarnya kegunaan skema adalah untuk melengkapi


kekurangan-kekurangan yang ada pada DTD.
Skema dapat menjelaskan complex restrictions pada elemen dan
atribut bahkan Beberapa skema dapat dikombinasikan menjadi
dokumen yang menggunakan beberapa kosakata XML
Sebuah dokumen XML yang dideskripsikan oleh skema disebut
dengan instance document.

96
PAGE 10

Politeknik Telkom

XML dan Web Service

11 DOCUMENT OBJECT MODEL

Overview

Bab ini mengenalkan DOM (Document Object Model) dan penggunaannya


dalam program untuk mengakses dan memanipulasi dokumen XML.

Tujuan

1.
2.

mengenal DOM XML


menggunakan objek-objek DOM XML untuk mengakses berbagai
bagian dokumen XML.

Document Object Model

97
PAGE 10

Politeknik Telkom

XML dan Web Service

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

98
PAGE 10

Politeknik Telkom

XML dan Web Service

MSXML Library
Dokumen
XML

Parser

DOM Tree
Root
Child

Aplikasi
text

Child
text

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

PRODUCT

PRODID

PRODNAME

PRODPRICE

PRODID

PRODNAME

PRODPRICE

P001

Beras

5000

P002

Jagung

4000

Document Object Model

99
PAGE 10

Politeknik Telkom

XML dan Web Service

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
createElement(e
lementname)

docobj.createElement(
PRODUCT)

createAttribute(
attributename)

docobj.createAttribute(P
RODID)

createCommen
t(text)

docobj.createComment(
This is an XML
document)
docobj.createTextNode(
Mini Bus)
docobj.createNode(elem
ent, PRODUCT, )

createTextNod
e(text)
createNode(typ
e,name,namespa

Penjelasan
Membuat element baru
<PRODUCT></PROD
UCT>
Membuat atribut
<PRODUCT
PRODID=><PROD
UCT>
Membuat komentar
Membuat text untuk
node
Membuat node

100
PAGE 10

Politeknik Telkom

XML dan Web Service

ce-URI)
docobj.createNode(elem
ent, prod:PRODUCT,
www.ecomatcybershopp
e.com/Products)

getElementsByT
agName(elemen
tName)
load(XMLdocu
ment)

loadXML(string)

transformNode(
style
sheet object)

appendChild(chi
ld node)

docobj.createNode(1,
PRODUCT, )
docobj.getElementsByTag
Name(PRICE)
docobj.load(http://www.
ecomatcybershoppe.com/
products.xml)
docobj.load(c:\products.
xml)
docobj.loadXML(<?xmlv
ersion=1.0>
<PRODUCTS>
<PRODUCT>
<NAME> Barbie Doll
</NAME> </PRODUCT>
</PRODUCTS>)
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.
docobj.appendChild(root)

Document Object Model

Mengambil semua node


dengan nama tag PRICE
Mengambil dokumen xml

Mengambil dokumen
XML dari string

Mengatur format
dokumen XML menurut
style sheet

Membuat child baru dari


suatu node
101
PAGE 10

Politeknik Telkom

save(destination
)
createDocumen
tFragment()
createProcessin
gInstruction(tar
get, text)
createEntityRef
erence(referenc
e name)
createElementN
S(namespaceUR
I, qualifiedname)
createAttribute
NS(namespace
URI,
qualifiedName)
getElementsByT
agNameNS()

XML dan Web Service

docobj.save(http://www.
ecomatcybershoppe.com/
product.xml)
docobj.createDocumentF
ragment()
docobj.createProcessingIn
struction(XML,
version=1.0)
docobj.createEntityRefere
nce(newref)

Menyimpan dokumen
XML yang ada di RAM ke
disk
Membuat fragment
(bagian) dokumen XML
Membuat
ProcessingInstruction

docobj.createElementNS(
http://www.cybershoppe.
com/element,
NewE)
docobj.createAttributeNS
(http://www.cybershoppe
.com/attribute,
NewA)
Docobj.getElementsByTag
NameNS(http://www.w3.
org/1998/Math/MathML
,apply)

Membuat element di
namespace

Membuat objek
EntityReference

Membuat atribut di
namespace
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 =
Daftar node anak dari
docobj.childNodes.item(1 suatu parent node.
)
documentEleme var
Elemen root.
nt
root=docobj.documentEl
ement
firstChild
var
Anak pertama
firstelem=docobj.firstChil
d
102
PAGE 10

Politeknik Telkom

lastChild
parseError

readyState

var
firstelem=docobj.lastchild
var error =
docobj.parseError
var stateinfo =
docobj.readyState
if (stateinfo == 4)
//Document loading
//completed
{
:
[perform someaction]
:}

XML dan Web Service

Anak terakhir
Memberikan object
ParseError yang berisi
status load dokumen
XML
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)
Document Object Model

103
PAGE 10

Politeknik Telkom

XML dan Web Service

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.
104
PAGE 10

Politeknik Telkom

XML dan Web Service

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");
Document Object Model

105
PAGE 10

Politeknik Telkom

XML dan Web Service

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.
106
PAGE 10

Politeknik Telkom

XML dan Web Service

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.

Document Object Model

107
PAGE 10

Politeknik Telkom

XML dan Web Service

Rangkuman

1.
2.
3.
4.
5.

DOM adalah antarmuka pemrograman aplikasi yang mengijinkan


aplikasi mengakses dokumen XML.
Objek-objek DOM dipakai untuk mengakses dan memanipulasi
dokumen XML.
MSXML parser membuat struktur tree representasi dokumen XML.
Node adalah wadah berisi informasi tentang elemen, atribut, dan isi
dokumen XML.
Objek DOM berikut digunakan untuk memanipulasi data dalam
dokumen XML: Document , Element, Node, NodeList, Attr, Text,
CDataSection, ParseError

108
PAGE 10

Politeknik Telkom

XML dan Web Service

Kuis Benar Salah

1.
2.
3.
4.
5.

Data XML dikelola DOM dalam bentuk struktur linked list (list berkait).
DOM dibuat oleh Microsoft.
Object yang merupakan root dari struktur tree DOM adalah Element
ParseError digunakan untuk memeriksa kesalahan validasi dokumen
XML.
Mendapatkan node-node anak digunakan properti ChildNodes.

Document Object Model

109
PAGE 10

Politeknik Telkom

XML dan Web Service

Pilihan Ganda

Petunjuk: Pilihlah jawaban yang paling tepat!


1.
A.
B.
C.
2
A.
B.

DOM singkatan dari :


Directory Object Model
Document Oriented Medium
Document Oriented Model

D.
E.

Document Object Medium


Document Object Model

D.
E.

Memanipulasi dokumen XML


Jawaban A dan D benar

C.

DOM dibuat untuk :


Mengakses dokumen XML
Memodelkan dokumen XML
Membuat objek dokumen
XML

3.
A.
B.
C.

DOM merepresentasikan data dokumen XML dalam bentuk


struktur data tree
D. struktur data stack
struktur data graph
E. struktur data queue
struktur data stack

4.
A.
B.
C.

Berikut adalah objek-objek DOM kecuali:


Tree
D. Node
Document
E. NodeList
Element

5.
A.
B.
C.

Property Node untuk mendapatkan node-node anak adalah:


nodeName
D. childNodes
nodeType
E. firstChild
nodeValue

110
PAGE 10

Politeknik Telkom

XML dan Web Service

Latihan

1.
2.
3.
4.
5.

Apa manfaat DOM?


Sebutkan objek-objek dalam DOM!
Sebutkan method-method dalam objek Document dan kegunaannya.
Sebutkan property dalam objek Dokumen dan kegunaannya.
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?

Document Object Model

111
PAGE 10

Politeknik Telkom

XML dan Web Service

12 SIMPLE API FOR XML (SAX)

Overview

Bab ini mengenalkan Simple API for XML (SAX) dan menggunakannya
untuk mengakses dokumen XML.

Tujuan

1.
2.
3.

Mempelajari SAX sebagai alternative selain DOM untuk mengakses


dokumen XML
Melihat fitur-fitur SAX
Menelusuri dokumen XML dengan SAX API

112
PAGE 10

Politeknik Telkom

XML dan Web Service

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
Cara penelusuran
DOM membaca
keseluruhan
Organisasi
DOM menggunakan
informasi
struktur tree
Akses informasi
dalam DOM dilakukan
dengan penelusuran
pohon
Kecepatan
DOM me-load semua
data XML. Jika dokumen
besar, akan lambat.
kompleksitas
Sudah disedikana object
pengembangan
berikut property dan
methodnya
penggunaan
DOM butuh memori
memori
untuk menyimpan tree
kemampuan
Setelah tersimpan di
navigasi
memori, tree DOM dapat
diakses bebas
kemudahan
dalam DOM isi dokumen
transformasi
XML dapat diubah

Simple API for XML (SAX)

SAX
SAX membaca satu per
satu komponen XML
SAX bukan tree
dalam SAX sekuensial
untuk browse SAX lebih
bagus
Di SAX harus mengoverride method terkait.
SAX tidak
dalam SAX jika ingin
mengulang, selalu dari awal
lagi
dalam SAX dokumen XML
hanya untuk dibaca

113
PAGE 10

Politeknik Telkom

XML dan Web Service

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.

Program Anda
startDocument(...)
main(...)

The SAX parser


parse(...)

startElement(...)
characters(...)
endElement()
endDocument( )

Gambar 11.1 Callback pada SAX


Kode berikut menjelaskan bagaimana beragam method callback dipanggil
ketika memproses dokumen XML:
<!-- parser memanggil method startElement()-->
<Address>
114
PAGE 10

Politeknik Telkom

XML dan Web Service

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

Xerces

http://xml.apache.org

MSXML
4.0
JAXP

http://www.microsoft.com/downloads/details.aspx C++, VB
http://java.sun.com/xml/downloads/jaxp.html

Bahasa yang
didukung
Java, C++, Perl

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
Simple API for XML (SAX)

115
PAGE 10

Politeknik Telkom

XML dan Web Service

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:
116
PAGE 10

Politeknik Telkom

1.
2.
3.
4.

XML dan Web Service

import package terkait.


extends class DefaultHandler.
parse dokumen XML.
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);
Simple API for XML (SAX)

117
PAGE 10

Politeknik Telkom

XML dan Web Service

}
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);
}
}
118
PAGE 10

Politeknik Telkom

XML dan Web Service

/* 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 */
Simple API for XML (SAX)

119
PAGE 10

Politeknik Telkom

XML dan Web Service

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
120
PAGE 10

Politeknik Telkom

XML dan Web Service

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.

Simple API for XML (SAX)

121
PAGE 10

Politeknik Telkom

XML dan Web Service

Rangkuman

1.
2.

3.
4.
5.

SAX adalah alternatif selain DOM untuk mengakses dokumen XML.


Dibanding DOM, SAX menelusuri dokumen XML dari awal hingga
akhir, tidak membentuk tree, lebih cepat untuk browse, harus mengoverride method callback, lebih hemat memori, hanya membaca
dokumen XML, tidak mengubahnya.
Package Java org.xml.sax. berisi interface dasar SAX API.
Ada beragam interface yang dapat diimplement oleh program
pengguna : ContentHandler, ErrorHandler, DTDHandler.
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.

122
PAGE 10

Politeknik Telkom

XML dan Web Service

Kuis Benar Salah

1.
2.
3.
4.
5.

SAX sama dengan DOM dalam hal tujuannya untuk mengakses


dokumen XML, namun berbeda caranya.
SAX membentuk struktur tree dari dokumen XML.
SAX terakhir dibuat khusus untuk Java.
Harus meng-override method yang disediakan untuk membuat
aplikasi parser SAX.
Disebut callback karena memanggil kembali method yang dibuat
programmer.

Simple API for XML (SAX)

123
PAGE 10

Politeknik Telkom

XML dan Web Service

Pilihan Ganda

Petunjuk: Pilihlah jawaban yang paling tepat!


1.
A.
B.
C.

SAX singkatan dari:


Simple API for XML
Simple Access for XML
Standardized API for XML

2.
A.
B.
C.

SAX awal mula dibuat khusus untuk bahasa:


Java
D. JavaScript
C#
E. VBScript
VB.net

3.
A.
B.
C.

Struktur data yang digunakan SAX adalah:


tree
D. graph
linked list
E. tidak menggunakan struktur
data apapun
stack

4.
A.
B.
C.

SAX lebih unggul daripada DOM dari sisi :


Kecepatan browse
D. Penelusuran elemen
Kebutuhan memori
E. A dan B benar
Kemampuan mengubah data

5.

Ketika menemukan simbol < di dokumen XML, SAX parser akan


memanggil method :
startDocument()
D. endDocument()
startElement()
E. endElement()
Characters()

A.
B.
E.

D.
E.

Synchronized API for XML


Standardized Access for XML

124
PAGE 10

Politeknik Telkom

XML dan Web Service

Latihan

1.
2.

Jelaskan persamaan dan perbedaan antara SAX dan DOM.


Apakah program displayProductSax.java di atas dapat digunakan
untuk menelusuri semua dokumen XML? Jelaskan dan buktikan.

Simple API for XML (SAX)

125
PAGE 10

Politeknik Telkom

XML dan Web Service

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

Mengenal Web Services dan arsitekturnya


Mengenal WSDL dan komponennya

126
PAGE 10

Politeknik Telkom

13.1

XML dan Web Service

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

Application 2
XML

Website 1

Website 2

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.
Web Service Definition Language

127
PAGE 10

Politeknik Telkom

XML dan Web Service

Service
Registry

Find
(UDDI)

Publish
(UDDI)
Describe
(WSDL)

Service
Consum
er

Service
Provider

Bind
(SOAP)

Gambar 9.2 Protokol pendukung Web Service


Arsitektur Web Service diimplementasikan dalam lima layer berikut:
DISCOVERY
DESCRIPTION
PACKAGING
TRANSPORT
NETWORK
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.

128
PAGE 10

Politeknik Telkom

XML dan Web Service

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
<types>
<message>
<portType>
<binding>

<service>

Penjelasan
tipe data yang akan digunakan web service
messages yang akan dikirimkan web service
operasi (function) yang disediakan the web service.
Protokol komunikasi yang digunakan web service
- Bagaimana message dikirim di kabel?
- Apa rincian spesifik protokol message protocol
disana
Dimana service disimpan

Struktur utama dokumen WSDL adalah sebagai berikut:


<definitions>
Web Service Definition Language

129
PAGE 10

Politeknik Telkom

XML dan Web Service

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

130
PAGE 10

Politeknik Telkom

XML dan Web Service

Service

Port
(http://host/axis)

Port

Binding
(e.g. SOAP)

Binding

Port Type

(in) Message

Operation(s)

(out)
Message

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 elemenelemen data operasi. Setiap message dapat terdiri dari satu atau beberapa
bagian.
Web Service Definition Language

131
PAGE 10

Politeknik Telkom

XML dan Web Service

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

132
PAGE 10

Politeknik Telkom

XML dan Web Service

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 .... /> ?
Web Service Definition Language

133
PAGE 10

Politeknik Telkom

XML dan Web Service

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

134
PAGE 10

Politeknik Telkom

XML dan Web Service

Rangkuman

1.
2.
3.

Web Service adalah komponen program di suatu web site yang


dapat diakses dari web site lain.
Untuk menggambarkan service yang disediakan digunakan WSDL
(Web Service Description Language)
WSDL, dibuat dengan XML, terdiri dari tag-tag : <message>,
<portType>, <binding>, <service>, masing-masing dengan
manfaatnya sendiri.

Web Service Definition Language

135
PAGE 10

Politeknik Telkom

XML dan Web Service

Kuis Benar Salah

1.
2.
3.
4.
5.

Programmer biasanya lebih senang menggunakan coding karya


sendiri. Web Service, meski kelihatannya bagus, tidak akan
berkembang pesat seperti yang dibayangkan.
Web Service yang dibuat dengan bahasa Java harus diakses dengan
program berbahasa Java juga.
Pengaksesan service harus menggunakan format yang sudah
ditentukan oleh WSDL.
WSDL untuk menggambarkan service, SOAP untuk mengaksesnya,
UDDI untuk mendaftarkannya.
Program pengakses seharusnya membayar service yang disediakan
program lain.

136
PAGE 10

Politeknik Telkom

XML dan Web Service

Pilihan Ganda

Petunjuk: Pilihlah jawaban yang paling tepat!


1.
A.
B.
C.

Berikut adalah terapan konsep komunikasi antar program:


RPC
D. Web Service
RMI
E. Semua benar
Corba

2.
A.
B.
C.

Komponen berikut penting untuk berjalannya suatu Web Service:


WSDL
D. XML-RPC
UDDI
E. Semua benar
SOAP

3
A.
B.

C.

WSDL digunakan untuk:


Menggambarkan service.
Apa yang harus disiapkan
program lain yang akan
mengakses suatu service.
Apa masukan dan keluaran
service

4.
A.
B.
C.

Tag-tag berikut digunakan di WSDL kecuali:


<message>
D. <binding>
<portType>
E. <html>
<type>

5.
A.
B.
C.

Tag paling penting dalam dokumen WSDL adalah :


<message>
D. <binding>
<portType>
E. <service>
<type>

Web Service Definition Language

D.

Port mana yang dipakai

E.

Semua benar.

137
PAGE 10

Politeknik Telkom

XML dan Web Service

Latihan

1.
2.
3.
4.
5.

Apakah Web Service itu?


Jelaskan arsitektur Web Service.
Sebutkan apa saja yang dibutuhkan agar Web Service dapat bekerja.
Sebutkan tag-tag dalam dokumen WSDL dan manfaatnya.
Apakah programmer perlu membuat sendiri WSDL?

138
PAGE 10

Politeknik Telkom

XML dan Web Service

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

mengenal apakah SOAP itu dan apa manfaatnya


mengetahui bagaimana menggunakannya

UNIVERSAL DESCRIPTION, DISCOVERY AND INTEGRATION (UDDI)

139
PAGE 10

Politeknik Telkom

14.1

XML dan Web Service

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.

140
PAGE 10

Politeknik Telkom

XML dan Web Service

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.
SOAP Envelope
(Required)
SOAP Header
(Optional)
Extension Information
e.g. routing, security

SOAP Body
(Required)
Application Data
e.g. request, response
error

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
UNIVERSAL DESCRIPTION, DISCOVERY AND INTEGRATION (UDDI)

141
PAGE 10

Politeknik Telkom

XML dan Web Service

<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soapencoding">
<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>
142
PAGE 10

Politeknik Telkom

XML dan Web Service

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

UNIVERSAL DESCRIPTION, DISCOVERY AND INTEGRATION (UDDI)

143
PAGE 10

Politeknik Telkom

XML dan Web Service

Elemen Fault berisi sub elemen berikut:


Sub Elemen
<faultcode>
<faultstring>
<faultactor>
<detail>

Penjelasan
Kode kesalahan
Penjelasan error
Informasi siapa penyebab kesalahan
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.
144
PAGE 10

Politeknik Telkom

XML dan Web Service

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.

UNIVERSAL DESCRIPTION, DISCOVERY AND INTEGRATION (UDDI)

145
PAGE 10

Politeknik Telkom

XML dan Web Service

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.

146
PAGE 10

Politeknik Telkom

XML dan Web Service

Rangkuman

1.
2.
3.

SOAP digunakan untuk bertukar informasi antar aplikasi melalui


HTTP.
SOAP message terdiri dari tag-tag : <envelope>, <header>, <body>
dan <fault>, masing-masing dengan fungsinya sendiri.
SOAP Message dikirim oleh client ke server. Client menerima
jawaban dari server dalam bentuk SOAP Message juga.

UNIVERSAL DESCRIPTION, DISCOVERY AND INTEGRATION (UDDI)

147
PAGE 10

Politeknik Telkom

XML dan Web Service

Kuis Benar Salah

1.
2.
3.
4.
5.

Isi pesan SOAP harus sesuai dengan pesan yang diminta oleh WSDL.
Pesan SOAP dibuat manual oleh programmer client, bukan toolkit.
Pesan SOAP boleh tanpa tag <envelope>
Pesan SOAP boleh tanpa tag <header>
Pesan SOAP boleh tanpa tag <fault>

Pilihan Ganda
Petunjuk: Pilihlah jawaban yang paling tepat!
1.
A.
B.
C.

SOAP digunakan untuk:


Menggambarkan service
Mempublikasikan service
Mengakses service

D.
E.

Mengakses objek sederhana


Bertukar informasi

2.
A.
B.
C.

Berikut ciri SOAP, kecuali


Bebas platform
Bebas bahasa pemrograman
Dibuat dengan XML

D.
E.

Dikirim melalui HTTP


Untuk menggambarkan service

3.
A.
B.
C.

Elemen tertinggi dalam SOAP Message adalah:


Header
D. Fault
Envelope
E. Attachment
Body
Berikut adalah sub-sub elemen tag <Fault>, kecuali:

148
PAGE 10

Politeknik Telkom

XML dan Web Service

4.
A.
B.
C.

<faultcode>
<faultstring>
<faultactor>

5.
A.
B.
C.

Kode kesalahan VersionMismatch berarti:


Versi html tidak sama
D. Versi namespace berbeda
Versi xml berbeda
E. Versi Windows berbeda
Versi SOAP berbeda

D.
E.

<detail>
<body>

Latihan

1.
2.
3.
4.
5.

Jelaskan hubungan antara SOAP dengan WSDL.


Sebutkan komponen SOAP, tag-tag dan kegunaannya.
Haruskah programmer membuat SOAP sendiri? Jelaskan.
Pesan SOAP yang diterima pasti berbeda dengan yang dikirim.
Benarkah? Jelaskan
Apa manfaat namespace dalam SOAP? Jelaskan.

UNIVERSAL DESCRIPTION, DISCOVERY AND INTEGRATION (UDDI)

149
PAGE 10

Politeknik Telkom

XML dan Web Service

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

Apakah UDDI itu?


Apa yang dimaksud dengan :
- Entitas bisnis
- Bisnis service
- Binding template
- tModels
- UDDI query

150
PAGE 10

Politeknik Telkom

15.1

XML dan Web Service

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.
UNIVERSAL DESCRIPTION, DISCOVERY AND INTEGRATION (UDDI)

151
PAGE 10

Politeknik Telkom

XML dan Web Service

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.
152
PAGE 10

Politeknik Telkom

XML dan Web Service

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.

<businessEntity
businessKey=ABCD>
<name>BBC</name>
<description>
...
</description>
</businessEntity>
Gambar 11.2 Entitas bisnis dalam UDDI

UNIVERSAL DESCRIPTION, DISCOVERY AND INTEGRATION (UDDI)

153
PAGE 10

Politeknik Telkom

XML dan Web Service

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.

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

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.
154
PAGE 10

Politeknik Telkom

<businessEntity
businessKey=ABCD>
<name>BBC</name>
<description>
...
</description>
</businessEntity>

<businessService
serviceKey=EFGH
businessKey=ABCD>
<name>News</name>
</businessService>

XML dan Web Service

<bindingTemplate>
bindingKey=MNOP
serviceKey=EFGH>
<description>
Web Service
</description>
<accessPoint>
http://bbc.co.uk/news
</accessPoint>
<tModelInstanceDetails>
<tModelInstanceInfo tModelKey=QRST/>
</tModelInstanceDetails>
</businessTemplate>

<bindingTemplate>
bindingKey=IJKL
serviceKey=EFGH>
<description>
Web Page
</description>
<accessPoint>
http://news.bbc.co.uk
</accessPoint>
</businessTemplate>

Gambar 11. 4 Binding Template dalam UDDI


Business service boleh memiliki beberapa binding templates. Service
boleh menyatakan implementasi berbeda dari service yang sama, masingmasing 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.

UNIVERSAL DESCRIPTION, DISCOVERY AND INTEGRATION (UDDI)

155
PAGE 10

Politeknik Telkom

XML dan Web Service

<businessEntity
businessKey=ABCD>
<name>BBC</name>
<description>
...
</description>
</businessEntity>

<bindingTemplate>
bindingKey=MNOP
serviceKey=EFGH>
<description>
Web Service
</description>
<accessPoint>
http://bbc.co.uk/news
</accessPoint>
<tModelInstanceDetails>
<tModelInstanceInfo tModelKey=QRST/>
</tModelInstanceDetails>
</businessTemplate>

<businessService
serviceKey=EFGH
businessKey=ABCD>
<name>News</name>
</businessService>

<tModel tModelKey=QRST>
<overviewDoc>
<overviewURL>
http://bbc.co.uk/news?wsdl
</overviewURL>
</overviewDoc>
</tModel>

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>

156
PAGE 10

Politeknik Telkom

XML dan Web Service

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 uddiorg:relationships model.

UNIVERSAL DESCRIPTION, DISCOVERY AND INTEGRATION (UDDI)

157
PAGE 10

Politeknik Telkom

XML dan Web Service

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.
2.
3.
4.
5.

UDDI dibuat untuk bertukar informasi antar aplikasi.


UDDI, dibuat oleh Microsoft, hanya berlaku di lingkungan sistem
operasi Window.
UDDI tidak berhubungan dengan WSDL.
Green page berisi data entitas bisnis.
UDDI tidak hanya dibatasi untuk menggambarkan web service
berdasarkan SOAP.

158
PAGE 10

Politeknik Telkom

XML dan Web Service

Pilihan Ganda

Petunjuk: Pilihlah jawaban yang paling tepat!


1.
A.
B.
C.
2.
A.
B.
C.
3.
A.
B.
C.
4.
A.
B.
C.
5.
A.
B.
C.

Dari komponen arsitektur teknik berikut yang mana yang merupakan


situs operator yang menyediakan implementasi spesifikasi UDDI?
UDDI data model
D. Business Entity
UDDI API Spesification
E. Business Service
UDDI cloud services
Di antara komponen skema XML UDDI, yang berisi identitas
perusahan adalah:
businessEntity
D tModel
businessService
E. publisherAssertion
bindingTemplate
Di antara komponen skema XML UDDI, yang berisi produk yang
ditawarkan perusahan adalah:
businessEntity
D tModel
businessService
E. publisherAssertion
bindingTemplate
Di antara komponen skema XML UDDI, yang berisi informasi teknis
bagaimana mengakses web service adalah:
businessEntity
D tModel
businessService
E. publisherAssertion
bindingTemplate
Di antara komponen skema XML UDDI, yang berisi hubungan antar
entitas bisnis:
businessEntity
D tModel
businessService
E. publisherAssertion
bindingTemplate

UNIVERSAL DESCRIPTION, DISCOVERY AND INTEGRATION (UDDI)

159
PAGE 10

Politeknik Telkom

XML dan Web Service

Latihan

1.
2.
3.
4.
5.

Jika perusahan PT.ABC beralamat di Jl.Abc 11 mendaftarkan diri


sebagai entitas bisnis, bagaimana bentuk skema XMLnya?
Jika perusahaan tersebut menjual barang-barang elektronik, TV,
radio, dsb, bagaimana bentuk skema XMLnya?
Jika perusahaan ini membuat web service salesOrderSystem,
bagaimana bentuk skema XMLnya?
Jika salesOrderSystem dapat diakses dari www.ABC.com bagaimana
bentuk skema XMLnya?
Apakah ada hubungan antara UDDI dengan WSDL? Jelaskan.

160
PAGE 10

Politeknik Telkom

16

XML dan Web Service

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

Mengenal Web Service Toolkit


Mencoba salah satu Web Service
mengimplementasikan Web Service.

Implemenetasi Web Service

Toolkit

untuk

161
PAGE 10

Politeknik Telkom

XML dan Web Service

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.

Web Server
(e.g. Apache Tomcat)

Web Service Toolkit


(e.g. Apache Axis)

Web Service
Code
(e.g. Java)

Gambar 12.1 Web Service Toolkit memudahkan pekerjaan

162
PAGE 10

Politeknik Telkom

XML dan Web Service

Berikut adalah contoh Web Service Toolkit, bahasa yang didukung dan Web
Servernya :
Web Service Toolkit
Apache AXIS
(open source)
Microsoft .Net
SOAP::Lite

16.2

Bahasa
Java, C++

Web Server
Apache Tomcat

Visual Basic, C#, Perl


(SO Windows)
Perl

IIS
bebas

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; }
}
Implemenetasi Web Service

163
PAGE 10

Politeknik Telkom

XML dan Web Service

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

164
PAGE 10

Politeknik Telkom

XML dan Web Service

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

getCalculator(URL

portAddress)

throws

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

Implemenetasi Web Service

165
PAGE 10

Politeknik Telkom

XML dan Web Service

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

Web Server

(e.g. CalcClient.java)

(e.g. Apache Tomcat)

Java

Web Service Toolkit


(e.g. Apache Axis)

SOAP Binding
Java to SOAP

Web Service
Code
SOAP Request

(e.g. Calculator.java)

SOAP
to Java

Java

166
PAGE 10

Politeknik Telkom

XML dan Web Service

Pesan SOAP dan data yang dikirimkan adalah:


Client
(e.g. CalcClient.java)

Java

SOAP Binding

<soap:Envelope
<soap:Body>
<add>
<i1>10</i1>
calculator.add(10,
5)
<i2>5</i2>
</add>
</soap:Body>
</soap:Envelope>

Web Server
(e.g. Apache Tomcat)

Web Service Toolkit


(e.g. Apache Axis)

Java to SOAP

Web Service
Code

add(10, 5)

SOAP Request

(e.g. Calculator.java)

SOAP
to Java

Java

Dan jawabannya adalah:


Client

Web Server
(e.g. Apache Tomcat)

Java

Web Service Toolkit


(e.g. Apache Axis)

SOAP Binding
SOAP to Java

Web Service
Code
SOAP Response

Implemenetasi Web Service

Java
to SOAP

Java

167
PAGE 10

Politeknik Telkom

XML dan Web Service

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

168
PAGE 10

Politeknik Telkom

XML dan Web Service

Kuis Benar Salah

1.
2.
3.
4.
5.

Dengan adanya Web Service Toolkit, pemrograman Web Service


menjadi mudah.
Tanpa Web Service Toolkit, programmer harus membuat XML,
SOAP, HTTP sendiri.
Kita bebas mendownload Web Service Toolkit Apache AXIS.
Kita bebas mendownload Microsoft.NET
Deploy cara instant lebih mudah daripada cara custom.

Implemenetasi Web Service

169
PAGE 10

Politeknik Telkom

XML dan Web Service

Pilihan Ganda

Petunjuk: Pilihlah jawaban yang paling tepat!


1.
A.
B.
C.

Berikut adalah Web Service Toolkit yang bebas didownload:


Apache AXIS
D. J2EE Server
Microsoft .NET
E. IIS
SOAP :: Lite

2.
A.
B.
C.

Untuk menjalankan Apache AXIS perlu diinstall berikut, kecuali:


Apache Tomcat
D Sistem Operasi
Java
E Microsoft .NET
Apache AXIS

170
PAGE 10

Politeknik Telkom

XML dan Web Service

Latihan

1.
2.

Buatkan web service untuk mengkonversikan suhu Fahrenheit ke


Celcius dan sebaliknya di Apache AXIS.
Buatkan web service untuk mencari Keliling dan Luas Lingkaran di
Apache AXIS.

Implemenetasi Web Service

171
PAGE 10

Politeknik Telkom

XML dan Web Service

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

172
PAGE 10

You might also like