天天看點

DTD

一、什麼是DTD

    文檔類型定義

    Document Type Definition

    DTD用來描述xml文檔結構,一個DTD文檔包含:

        元素的定義規則

        元素之間的關系規則

        屬性的定義規則

二、為什麼要有DTD

    1.有了DTD,每個xml檔案可以攜帶一個自身格式的描述

    2.有了DTD,不同組織的人可以使用一個通用DTD用來交換資料

    3.應用程式可以使用一個标準DTD校驗外部接收的xml資料是否有效

三、如何編寫一個DTD文檔

    1.文法

        DTD文檔的聲明及引用

        内部DTD文檔(Students.xml)

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

        外部DTD文檔

        <!DOCTYPE 根元素 SYSTEM "DTD檔案路徑">

        内外部DTD文檔結合

        <!DOCTYPE 根元素 SYTEM "DTD檔案路徑" [定義内容]>

四、元素的定義

    文法

        <!ELEMENT NAME CONTENT>

    ELEMENT:關鍵字

    NAME:元素名稱

    CONTENT:元素類型

        EMPTY:該元素不能包含子元素和文本,但可以有屬性

        #PCDATA:可以包含任何字元資料,但是不能在其中包含任何子元素

        純元素類型:隻包含子元素,并且這些子元素外沒有文本

        ANY:該元素可以包含任何在DTD中定義的元素内容

    符号:

    <!DOCTYPE CCTV-6[

        <!ELEMENT CCTV-6 (電影+)>

        <!ELEMENT 電影 (名稱,主演+,類型?,片長)>

        <!ELEMENT 名稱 (#PCDATA)>

        <!ELEMENT 主演 (#PCDATA)>

        <!ELEMENT 類型 (#PCDATA)>

        <!ELEMENT 片長 (#PCDATA)>

    ]>

定義屬性的文法結構

        <!ATTLIST 元素名稱

            屬性名稱 屬性類型 屬性特點

            ...

        >

    屬性類型:CDATA

        <!ELEMENT 人

            姓名 CDATA #REQUIRED

    屬性類型ID取值必須是唯一的。

        <!ATTLIST 公司職員

            編号 ID #REQUIRED

    屬性類型IDREF/IDREFS

    屬性類型Enumerated

        <!ATTLIST person 性别(男|女) #REQUIRED>

    屬性特點

        #REQUIRED必須出現

        <!ATTLIST 元素名 屬性名 屬性類型 #REQUIRED>

        #IMPLIED可以省略

        <!ATTLIST 元素名 屬性名 屬性類型 #IMPLIED>

        #FIXED必須是固定值

        <!ATTLIST 元素名 屬性名 屬性類型 #FIXED "VALUE">

        #Default預設值

        <!ATTLIST 元素名 屬性名 屬性類型 "value">

    <!ELEMENT 家庭 (人+,家電*)>

    <!ELEMENT 人 EMPTY>

    <!ELEMENT 家電 EMPTY>

    <!ATTLIST 人

        名字 CDATA #REQUIRED

        年齡 CDATA #REQUIRED

        性别 (男|女) "女"

        住址 CDATA #FIXED "北京"

        愛好 CDATA #IMPLIED

    >

    <!ATTLIST 家電

        名稱 CDATA #REQUIRED

        數量 CDATA #REQUIRED

實體

        <!ENTITY 實體名 "實體值">

本文轉自  素顔豬  51CTO部落格,原文連結:http://blog.51cto.com/suyanzhu/1561410