Dokumen tersebut membahas tentang penggunaan DTD (Document Type Definition) untuk menentukan struktur dan konsistensi data pada dokumen XML, meliputi pengenalan DTD, deklarasi elemen dan atribut, serta validasi dokumen XML menggunakan DTD."
1. BAB II Konsistensi Data Dengan DTD
Riza Muhammad Nurman, S.Kom
Email : rizaman@eng.ui.ac.id ; rizamn@ymail.com
2. Monday, March 19, 2018 Riza Muhammad Nurman 2
CONTENT
Pengenalan DTD
Deklarasi Elemen Pada DTD
Menghubungkan DTD Pada Dokumen XML
Memvalidasi Dokumen XML
3. Monday, March 19, 2018 Riza Muhammad Nurman 3
Pengenalan DTD
• Menentukan struktur isi dokumen XML konsisten
• Menentukan bagaimana elemen dan atribut-atributnya harus
dituliskan pada dokumen XML
• Menentukan sifat sebuah elemen apakah harus dituliskan
(mandatory) atau tidak.
4. Monday, March 19, 2018 Riza Muhammad Nurman 4
Deklarasi Elemen Pada DTD
Penulisan:
<!ELEMENT elementname (content-type atau content-
model)>
Keterangan:
element_name adalah nama elemen
content-type atau content-model menentukan isi dari element
(teks atau element lainnya)
5. Monday, March 19, 2018 Riza Muhammad Nurman 5
1. Terdiri atas huruf, angka atau
karakter lain.
2. Tidak boleh diawali oleh
angka ataupun symbol
karakter lain, kecuali garis
bawah/underscore ( _ ).
3. Tidak boleh diawali dengan
kata xml(atau XML, atau Xml,
dan kombinasi lainnya).
4. Nama elemen tidak boleh
mengandung spasi.
Best Practices
• Menjelaskan isi data yang
diwakilinya, jika nama
elemen terdiri atas 2 suku
kata atau lebih, boleh
digunakan underscore
• Dibuat sederhana dan
pendek
• Hindari penggunaan tanda
hubung ( - ), tanda titik ( . )
serta tanda titik dua ( : )
Aturan Penamaan
Elemen
6. Monday, March 19, 2018 Riza Muhammad Nurman 6
Contoh
• Dari elemen berikut ini, manakah penamaan yang sesuai dengan
aturan
– <Siswa1>
– <NO_TELEPON>
– <#HashTag>
– <_Jml_Barang>
– <1stYear>
– <@yahoo>
• Dari elemen berikut ini, manakah penamaan yang sesuai dengan
aturan
– <Siswa1> : benar
– <NO_TELEPON> : benar
– <#HashTag> : salah
– <_Jml_Barang> : benar
– <1stYear> : salah
– <@yahoo> : salah
7. Monday, March 19, 2018 Riza Muhammad Nurman 7
Tipe Elemen Dalam DTD
Tipe Element Deskripsi
Empty Elemen yang tidak memiliki isi data
Unrestricted
Dapat berisi elemen apapun yang dideklarasikan di
dalam DTD. Elemen ini adalah elemen yang sifatnya
merupakan kebalikan dari sifat empty element
Container
Dapat berisi data dalam bentuk karakter dan lain
sebagainya.
8. Monday, March 19, 2018 Riza Muhammad Nurman 8
Deklarasi Empty Element
• Penulisan:
<!ELEMENT elemen_kosong EMPTY>
• Elemen tidak berisi data
• Bisa memiliki atribut
9. Monday, March 19, 2018 Riza Muhammad Nurman 9
Deklarasi Unrestricted Element
• Penulisan:
<!ELEMENT elemen_kosong ANY>
• Elemen dapat berisi data
• Bisa memiliki atribut
10. Monday, March 19, 2018 Riza Muhammad Nurman 10
Deklarasi Container Element ( , )
<!ELEMENT Data (Pegawai)>
<!ELEMENT Pegawai (Nama, Alamat)>
<!ELEMENT Nama (#PCDATA)>
<!ELEMENT Alamat (#PCDATA) >
<Data>
<Pegawai>
<Nama>Si Fulan</Nama>
<Alamat>Jl Dimana Saja No 1</Alamat>
</Pegawai>
</Data>
DTD
XML
11. Monday, March 19, 2018 Riza Muhammad Nurman 11
Deklarasi Container Element ( | )
<!ELEMENT Data (Pegawai)>
<!ELEMENT Pegawai (Nama, Alamat, (GajiPerJam |
GajiPerBulan))>
<!ELEMENT Nama (#PCDATA)>
<!ELEMENT Alamat (#PCDATA) >
<!ELEMENT GajiPerJam (#PCDATA)>
<!ELEMENT GajiPerBulan (#PCDATA) >
<Data>
<Pegawai>
<Nama>Si Fulan</Nama>
<Alamat>Jl Dimana Saja No 1</Alamat>
<GajiPerJam>10</GajiPerJam>
</Pegawai>
</Data>
DTD
XML
12. Monday, March 19, 2018 Riza Muhammad Nurman 12
Deklarasi Container Element ( ? )
<!ELEMENT Data (Pegawai)>
<!ELEMENT Pegawai (Nama, Alamat, (GajiPerJam |
GajiPerBulan), Diskon?)>
<!ELEMENT Nama (#PCDATA)>
<!ELEMENT Alamat (#PCDATA) >
<!ELEMENT GajiPerJam (#PCDATA)>
<!ELEMENT GajiPerBulan (#PCDATA) >
<!ELEMENT Diskon (#PCDATA) >
<Data>
<Pegawai>
<Nama>Si Fulan</Nama>
<Alamat>Jl Dimana Saja No 1</Alamat>
<GajiPerJam>10</GajiPerJam>
<Diskon>10%</Diskon>
</Pegawai>
</Data>
DTD
XML
13. Monday, March 19, 2018 Riza Muhammad Nurman 13
Deklarasi Container Element ( * )
<!ELEMENT Data (Pegawai)*>
<!ELEMENT Pegawai (Nama, Alamat, (GajiPerJam |
GajiPerBulan), Diskon?)>
<!ELEMENT Nama (#PCDATA)>
<!ELEMENT Alamat (#PCDATA) >
<!ELEMENT GajiPerJam (#PCDATA)>
<!ELEMENT GajiPerBulan (#PCDATA) >
<!ELEMENT Diskon (#PCDATA) >
<Data>
<Pegawai>
<Nama>Si Fulan</Nama>
<Alamat>Jl Dimana Saja No 1</Alamat>
<GajiPerJam>10</GajiPerJam>
<Diskon>10%</Diskon>
</Pegawai>
<Pegawai>
<Nama>Si Fulan</Nama>
<Alamat>Jl Baling Bambu No 1</Alamat>
<GajiPerBulan>3000</GajiPerBulan>
</Pegawai>
</Data>
DTD
XML
14. Monday, March 19, 2018 Riza Muhammad Nurman 14
Deklarasi Container Element ( + )
<!ELEMENT Data (Pegawai)+>
<!ELEMENT Pegawai (Nama, Alamat, (GajiPerJam |
GajiPerBulan), Diskon?)>
<!ELEMENT Nama (#PCDATA)>
<!ELEMENT Alamat (#PCDATA) >
<!ELEMENT GajiPerJam (#PCDATA)>
<!ELEMENT GajiPerBulan (#PCDATA) >
<!ELEMENT Diskon (#PCDATA) >
<Data>
<Pegawai>
<Nama>Si Fulan</Nama>
<Alamat>Jl Dimana Saja No 1</Alamat>
<GajiPerJam>10</GajiPerJam>
<Diskon>10%</Diskon>
</Pegawai>
<Pegawai>
<Nama>Si Fulan</Nama>
<Alamat>Jl Baling Bambu No 1</Alamat>
<GajiPerBulan>3000</GajiPerBulan>
</Pegawai>
</Data>
DTD
XML
15. Monday, March 19, 2018 Riza Muhammad Nurman 15
Deklarasi Atribut
• Penulisan:
<!ATTLIST element_name attribute_name valuetype
[attributetype]["default"]>
16. Monday, March 19, 2018 Riza Muhammad Nurman 16
Atribut
<!ELEMENT DATA_REKENING (REKENING)+ >
<!ELEMENT REKENING (PEMILIK, SALDO)>
<!ATTLIST REKENING nomor ID #REQUIRED >
<!ELEMENT PEMILIK (#PCDATA) >
<!ELEMENT SALDO (#PCDATA) >
<DATA_REKENING>
<REKENING nomor="A1">
<PEMILIK>Si Fulan</PEMILIK>
<SALDO>3.000.000</SALDO>
</REKENING>
</DATA_REKENING>
DTD
XML
Ganti ID dengan CDATA apabila ingin nilai atribut bebas
17. Monday, March 19, 2018 Riza Muhammad Nurman 17
Atribut 2
<!ELEMENT DATA_REKENING (REKENING)+ >
<!ELEMENT REKENING (PEMILIK, SALDO)>
<!ATTLIST REKENING nomor CDATA #REQUIRED>
<!ATTLIST REKENING status (AKTIF|NONAKTIF) "AKTIF">
<!ATTLIST REKENING key CDATA #FIXED "123">
<!ELEMENT PEMILIK (#PCDATA) >
<!ELEMENT SALDO (#PCDATA) >
<DATA_REKENING>
<REKENING nomor="123" key="123" status="AKTIF">
<PEMILIK>Si Fulan</PEMILIK>
<SALDO>3.000.000</SALDO>
</REKENING>
</DATA_REKENING>
DTD
XML
18. Monday, March 19, 2018 Riza Muhammad Nurman 18
Menghubungkan DTD Pada Dokumen XML
Internal DTD External DTD
Bagian dari sebuah dokumen
XML
Dibuat pada file terpisah, oleh karena
itu dibutuhkan perintah yang
mereferensikan dokumen XML pada
DTD tersebut
Hanya dapat digunakan oleh
dokumen XML dimana DTD
tersebut didefinisikan
Dapat digunakan oleh lebih dari satu
dokumen XML
Penulisan internal DTD:
<!DOCTYPE root_element[deklarasi element dan attribute]>
Penulisan external DTD:
<!DOCTYPE root_element PUBLIC|SYSTEM "path-of-file">
19. Monday, March 19, 2018 Riza Muhammad Nurman 19
Memvalidasi Dokumen XML
Non Validating Parser
• Non validasi parser memeriksa apakah sebuah dokumen XML sesuai
dengan aturan sintak penulisan XML.
Validating Parser
• Validating parser memproses dokumen XML dengan melakukan
pemeriksaan sintak, membangun struktur tree dan kemudian
membandingkan struktur pohon tersebut dengan struktur dokumen
XML yang telah didefinisikan pada DTD