BAB II Konsistensi Data Dengan DTD
Riza Muhammad Nurman, S.Kom
Email : rizaman@eng.ui.ac.id ; rizamn@ymail.com
Monday, March 19, 2018 Riza Muhammad Nurman 2
CONTENT
 Pengenalan DTD
 Deklarasi Elemen Pada DTD
 Menghubungkan DTD Pada Dokumen XML
 Memvalidasi Dokumen XML
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.
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)
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
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
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.
Monday, March 19, 2018 Riza Muhammad Nurman 8
Deklarasi Empty Element
• Penulisan:
<!ELEMENT elemen_kosong EMPTY>
• Elemen tidak berisi data
• Bisa memiliki atribut
Monday, March 19, 2018 Riza Muhammad Nurman 9
Deklarasi Unrestricted Element
• Penulisan:
<!ELEMENT elemen_kosong ANY>
• Elemen dapat berisi data
• Bisa memiliki atribut
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
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
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
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
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
Monday, March 19, 2018 Riza Muhammad Nurman 15
Deklarasi Atribut
• Penulisan:
<!ATTLIST element_name attribute_name valuetype
[attributetype]["default"]>
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
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
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">
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
XML - Chapter 2

XML - Chapter 2

  • 1.
    BAB II KonsistensiData 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