DTD - Panduan Cepat
Deklarasi Tipe Dokumen XML, umumnya dikenal sebagai DTD, adalah cara untuk mendeskripsikan bahasa XML dengan tepat. DTD memeriksa validitas struktur dan kosakata dokumen XML terhadap aturan tata bahasa dari bahasa XML yang sesuai.
Dokumen XML dapat didefinisikan sebagai -
Well-formed- Jika dokumen XML mematuhi semua aturan umum XML seperti tag harus bertingkat dengan benar, tag pembuka dan penutup harus seimbang, dan tag kosong harus diakhiri dengan '/>', maka ini disebut sebagai format yang baik .
ATAU
Valid- Dokumen XML dikatakan valid jika tidak hanya dalam format yang baik , tetapi juga sesuai dengan DTD yang tersedia yang menentukan tag mana yang digunakannya, atribut apa yang dapat dimuat oleh tag tersebut, dan tag mana yang dapat muncul di dalam tag lain, di antara properti lainnya .
Diagram berikut menunjukkan bahwa DTD digunakan untuk menyusun dokumen XML -
Jenis
DTD dapat diklasifikasikan berdasarkan deklarasinya dalam dokumen XML, seperti -
DTD internal
DTD Eksternal
Ketika DTD dideklarasikan di dalam file, itu dipanggil Internal DTD dan jika dideklarasikan dalam file terpisah maka disebut External DTD.
Kita akan mempelajari lebih lanjut tentang ini di bab Sintaks DTD
fitur
Berikut adalah beberapa poin penting yang dijelaskan oleh DTD -
elemen yang bisa muncul dalam dokumen XML.
urutan kemunculannya.
elemen opsional dan wajib.
atribut elemen dan apakah itu opsional atau wajib.
apakah atribut dapat memiliki nilai default.
Keuntungan menggunakan DTD
Documentation- Anda dapat menentukan format Anda sendiri untuk file XML. Melihat dokumen ini, pengguna / pengembang dapat memahami struktur datanya.
Validation - Ini memberi cara untuk memeriksa validitas file XML dengan memeriksa apakah elemen muncul dalam urutan yang benar, elemen dan atribut wajib sudah ada, elemen dan atribut belum dimasukkan dengan cara yang salah, dan sebagainya.
Kerugian menggunakan DTD
Itu tidak mendukung ruang nama. Namespace adalah mekanisme di mana nama elemen dan atribut dapat ditetapkan ke grup. Namun, dalam ruang nama DTD harus didefinisikan dalam DTD, yang melanggar tujuan penggunaan ruang nama.
Ini hanya mendukung tipe data string teks.
Itu tidak berorientasi objek. Oleh karena itu, konsep warisan tidak dapat diterapkan di DTD.
Kemungkinan terbatas untuk mengekspresikan kardinalitas elemen.
XML DTD dapat ditentukan di dalam dokumen, atau dapat disimpan dalam dokumen terpisah dan kemudian dokumen tersebut dapat ditautkan ke dokumen DTD untuk menggunakannya.
Sintaksis
Sintaks dasar DTD adalah sebagai berikut -
<!DOCTYPE element DTD identifier
[
declaration1
declaration2
........
]>
Dalam sintaks di atas -
DTD dimulai dengan <! DOCTYPE delimiter.
Sebuah element memberi tahu parser untuk mengurai dokumen dari elemen root yang ditentukan.
DTD identifieradalah pengenal untuk definisi jenis dokumen, yang mungkin merupakan jalur ke file di sistem atau URL ke file di internet. Jika DTD mengarah ke jalur eksternal, DTD dipanggilexternal subset.
Itu square brackets [ ] menyertakan daftar opsional deklarasi entitas yang dipanggil internal subset.
DTD internal
DTD disebut sebagai DTD internal jika elemen dideklarasikan dalam file XML. Untuk mereferensikannya sebagai DTD internal, atribut mandiri dalam deklarasi XML harus disetel keyes. Ini berarti deklarasi berfungsi independen dari sumber eksternal.
Sintaksis
Sintaks DTD internal seperti yang ditunjukkan -
<!DOCTYPE root-element [element-declarations]>
di mana root-element adalah nama dari root element dan element-declarations adalah tempat Anda mendeklarasikan elemen.
Contoh
Berikut adalah contoh sederhana DTD internal -
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
<!DOCTYPE address [
<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
]>
<address>
<name>Tanmay Patil</name>
<company>TutorialsPoint</company>
<phone>(011) 123-4567</phone>
</address>
Mari kita lihat kode di atas -
Start Declaration - Mulailah deklarasi XML dengan pernyataan berikut.
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
DTD- Segera setelah header XML, deklarasi tipe dokumen mengikuti, biasanya disebut sebagai DOCTYPE -
<!DOCTYPE address [
Deklarasi DOCTYPE memiliki tanda seru (!) Di awal nama elemen. DOCTYPE menginformasikan parser bahwa DTD dikaitkan dengan dokumen XML ini.
DTD Body - Deklarasi DOCTYPE diikuti oleh badan DTD, tempat Anda mendeklarasikan elemen, atribut, entitas, dan notasi -
<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone_no (#PCDATA)>
Beberapa elemen dideklarasikan di sini yang membentuk kosakata dari dokumen <name>. <! Nama ELEMEN (#PCDATA)> mendefinisikan nama elemen menjadi tipe "#PCDATA". Di sini #PCDATA berarti data teks yang dapat diurai.
End Declaration- Terakhir, bagian deklarasi DTD ditutup menggunakan braket penutup dan braket sudut penutup (]>). Ini secara efektif mengakhiri definisi, dan setelah itu, dokumen XML segera menyusul.
Aturan
Deklarasi tipe dokumen harus muncul di awal dokumen (hanya diawali dengan header XML) - tidak diizinkan di tempat lain di dalam dokumen.
Mirip dengan deklarasi DOCTYPE, deklarasi elemen harus dimulai dengan tanda seru.
Nama dalam deklarasi tipe dokumen harus sesuai dengan tipe elemen dari elemen root.
DTD Eksternal
Dalam elemen DTD eksternal dideklarasikan di luar file XML. Mereka diakses dengan menentukan atribut sistem yang bisa berupa file .dtd resmi atau URL yang valid. Untuk mereferensikannya sebagai DTD eksternal, atribut mandiri dalam deklarasi XML harus disetel sebagaino. Artinya, deklarasi menyertakan informasi dari sumber eksternal.
Sintaksis
Berikut ini adalah sintaks untuk DTD eksternal -
<!DOCTYPE root-element SYSTEM "file-name">
dimana nama file adalah file dengan ekstensi .dtd .
Contoh
Contoh berikut menunjukkan penggunaan DTD eksternal -
<?xml version = "1.0" encoding = "UTF-8" standalone = "no" ?>
<!DOCTYPE address SYSTEM "address.dtd">
<address>
<name>Tanmay Patil</name>
<company>TutorialsPoint</company>
<phone>(011) 123-4567</phone>
</address>
Isi file DTD address.dtd adalah seperti yang ditunjukkan -
<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
Jenis
Anda dapat merujuk ke DTD eksternal dengan menggunakan system identifiers atau public identifiers.
System Identifiers
Pengenal sistem memungkinkan Anda menentukan lokasi file eksternal yang berisi deklarasi DTD. Sintaksnya adalah sebagai berikut -
<!DOCTYPE name SYSTEM "address.dtd" [...]>
Seperti yang Anda lihat, ini berisi SISTEM kata kunci dan referensi URI yang menunjuk ke lokasi dokumen.
Public Identifiers
Pengidentifikasi publik menyediakan mekanisme untuk menemukan sumber daya DTD dan ditulis sebagai berikut -
<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">
Seperti yang Anda lihat, ini dimulai dengan kata kunci PUBLIK, diikuti dengan pengenal khusus. Pengidentifikasi publik digunakan untuk mengidentifikasi entri dalam katalog. Pengenal publik dapat mengikuti format apa pun, namun format yang umum digunakan disebut Pengenal Publik Formal, atau FPI.
Bab ini akan membahas tentang Komponen XML dari perspektif DTD. DTD pada dasarnya akan berisi deklarasi dari komponen XML berikut -
Element
Attributes
Entities
Elemen
Elemen XML dapat didefinisikan sebagai blok penyusun dokumen XML. Elemen dapat berperilaku sebagai wadah untuk menampung teks, elemen, atribut, objek media atau campuran semuanya.
Setiap dokumen XML berisi satu atau lebih elemen, yang batasnya dibatasi oleh tag awal dan tag akhir, atau elemen kosong.
Contoh
Di bawah ini adalah contoh sederhana dari elemen XML
<name>
Tutorials Point
</name>
Seperti yang Anda lihat, kami telah mendefinisikan tag <name>. Ada teks di antara tag awal dan akhir dari <name>. Elemen, ketika digunakan dalam XML-DTD, perlu dideklarasikan yang akan dibahas secara rinci di bab DTD Elements .
Atribut
Atribut adalah bagian dari elemen XML. Sebuah elemen dapat memiliki sejumlah atribut unik. Atribut memberikan lebih banyak informasi tentang elemen XML atau lebih tepatnya mendefinisikan properti elemen. Atribut XML selalu merupakan pasangan nama-nilai .
Contoh
Di bawah ini adalah contoh sederhana atribut XML -
<img src = "flower.jpg"/>
Di sini img adalah nama elemen sedangkan src adalah nama atribut dan bunga.jpg adalah nilai yang diberikan untuk atribut src .
Jika atribut digunakan dalam XML DTD maka ini perlu dideklarasikan yang akan dibahas secara rinci di bab Atribut DTD
Entitas
Entitas adalah placeholder dalam XML. Ini dapat dideklarasikan dalam prolog dokumen atau dalam DTD. Entitas terutama dapat dikategorikan sebagai -
Entitas bawaan
Entitas karakter
Entitas umum
Entitas parameter
Ada lima entitas bawaan yang bermain dalam XML yang dibentuk dengan baik, mereka adalah -
ampersand: & amp;
Kutipan tunggal: & apos;
Lebih dari: & gt;
Kurang dari: & lt;
Kutipan ganda: & quot;
Kami akan mempelajari lebih lanjut tentang deklarasi entitas dalam XML DTD secara rinci di bab Entitas DTD
Elemen XML dapat didefinisikan sebagai blok penyusun dokumen XML. Elemen dapat berperilaku sebagai wadah untuk menampung teks, elemen, atribut, objek media atau campuran semuanya.
Elemen DTD dideklarasikan dengan deklarasi ELEMENT. Ketika file XML divalidasi oleh DTD, parser awalnya memeriksa elemen root dan kemudian elemen turunan divalidasi.
Sintaksis
Semua deklarasi elemen DTD memiliki bentuk umum ini -
<!ELEMENT elementname (content)>
Deklarasi ELEMENT digunakan untuk menunjukkan pengurai bahwa Anda akan mendefinisikan sebuah elemen.
ElementName adalah nama elemen (juga disebut identifier generik ) yang Anda mendefinisikan.
konten menentukan konten apa (jika ada) yang dapat masuk ke dalam elemen.
Jenis Konten Elemen
Isi deklarasi elemen dalam DTD dapat dikategorikan sebagai berikut -
Konten kosong
Konten elemen
Konten campuran
Konten apapun
Konten Kosong
Ini adalah kasus khusus deklarasi elemen. Deklarasi elemen ini tidak mengandung konten apa pun. Ini dideklarasikan dengan kata kunciEMPTY.
Syntax
Berikut ini adalah sintaks untuk deklarasi elemen kosong -
<!ELEMENT elementname EMPTY >
Dalam sintaks di atas -
ELEMENTadalah deklarasi elemen kategori KOSONG
elementname adalah nama elemen kosong.
Example
Berikut adalah contoh sederhana yang mendemonstrasikan deklarasi elemen kosong -
<?xml version = "1.0"?>
<!DOCTYPE hr[
<!ELEMENT address EMPTY>
]>
<address />
Dalam contoh ini alamat dideklarasikan sebagai elemen kosong. Markup untuk elemen alamat akan muncul sebagai <address />.
Konten Elemen
Dalam deklarasi elemen dengan konten elemen, konten tersebut akan menjadi elemen yang diizinkan dalam tanda kurung. Kami juga dapat memasukkan lebih dari satu elemen.
Syntax
Berikut ini adalah sintaks deklarasi elemen dengan konten elemen -
<!ELEMENT elementname (child1, child2...)>
ELEMENT adalah tag deklarasi elemen
elementname adalah nama elemen.
child1, child2 .. adalah elemen dan setiap elemen harus memiliki definisinya sendiri di dalam DTD.
Example
Contoh di bawah ini menunjukkan contoh sederhana untuk deklarasi elemen dengan konten elemen -
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
<!DOCTYPE address [
<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
]>
<address>
<name>Tanmay Patil</name>
<company>TutorialsPoint</company>
<phone>(011) 123-4567</phone>
</address>
Dalam contoh di atas, alamat adalah elemen induk dan nama , perusahaan dan telepon_no adalah elemen anaknya.
Daftar Operator dan Aturan Sintaks
Tabel di bawah ini menunjukkan daftar operator dan aturan sintaks yang dapat diterapkan dalam mendefinisikan elemen anak -
Operator | Sintaksis | Deskripsi | Contoh |
---|---|---|---|
+ | <! ELEMENT element-name (child1 +)> | Ini menunjukkan bahwa elemen anak dapat terjadi satu kali atau lebih di dalam elemen induk. | <! ELEMEN alamat (nama +)> Nama elemen anak dapat muncul satu kali atau lebih di dalam alamat nama elemen . |
* | <! ELEMENT element-name (child1 *)> | Ini menunjukkan bahwa elemen anak dapat terjadi nol atau lebih kali di dalam elemen induk. | <! ELEMEN alamat (nama *)> Nama elemen turunan dapat muncul nol atau lebih di dalam alamat nama elemen . |
? | <! ELEMENT element-name (child1?)> | Ini menunjukkan bahwa elemen anak dapat terjadi nol atau satu kali di dalam elemen induk. | <! ELEMEN alamat (nama?)> Nama elemen turunan dapat terjadi nol atau satu kali di dalam alamat nama elemen . |
, | <! ELEMENT element-name (child1, child2)> | Ini memberikan urutan elemen anak dipisahkan dengan koma yang harus dimasukkan dalam nama elemen. | <! ELEMEN alamat (nama, perusahaan)> Urutan nama elemen anak , perusahaan , yang harus muncul dalam urutan yang sama di dalam alamat nama elemen . |
| | <! ELEMENT element-name (child1 | child2)> | Ini memungkinkan membuat pilihan dalam elemen anak. | <! ELEMEN alamat (nama | perusahaan)> Ini memungkinkan Anda untuk memilih salah satu dari elemen anak yaitu nama atau perusahaan , yang harus terjadi di dalam alamat nama elemen . |
Aturan
Kita perlu mengikuti aturan tertentu jika ada lebih dari satu konten elemen -
Sequences - Seringkali elemen dalam dokumen DTD harus muncul dalam urutan yang berbeda. Jika demikian, Anda menentukan konten menggunakan urutan.
Deklarasi tersebut menunjukkan bahwa elemen <address> harus memiliki tepat tiga turunan - <name>, <company>, dan <phone> - dan harus muncul dalam urutan ini. Misalnya -
<!ELEMENT address (name,company,phone)>
Choices- Misalkan Anda perlu mengizinkan satu elemen atau lainnya, tetapi tidak keduanya. Dalam kasus seperti itu, Anda harus menggunakan karakter pipa (|). Fungsi pipa sebagai OR eksklusif. Misalnya -
<!ELEMENT address (mobile | landline)>
Konten Elemen Campuran
Ini adalah kombinasi dari (#PCDATA) dan elemen turunan. PCDATA adalah singkatan dari data karakter yang diurai, yaitu teks yang bukan markup. Dalam model konten campuran, teks dapat muncul dengan sendirinya atau dapat diselingi di antara elemen. Aturan untuk model konten campuran mirip dengan konten elemen seperti yang dibahas di bagian sebelumnya.
Syntax
Berikut ini adalah sintaks umum untuk konten elemen campuran -
<!ELEMENT elementname (#PCDATA|child1|child2)*>
ELEMENT adalah tag deklarasi elemen.
elementname adalah nama elemen.
PCDATAadalah teks yang bukan markup. #PCDATA harus diutamakan dalam deklarasi konten campuran.
child1, child2 .. adalah elemen dan setiap elemen harus memiliki definisinya sendiri di dalam DTD.
Operator (*) harus mengikuti deklarasi konten campuran jika elemen turunan disertakan
Deklarasi elemen (#PCDATA) dan turunan harus dipisahkan oleh operator (|).
Example
Berikut adalah contoh sederhana yang menunjukkan deklarasi elemen konten campuran dalam DTD.
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
<!DOCTYPE address [
<!ELEMENT address (#PCDATA|name)*>
<!ELEMENT name (#PCDATA)>
]>
<address>
Here's a bit of text mixed up with the child element.
<name>
Tanmay Patil
</name>
</address>
Konten Elemen APA PUN
Anda dapat mendeklarasikan elemen menggunakan kata kunci APAPUN di konten. Ini paling sering disebut sebagai elemen kategori campuran. ANY berguna jika Anda belum memutuskan konten elemen yang diizinkan.
Syntax
Berikut ini adalah sintaks untuk mendeklarasikan elemen dengan konten APAPUN -
<!ELEMENT elementname ANY>
Di sini, kata kunci ANY menunjukkan bahwa teks (PCDATA) dan / atau elemen apa pun yang dideklarasikan dalam DTD dapat digunakan di dalam konten elemen <elementname>. Mereka dapat digunakan dalam urutan apapun beberapa kali. Namun, kata kunci APAPUN tidak mengizinkan Anda untuk memasukkan elemen yang tidak dideklarasikan dalam DTD.
Example
Berikut adalah contoh sederhana yang mendemonstrasikan deklarasi elemen dengan konten APAPUN -
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
<!DOCTYPE address [
<!ELEMENT address ANY>
]>
<address>
Here's a bit of sample text
</address>
Pada bab ini kita akan membahas tentang Atribut DTD. Atribut memberikan lebih banyak informasi tentang suatu elemen atau lebih tepatnya mendefinisikan properti dari suatu elemen. Atribut XML selalu dalam bentuk pasangan nama-nilai. Sebuah elemen dapat memiliki sejumlah atribut unik.
Deklarasi atribut sangat mirip dengan deklarasi elemen dalam banyak hal kecuali satu; alih-alih mendeklarasikan konten yang diizinkan untuk elemen, Anda mendeklarasikan daftar atribut yang diizinkan untuk setiap elemen. Daftar ini disebut deklarasi ATTLIST.
Sintaksis
Sintaks dasar deklarasi atribut DTD adalah sebagai berikut -
<!ATTLIST element-name attribute-name attribute-type attribute-value>
Dalam sintaks di atas -
Atribut DTD dimulai dengan kata kunci <! ATTLIST jika elemen tersebut berisi atribut.
element-name menentukan nama elemen yang diterapkan atribut.
attribute-name menentukan nama atribut yang disertakan dengan nama-elemen.
attribute-typemendefinisikan jenis atribut. Kami akan membahas lebih lanjut tentang ini di bagian berikut.
attribute-valuemengambil nilai tetap yang harus ditentukan atribut. Kami akan membahas lebih lanjut tentang ini di bagian berikut.
Contoh
Di bawah ini adalah contoh sederhana untuk deklarasi atribut di DTD -
<?xml version = "1.0"?>
<!DOCTYPE address [
<!ELEMENT address ( name )>
<!ELEMENT name ( #PCDATA )>
<!ATTLIST name id CDATA #REQUIRED>
]>
<address>
<name id = "123">Tanmay Patil</name>
</address>
Mari kita lihat kode di atas -
Mulailah dengan deklarasi XML dengan pernyataan berikut -
<?xml version = "1.0"?>
Segera setelah tajuk XML adalah deklarasi tipe dokumen, biasanya disebut sebagai DOCTYPE seperti yang ditunjukkan di bawah ini -
DOCTYPE menginformasikan parser bahwa DTD dikaitkan dengan dokumen XML ini. Deklarasi DOCTYPE memiliki tanda seru (!) Di awal nama elemen.
<!DOCTYPE address [
Berikut adalah badan DTD. Di sini kami telah mendeklarasikan elemen dan atribut -
<!ELEMENT address ( name )>
<!ELEMENT name ( #PCDATA )>
Id atribut untuk nama elemen didefinisikan seperti yang diberikan di bawah ini -
Di sini tipe atributnya adalah CDATA dan nilainya #REQUIRED .
<!ATTLIST name id CDATA #REQUIRED>
Aturan Deklarasi Atribut
Semua atribut yang digunakan dalam dokumen XML harus dideklarasikan dalam Document Type Definition (DTD) menggunakan Deklarasi Daftar Atribut
Atribut hanya dapat muncul di tag awal atau kosong.
Kata kunci ATTLIST harus dalam huruf besar
Tidak ada nama atribut duplikat yang diizinkan dalam daftar atribut untuk elemen tertentu.
Jenis Atribut
Saat mendeklarasikan atribut, Anda dapat menentukan bagaimana prosesor harus menangani data yang muncul di nilai. Kami dapat mengkategorikan jenis atribut dalam tiga kategori utama -
Jenis string
Jenis tokenized
Jenis yang disebutkan
Tabel berikut memberikan ringkasan dari berbagai jenis atribut -
Sr.No. | Jenis & Deskripsi |
---|---|
1 | CDATA CDATA adalah data karakter (teks dan bukan markup). Ini adalah Jenis Atribut String . |
2 | ID Ini adalah pengenal unik dari atribut tersebut. Seharusnya tidak muncul lebih dari sekali. Ini adalah Jenis Atribut Tokenized . |
3 | IDREF Ini digunakan untuk mereferensikan ID dari elemen lain. Ini digunakan untuk membangun koneksi antar elemen. Ini adalah Jenis Atribut Tokenized . |
4 | IDREFS Ini digunakan untuk mereferensikan beberapa ID. Ini adalah Jenis Atribut Tokenized . |
5 | ENTITY Ini mewakili entitas eksternal dalam dokumen. Ini adalah Jenis Atribut Tokenized . |
6 | ENTITIES Ini mewakili daftar entitas eksternal dalam dokumen. Ini adalah Jenis Atribut Tokenized . |
7 | NMTOKEN Ini mirip dengan CDATA dan nilai atributnya terdiri dari nama XML yang valid. Ini adalah Jenis Atribut Tokenized . |
8 | NMTOKENS Ini mirip dengan CDATA dan nilai atributnya terdiri dari daftar nama XML yang valid. Ini adalah Jenis Atribut Tokenized . |
9 | NOTATION Sebuah elemen akan direferensikan ke notasi yang dideklarasikan dalam dokumen DTD. Ini adalah Jenis Atribut Enumerated . |
10 | Enumeration Ini memungkinkan penentuan daftar nilai tertentu yang salah satu nilainya harus cocok. Ini adalah Jenis Atribut Enumerated . |
Deklarasi Nilai Atribut
Dalam setiap deklarasi atribut, Anda harus menentukan bagaimana nilai tersebut akan muncul di dokumen. Anda dapat menentukan apakah atribut -
dapat memiliki nilai default
dapat memiliki nilai tetap
diperlukan
tersirat
Nilai dasar
Ini berisi nilai default. Nilai bisa diapit tanda petik tunggal (') atau tanda petik ganda (").
Syntax
Berikut ini adalah sintaks nilai -
<!ATTLIST element-name attribute-name attribute-type "default-value">
di mana nilai default adalah nilai atribut yang ditentukan.
Example
Berikut adalah contoh sederhana deklarasi atribut dengan nilai default -
<?xml version = "1.0"?>
<!DOCTYPE address [
<!ELEMENT address ( name )>
<!ELEMENT name ( #PCDATA )>
<!ATTLIST name id CDATA "0">
]>
<address>
<name id = "123">
Tanmay Patil
</name>
</address>
Dalam contoh ini kami memiliki elemen nama dengan id atribut yang nilai defaultnya adalah 0 . Nilai default diapit oleh tanda kutip ganda.
Nilai TETAP
Kata kunci #FIXED diikuti dengan nilai tetap digunakan ketika Anda ingin menentukan bahwa nilai atribut adalah konstan dan tidak dapat diubah. Penggunaan umum dari atribut tetap adalah menentukan nomor versi.
Syntax
Berikut ini adalah sintaks dari nilai tetap -
<!ATTLIST element-name attribute-name attribute-type #FIXED "value" >
di mana #FIXED adalah nilai atribut yang ditentukan.
Example
Berikut adalah contoh sederhana dari deklarasi atribut dengan nilai TETAP -
<?xml version = "1.0"?>
<!DOCTYPE address [
<!ELEMENT address (company)*>
<!ELEMENT company (#PCDATA)>
<!ATTLIST company name NMTOKEN #FIXED "tutorialspoint">
]>
<address>
<company name = "tutorialspoint">we are a free online teaching faculty</company>
</address>
Dalam contoh ini kami telah menggunakan kata kunci #FIXED yang menunjukkan bahwa nilai "tutorialspoint" adalah satu-satunya nilai untuk nama atribut elemen <company>. Jika kami mencoba mengubah nilai atribut maka itu memberikan kesalahan.
Berikut ini adalah DTD yang tidak valid -
<?xml version = "1.0"?>
<!DOCTYPE address [
<!ELEMENT address (company)*>
<!ELEMENT company (#PCDATA)>
<!ATTLIST company name NMTOKEN #FIXED "tutorialspoint">
]>
<address>
<company name = "abc">we are a free online teaching faculty</company>
</address>
Nilai yang DIBUTUHKAN
Kapanpun Anda ingin menentukan bahwa suatu atribut diperlukan, gunakan #REQUIRED kata kunci.
Syntax
Berikut adalah sintaks #REQUIRED -
<!ATTLIST element-name attribute-name attribute-type #REQUIRED>
di mana #REQUIRED adalah tipe atribut yang ditentukan.
Example
Berikut adalah contoh sederhana deklarasi atribut DTD dengan kata kunci #REQUIRED -
<?xml version = "1.0"?>
<!DOCTYPE address [
<!ELEMENT address ( name )>
<!ELEMENT name ( #PCDATA )>
<!ATTLIST name id CDATA #REQUIRED>
]>
<address>
<name id = "123">
Tanmay Patil
</name>
</address>
Dalam contoh ini kita telah menggunakan kata kunci #REQUIRED untuk menentukan bahwa atribut id harus disediakan untuk elemen-nama nama
Nilai TERSIRAT
Saat mendeklarasikan atribut, Anda harus selalu menentukan deklarasi nilai. Jika atribut yang Anda deklarasikan tidak memiliki nilai default, tidak memiliki nilai tetap, dan tidak diperlukan, Anda harus menyatakan bahwa atribut tersebut seperti yang tersirat . Kata kunci #IMPLIED digunakan untuk menentukan atribut seperti yang tersirat .
Syntax
Berikut ini adalah sintaks # TERSIRAT -
<!ATTLIST element-name attribute-name attribute-type #IMPLIED>
di mana #IMPLIED adalah tipe atribut yang ditentukan.
Example
Berikut ini adalah contoh sederhana dari # TERSIRAT
<?xml version = "1.0"?>
<!DOCTYPE address [
<!ELEMENT address ( name )>
<!ELEMENT name ( #PCDATA )>
<!ATTLIST name id CDATA #IMPLIED>
]>
<address>
<name />
</address>
Dalam contoh ini kami telah menggunakan kata kunci # TERSIRAT karena kami tidak ingin menentukan atribut apa pun untuk disertakan dalam nama elemen . Ini opsional.
Entitas digunakan untuk menentukan pintasan ke karakter khusus dalam dokumen XML. Entitas terutama terdiri dari empat jenis -
Entitas bawaan
Entitas karakter
Entitas umum
Entitas parameter
Sintaks Deklarasi Entitas
Secara umum, entitas dapat dideklarasikan internally atau externally. Mari kita pahami masing-masing dan sintaksnya sebagai berikut -
Entitas Internal
Jika suatu entitas dideklarasikan dalam DTD, itu disebut sebagai entitas internal.
Syntax
Berikut ini adalah sintaks untuk deklarasi entitas internal -
<!ENTITY entity_name "entity_value">
Dalam sintaks di atas -
entity_name adalah nama entitas diikuti dengan nilainya dalam tanda kutip ganda atau tanda kutip tunggal.
entity_value memegang nilai untuk nama entitas.
Nilai entitas dari Entitas Internal dide-referensi dengan menambahkan awalan & ke nama entitas yaitu & entity_name.
Example
Berikut adalah contoh sederhana untuk deklarasi entitas internal -
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<!DOCTYPE address [
<!ELEMENT address (#PCDATA)>
<!ENTITY name "Tanmay patil">
<!ENTITY company "TutorialsPoint">
<!ENTITY phone_no "(011) 123-4567">
]>
<address>
&name;
&company;
&phone_no;
</address>
Dalam contoh di atas, masing-masing nama-nama entitas nama , perusahaan dan phone_no digantikan oleh nilai-nilai mereka dalam dokumen XML. Nilai entitas dide-referensi dengan menambahkan awalan & ke nama entitas.
Simpan file ini sebagai sample.xmldan membukanya di browser apa pun, Anda akan melihat bahwa nilai entitas untuk nama , perusahaan , telepon_no diganti masing-masing.
Entitas Eksternal
Jika suatu entitas dideklarasikan di luar DTD, itu disebut sebagai entitas eksternal. Anda dapat merujuk ke Entitas eksternal dengan menggunakan pengidentifikasi sistem atau pengidentifikasi publik.
Syntax
Berikut ini adalah sintaks untuk deklarasi Entitas Eksternal -
<!ENTITY name SYSTEM "URI/URL">
Dalam sintaks di atas -
name adalah nama entitas.
SYSTEM adalah kata kuncinya.
URI/URL adalah alamat sumber eksternal yang diapit tanda kutip ganda atau tunggal.
Types
Anda dapat merujuk ke DTD eksternal dengan menggunakan -
System Identifiers - Pengenal sistem memungkinkan Anda menentukan lokasi file eksternal yang berisi deklarasi DTD.
Seperti yang Anda lihat, ini berisi SISTEM kata kunci dan referensi URI yang menunjuk ke lokasi dokumen. Sintaksnya adalah sebagai berikut -
<!DOCTYPE name SYSTEM "address.dtd" [...]>
Public Identifiers - Pengidentifikasi publik menyediakan mekanisme untuk menemukan sumber daya DTD dan ditulis seperti di bawah ini -
Seperti yang Anda lihat, ini dimulai dengan kata kunci PUBLIK, diikuti dengan pengenal khusus. Pengidentifikasi publik digunakan untuk mengidentifikasi entri dalam katalog. Pengidentifikasi publik dapat mengikuti format apa pun; namun, format yang umum digunakan disebut Pengenal Publik Formal, atau FPI.
<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">
Example
Mari kita pahami entitas eksternal dengan contoh berikut -
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<!DOCTYPE address SYSTEM "address.dtd">
<address>
<name>
Tanmay Patil
</name>
<company>
TutorialsPoint
</company>
<phone>
(011) 123-4567
</phone>
</address>
Di bawah ini adalah isi dari file DTD address.dtd -
<!ELEMENT address (name, company, phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
Entitas bawaan
Semua pengurai XML harus mendukung entitas bawaan. Secara umum, Anda dapat menggunakan referensi entitas ini di mana saja. Anda juga dapat menggunakan teks normal dalam dokumen XML, seperti dalam konten elemen dan nilai atribut.
Ada lima entitas bawaan yang memainkan peran mereka dalam XML yang dibentuk dengan baik, yaitu -
ampersand: & amp;
Kutipan tunggal: & apos;
Lebih dari: & gt;
Kurang dari: & lt;
Kutipan ganda: & quot;
Contoh
Contoh berikut menunjukkan deklarasi entitas bawaan -
<?xml version = "1.0"?>
<note>
<description>I'm a technical writer & programmer</description>
<note>
Seperti yang Anda lihat di sini, & amp; karakter diganti oleh & setiap kali prosesor menemukan ini.
Entitas karakter
Entitas Karakter digunakan untuk menamai beberapa entitas yang merupakan representasi simbolis dari informasi yaitu karakter yang sulit atau tidak mungkin untuk diketik dapat diganti dengan Entitas Karakter.
Contoh
Contoh berikut menunjukkan deklarasi entitas karakter -
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<!DOCTYPE author[
<!ELEMENT author (#PCDATA)>
<!ENTITY writer "Tanmay patil">
<!ENTITY copyright "©">
]>
<author>&writer;©right;</author>
Anda akan melihat di sini kami telah digunakan ©sebagai nilai karakter hak cipta. Simpan file ini sebagai sample.xml dan buka di browser Anda dan Anda akan melihat bahwa hak cipta diganti dengan karakter ©.
Entitas umum
Entitas umum harus dideklarasikan dalam DTD sebelum dapat digunakan dalam dokumen XML. Alih-alih hanya mewakili satu karakter, entitas umum dapat mewakili karakter, paragraf, dan bahkan seluruh dokumen.
Sintaksis
Untuk mendeklarasikan entitas umum, gunakan deklarasi bentuk umum ini di DTD Anda -
<!ENTITY ename "text">
Contoh
Contoh berikut menunjukkan deklarasi entitas umum -
<?xml version = "1.0"?>
<!DOCTYPE note [
<!ENTITY source-text "tutorialspoint">
]>
<note>
&source-text;
</note>
Setiap kali pengurai XML menemukan referensi ke entitas teks sumber , itu akan memberikan teks pengganti ke aplikasi pada titik referensi.
Entitas parameter
Tujuan dari entitas parameter adalah untuk memungkinkan Anda membuat bagian teks pengganti yang dapat digunakan kembali.
Sintaksis
Berikut ini adalah sintaks untuk deklarasi entitas parameter -
<!ENTITY % ename "entity_value">
entity_value adalah karakter apa pun yang bukan '&', '%', atau '"'.
Contoh
Contoh berikut menunjukkan deklarasi entitas parameter. Misalkan Anda memiliki deklarasi elemen seperti di bawah ini -
<!ELEMENT residence (name, street, pincode, city, phone)>
<!ELEMENT apartment (name, street, pincode, city, phone)>
<!ELEMENT office (name, street, pincode, city, phone)>
<!ELEMENT shop (name, street, pincode, city, phone)>
Sekarang misalkan Anda ingin menambahkan negara elemen tambahan , maka Anda perlu menambahkannya ke keempat deklarasi. Karenanya kita dapat menggunakan referensi entitas parameter. Sekarang menggunakan referensi entitas parameter, contoh di atas akan menjadi -
<!ENTITY % area "name, street, pincode, city">
<!ENTITY % contact "phone">
Entitas parameter dirujuk dengan cara yang sama seperti referensi entitas umum, hanya dengan tanda persen, bukan ampersand -
<!ELEMENT residence (%area;, %contact;)>
<!ELEMENT apartment (%area;, %contact;)>
<!ELEMENT office (%area;, %contact;)>
<!ELEMENT shop (%area;, %contact;)>
Saat parser membaca deklarasi ini, pengurai mengganti teks pengganti entitas untuk referensi entitas.
Kami menggunakan DTD untuk mendeskripsikan dokumen XML dengan tepat. DTD memeriksa validitas struktur dan kosakata dokumen XML terhadap aturan tata bahasa dari bahasa XML yang sesuai. Sekarang untuk memeriksa validitas DTD, prosedur berikut dapat digunakan -
Using XML DTD validation tools - Anda dapat menggunakan beberapa IDE seperti XML Spy (tidak gratis) dan XMLStarlet (opensource) dapat digunakan untuk memvalidasi file XML terhadap dokumen DTD.
Using XML DTD on-line validators- Layanan Validasi Markup W3C dirancang untuk memvalidasi dokumen Web. Gunakan validator online untuk memeriksa validasi XML DTD Anda di sini .
Write your own XML validators with XML DTD validation API - Versi JDK yang lebih baru (di atas 1.4) mendukung API validasi XML DTD. Anda dapat menulis kode validator Anda sendiri untuk memeriksa validasi validasi XML DTD.