XML語言課件:第3章_DTD_第1頁
XML語言課件:第3章_DTD_第2頁
XML語言課件:第3章_DTD_第3頁
XML語言課件:第3章_DTD_第4頁
XML語言課件:第3章_DTD_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 1 DTD與XML文檔(1)為什么需要文檔類型定義(DTD) ?XML文檔的基本要求是必須滿足格式良好(Well Formed)的要求。格式良好的XML文檔是非常簡單的。如何根據(jù)需要對XML文檔進(jìn)行限制? 如何公布一個XML文檔的結(jié)構(gòu)? 如何重用XML文檔的數(shù)據(jù)? 為了解決這些問題,就得需要DTD來解決。什么是文檔類型定義(DTD) ?DTD描述了一個標(biāo)記語言的語法和詞匯表,也就是定義了可以在XML文檔中出現(xiàn)的元素、這些元素出現(xiàn)的次序、它們可以如何相互嵌套以及XML文檔結(jié)構(gòu)的其它詳細(xì)信息。DTD引入有效的XML文檔一個“有效的(Valid)” XML文檔既是“格式良好”的,又必須遵守文檔類型

2、描述DTD中定義的種種規(guī)定。DTD = Document Type Definition1 DTD與XML文檔(2)內(nèi)部DTD:最簡單的使用DTD的方法是在XML文檔的內(nèi)部分加入一個DTD描述。加入的位置是緊接在XML處理指示之后。XML數(shù)據(jù)這樣,我們就定義了一個文件,它以DOCTYPE中規(guī)定的根元素名作為其根元素的名字。例3-1:內(nèi)部DTD1 DTD與XML文檔(3)?xml version = 1.0 encoding=GB2312 standalone = no?!DOCTYPE !DOCTYPE 聯(lián)系人列表聯(lián)系人列表 !ELEMENT !ELEMENT ) !ELEMENT ) !EL

3、EMENT (#PCDATA) !ELEMENT (#PCDATA) !ELEMENT (#PCDATA) !ELEMENT (#PCDATA) !ELEMENT (#PCDATA) !ELEMENT (#PCDATA) 張三張三/ 001 001 AA公司公司/ (010)62345678(010)62345678 五街五街12341234號號/ 北京市北京市/ 北京北京/ / / 李四李四/ 002 002 BB公司公司/ (021)87654321(021)87654321 南京路南京路98769876號號/ 上海上海/ 上海上海/ / / / 1

4、 DTD與XML文檔(4)外部DTD:將DTD置于XML文檔之外的文件中。主要用于引用一個作者或組織所編寫的眾多XML文件中通用的DTD。XML數(shù)據(jù)例3-2:外部DTD1 DTD與XML文檔(5)!DOCTYPE 張三張三/ 001 001 AA公司公司/ (010)62345678(010)62345678 五街五街12341234號號/ 北京市北京市/ 北京北京/ / / 李四李四/ 002 002 BB公司公司/ (021)87654321(021)87654321 南京路南京路98769876號號/ 上海上海/ 上海上海/ / / / fclml

5、.dtd:!ELEMENT !ELEMENT )!ELEMENT )!ELEMENT (#PCDATA)!ELEMENT (#PCDATA)!ELEMENT (#PCDATA)!ELEMENT (#PCDATA)!ELEMENT (#PCDATA)!ELEMENT (#PCDATA)1 DTD與XML文檔(6)公用DTD:它是一個由權(quán)威機(jī)構(gòu)制訂的,提供給特定行業(yè)或公眾使用的外部DTD。引用公共DTD的形式為:例:這個“DTD標(biāo)識名”的命名規(guī)則和XML文件的命名規(guī)則稍有不同。 ISO的以ISO開頭,改進(jìn)的非ISO以+開頭,未改進(jìn)的非ISO的以-開頭。 后面由多個雙斜線組成:/所有者/類型描述/語

6、言/版本。例:“-/W3C/DTD HTML 4.0/EN”; “-/IETF/ENTITIES Latin 1/EN”; “-/W3C/DTD HTML/EN/4.1”1 DTD與XML文檔(7)IE XML TOOL是微軟的IE插件,其功能是在IE中對XML文檔進(jìn)行有效性檢查和瀏覽XSLT輸出的代碼。 從下面的網(wǎng)址下載 iexmltls.exe: http:/ 點(diǎn)擊iexmltlx.exe解壓到一個文件夾中 鼠標(biāo)右鍵點(diǎn)擊上述文件夾中的.inf的文件進(jìn)行安裝 使用iexmltls: 用IE打開XML文檔 在打開的IE窗口上點(diǎn)擊鼠標(biāo)右鍵彈出下拉菜單 選擇其中的 “Validate XML”2

7、定義元素及其后代(1)元素的聲明:元素的聲明: 元素聲明不但說明了每個元素聲明不但說明了每個XML文件中可能存在的元素,給出了元文件中可能存在的元素,給出了元素的名字,而且給出了元素的具體類型。一個素的名字,而且給出了元素的具體類型。一個XML元素可以為空,元素可以為空,也可以是一段純文本,還可以有若干個子元素,而這些子元素同時也可以是一段純文本,還可以有若干個子元素,而這些子元素同時又可以有它們的子元素。又可以有它們的子元素。DTD正是通過元素之間的父子關(guān)系,描正是通過元素之間的父子關(guān)系,描述了整個文件的結(jié)構(gòu)關(guān)系。述了整個文件的結(jié)構(gòu)關(guān)系。元素的聲明形式為:元素的聲明形式為:元素內(nèi)容可分為如下

8、的元素內(nèi)容可分為如下的3個類型:個類型:l簡單型簡單型:元素內(nèi)容是可解析的字符數(shù)據(jù)(:元素內(nèi)容是可解析的字符數(shù)據(jù)(Parsed Character Data, PCDATA),即不含有子元素的文本。),即不含有子元素的文本。l復(fù)合型復(fù)合型:元素的內(nèi)容含有其它元素,既有子元素。:元素的內(nèi)容含有其它元素,既有子元素。l混合型混合型:元素的內(nèi)容既有文本數(shù)據(jù)又有子元素。:元素的內(nèi)容既有文本數(shù)據(jù)又有子元素。2 定義元素及其后代(2)簡單型元素的聲明:簡單型元素的聲明: 空元素的聲明:空元素的聲明: 例如:例如: 不限定元素內(nèi)容的聲明:不限定元素內(nèi)容的聲明: (不推薦使用) 2 定義元素及其后代(3)例例

9、:!DOCTYPE 聯(lián)系人聯(lián)系人 張三張三 001 A公司公司 (010)62345678 2 定義元素及其后代(4)復(fù)合型元素的聲明,即定義元素及其子元素:DTD盡管要求嚴(yán)格,但也有它的靈活性。使用正則表達(dá)式,我們就可以描述父元素與子元素之間非常復(fù)雜的關(guān)系。下面就是描述子元素的正則式: 元 字 符含 義+出現(xiàn)一次或多次*出現(xiàn)零次或多次?不出現(xiàn)或出現(xiàn)一次()一組要共同匹配的表達(dá)式|OR,或,AND,要求嚴(yán)格遵從順序要求2 定義元素及其后代(5)要求順序的子元素DTD定義(,:有序)下面的XML片斷是有效的:張三而下面這個XML片斷不是不是有效的:張三2 定義元素及其后代(6)重復(fù)元素 DTD定

10、義(+:至少出現(xiàn)一次)下面的XML片斷是有效的: 張三 而下面這個XML片斷不是不是有效的:張三2 定義元素及其后代(7)DTD定義(*:出現(xiàn)任意次)成組元素:一組元素放在括號內(nèi)DTD定義(元素組)符合這個DTD的XML片斷可以是: 張三 李四 王五 2 定義元素及其后代(8)OR或:符號“|”描述了一個OR操作?!奥?lián)系人”元素應(yīng)該有一個“姓名”子元素,在此之后還應(yīng)該有一個“電話”或一個“EMAIL”元素,但不能同時有“電話”和“EMAIL”。下面都是無效無效的XML片段 張三 張三 12345678 張三2 定義元素及其后代(9)符合上述DTD定義

11、的有效的XML片段應(yīng)該是: 張三 12345678或者是: 張三 注意:在一個組中,只允許使用一種連接符(例如“,”或“|”)。下面這樣定義的DTD是不合法不合法的:2 定義元素及其后代(10)可選子元素:字符“?”說明一個子元素是可選的,可出現(xiàn),也可不出現(xiàn)。 下面的XML片段是“有效的”: 張三 五街1234號 北京市 北京 張三 2 定義元素及其后代(11)混合內(nèi)容: 在一個元素中可能包含子元素,也可能包含純文本。把這種元素稱為混合內(nèi)容的元素。在下面的例子中,“聯(lián)系人”就是一個混合元素。(不推薦使用)!DOCTYPE 聯(lián)系人列表 張三 (010)62345678 這是關(guān)于張三的信息 3 定

12、義元素的屬性(1)在DTD中定義屬性時,使用下面的格式:其中:元素名是屬性所屬的元素的名字;屬性名是屬性的命名;屬性類型是用來指定該屬性是屬于十個有效屬性類型中的哪種類型。缺省值是在沒有特別說明屬性時的取值,可定義也可不定義;注意:注意:ATTLIST是一個屬性的列表,它可以包含很多屬性的定義。例: 3 定義元素的屬性(2)屬性缺省值屬性缺省值 在DTD中定義的屬性的缺省值可以分為以下四類: 必須賦值的屬性必須賦值的屬性關(guān)鍵字REQUIRED說明XML文件中必須為這個屬性給出一個屬性值。屬性值可有可無的屬性屬性值可有可無的屬性當(dāng)使用IMPLIED關(guān)鍵字時,不強(qiáng)行要求在XML文件中給該屬性賦值,

13、也無須在DTD中為該屬性提供缺省值。 固定取值的屬性固定取值的屬性還有一種特殊情況,你需要為一個特定的屬性提供一個缺省值,并且不希望XML文件的編寫者把你的缺省值替代掉。這時候,就應(yīng)該使用FIXED關(guān)鍵字,同時為該屬性提供一個缺省值。 定義缺省值的屬性定義缺省值的屬性如果不使用上面任何一種關(guān)鍵字的話,就需要在DTD中為它提供一個缺省值。在XML文件中可以為該屬性給出新的屬性值來覆蓋事先定義的缺省值,也可以不另外給出屬性值,默認(rèn)為采用DTD中給出的缺省值。3 定義元素的屬性(3)下面給出一個具體的例子:屬性類型一個元素的屬性可以為以下十種類型中的任意一種: 1.CDATA 6.ENTITY2.E

14、numerated 7.ENTITIES3.ID 8.NMTOKEN4.IDREF 9.NMTOKENS5.IDREFS 10.NOTATION3 定義元素的屬性(4)CDATA類型 CDATA指的是純文本,即由字符、符號“&”、小于號“”和引號“”組成的字符串。當(dāng)然,應(yīng)該使用實(shí)體&代替“&”,<代替“”,&quot代替“”。請看下面這個關(guān)于劇本的例子:!DOCTYPE 劇本 我可不這么認(rèn)為! 為什么呢?3 定義元素的屬性(5)枚舉類型ENUMERATED 屬性也可以被描述為一組可接受的取值的列表,XML文件中對屬性的賦值將從這個列表中選取

15、一個值。這類屬性屬于枚舉類型ENUMERATED,不過,關(guān)鍵字ENUMERATED是不出現(xiàn)在DTD定義中的。例:!DOCTYPE 購物籃 注意,在上面這個例子中,給屬性“種類”定義的缺省值是“雞肉”,所以“購物籃”中的第三個元素的“種類”屬性取值為“雞肉”。3 定義元素的屬性(6)ID類型類型 ID是用屬性值的方式為文件中的某個元素定義唯一標(biāo)識的方法。ID的值必須是一個有效的XML名稱,不要給ID類型的屬性事先指定缺省值,更不能使用FIXED型的缺省值。!DOCTYPE 聯(lián)系人列表 張三 李四 3 定義元素的屬性(7)IDREF類型類型 IDREF類型允許一個元素的屬性使用

16、文件中的另一個元素的ID標(biāo)識值作為該屬性的取值。例如下面的例子:!DOCTYPE 聯(lián)系人列表 張三 李四 3 定義元素的屬性(8)NMTOKEN 和 NMTOKENS:名稱記號 類型 NMTOKEN 和 NMTOKENS 是諸多屬性類型中面向處理程序的又一個類型。這兩個類型用于指示一個有效的XML名稱。例如可以通過NMTOKEN 類型的屬性來訪問一個JAVA類等等。關(guān)于元素的定義: 授權(quán)用戶 NMTOKENS #IMPLIEDXML片段:blah blah blah4 實(shí)體(1)l實(shí)體(ENTITY):是XML中用來指代其它復(fù)雜結(jié)構(gòu)的機(jī)制。一個簡單的實(shí)體可以代表一大段文本內(nèi)容。l實(shí)體可分為內(nèi)部實(shí)體和外部實(shí)體。l實(shí)體聲明:內(nèi)部實(shí)體:外部實(shí)體:l實(shí)體引用:&實(shí)體名;l其實(shí)像”>”、”<”等特殊實(shí)體就是一種內(nèi)部預(yù)定義的實(shí)體.4 實(shí)體(2):內(nèi)部實(shí)體 !DOCTYPE 聯(lián)系人列表 張三A公司&A公司地址;李四B公司&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論