Professional Documents
Culture Documents
POLITEKNIK TELKOM
BANDUNG
2009
i
PAGE 10
Politeknik Telkom
Penyusun
HENDRA KUSMAYADI
EKO DARWIYANTO
Editor
AGUS PRATONDO
Politeknik Telkom
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
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
Politeknik Telkom
Politeknik Telkom
<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
viii
PAGE 10
Politeknik Telkom
1 Pengenalan XML
Overview
Tujuan
1.
2.
3.
Pengenalan XML
1
PAGE 10
Politeknik Telkom
< 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
Portable Data
1.3
3
PAGE 10
Politeknik Telkom
<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.
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
Pengenalan XML
5
PAGE 10
Politeknik Telkom
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.
XFragment
Usaha untuk menjelaskan bagian diluar dokumen XML yang mungkin
dokumen tersebut tidak well-formed.
Pengenalan XML
7
PAGE 10
Politeknik Telkom
Rangkuman
1.
2.
3.
4.
5.
8
PAGE 10
Politeknik Telkom
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.
XML Fundamental
9
PAGE 10
Politeknik Telkom
2.1
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
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
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
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
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
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>
2.4
XML Name
14
PAGE 10
Politeknik Telkom
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 < atau >.
Ketika parser membaca dokumen, ia akan mengganti katakter < dengan
string yang sebenarnya. Contohnya :
<SCRIPT LANGUAGE="JavaScript">
if (location.host.toLowerCase().
indexOf("cafeconleche") < 0) {
location.href="http://www.cafeconleche.org/";
}
</SCRIPT>
Didalam karakter tidak boleh mengandung ampersand (&), tetapi untuk
penulisan itu dapat menggunakan entity reference &. Misalnya terlihat
pada contoh berikut.
<publisher>O'Reilly & Associates</publisher>
XML Fundamental
15
PAGE 10
Politeknik Telkom
2.6
CDATA Sections
Pada bahasan sebelumnya kita telah membahas apa yang namannya entity
references dimana jika kita akan menuliskan string < maka kita tidak boleh
menuliskannya secara langsung, namun kita harus meng-encode string tersebut
menjadi <, begitu juga dengan string > akan di-encode menjadi >.
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 < dan >.
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
2.8
Processing Instruction
17
PAGE 10
Politeknik Telkom
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
2.9
Deklarasi XML
XML Fundamental
19
PAGE 10
Politeknik Telkom
20
PAGE 10
Politeknik Telkom
Rangkuman
1.
2.
3.
4.
XML Fundamental
21
PAGE 10
Politeknik Telkom
Overview
Tujuan
1.
2.
3.
22
PAGE 10
Politeknik Telkom
3.1
Validation
23
PAGE 10
Politeknik Telkom
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
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
Arti
Fungsi atau
Politeknik Telkom
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
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
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
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-
29
PAGE 10
Politeknik Telkom
#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
3.5
didalam
DTD
yang
30
PAGE 10
Politeknik Telkom
3.6
Tidak semua data itu XML. Terdapat banyak file ASCII didunia ini yang tidak
memberikan arti tentang < sebagai < 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
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)>
32
PAGE 10
Politeknik Telkom
"address,
baths,
33
PAGE 10
Politeknik Telkom
3.8
Conditional Inclusion
3.9
34
PAGE 10
Politeknik Telkom
Rangkuman
1.
2.
3.
35
PAGE 10
Politeknik Telkom
Namespaces
Overview
Tujuan
1.
2.
3.
36
PAGE 10
Politeknik Telkom
4.1
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
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.
38
PAGE 10
Politeknik Telkom
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.
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.
9.
CDATA
#FIXED
4.3
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
Namespaces
41
PAGE 10
Politeknik Telkom
42
PAGE 10
Politeknik Telkom
Rangkuman
1.
2.
Namespaces
43
PAGE 10
Politeknik Telkom
Overview
Tujuan
1.
2.
3.
4.
44
PAGE 10
Politeknik Telkom
5.1
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
& and <. Misalnya ubah A&P menjadi A&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.
45
PAGE 10
Politeknik Telkom
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
5.2
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
47
PAGE 10
Politeknik Telkom
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.
4.
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
5.3
5.4
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
</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
Rangkuman
51
PAGE 10
Politeknik Telkom
Overview
Tujuan
1.
2.
3.
4.
52
PAGE 10
Politeknik Telkom
6.1
<?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
53
PAGE 10
Politeknik Telkom
"http://www.w3.org/1999/XSL/Transform">
</xsl:stylesheet>
6.3
Stylesheet Processors
Politeknik Telkom
<?xml version="1.0"?>
<?xml-stylesheet type="application/xml"
href="http://www.oreilly.com/styles/people.xsl"?>
<people>
...
</people>
6.4
55
PAGE 10
Politeknik Telkom
6.5
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
Politeknik Telkom
<xsl:template match="person">
<xsl:apply-templates select="name"/>
</xsl:template>
6.7
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-
57
PAGE 10
Politeknik Telkom
6.8
Modes
6.9
Template rule membungkus elemen input person didalam elemen span HTML
yang memiliki atribut class dengan nilai person.
58
PAGE 10
Politeknik Telkom
<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>
59
PAGE 10
Politeknik Telkom
Rangkuman
1.
2.
3.
60
PAGE 10
Politeknik Telkom
7 XPath
Overview
Tujuan
1.
2.
3.
Xpath
61
PAGE 10
Politeknik Telkom
7.1
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
<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
</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
7.3
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.
Xpath
65
PAGE 10
Politeknik Telkom
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
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<=1920 and @born>=1910]"/>
7.5
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
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
68
PAGE 10
Politeknik Telkom
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
69
PAGE 10
Politeknik Telkom
70
PAGE 10
Politeknik Telkom
Rangkuman
Xpath
71
PAGE 10
Politeknik Telkom
8 XLinks
Overview
Tujuan
1.
2.
3.
4.
72
PAGE 10
Politeknik Telkom
8.1
Simple Links
Simple link didefinisikan dengan koneksi atau hubungan secara one-way antara
dua resource. Source awal dari koneksi terdapat elemen link pada dirinya
sendiri. Sedangkan target diidentifikasikan oleh Uniform Resource Identifier
(URI). Link mulai berjalan dari source asal ke source target. source asal selalu
berupa elemen XML. Sedangkan source target dapat berupa dokumen XML,
atau elemen-elemen tertentu didalam dokumen XML, grup elemen dalam
dokumen XML, teks span didalam dokumen XML, atau sesuatu yang bukan
merupakan dokumen XML seperti MPEG movie, file PDF, atau gambar JPG.
Simple XLink ditulis didalam dokumen XML sebagai elemen yang mempunyai
atribut xlink:type dengan nilai simple dan atribut xlink:href dengan nilai URI
target. Contohnya kita mempunyai dokumen XML pada ftp server dengan
alamat ftp://archive.org/pub/etext/etext93/wizoz10.txt :
<novel>
<title>The Wonderful Wizard of Oz</title>
<author>L. Frank Baum</author>
<year>1900</year>
</novel>
Selanjutnya dokumen berikut akan menggunakan XLink untuk dihubungkan
dengan dirinya dengan file dokumen diatas :
<novel xmlns:xlink= "http://www.w3.org/1999/xlink"
xlink:type = "simple" xlink:href =
"ftp://archive.org/pub/etext/etext93/wizoz10.txt">
<title>The Wonderful Wizard of Oz</title>
<author>L. Frank Baum</author>
<year>1900</year>
</novel>
8.2
Link Behavior
Jika kita lihat bagaimana XLink dipresentasikan dengan hubungan antara dua
resource. Misalnya ketika browser menemukan elemen novel yang
menggunakan elemen http URL, seharusnya browser akan mengambil link
novel dan menampilkannya didalam jendela browser sehingga menggantikan
isi dari browser, atau bisa saja membukanya pada jendela yang baru. Misalnya,
Xlink
73
PAGE 10
Politeknik Telkom
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
Politeknik Telkom
8.4
Extended Links
Xlink
75
PAGE 10
Politeknik Telkom
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
</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
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
Rangkuman
1. XLink
78
PAGE 10
Politeknik Telkom
9 XPointer
Overview
Tujuan
1.
2.
3.
XPointer
79
PAGE 10
Politeknik Telkom
9.1
Politeknik Telkom
xpointer(//first_name)xpointer(//last_name)
81
PAGE 10
Politeknik Telkom
< dapat ditulis dengan %3C, tanda petik dua ( ) akan ditulis dengan
%22, dapat dutuliskan dengan %C3%A9 dan sebagainya.
9.3
Bare Names
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
82
PAGE 10
Politeknik Telkom
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
83
PAGE 10
Politeknik Telkom
9.7
Ranges
Range merupakan jangkauan parsing karakter data antara dua poin. Fungsi
yang ada pada XPointer untuk range adalah :
1. Fungsi range( )
fungsi range( ) mengembalikan batasan antara start-point sebelum
batasan lokasi sampai end-point setelah batasan lokasi.
2. Fungsi range-inside( )
Untuk setiap elemen node akan sama sebagai batasan yang
dikembalikan oleh range( ).
3. Fungsi range-to( )
Mengambil sebuah lokasi yang harus mengembalikan tepat satu
lokasi. Start-points dari konteks node merupakan start-points yang
akan dikembalikan
4. Fungsi string-range( )
Mengambil argumen sebagai sebuah ekspresi XPath dan
mengidentifikasi lokasi dan substring dan mencocokkan terhadap nilai
string XPath pada setiap lokasi
5. Relative XPointers
Dapat digunakan pada dirinya sendiri tanpa harus menggunakan URL
eksplisit.
6. Fungsi Here( )
Hanya digunakan pada dokumen itu sendiri dan merujuk pada node
yang mengandung XPointer.
7. Fungsi Origin( )
Digunakan ketika dokumen link out-of-line dan mengarah pada node
asal.
84
PAGE 10
Politeknik Telkom
Rangkuman
1.
2.
3.
4.
XPointer
85
PAGE 10
Politeknik Telkom
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.
86
PAGE 10
Politeknik Telkom
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.
87
PAGE 10
Politeknik Telkom
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
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
90
PAGE 10
Politeknik Telkom
XML Schemas
91
PAGE 10
Politeknik Telkom
92
PAGE 10
Politeknik Telkom
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.
XML Schemas
name="physicalAddressType"
93
PAGE 10
Politeknik Telkom
Politeknik Telkom
</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
Rangkuman
1.
2.
3.
96
PAGE 10
Politeknik Telkom
Overview
Tujuan
1.
2.
97
PAGE 10
Politeknik Telkom
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.
98
PAGE 10
Politeknik Telkom
MSXML Library
Dokumen
XML
Parser
DOM Tree
Root
Child
Aplikasi
text
Child
text
PRODUCT
PRODID
PRODNAME
PRODPRICE
PRODID
PRODNAME
PRODPRICE
P001
Beras
5000
P002
Jagung
4000
99
PAGE 10
Politeknik Telkom
Setiap node tree memiliki nama, tipe dan nilai. Contoh node PRODID,
namanya PRODID, tipenya element, nilainya P001.
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
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)
Mengambil dokumen
XML dari string
Mengatur format
dokumen XML menurut
style sheet
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()
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
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]
:}
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)
validateOnParse
docobj.validateOnParse=
true
103
PAGE 10
Politeknik Telkom
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
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
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
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.
107
PAGE 10
Politeknik Telkom
Rangkuman
1.
2.
3.
4.
5.
108
PAGE 10
Politeknik Telkom
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.
109
PAGE 10
Politeknik Telkom
Pilihan Ganda
D.
E.
D.
E.
C.
3.
A.
B.
C.
4.
A.
B.
C.
5.
A.
B.
C.
110
PAGE 10
Politeknik Telkom
Latihan
1.
2.
3.
4.
5.
111
PAGE 10
Politeknik Telkom
Overview
Bab ini mengenalkan Simple API for XML (SAX) dan menggunakannya
untuk mengakses dokumen XML.
Tujuan
1.
2.
3.
112
PAGE 10
Politeknik Telkom
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
Program Anda
startDocument(...)
main(...)
startElement(...)
characters(...)
endElement()
endDocument( )
Politeknik Telkom
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
115
PAGE 10
Politeknik Telkom
Politeknik Telkom
1.
2.
3.
4.
117
PAGE 10
Politeknik Telkom
}
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
119
PAGE 10
Politeknik Telkom
Politeknik Telkom
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.
121
PAGE 10
Politeknik Telkom
Rangkuman
1.
2.
3.
4.
5.
122
PAGE 10
Politeknik Telkom
1.
2.
3.
4.
5.
123
PAGE 10
Politeknik Telkom
Pilihan Ganda
2.
A.
B.
C.
3.
A.
B.
C.
4.
A.
B.
C.
5.
A.
B.
E.
D.
E.
124
PAGE 10
Politeknik Telkom
Latihan
1.
2.
125
PAGE 10
Politeknik Telkom
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.
126
PAGE 10
Politeknik Telkom
13.1
Application 2
XML
Website 1
Website 2
13.2
127
PAGE 10
Politeknik Telkom
Service
Registry
Find
(UDDI)
Publish
(UDDI)
Describe
(WSDL)
Service
Consum
er
Service
Provider
Bind
(SOAP)
128
PAGE 10
Politeknik Telkom
13.3
WSDL
13.4
<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
129
PAGE 10
Politeknik Telkom
<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
Service
Port
(http://host/axis)
Port
Binding
(e.g. SOAP)
Binding
Port Type
(in) Message
Operation(s)
(out)
Message
131
PAGE 10
Politeknik Telkom
132
PAGE 10
Politeknik Telkom
<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
134
PAGE 10
Politeknik Telkom
Rangkuman
1.
2.
3.
135
PAGE 10
Politeknik Telkom
1.
2.
3.
4.
5.
136
PAGE 10
Politeknik Telkom
Pilihan Ganda
2.
A.
B.
C.
3
A.
B.
C.
4.
A.
B.
C.
5.
A.
B.
C.
D.
E.
Semua benar.
137
PAGE 10
Politeknik Telkom
Latihan
1.
2.
3.
4.
5.
138
PAGE 10
Politeknik Telkom
Overview
Tujuan
1.
2.
139
PAGE 10
Politeknik Telkom
14.1
Pengantar SOAP
140
PAGE 10
Politeknik Telkom
SOAP Body
(Required)
Application Data
e.g. request, response
error
141
PAGE 10
Politeknik Telkom
<?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.
Politeknik Telkom
<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
143
PAGE 10
Politeknik Telkom
Penjelasan
Kode kesalahan
Penjelasan error
Informasi siapa penyebab kesalahan
Berisi rincian kesalahan terkait elemen Body
14.5
Politeknik Telkom
14.6
145
PAGE 10
Politeknik Telkom
146
PAGE 10
Politeknik Telkom
Rangkuman
1.
2.
3.
147
PAGE 10
Politeknik Telkom
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.
D.
E.
2.
A.
B.
C.
D.
E.
3.
A.
B.
C.
148
PAGE 10
Politeknik Telkom
4.
A.
B.
C.
<faultcode>
<faultstring>
<faultactor>
5.
A.
B.
C.
D.
E.
<detail>
<body>
Latihan
1.
2.
3.
4.
5.
149
PAGE 10
Politeknik Telkom
Overview
Tujuan
1.
2.
150
PAGE 10
Politeknik Telkom
15.1
Pengantar
15.2
151
PAGE 10
Politeknik Telkom
15.3
Arsitektur Teknik
Politeknik Telkom
15.4
Entitas bisnis
<businessEntity
businessKey=ABCD>
<name>BBC</name>
<description>
...
</description>
</businessEntity>
Gambar 11.2 Entitas bisnis dalam UDDI
153
PAGE 10
Politeknik Telkom
<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>
Politeknik Telkom
<businessEntity
businessKey=ABCD>
<name>BBC</name>
<description>
...
</description>
</businessEntity>
<businessService
serviceKey=EFGH
businessKey=ABCD>
<name>News</name>
</businessService>
<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>
15.7
tModel
155
PAGE 10
Politeknik Telkom
<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>
156
PAGE 10
Politeknik Telkom
157
PAGE 10
Politeknik Telkom
Rangkuman
1.
2.
3.
4.
5.
158
PAGE 10
Politeknik Telkom
Pilihan Ganda
159
PAGE 10
Politeknik Telkom
Latihan
1.
2.
3.
4.
5.
160
PAGE 10
Politeknik Telkom
16
Overview
Tujuan
1.
2.
Toolkit
untuk
161
PAGE 10
Politeknik Telkom
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
Code
(e.g. Java)
162
PAGE 10
Politeknik Telkom
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
IIS
bebas
163
PAGE 10
Politeknik Telkom
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>
164
PAGE 10
Politeknik Telkom
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;
}
165
PAGE 10
Politeknik Telkom
Web Server
(e.g. CalcClient.java)
Java
SOAP Binding
Java to SOAP
Web Service
Code
SOAP Request
(e.g. Calculator.java)
SOAP
to Java
Java
166
PAGE 10
Politeknik Telkom
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)
Java to SOAP
Web Service
Code
add(10, 5)
SOAP Request
(e.g. Calculator.java)
SOAP
to Java
Java
Web Server
(e.g. Apache Tomcat)
Java
SOAP Binding
SOAP to Java
Web Service
Code
SOAP Response
Java
to SOAP
Java
167
PAGE 10
Politeknik Telkom
Rangkuman
168
PAGE 10
Politeknik Telkom
1.
2.
3.
4.
5.
169
PAGE 10
Politeknik Telkom
Pilihan Ganda
2.
A.
B.
C.
170
PAGE 10
Politeknik Telkom
Latihan
1.
2.
171
PAGE 10
Politeknik Telkom
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