xml之dtd約束

DTD:Document Type Definition 文檔定類型定義。

作用:是用來約束XML的書寫規範。

寫法:

內部聲明:

    假如 DTD 被包含在您的 XML 源文件中,它應當通過下面的語法包裝在一個 !DOCTYPE 聲明中:<!DOCTYPE根元素 [元素聲明]>

外部聲明:

    本地:

        <!DOCTYPE 根元素 SYSTEM "dtd文件名">

    外地(網上):

        <!DOCTYPE 根元素 PUBLIC “dtd的名稱” “dtd的路徑”>


DTD語法:

    <!ELEMENT 元素名稱 使用規則>

使用規則:

  1. (#PCDATA):指示元素的主體內容只能是普通的文本.(Parsed Character Data)

  2. EMPTY:用於指示元素的主體爲空。比如<br/>

  3. ANY:用於指示元素的主體內容爲任意類型。

  4. (子元素):指示元素中包含的子元素

定義子元素及描述它們的關係:            

  1. 如果子元素用逗號分開,說明必須按照聲明順序去編寫XML文檔。

    如: <!ELEMENT FILE (TITLE,AUTHOR,EMAIL)>

  2. 如果子元素用“|”分開,說明任選其一。

    如:<!ELEMENT FILE (TITLE|AUTHOR|EMAIL)>

  3. 用+、*、?來表示元素出現的次數


    • 如果元素後面沒有+*?:表示必須且只能出現一次

    • +:表示至少出現一次,一次或多次

    • *:表示可有可無,零次、一次或多次

    • ?:表示可以有也可以無,有的話只能有一次。零次或一次

  如: <!ELEMENT MYFILE ((TITLE*, AUTHOR?, EMAIL)* | COMMENT)>   

定義屬性:在DTD文檔中使用ATTLIST關鍵字來爲一個元素聲明屬性。

  語法:

<!ATTLIST 元素名
		屬性名1 屬性值類型 設置說明
		屬性名2 屬性值類型 設置說明
		…
>
如:
<!ATTLIST 商品
		類別 CDATA #REQUIRED
		顏色 CDATA #IMPLIED
>
對應的XML爲:<商品 類別=“服裝” 顏色=“***”/>

    屬性值類型:

    設置說明:    

        CDATA:表示屬性的取值爲普通的文本字符串

        ENUMERATED (DTD沒有此關鍵字):表示枚舉,只能從枚舉列表中任選其一,如(雞肉|牛肉|豬肉|魚肉)

        ID:表示屬性的取值不能重複

        #REQUIRED:表示該屬性必須出現

        #IMPLIED:表示該屬性可有可無

        #FIXED:表示屬性的取值爲一個固定值。語法:#FIXED "固定值"

        直接值:表示屬性的取值爲該默認值

      定義實體:

        爲一段內容指定一個名稱,使用時通過這個名稱就可以引用其所代表的內容。

        在DTD文檔中使用ENTITY關鍵字來聲明一個實體。

        實體可分爲:引用實體和參數實體,兩者的語法不同

        引用實體語法:<!ENTITY 實體名稱 “實體內容”>

            在XML中引用方式:&實體名稱

        參數實體語法:<!ENTITY % 實體名稱 “實體內容”>

            在DTD中引用方式:%實體名稱

示例(網上搜的):

<?xmlversion="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'tforgetmethisweekend</body>
</note>

!DOCTYPE note (第二行)定義此文檔是 note 類型的文檔。

!ELEMENT note (第三行)定義 note 元素有四個元素:"to、from、heading,、body"

!ELEMENT to (第四行)定義 to 元素爲 "#PCDATA" 類型

!ELEMENT from (第五行)定義 from 元素爲 "#PCDATA" 類型

!ELEMENT heading (第六行)定義 heading 元素爲 "#PCDATA" 類型

!ELEMENT body (第七行)定義 body 元素爲 "#PCDATA" 類型


備註:用的時候具體看W3School的DTD教程,地址:http://www.w3school.com.cn/dtd/index.asp

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