日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

XML文档类型定义DTD

發(fā)布時(shí)間:2025/7/14 asp.net 70 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XML文档类型定义DTD 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

DTD概述

DTD用來(lái)定義XML文檔的結(jié)構(gòu),它包含一系列規(guī)則說明,以確保XML文檔的一致性和有效性
DTD定義了XML文檔可用的詞匯(元素和屬性的名稱)和結(jié)構(gòu):
元素名稱,包括根元素
元素的屬性及屬性的數(shù)據(jù)類型和取值方式
子元素的名稱、順序、出現(xiàn)次數(shù)
元素是否擁有子元素,是否能擁有文本內(nèi)容,等等
可以用DTD驗(yàn)證XML文檔
發(fā)現(xiàn)書寫錯(cuò)誤(命名錯(cuò)誤)
檢查結(jié)構(gòu)和順序
檢查是否使用了規(guī)定的規(guī)范文檔

DTD的引用

DTD可以是被XML引用的獨(dú)立的外部文檔,也可以嵌入到XML文檔中
DTD文檔是特殊格式的XML文檔 例如,DTD文檔student.dtd的內(nèi)容如下:

[html]?view plaincopy
  • <?xml?version="1.0"?encoding="UTF-8"?>??
  • <!ELEMENT?班級(jí)?(學(xué)生+)>??
  • <!ELEMENT?學(xué)生?(ID,?姓名,?年齡?,?住址?,?電話*)>??
  • <!ELEMENT?ID?(#PCDATA)>??
  • <!ELEMENT?姓名?(#PCDATA)>??
  • <!ELEMENT?年齡?(#PCDATA)>??
  • <!ELEMENT?住址?(#PCDATA)>??
  • <!ELEMENT?電話?(座機(jī)*,?手機(jī)?)>??
  • <!ELEMENT?座機(jī)?(#PCDATA)>??
  • <!ELEMENT?手機(jī)?(#PCDATA)>??
  • 嵌入的DTD

    [html]?view plaincopy
  • <?xml?version="1.0"?encoding="UTF-8"?>??
  • <!DOCTYPE?班級(jí)?[??
  • ????<!ELEMENT?班級(jí)?(學(xué)生+)>??
  • ????<!ELEMENT?學(xué)生?(ID,?姓名,?年齡?,?住址?,?電話*)>??
  • ????<!ELEMENT?ID?(#PCDATA)>??
  • ????<!ELEMENT?姓名?(#PCDATA)>??
  • ????<!ELEMENT?年齡?(#PCDATA)>??
  • ????<!ELEMENT?住址?(#PCDATA)>??
  • ????<!ELEMENT?電話?(座機(jī)*,?手機(jī)?)>??
  • ????<!ELEMENT?座機(jī)?(#PCDATA)>??
  • ????<!ELEMENT?手機(jī)?(#PCDATA)>??
  • ]>??
  • <班級(jí)>??
  • ????<學(xué)生>??
  • ????????<ID>001</ID>??
  • ????????<姓名>王剛</姓名>??
  • ????????<年齡>2</年齡>??
  • ????????<電話>??
  • ????????????<手機(jī)>234345456</手機(jī)>??
  • ????????</電話>??
  • ????</學(xué)生>??
  • </班級(jí)>??
  • 外部DTD-SYSTEM
    在XML文檔中聲明使用外部DTD文檔 <!DOCTYPE 根元素名稱 SYSTEM “DTD文檔URL”>
    ?例如,XML文檔student.xml的內(nèi)容如下:

    [html]?view plaincopy
  • <?xml?version="1.0"?encoding="UTF-8"?>??
  • <!DOCTYPE?班級(jí)?SYSTEM?“student.dtd”>??
  • <班級(jí)>??
  • ????<學(xué)生>??
  • ????????<ID>001</ID>??
  • ????????<姓名>王剛</姓名>??
  • ????????<年齡>2</年齡>??
  • ????????<電話>??
  • ????????????<手機(jī)>234345456</手機(jī)>??
  • ????????</電話>??
  • ????</學(xué)生>??
  • </班級(jí)>??
  • 外部DTD-PUBLIC
    在XML文檔中聲明使用公共DTD文檔 <!DOCTYPE 根元素名稱 PUBLIC “公共標(biāo)識(shí)符” “URI” 公共標(biāo)識(shí)符的格式為:? 標(biāo)準(zhǔn)//作者//類型和版本//語(yǔ)言 例如,XML文檔student.xml的內(nèi)容如下:

    [html]?view plaincopy
  • <?xml?version="1.0"?encoding="UTF-8"?>??
  • <!DOCTYPE?班級(jí)?PUBLIC?“-//WeiDP//Example?1.0//ZH-CN”?“student.dtd”>??
  • <班級(jí)>??
  • ????<學(xué)生>??
  • ????????<ID>001</ID>??
  • ????????<姓名>王剛</姓名>??
  • ????????<年齡>2</年齡>??
  • ????????<電話>??
  • ????????????<手機(jī)>234345456</手機(jī)>??
  • ????????</電話>??
  • ????</學(xué)生>??
  • </班級(jí)>??
  • 元素Element

    ANY:內(nèi)容中可包含子元素
    格式:<!ELEMENT 元素名稱 ANY>
    示例:<段落>使用<關(guān)鍵詞>XML</關(guān)鍵詞>技術(shù)</段落>
    EMPTY:不能包含任何內(nèi)容
    格式:<!ELEMENT 元素名稱 EMPTY>
    示例:<paper color=“red”/>
    #PCDATA:不能包含子元素
    格式:<!ELEMENT 元素名稱 (#PCDATA)>
    示例:<book author=“Black”>C Language</book>
    子元素的順序和出現(xiàn)頻率
    <!ELEMENT 元素名稱 (子元素名稱[修飾符][,…])>
    其中,修飾符為:
    省略:必須出現(xiàn),且只能出現(xiàn)1次
    +:至少出現(xiàn)1次
    ?:最多出現(xiàn)1次
    *:可以不出現(xiàn),也可以出現(xiàn)多次
    示例:<!ELEMENT cpu (廠商,型號(hào)+,工藝?,價(jià)格*)>
    子元素的選擇
    <!ELEMENT 元素名稱 (子元素[|子元素]…]) >
    示例: <!ELEMENT 電話 (座機(jī)|手機(jī))>

    [html]?view plaincopy
  • <?xml?version="1.0"?encoding="GB2312"?standalone="no"?>??
  • <!DOCTYPE?我的電腦?[??
  • ????<!ELEMENT?我的電腦?(CPU,?內(nèi)存+,?硬盤+)>??
  • ????<!ELEMENT?CPU?EMPTY>??
  • ????<!ELEMENT?內(nèi)存?(描述*)>??
  • ????<!ELEMENT?分區(qū)?(名稱,?操作系統(tǒng))>??
  • ????<!ELEMENT?名稱?(#PCDATA)>??
  • ????<!ELEMENT?操作系統(tǒng)?(#PCDATA)>??
  • ????<!ELEMENT?硬盤?(分區(qū)+,?描述*)>??
  • ????<!ELEMENT?描述?ANY>??
  • ]>??
  • <我的電腦>??
  • ????<CPU/>??
  • ????<內(nèi)存><描述>="512MB"</描述></內(nèi)存>??
  • ????<內(nèi)存/>??
  • ????<硬盤>??<分區(qū)>??
  • ????????????<名稱>系統(tǒng)盤</名稱>??
  • ????????????<操作系統(tǒng)>Windows?2003</操作系統(tǒng)>??
  • ????????</分區(qū)>??
  • ????????<描述>關(guān)于系統(tǒng)盤的任何描述信息</描述>??
  • ????</硬盤>??
  • </我的電腦>??
  • 屬性列表ATTLIST

    ATTLIST定義元素的屬性的名稱、類型和默認(rèn)值,可以限制出現(xiàn)次數(shù)但不能限制出現(xiàn)順序
    語(yǔ)法:<!ATTLIST 元素名稱 ?屬性1名稱 屬性類型 屬性值聲明 ?屬性2名稱 屬性類型 屬性值聲明 ……>
    屬性類型
    CDATA:一般文本
    ID:具有ID屬性值,不能重復(fù)(唯一性)
    IDREF:對(duì)ID屬性值的引用
    IDREFS:對(duì)ID屬性值列表的引用(用空白分割)
    ENTITY:引用未解析的外部實(shí)體
    ENTITIES:引用ENTITY列表(用空白分割)
    NMTOKEN:包含一個(gè)有效的XML名稱
    NMTOKENS:NMTOKEN列表
    (屬性值[[|屬性值]…]):屬性為NMTOKEN類型,只能取列表中的值
    NOTATION (屬性值[[|屬性值]…]):屬性為NOTATION(已定義的),取值任選其一
    屬性值說明
    #REQUIRED:該屬性必須出現(xiàn)
    #IMPLIED:該屬性是可選的
    “默認(rèn)值”:屬性是可選的;若不出現(xiàn),在驗(yàn)證文檔后,元素將隱含該屬性,取默認(rèn)值
    #FIXED “固定值”:屬性是可選的;若出現(xiàn),屬性值必須取固定值;若不出現(xiàn),則驗(yàn)證后自動(dòng)隱含該固定值
    例如:

    [html]?view plaincopy
  • <?xml?version="1.0"?encoding="GB2312"?>??
  • <!—該文件保存為computer.dtd-->??
  • <!ELEMENT?我的電腦?(CPU,?內(nèi)存+,?硬盤+)>??
  • <!ELEMENT?CPU?EMPTY>??
  • <!ATTLIST?CPU??
  • ????廠商?(AMD?|?Intel?|?Other)?“Intel"??
  • ????序列號(hào)?CDATA?#IMPLIED??
  • ????工作頻率?CDATA?#REQUIRED??
  • >??
  • <!ELEMENT?內(nèi)存?(描述*)>??
  • <!ATTLIST?內(nèi)存??
  • ????容量?CDATA?#REQUIRED??
  • >??
  • <!ELEMENT?分區(qū)?(名稱,?操作系統(tǒng))>??
  • <!ATTLIST?分區(qū)??
  • ????盤符?NMTOKEN?#REQUIRED??
  • >??
  • <!ELEMENT?名稱?(#PCDATA)>??
  • <!ELEMENT?操作系統(tǒng)?(#PCDATA)>??
  • <!ELEMENT?硬盤?(分區(qū)+,?描述*)>??
  • <!ATTLIST?硬盤??
  • ????容量?CDATA?#REQUIRED??
  • >??
  • <!ELEMENT?描述?ANY>??
  • xml

    [html]?view plaincopy
  • <?xml?version="1.0"?encoding="GB2312"?standalone="no"?>??
  • <!DOCTYPE?我的電腦?SYSTEM?"computer.dtd">??
  • <!--以上部分稱為XML文檔的“序言”(Prolog)-->??
  • <我的電腦>??
  • ????<CPU?廠商="AMD"?工作頻率="1.5GHz"/>??
  • ????<內(nèi)存?容量="512MB">??
  • ????????<描述>Kingmax?DDR?4000</描述>??
  • ????</內(nèi)存>??
  • ????<內(nèi)存?容量="512MB"/>??
  • ????<硬盤?容量="80GB">??
  • ????????<分區(qū)?盤符="C">??
  • ????????????<名稱>系統(tǒng)盤</名稱>??
  • ????????????<操作系統(tǒng)>??
  • ????????????????<![CDATA[>?Windows?2003?<]]>??
  • ????????????</操作系統(tǒng)>??
  • ????????</分區(qū)>??
  • ????</硬盤>??
  • </我的電腦>??
  • 示例二

    [html]?view plaincopy
  • <?xml?version="1.0"?encoding="UTF-8"?>??
  • <!DOCTYPE?班級(jí)?[??
  • ????<!ELEMENT?班級(jí)?(學(xué)生+,?班長(zhǎng)?)>??
  • ????<!ELEMENT?班長(zhǎng)?EMPTY>??
  • ????<!ATTLIST?班長(zhǎng)?學(xué)號(hào)?IDREF?#REQUIRED>??
  • ????<!ELEMENT?學(xué)生?(姓名,?年齡?,?住址?,?電話*)>??
  • ????<!ATTLIST?學(xué)生??
  • ????????學(xué)號(hào)?ID?#REQUIRED??
  • ????????性別?(男?|?女)?"男"??
  • ????????系別?CDATA?"計(jì)算機(jī)"??
  • ????>??
  • ????<!ELEMENT?姓名?(#PCDATA)>??
  • ????<!ELEMENT?年齡?(#PCDATA)>??
  • ????<!ELEMENT?住址?(#PCDATA)>??
  • ????<!ELEMENT?電話?(座機(jī)*,?手機(jī)?)>??
  • ????<!ELEMENT?座機(jī)?(#PCDATA)>??
  • ????<!ELEMENT?手機(jī)?(#PCDATA)>??
  • ]>??
  • xml

    [html]?view plaincopy
  • <班級(jí)>??
  • ????<學(xué)生?學(xué)號(hào)="s05601"?性別="女">??
  • ????????<姓名>王剛</姓名>??
  • ????????<年齡>2</年齡>??
  • ????????<電話>??
  • ????????????<手機(jī)>234345456</手機(jī)>??
  • ????????</電話>??
  • ????</學(xué)生>??
  • ????<學(xué)生?學(xué)號(hào)="S05046"?性別="男"?系別="材料">??
  • ????????<姓名>孫俊</姓名>??
  • ????????<住址>203房間</住址>??
  • ????</學(xué)生>??
  • ????<學(xué)生?學(xué)號(hào)="s05603">??
  • ????????<姓名>孫俊</姓名>??
  • ????????<住址>203房間</住址>??
  • ????????<電話>??
  • ????????????<座機(jī)>45655656??
  • ????????</座機(jī)>??
  • ????????????<座機(jī)>465675</座機(jī)>??
  • ????????</電話>??
  • ????</學(xué)生>??
  • ????<班長(zhǎng)?學(xué)號(hào)="s05601"/>??
  • </班級(jí)>??
  • 注記notation
    XML文檔可以包含非XML數(shù)據(jù)(不能由解析器直接處理),例如圖像、聲音等,需要告知解析器如何調(diào)用外部程序處理這些數(shù)據(jù),否則就會(huì)出錯(cuò)。
    NOTATION將非XML數(shù)據(jù)描述為一種能夠被外部程序處理的形式
    格式:<!NOTATION 名稱 SYSTEM “系統(tǒng)標(biāo)識(shí)符”>
    例如:<!NOTATION jpg SYSTEM “image/jpeg”>
    notation實(shí)例

    [html]?view plaincopy
  • <?xml?version="1.0"?encoding="GB2312"?>??
  • <!ELEMENT?相冊(cè)?(照片)+>??
  • <!ELEMENT?照片?(#PCDATA)>??
  • <!NOTATION?jpg?SYSTEM?"image/jpeg">??
  • <!NOTATION?gif?SYSTEM?"image/gif">??
  • <!NOTATION?png?SYSTEM?"image/png">??
  • <!ATTLIST?照片??
  • ????名稱?NMTOKEN?#REQUIRED??
  • ????文件類型?NOTATION?(jpg?|?gif?|?png)?#IMPLIED??
  • >??
  • 實(shí)體ENTITY

    邏輯上,一個(gè)XML文檔只有一個(gè)根元素,根元素包含所有子元素和內(nèi)容。但XML文檔中可以引用來(lái)自其他文檔(文件)中的數(shù)據(jù)(內(nèi)容),這就是實(shí)體。例如,可以將論文標(biāo)題定義為實(shí)體,就可以在文中多次引用,而不必重復(fù)輸入,也便于修改標(biāo)題。
    實(shí)體存儲(chǔ)的內(nèi)容有形式規(guī)范的XML、其他形式的文本或二進(jìn)制數(shù)據(jù)。實(shí)體可以是文件、數(shù)據(jù)記錄或任何包含數(shù)據(jù)的項(xiàng)目。除了文檔實(shí)體外,多數(shù)實(shí)體都有名稱。
    實(shí)體定義在DTD中,在與該DTD關(guān)聯(lián)的XML文檔中通過實(shí)體引用使用這些實(shí)體,XML解析器會(huì)在解析標(biāo)記時(shí),用實(shí)體的內(nèi)容替換實(shí)體引用。

    普通實(shí)體
    ? 內(nèi)部普通實(shí)體
    <!ENTITY 實(shí)體名稱? “實(shí)體內(nèi)容”>
    例如,<!ENTITY UPC “中國(guó)石油大學(xué)”>
    ? 外部普通實(shí)體
    <!ENTITY 實(shí)體名稱 SYSTEM “URI”>
    例如,<!ENTITY UPC SYSTEM “/XML/upc.xml”>
    <!ENTITY 實(shí)體名稱 PUBLIC FPI “URI”>
    其中,FPI是經(jīng)認(rèn)可的全球唯一的公共標(biāo)識(shí)符,形如“前綴//使用者標(biāo)識(shí)//文本類//文本描述//語(yǔ)言”
    例如,<!ENTITY hello PUBLIC “-//ISO9//me//Hello//EN” “/xml/hello.xml”>
    book_intro.xml文檔

    [html]?view plaincopy
  • <?xml?version="1.0"?encoding="GB2312"?>??
  • <內(nèi)容簡(jiǎn)介>適合計(jì)算機(jī)專業(yè)本科學(xué)習(xí)</內(nèi)容簡(jiǎn)介>??
  • [html]?view plaincopy
  • <?xml?version="1.0"?encoding="GB2312"?>??
  • <!DOCTYPE?圖書?[??
  • ????<!ENTITY?copyright?"版權(quán)所有,2007">??
  • ????<!ENTITY?intro?SYSTEM?"book_intro.xml">??
  • ????<!ELEMENT?圖書?(書名,?作者,?內(nèi)容簡(jiǎn)介)>??
  • ????<!ELEMENT?書名?(#PCDATA)>??
  • ????<!ELEMENT?作者?(#PCDATA)>??
  • ????<!ELEMENT?內(nèi)容簡(jiǎn)介?(#PCDATA)>??
  • ]>??
  • <圖書>??
  • ????<書名>計(jì)算概論(?right;)??
  • </書名>??
  • ????<作者>張三</作者>??
  • ????&intro;??
  • </圖書>??
  • 未解析實(shí)體

    外部未解析實(shí)體可以將非XML文檔數(shù)據(jù)引入XML文檔進(jìn)行處理
    引入XMl文檔
    <!ENTITY 名稱 SYSTEM “URI”>
    URI對(duì)應(yīng)XML文檔
    引入非XML文檔
    <!ENTITY 名稱 SYSTEM “URI” NDATA 類型聲明>
    類型聲明用于描述文檔類型

    [html]?view plaincopy
  • <?xml?version="1.0"?encoding="GB2312"?>??
  • <!DOCTYPE?IMAGE?[??
  • ????<!ELEMENT?IMAGE?(PIC)>??
  • ????<!NOTATION?gif?SYSTEM?"image/gif">??
  • ????<!ENTITY?pic?SYSTEM?"office.gif"?NDATA?gif>??
  • ????<!ELEMENT?PIC?EMPTY>??
  • ????<!ATTLIST?PIC?src?ENTITY?#REQUIRED>??
  • ]>??
  • <IMAGE>??
  • ????<PIC?src="pic"/>??

  • 總結(jié)

    以上是生活随笔為你收集整理的XML文档类型定义DTD的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。