瘋狂

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

          dtd xsd

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

          聲明一個元素

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

          <!ELEMENT 元素名稱 類別>

          或者

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

          空元素

          空元素通過類別關鍵詞EMPTY進行聲明:

          <!ELEMENT 元素名稱 EMPTY>

          例子:

          <!ELEMENT br EMPTY>

          XML例子:

          <br />

          只有 PCDATA 的元素

          只有 PCDATA 的元素通過圓括號中的 #PCDATA 進行聲明:

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

          例子:

          <!ELEMENT from (#PCDATA)>

          帶有任何內容的元素

          通過類別關鍵詞 ANY 聲明的元素,可包含任何可解析數據的組合:

          <!ELEMENT 元素名稱 ANY>

          例子:

          <!ELEMENT note ANY>

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

          帶有一個或多個子元素的元素通過圓括號中的子元素名進行聲明:

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

          或者

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

          例子:

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

          當子元素按照由逗號分隔開的序列進行聲明時,這些子元素必須按照相同的順序出現在文檔中。在一個完整的聲明中,子元素也必須被聲明,同時子元素也可擁有子元素。"note" 元素的完整聲明是:

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

          聲明只出現一次的元素

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

          例子:

          <!ELEMENT note (message)>

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

          聲明最少出現一次的元素

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

          例子:

          <!ELEMENT note (message+)>

          上面的例子中的加號聲明了:message 子元素必須在 "note" 元素內出現至少一次。

          聲明出現零次或多次的元素

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

          例子:

          <!ELEMENT note (message*)>

          上面的例子中的星號聲明了:子元素 message 可在 "note" 元素內出現零次或多次。

          聲明出現零次或一次的元素

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

          例子:

          <!ELEMENT note (message?)>

          上面的例子中的問號聲明了:子元素 message 可在 "note" 元素內出現零次或一次。

          聲明“非.../既...”類型的內容

          例子:

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

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

          聲明混合型的內容

          例子:

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

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

          在 DTD 中,屬性通過 ATTLIST 聲明來進行聲明。

          聲明屬性

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

          <!ATTLIST 元素名稱 屬性名稱 屬性類型 默認值>

          DTD 實例:

          <!ATTLIST payment type CDATA "check">

          XML 實例:

          <payment type="check" />

          以下是屬性類型的選項:

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

          默認值參數可使用下列值:

          解釋
          屬性的默認值
          #REQUIRED 屬性值是必需的
          #IMPLIED 屬性不是必需的
          #FIXED value 屬性值是固定的

          規定一個默認的屬性值

          DTD:

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

          合法的 XML:

          <square width="100" />

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

          #IMPLIED

          語法

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

          例子

          DTD:

          <!ATTLIST contact fax CDATA #IMPLIED>

          合法的 XML:

          <contact fax="555-667788" />

          合法的 XML:

          <contact />

          假如您不希望強制作者包含屬性,并且您沒有默認值選項的話,請使用關鍵詞 #IMPLIED。

          #REQUIRED

          語法

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

          例子

          DTD:

          <!ATTLIST person number CDATA #REQUIRED>

          合法的 XML:

          <person number="5677" />

          非法的 XML:

          <person />

          假如您沒有默認值選項,但是仍然希望強制作者提交屬性的話,請使用關鍵詞 #REQUIRED。

          #FIXED

          語法

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

          例子

          DTD:

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

          合法的 XML:

          <sender company="Microsoft" />

          非法的 XML:

          <sender company="W3School" />

          如果您希望屬性擁有固定的值,并不允許作者改變這個值,請使用 #FIXED 關鍵詞。如果作者使用了不同的值,XML 解析器會返回錯誤。

          列舉屬性值

          語法:

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

          DTD 例子:

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

          XML 例子:

          <payment type="check" />

          或者

          <payment type="cash" />

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

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

          實體引用是對實體的引用。

          實體可在內部或外部進行聲明。

          一個內部實體聲明

          語法:

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

          例子:

          DTD 例子:

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

          XML 例子:

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

          注釋: 一個實體由三部分構成: 一個和號 (&), 一個實體名稱, 以及一個分號 (;)。

          一個外部實體聲明

          語法:

          <!ENTITY 實體名稱 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>

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 赤壁市| 平武县| 岚皋县| 五华县| 高青县| 保亭| 罗源县| 嵊泗县| 黔东| 阿鲁科尔沁旗| 囊谦县| 宜春市| 项城市| 沙洋县| 洪雅县| 井研县| 台前县| 山西省| 汉源县| 漳平市| 昌吉市| 青铜峡市| 务川| 南川市| 金门县| 博客| 临桂县| 西丰县| 皋兰县| 建昌县| 百色市| 阳城县| 垦利县| 稻城县| 阳泉市| 开原市| 上虞市| 陆河县| 陆川县| 郸城县| 济源市|