Bài đăng nổi bật





XML DTD


Trong hướng dẫn trước , chúng tôi đã học được rằng có hai cách để xác thực XML, một trong số đó là DTD XML có thể được sử dụng để kiểm tra xem một tài liệu XML có được hình thành tốt hay không. Trong hướng dẫn này, chúng ta sẽ tìm hiểu DTD XML là gì với sự trợ giúp của một vài ví dụ.

XML DTD

DTD là viết tắt của Định nghĩa loại tài liệu. Một DTD XML xác định cấu trúc của một tài liệu XML. Một tài liệu XML được coi là tốt và được hình thành nên nếu và được xác thực thành công đối với DTD.

DTD Example

DTD được khai báo bên trong định nghĩa <! DOCTYPE> khi khai báo DTD là nội bộ. Trong ví dụ này, chúng ta có thể thấy rằng có một tài liệu XML có định nghĩa <! DOCTYPE>. Phần in đậm trong ví dụ sau là khai báo DTD .
<?xml version="1.0"?>  
<!-- XML DTD declaration starts here -->
<!DOCTYPE codelean [
<!ELEMENT codelean (to,from,subject,message)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT subject (#PCDATA)>
<!ELEMENT message (#PCDATA)>
]>
<!-- XML DTD declaration ends here--> 
<codelean>
 <to>My Readers</to>
 <from>ThiDK</from>
 <subject>A Message to my readers</subject>
 <message>Welcome to codelean.vn</message>
</codelean>

Explanation:
  • !DOCTYPE  codelean định nghĩa rằng đây là khởi đầu của khai báo DTD và phần tử gốc của tài liệu XML
  • !ELEMENT codelean xác định rằng phần mở đầu của phần tử gốc phải chứa bốn phần tử: từ đến, từ, chủ đề, tin nhắn“to,from,subject,message”
  • !ELEMENT to định nghĩa phần tử “to” is có loạt là “#PCDATA” trong đó “#PCDATA” là viết tắt của từ Parsed Character Data điều đó có nghĩa là dữ liệu sẽ được phân tích bởi XML parser
  • !ELEMENT from định nghĩa phần tử “from”  có kiểu là “#PCDATA”
  • !ELEMENT subject định nghĩa phần tử “subject” có kiểu là “#PCDATA”
  • !ELEMENT message định nghĩa phần tử “message” có kiểu là “#PCDATA”

External DTD Declaration

Trong ví dụ trên, chúng ta đã khai báo internal DTD declaration. Nào bây giờ chugns ta hãy thử sử dụng external DTD declaration với tài liệu XML. Để ví dụ có tính thống nhất và dễ hiểu, ta sẽ sử dụng luôn ví dụ trên đây:
Để sử dụng được external DTD declaration trong tài liệu XML document,  bạn cần bao gồm các tham chiếu đến DTD file trong phần <!DOCTYPE> definition, như chúng ta đã làm trong ví dụ sau:
<?xml version="1.0"?>
<!DOCTYPE codelean SYSTEM "bb.dtd">
<codelean>
 <to>My Readers</to>
 <from>ThiDK</from>
 <subject>A Message to my readers</subject>
 <message>Welcome to codelean.vn</message>
</codelean>

Phần <!DOCTYPE> definition trong ví dụ trên có chứa tham chiếu tới “bb.dtd” file.  Và đây chính là nội dung của “bb.dtd” file,  nó chứa DTD cho tài liệu XML ở trên. 
<!ELEMENT codelean (to,from,subject,message)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT subject (#PCDATA)>
<!ELEMENT message (#PCDATA)>


nói thêm về PCDATA và CDATA 

PCDATA – parsed character data

Nó sẽ phân tích toàn bộ dữ liệu trong tài liệu xml.

Ví dụ:

<family>
       <mother>mom</mother>
       <father>dad</father>
</family>

Trong ví dụ này, phần tử family có hai phần tử con là motherfather. Do đó nó sẽ phân tích và lấy ra nội dung của phần tử mother và father là mom và dad.

 CDATA – unparsed characted Data. 

Dữ liệu sẽ không được phân tích trong tài liệu xml. 

<family>
       <![CDATA[ 
          <mother>mom</mother>
          <father>dad</father>
       ]]>
</family>

Trong ví dụ này, giá trị của family sẽ là <mother>mom</mother><father>dad</father>.

Post a Comment

أحدث أقدم