Sebuah Document Type Definition (DTD) mendefinisikan blok bangunan hukum dari dokumen XML. Ia mendefinisikan struktur dokumen dengan daftar elemen hukum dan atribut.
Sebuah DTD dapat dideklarasikan inline dalam dokumen XML, atau sebagai referensi eksternal.
Jika DTD dideklarasikan di dalam file XML, itu harus dibungkus dalam sebuah definisi DOCTYPE dengan sintaks berikut:<!DOCTYPE root-element [element-declarations]>
<?xml version="1.0"?>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend</body>
</note>
- !DOCTYPE note mendefinisikan bahwa elemen root dari dokumen ini adalah catatan
- !ELEMEN note mendefinisikan bahwa elemen catatan berisi empat unsur: "ke, dari, judul, tubuh"
- !ELEMEN to mendefinisikan untuk elemen untuk menjadi tipe "# PCDATA"
- !ELEMEN from mendefinisikan dari unsur untuk menjadi tipe "# PCDATA"
- !ELEMEN heading mendefinisikan elemen menuju dari tipe "# PCDATA"
- !ELEMEN body mendefinisikan elemen body untuk menjadi tipe "# PCDATA"
Deklarasi DTD Eksternal
Jika DTD ini dideklarasikan pada file eksternal, itu harus dibungkus dalam sebuah definisi DOCTYPE dengan sintaks berikut:| <!DOCTYPE root-element SYSTEM "filename"> |
| <?xml version="1.0"?> <!DOCTYPE note SYSTEM "note.dtd"> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> |
| <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> |
Mengapa Menggunakan sebuah DTD?
Dengan DTD, setiap file XML dapat membawa sebuah deskripsi format sendiri.Dengan DTD, kelompok independen orang dapat setuju untuk menggunakan DTD standar untuk bertukar data.
Aplikasi Anda dapat menggunakan standar DTD untuk memverifikasi bahwa data yang Anda terima dari dunia luar valid.
Anda juga dapat menggunakan DTD untuk memverifikasi data Anda sendiri.
Blok Dokumen XML
Dilihat dari sudut pandang DTD, semua dokumen XML (dan HTML dokumen) yang dibuat oleh blok bangunan sebagai berikut:- Elemen
- Atribut
- Entitas
- PCDATA
- CDATA
Elemen
Elemen adalah blok bangunan utama dari kedua dan HTML dokumen XML.Contoh dari elemen HTML adalah "tubuh" dan "tabel". Contoh elemen XML bisa "catatan" dan "pesan". Elemen dapat berisi teks, elemen lain, atau kosong. Contoh elemen HTML kosong adalah "jam", "br" dan "img".
Contoh:
| <body>some text</body> <message>some text</message> |
Atribut
Atribut memberikan informasi tambahan tentang elemen .Atribut selalu ditempatkan di dalam tag pembukaan elemen. Atribut selalu datang dalam pasangan nama / nilai. Berikut "img" elemen memiliki informasi tambahan tentang file sumber:
| <img src="computer.gif" /> |
Entitas
Beberapa karakter memiliki arti khusus di XML, seperti tanda kurang dari (<) yang mendefinisikan awal dari sebuah tag XML.Sebagian besar dari Anda mengetahui entitas HTML: "". Ini "tidak-melanggar-ruang" entitas digunakan dalam HTML untuk menyisipkan spasi dalam dokumen. Entitas diperluas ketika dokumen di-parsing oleh parser XML.
Perusahaan berikut ini pradefinisi dalam XML:
| Referensi Entitas | Karakter |
|---|---|
| < | < |
| > | > |
| & | & |
| " | " |
| ' | ' |
PCDATA
PCDATA berarti terurai data karakter.Pikirkan data karakter sebagai teks yang ditemukan antara tag awal dan tag akhir dari sebuah elemen XML.
PCDATA adalah teks yang AKAN diurai oleh sebuah parser . Teks akan diperiksa oleh parser untuk entitas dan markup .
Tag di dalam teks akan diperlakukan sebagai markup dan entitas akan diperluas.
Namun, data karakter dipecah tidak boleh mengandung &, <, atau> karakter, ini harus diwakili oleh & <dan> entitas itu, masing-masing.
CDATA
CDATA berarti data karakter.CDATA adalah teks yang TIDAK akan diurai oleh sebuah parser . Tags dalam teks TIDAK akan diperlakukan sebagai markup dan badan yang tidak akan diperluas.
Dalam DTD, elemen dinyatakan dengan deklarasi ELEMEN.
Mendeklarasikan Elemen
Dalam DTD, elemen XML dinyatakan dengan deklarasi elemen dengan sintaks berikut:| <!ELEMENT element-name category> or <!ELEMENT element-name (element-content)> |
Elemen kosong
Kosong elemen dideklarasikan dengan kata kunci kategori KOSONG:| <!ELEMENT element-name EMPTY> Example: <!ELEMENT br EMPTY> XML example: <br /> |
Elemen dengan parsing Karakter Data
Elemen dengan data karakter hanya parsing dinyatakan dengan # PCDATA di dalam kurung:| <!ELEMENT element-name (#PCDATA)> Example: <!ELEMENT from (#PCDATA)> |
Elemen dengan isi
Elemen dideklarasikan dengan kata kunci kategori APAPUN, dapat berisi kombinasi data bentuk yang dapat diambil:| <!ELEMENT element-name ANY> Example: <!ELEMENT note ANY> |
Elemen dengan Anak-anak (urutan)
Elemen dengan satu atau lebih anak yang dinyatakan dengan nama elemen anak-anak di dalam kurung:| <!ELEMENT element-name (child1)> or <!ELEMENT element-name (child1,child2,...)> Example: <!ELEMENT note (to,from,heading,body)> |
| <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> |
Mendeklarasikan Hanya Satu Terjadinya sebuah Elemen
| <!ELEMENT element-name (child-name)> Example: <!ELEMENT note (message)> |
Mendeklarasikan Minimum Satu Terjadinya sebuah Elemen
| <!ELEMENT element-name (child-name+)> Example: <!ELEMENT note (message+)> |
Mendeklarasikan Nol atau Lebih Kemunculan dari sebuah Elemen
| <!ELEMENT element-name (child-name*)> Example: <!ELEMENT note (message*)> |
Mendeklarasikan Nol atau Satu Kemunculan dari sebuah Elemen
| <!ELEMENT element-name (child-name?)> Example: <!ELEMENT note (message?)> |
Mendeklarasikan baik / atau Konten
| Example: <!ELEMENT note (to,from,header,(message|body))> |
Mendeklarasikan Konten Campuran
| Example: <!ELEMENT note (#PCDATA|to|from|header|message)*> |
Mendeklarasikan Atribut
Sebuah deklarasi atribut memiliki sintaks berikut:Dalam DTD, atribut dinyatakan dengan deklarasi ATTLIST.
<!ATTLIST element-name attribute-name attribute-type default-value>
DTD example:
<!ATTLIST payment type CDATA "check">
XML example:
<payment type="check" />
An attribute declaration has the following syntax:
<!ATTLIST element-name attribute-name attribute-type default-value>
DTD example:
<!ATTLIST payment type CDATA "check">
XML example:
<payment type="check" />
the attribute-type can be one of the following:
| Type | Description |
|---|---|
| CDATA | The value is character data |
| (en1|en2|..) | The value must be one from an enumerated list |
| ID | The value is a unique id |
| IDREF | The value is the id of another element |
| IDREFS | The value is a list of other ids |
| NMTOKEN | The value is a valid XML name |
| NMTOKENS | The value is a list of valid XML names |
| ENTITY | The value is an entity |
| ENTITIES | The value is a list of entities |
| NOTATION | The value is a name of a notation |
| xml: | The value is a predefined xml value |
| Value | Explanation |
|---|---|
| value | The default value of the attribute |
| #REQUIRED | The attribute is required |
| #IMPLIED | The attribute is not required |
| #FIXED value | The attribute value is fixed |
A Default Attribute Value
| DTD: <!ELEMENT square EMPTY> <!ATTLIST square width CDATA "0"> Valid XML: <square width="100" /> |
#REQUIRED
Syntax
| <!ATTLIST element-name attribute-name attribute-type #REQUIRED> |
Example
| DTD: <!ATTLIST person number CDATA #REQUIRED> Valid XML: <person number="5677" /> Invalid XML: <person /> |
#IMPLIED
Syntax
| <!ATTLIST element-name attribute-name attribute-type #IMPLIED> |
Example
| DTD: <!ATTLIST contact fax CDATA #IMPLIED> Valid XML: <contact fax="555-667788" /> Valid XML: <contact /> |
#FIXED
Syntax
| <!ATTLIST element-name attribute-name attribute-type #FIXED "value"> |
Example
| DTD: <!ATTLIST sender company CDATA #FIXED "Microsoft"> Valid XML: <sender company="Microsoft" /> Invalid XML: <sender company="W3Schools" /> |
Enumerated Attribute Values
Syntax
| <!ATTLIST element-name attribute-name (en1|en2|..) default-value> |
Example
| DTD: <!ATTLIST payment type (check|cash) "cash"> XML example: <payment type="check" /> | or <payment type="cash" /> |
Sebuah Deklarasi Internal Entitas
Sintaksis
| <!ENTITY entity-name "entity-value"> |
Contoh
| DTD Example: <!ENTITY writer "Donald Duck."> <!ENTITY copyright "Copyright W3Schools."> XML example: <author>&writer;©right;</author> |
Sebuah Deklarasi Entitas Eksternal
Sintaksis
| <!ENTITY entity-name SYSTEM "URI/URL"> |
Contoh
DTD Example:<!ENTITY writer SYSTEM "http://www.w3schools.com/entities.dtd">
<!ENTITY copyright SYSTEM "http://www.w3schools.com/entities.dtd">
XML example:
<author>&writer;©right;</author>
nice information min
BalasHapusAlat cuci ultrasonic