Kamis, 16 Desember 2010

XML DTD

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]>

Contoh dokumen XML dengan DTD internal:
<?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>

DTD di atas ditafsirkan seperti ini:
  • !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">
Ini adalah dokumen XML yang sama seperti di atas, tetapi dengan DTD eksternal ( Buka itu , dan sumber tampilan pilih):
<?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>
Dan ini adalah file "note.dtd" yang berisi DTD:
<!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" />
Nama unsur ini "img". Nama atribut "src". Nilai atribut "computer.gif". Karena elemen itu sendiri kosong itu ditutup oleh sebuah "/".

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)>
Ketika anak-anak dinyatakan dalam urutan yang dipisahkan oleh koma, anak-anak harus muncul dalam urutan yang sama di dalam dokumen,. Dalam penuh pernyataan, harus anak-anak juga akan diumumkan dan anak-anak juga dapat memiliki anak-anak. Deklarasi penuh catatan " "elemen adalah:
<!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)>
Contoh di atas menyatakan bahwa elemen anak "pesan" harus terjadi sekali, dan hanya sekali dalam elemen "catatan".

Mendeklarasikan Minimum Satu Terjadinya sebuah Elemen

<!ELEMENT element-name (child-name+)>

Example:

<!ELEMENT note (message+)>
Tanda + dalam contoh di atas menyatakan bahwa elemen anak "pesan" harus terjadi satu atau beberapa kali dalam catatan "elemen".

Mendeklarasikan Nol atau Lebih Kemunculan dari sebuah Elemen

<!ELEMENT element-name (child-name*)>

Example:

<!ELEMENT note (message*)>
Tanda * dalam contoh di atas menyatakan bahwa elemen anak "pesan" dapat terjadi nol atau lebih kali di dalam elemen "catatan".

Mendeklarasikan Nol atau Satu Kemunculan dari sebuah Elemen 

<!ELEMENT element-name (child-name?)>

Example:

<!ELEMENT note (message?)>
The? tanda pada contoh di atas menyatakan bahwa elemen anak "pesan" dapat terjadi nol atau satu kali dalam elemen "catatan".

Mendeklarasikan baik / atau Konten

Example:

<!ELEMENT note (to,from,header,(message|body))>
Contoh di atas menyatakan bahwa "catatan" elemen harus mengandung "untuk" elemen, sebuah "dari" elemen, sebuah "header" elemen, dan baik "pesan" atau "tubuh" elemen.

Mendeklarasikan Konten Campuran

Example:

<!ELEMENT note (#PCDATA|to|from|header|message)*>
Contoh di atas menyatakan bahwa "catatan" elemen dapat berisi nol atau lebih kejadian parsing data karakter, "untuk", "dari", "header", atau "pesan" elemen.


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
The default-value can be one of the following:
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" />
In the example above, the "square" element is defined to be an empty element with a "width" attribute of  type CDATA. If no width is specified, it has a default value of 0.

#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 />
Use the #REQUIRED keyword if you don't have an option for a default value, but still want to force the attribute to be present.

#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 />
Use the #IMPLIED keyword if you don't want to force the author to include an attribute, and you don't have an option for a default value.

#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" />
Use the #FIXED keyword when you want an attribute to have a fixed value without allowing the author to change it. If an author includes another value, the XML parser will return an error.

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" />
Use enumerated attribute values when you want the attribute value to be one of a fixed set of legal values.

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;&copyright;</author>
Catatan: Sebuah entitas memiliki tiga bagian: sebuah ampersand (&), nama entitas, dan tanda titik koma (;).

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;&copyright;</author>

1 komentar: