DTD基礎

DTD定義:Document Type Definition,全稱爲文檔類型定義。

 

DTD的引用:XML文件使用 DOCTYPE 聲明語句來指明它所遵循的DTD文件,DOCTYPE聲明語句有兩種形式:   

(1)外部引入

可以將dtd的約束內容寫在外置的dtd文件中,這個文件後綴必須爲.dtd而文件保存時必須用utf-8編碼保存,再在xml文件中使用

<!DOCTYPE 根元素名稱  SYSTEM 文件的位置>

如果寫的是SYSTEM表明當前引入的dtd在當前文件系統中,後面制定的文件位置是當前硬盤中的位置

<!DOCTYPE 文檔根結點 PUBLIC "DTD名稱" "DTD文件的URL">

如果寫的是PUBLIC表明當前引入的dtd在網絡公共位置中,後面要指明dtd的名字和dtd所在網絡位置URL地址

(2)內部引入

直接在xml中書寫dtd

<!DOCTYPE 根元素名稱[

dtd約束....

]>

 

DTD語法:

         1.元素約束:

<!ELEMENT 元素名稱元素約束>

             存放類型約束:      ANY/EMPTY

                元素內容約束:

子元素的列表,將可以包含的子元素用小括號括起來

如:<!ELEMENT 書架 (書名,作者,售價)>

子元素之間可以使用逗號進行分割,表明子元素必須按照順序出現

子元素之間可以使用豎線進行分割,表面子元素出現其中之一

#PCDATA 表明包含標籤體

如:<!ELEMENT 書名 (#PCDATA)>

 

                            + 表示一次或多次

                            * 表示0次或多次

                            ? 表示0次或一次

 

                            也可以使用小括號進行組的操作

         2.屬性約束:

                   <!ATTLIST 元素名

                            屬性名 屬性類型 屬性約束

                            屬性名2 屬性類型 屬性約束

                            ......

                  >

                  

 

屬性約束:

#REQUIRED  ---    表明當前屬性是一個必須存在的屬性,如果這樣的屬性不存在則在校驗時會報錯

#IMPLIED --- 表明當前屬性是一個可選的屬性,可以有也可以沒有

#FIXED('固定值')--- 表明當前屬性具有一個固定值,這樣的屬性不需要進行賦值,自動就會取這個固定值爲值.如果這樣的屬性指定了一個不是固定值的值則校 驗報錯

' 默認值' ---  表明當前屬性具有一個默認值,如果給了其他的值就用其他值,如果沒有給值則取這個默認值

                   屬性類型:

                            CDATA:表示屬性的值是一個普通字符串

ENUMERATED : 屬性的值是一個枚舉列表中的值

ID: 表明屬性的值必須在整個文檔中都是唯一的,如果有重複的id則校驗不通過,ID 屬性的值只能由字母,下劃線開始,不能使用數字,不能出現空白字符

         3.ENTITY(實體)

<!ENTITY >,就是對一大段內容的引用,可以簡化代碼的複用

                   引用實體:在xml中引用的實體叫做引用實體

                            <!ENTITY 實體名稱 “實體內容” >

使用方式:&實體名稱;

參數實體:在dtd中引用的實體叫做參數實體

<!ENTITY  % 實體名稱 "實體內容">

使用方式:%實體名稱;

例:<!ENTITY  %  TAG_NAMES "姓名 | EMAIL | 電話 | 地址">

        

    <!ELEMENT 個人信息 (%TAG_NAMES; | 生日)>

<!ELEMENT 客戶信息 (%TAG_NAMES; | 公司名)>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章