Valid XML documents_DTD
<XML>Bài 2: Document Type Definition(DTD)
Ở bài này chúng ta sẽ định dạng kiểu dữ liệu cho tài liệu XML đã tạo ở bài trước.Trong DTD có nhiều kiểu dữ liệu nhưng ta chỉ cần quan tâm đến các kiểu dữ liệu sau:
Kiểu dữ liệu
|
Dạng hiển thị
|
#PCDATA
|
Chuỗi, Kí tự
|
<Attribute>ID
|
Kiểu ID
|
<Attribute>IDREF/
IDREFS
|
Danh sách ID
|
Các Element content luôn luôn là #PCDATA.
1.Tiến hành tạo file letter.dtd cho tài liệu XML ở bài trước.
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT letter (To , Greeting, body, signature)>
<!ELEMENT To (date , name, address)>
<!ELEMENT date (#PCDATA)>
<!ELEMENT name (firstname , midname* , lastname)>
<!ELEMENT firstname (#PCDATA)>
<!ELEMENT midname (#PCDATA | EMPLY)*>
<!ELEMENT lastname (#PCDATA)>
<!ELEMENT address (school , State)>
<!ELEMENT school (#PCDATA)>
<!ELEMENT State (#PCDATA)>
<!ELEMENT Greeting (#PCDATA)>
<!ELEMENT body (p+ , (p | list)*)>
<!ELEMENT p (#PCDATA | i | b)*>
<!ELEMENT i (#PCDATA | b)*>
<!ELEMENT b (#PCDATA)>
<!ELEMENT list (item+)>
<!ELEMENT item (#PCDATA)>
<!ELEMENT signature (#PCDATA)>
Trong DTD các kí tự :<!ELEMENT letter (To , Greeting, body, signature)>
<!ELEMENT To (date , name, address)>
<!ELEMENT date (#PCDATA)>
<!ELEMENT name (firstname , midname* , lastname)>
<!ELEMENT firstname (#PCDATA)>
<!ELEMENT midname (#PCDATA | EMPLY)*>
<!ELEMENT lastname (#PCDATA)>
<!ELEMENT address (school , State)>
<!ELEMENT school (#PCDATA)>
<!ELEMENT State (#PCDATA)>
<!ELEMENT Greeting (#PCDATA)>
<!ELEMENT body (p+ , (p | list)*)>
<!ELEMENT p (#PCDATA | i | b)*>
<!ELEMENT i (#PCDATA | b)*>
<!ELEMENT b (#PCDATA)>
<!ELEMENT list (item+)>
<!ELEMENT item (#PCDATA)>
<!ELEMENT signature (#PCDATA)>
*
|
0 hoặc nhiều
|
|
|
Hoặc
|
+
|
1 hoặc nhiều
|
?
|
0 hoặc 1
|
Trong DTD
Để gọi đến file DTD vừa tạo bằng câu lệnh ở file xml:
<!DOCTYPE letter SYSTEM "letter.dtd">
Element definition được khai báo bằng:
<!ELEMENT name(Structured)>
Structured có thể là : EMPTY , #PCDATA, (name1, name2,...)
Dạng mixed model (#PCDATA | ... | ... )* | +.
DTD - Entities
<!ENTITY entity-name "entity-value">
entity-name : tên
entity-value : giá trị truyền cho.
VD:
file.dtd <!ENTITY writer "Steve jobs.">
file.xml <author>&writer;</author>
Các thuộc tính Attribute:
<!ATTLIST name of element
tên của thuộc tính
kiểu : CDATA | ID | IDREF | IDREFS | (name1 | name2 | name3 )
option : #IMPLIED | #REQUIRED | Fixed " .... " (Giá trị cố định)
>
2. Bài tập trên lớp
File contacts.xml
<contacts>
<contact contactID="K58" gender="female">
<name>
<firstname></firstname>
<midname></midname>
<lastname></lastname>
</name>
<location>
<latiture></latiture>
<longitude></longitude>
</location>
<phone type="Cell"></phone>
<description>
<b></b>
<u></u>
<i></i>
<br></br>
<strong></strong>
<em></em>
</description>
</contact>
</contacts>
<contact contactID="K58" gender="female">
<name>
<firstname></firstname>
<midname></midname>
<lastname></lastname>
</name>
<location>
<latiture></latiture>
<longitude></longitude>
</location>
<phone type="Cell"></phone>
<description>
<b></b>
<u></u>
<i></i>
<br></br>
<strong></strong>
<em></em>
</description>
</contact>
</contacts>
File contacts.dtd.
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT contacts (contact+)>
<!ELEMENT contact (name , location, phone+, description)>
<!ELEMENT name (firstname , midname+ , lastname)>
<!ELEMENT firstname (#PCDATA)>
<!ELEMENT midname (#PCDATA)>
<!ELEMENT lastname (#PCDATA)>
<!ELEMENT location ( address | (latiture , longitude))>
<!ELEMENT address (#PCDATA)>
<!ELEMENT latiture (#PCDATA)>
<!ELEMENT longitude (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
<!ELEMENT description (#PCDATA | b | u | i | br | strong | em )*>
<!ELEMENT b (#PCDATA)>
<!ELEMENT u (#PCDATA)>
<!ELEMENT i (#PCDATA)>
<!ELEMENT br EMPTY>
<!ELEMENT strong (#PCDATA)>
<!ELEMENT em (#PCDATA)>
<!ATTLIST contact
contactID ID #REQUIRED
know IDREFS #IMPLIED
gender (male | female) #REQUIRED
blog CDATA #IMPLIED
email CDATA #IMPLIED
>
<!ATTLIST phone
type (Home | Work | Cell | Fax) #REQUIRED
>
Chúc các bạn thành công!
<!ELEMENT contacts (contact+)>
<!ELEMENT contact (name , location, phone+, description)>
<!ELEMENT name (firstname , midname+ , lastname)>
<!ELEMENT firstname (#PCDATA)>
<!ELEMENT midname (#PCDATA)>
<!ELEMENT lastname (#PCDATA)>
<!ELEMENT location ( address | (latiture , longitude))>
<!ELEMENT address (#PCDATA)>
<!ELEMENT latiture (#PCDATA)>
<!ELEMENT longitude (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
<!ELEMENT description (#PCDATA | b | u | i | br | strong | em )*>
<!ELEMENT b (#PCDATA)>
<!ELEMENT u (#PCDATA)>
<!ELEMENT i (#PCDATA)>
<!ELEMENT br EMPTY>
<!ELEMENT strong (#PCDATA)>
<!ELEMENT em (#PCDATA)>
<!ATTLIST contact
contactID ID #REQUIRED
know IDREFS #IMPLIED
gender (male | female) #REQUIRED
blog CDATA #IMPLIED
email CDATA #IMPLIED
>
<!ATTLIST phone
type (Home | Work | Cell | Fax) #REQUIRED
>
No Comment to " Valid XML documents_DTD "