有效的XML: DTD(文檔類型定義)介紹與三種使用方式


 

有效的XML: DTD(文檔類型定義)介紹

 

 

文檔類型定義和命名空間

  有效(Valid)的XML文檔

  首先,XML文檔是個格式正規的(Well-formed)XML文檔;(見格式正規的XML:語法 屬性 實體 處理指令 樣式單 CDATA節)。

  其次,需要滿足DTD的要求,這樣的XML文檔稱為有效的(Valid)XML文檔

 

 

DTD

  DTD,即文檔類型定義——Document Type Definition。

  DTD用來描述XML文檔的結構,

  一個DTD文檔包含:

  元素(ELEMENT)的定義規則;

  元素之間的關系規則;

  屬性(ATTLIST)的定義規則;

  可使用的實體(ENTITY)或符號(NOTATION)規則。

 

 

DTD文檔與XML文檔實例的關系

  類與對象;

  數據庫表結構與數據記錄;

 

  有了DTD,每個XML文件可以攜帶一個自身格式的描述。

  有了DTD,不同組織的人可以使用一個通用DTD來交換數據。

  應用程序可以使用一個標准DTD校驗從外部世界接收來的XML數據是否有效。

  可以使用DTD校驗自己的XML數據。

 

 

如何生成DTD文檔

  DTD文檔有三種應用形式:

  1.內部DTD文檔

<!DOCTYPE 根元素[定義內容]>

 

  2.外部DTD文檔

<!DOCTYPE 根元素 SYSTEM "DTD文件路徑">

 

  3.內外部DTD文檔結合

<!DOCTYPE 根元素 SYSTEM "DTD文件路徑" [定義內容]>

 

 

 

內部DTD 

   一個內部DTD的例子:

  上半部分是DTD,下面是XML文檔,文檔要符合DTD。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE poem [
    <!ELEMENT poem (author, title, content)>
    <!ELEMENT author (#PCDATA)>
    <!ELEMENT title (#PCDATA)>
    <!ELEMENT content (#PCDATA)>
]>
<!--為元素poem定義了三個子元素author title content,
這三個元素必須要出現並且必須按照這個順序
少元素不行,多元素也不行
-->
<!--指明author,title,content里面的內容是字符串類型-->
<poem>
    <author>王維</author>
    <title>鹿柴</title>
    <content>空山不見人,但聞人語聲。返景入深林,復照青苔上。</content>
</poem>

   

  上面的文檔就是格式良好,並且有效的。

  詳見其中的注釋。

  #PCDATA(Parsed Character Data) ,可解析的字符數據,即字符串。

 

  上面部分是DTD,在下面編寫XML文檔時,如果不符合其DTD規范,用XMLSpy做檢查的時候,是well-formed的,但是卻不是valid的。

  比如根元素寫:

<Students>
</Students>

 

  Validate檢查的時候就會報錯,根元素和DTD中的poem不符。

 

 

外部DTD

  上面是一個內部DTD的例子,下面用一個外部的DTD:

  首先,新建一個DTD文檔,文件名叫dtd_1.dtd,內容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT poem (author, title, content)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT content (#PCDATA)>

 

  然后,新建一個XML文檔。

  如果只寫XML元素內容,那么它是一個格式良好的,卻不是有效的文檔,因為找不到DTD。

  需要加入外部DTD文件的名稱(同一個路徑下只給出文件名即可)。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE poem SYSTEM "dtd_1.dtd">
<poem>
    <author>王維</author>
    <title>鹿柴</title>
    <content>空山不見人,但聞人語聲。返景入深林,復照青苔上。</content>
</poem>


 

 

內外部DTD結合

      DTD的內容也可以有些放在外部,有些放在內部,如下:

  文件dtd_2.dtd

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT author (#PCDATA)>
<!ELEMENT title (#PCDATA)>

  XML文檔:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE poem SYSTEM "dtd_2.dtd"[
<!ELEMENT poem (author, title, content)>
<!ELEMENT content (#PCDATA)>
]>
<poem>
    <author>王維</author>
    <title>鹿柴</title>
    <content>空山不見人,但聞人語聲。返景入深林,復照青苔上。</content>
</poem>

 

 

 

參考資料

  聖思園張龍老師XML視頻教程。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM