瘋狂

          STANDING ON THE SHOULDERS OF GIANTS
          posts - 481, comments - 486, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          dtd xsd

          Posted on 2010-01-21 22:44 瘋狂 閱讀(895) 評(píng)論(0)  編輯  收藏 所屬分類: xml
          dtd:

          聲明一個(gè)元素

          在 DTD 中,XML 元素通過元素聲明來進(jìn)行聲明。元素聲明使用下面的語法:

          <!ELEMENT 元素名稱 類別>

          或者

          <!ELEMENT 元素名稱 (元素內(nèi)容)>

          空元素

          空元素通過類別關(guān)鍵詞EMPTY進(jìn)行聲明:

          <!ELEMENT 元素名稱 EMPTY>

          例子:

          <!ELEMENT br EMPTY>

          XML例子:

          <br />

          只有 PCDATA 的元素

          只有 PCDATA 的元素通過圓括號(hào)中的 #PCDATA 進(jìn)行聲明:

          <!ELEMENT 元素名稱 (#PCDATA)>

          例子:

          <!ELEMENT from (#PCDATA)>

          帶有任何內(nèi)容的元素

          通過類別關(guān)鍵詞 ANY 聲明的元素,可包含任何可解析數(shù)據(jù)的組合:

          <!ELEMENT 元素名稱 ANY>

          例子:

          <!ELEMENT note ANY>

          帶有子元素(序列)的元素

          帶有一個(gè)或多個(gè)子元素的元素通過圓括號(hào)中的子元素名進(jìn)行聲明:

          <!ELEMENT 元素名稱 (子元素名稱 1)>

          或者

          <!ELEMENT 元素名稱 (子元素名稱 1,子元素名稱 2,.....)>

          例子:

          <!ELEMENT note (to,from,heading,body)>

          當(dāng)子元素按照由逗號(hào)分隔開的序列進(jìn)行聲明時(shí),這些子元素必須按照相同的順序出現(xiàn)在文檔中。在一個(gè)完整的聲明中,子元素也必須被聲明,同時(shí)子元素也可擁有子元素。"note" 元素的完整聲明是:

          <!ELEMENT note (to,from,heading,body)>
          <!ELEMENT to      (#PCDATA)>
          <!ELEMENT from    (#PCDATA)>
          <!ELEMENT heading (#PCDATA)>
          <!ELEMENT body    (#PCDATA)>

          聲明只出現(xiàn)一次的元素

          <!ELEMENT 元素名稱 (子元素名稱)>

          例子:

          <!ELEMENT note (message)>

          上面的例子聲明了:message 子元素必須出現(xiàn)一次,并且必須只在 "note" 元素中出現(xiàn)一次。

          聲明最少出現(xiàn)一次的元素

          <!ELEMENT 元素名稱 (子元素名稱+)>

          例子:

          <!ELEMENT note (message+)>

          上面的例子中的加號(hào)聲明了:message 子元素必須在 "note" 元素內(nèi)出現(xiàn)至少一次。

          聲明出現(xiàn)零次或多次的元素

          <!ELEMENT 元素名稱 (子元素名稱*)>

          例子:

          <!ELEMENT note (message*)>

          上面的例子中的星號(hào)聲明了:子元素 message 可在 "note" 元素內(nèi)出現(xiàn)零次或多次。

          聲明出現(xiàn)零次或一次的元素

          <!ELEMENT 元素名稱 (子元素名稱?)>

          例子:

          <!ELEMENT note (message?)>

          上面的例子中的問號(hào)聲明了:子元素 message 可在 "note" 元素內(nèi)出現(xiàn)零次或一次。

          聲明“非.../既...”類型的內(nèi)容

          例子:

          <!ELEMENT note (to,from,header,(message|body))>

          上面的例子聲明了:"note" 元素必須包含 "to" 元素、"from" 元素、"header" 元素,以及非 "message" 元素既 "body" 元素。

          聲明混合型的內(nèi)容

          例子:

          <!ELEMENT note (#PCDATA|to|from|header|message)*>

          上面的例子聲明了:"note" 元素可包含出現(xiàn)零次或多次的 PCDATA、"to"、"from"、"header" 或者 "message"。

          在 DTD 中,屬性通過 ATTLIST 聲明來進(jìn)行聲明。

          聲明屬性

          屬性聲明擁使用下列語法:

          <!ATTLIST 元素名稱 屬性名稱 屬性類型 默認(rèn)值>

          DTD 實(shí)例:

          <!ATTLIST payment type CDATA "check">

          XML 實(shí)例:

          <payment type="check" />

          以下是屬性類型的選項(xiàng):

          類型 描述
          CDATA 值為字符數(shù)據(jù) (character data)
          (en1|en2|..) 此值是枚舉列表中的一個(gè)值
          ID 值為唯一的 id
          IDREF 值為另外一個(gè)元素的 id
          IDREFS 值為其他 id 的列表
          NMTOKEN 值為合法的 XML 名稱
          NMTOKENS 值為合法的 XML 名稱的列表
          ENTITY 值是一個(gè)實(shí)體
          ENTITIES 值是一個(gè)實(shí)體列表
          NOTATION 此值是符號(hào)的名稱
          xml: 值是一個(gè)預(yù)定義的 XML 值

          默認(rèn)值參數(shù)可使用下列值:

          解釋
          屬性的默認(rèn)值
          #REQUIRED 屬性值是必需的
          #IMPLIED 屬性不是必需的
          #FIXED value 屬性值是固定的

          規(guī)定一個(gè)默認(rèn)的屬性值

          DTD:

          <!ELEMENT square EMPTY>
          <!ATTLIST square width CDATA "0">

          合法的 XML:

          <square width="100" />

          在上面的例子中,"square" 被定義為帶有 CDATA 類型的 "width" 屬性的空元素。如果寬度沒有被設(shè)定,其默認(rèn)值為0 。

          #IMPLIED

          語法

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

          例子

          DTD:

          <!ATTLIST contact fax CDATA #IMPLIED>

          合法的 XML:

          <contact fax="555-667788" />

          合法的 XML:

          <contact />

          假如您不希望強(qiáng)制作者包含屬性,并且您沒有默認(rèn)值選項(xiàng)的話,請(qǐng)使用關(guān)鍵詞 #IMPLIED。

          #REQUIRED

          語法

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

          例子

          DTD:

          <!ATTLIST person number CDATA #REQUIRED>

          合法的 XML:

          <person number="5677" />

          非法的 XML:

          <person />

          假如您沒有默認(rèn)值選項(xiàng),但是仍然希望強(qiáng)制作者提交屬性的話,請(qǐng)使用關(guān)鍵詞 #REQUIRED。

          #FIXED

          語法

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

          例子

          DTD:

          <!ATTLIST sender company CDATA #FIXED "Microsoft">

          合法的 XML:

          <sender company="Microsoft" />

          非法的 XML:

          <sender company="W3School" />

          如果您希望屬性擁有固定的值,并不允許作者改變這個(gè)值,請(qǐng)使用 #FIXED 關(guān)鍵詞。如果作者使用了不同的值,XML 解析器會(huì)返回錯(cuò)誤。

          列舉屬性值

          語法:

          <!ATTLIST 元素名稱 屬性名稱 (en1|en2|..) 默認(rèn)值>

          DTD 例子:

          <!ATTLIST payment type (check|cash) "cash">

          XML 例子:

          <payment type="check" />

          或者

          <payment type="cash" />

          如果您希望屬性值為一系列固定的合法值之一,請(qǐng)使用列舉屬性值。

          實(shí)體是用于定義用于定義引用普通文本或特殊字符的快捷方式的變量。

          實(shí)體引用是對(duì)實(shí)體的引用。

          實(shí)體可在內(nèi)部或外部進(jìn)行聲明。

          一個(gè)內(nèi)部實(shí)體聲明

          語法:

          <!ENTITY 實(shí)體名稱 "實(shí)體的值">

          例子:

          DTD 例子:

          <!ENTITY writer "Bill Gates">
          <!ENTITY copyright "Copyright W3School.com.cn">

          XML 例子:

          <author>&writer;&copyright;</author>

          注釋: 一個(gè)實(shí)體由三部分構(gòu)成: 一個(gè)和號(hào) (&), 一個(gè)實(shí)體名稱, 以及一個(gè)分號(hào) (;)。

          一個(gè)外部實(shí)體聲明

          語法:

          <!ENTITY 實(shí)體名稱 SYSTEM "URI/URL">

          例子:

          DTD 例子:

          <!ENTITY writer SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd">
          <!ENTITY copyright SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd">

          XML 例子:

          <author>&writer;&copyright;</author>

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 牙克石市| 观塘区| 黄冈市| 延长县| 洱源县| 大余县| 南宫市| 华安县| 乡城县| 开原市| 绩溪县| 河南省| 北海市| 平远县| 永安市| 开原市| 称多县| 兴仁县| 当雄县| 蒙山县| 东莞市| 崇明县| 五峰| 南华县| 乌拉特中旗| 灵川县| 栖霞市| 应用必备| 庆城县| 莱西市| 霍林郭勒市| 锦屏县| 汾西县| 自贡市| 石柱| 吴桥县| 合川市| 镇雄县| 色达县| 中江县| 安龙县|