文檔類型定義(DTD)_第1頁
文檔類型定義(DTD)_第2頁
文檔類型定義(DTD)_第3頁
文檔類型定義(DTD)_第4頁
文檔類型定義(DTD)_第5頁
已閱讀5頁,還剩22頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 四川托普學院計科系四川托普學院計科系 軟件技術教研室軟件技術教研室 文檔類型定義(文檔類型定義(DTD) 章節目標:章節目標: 通過本章學習,你應該能夠:通過本章學習,你應該能夠: 掌握掌握DTD的基本結構的基本結構 掌握掌握DTD在在XML文檔中的引用文檔中的引用 掌握掌握DTD中元素和屬性的聲明中元素和屬性的聲明 在實際開發中,我們經常會遇到這樣一個有趣的問題:在實際開發中,我們經常會遇到這樣一個有趣的問題:如何與他人交流自己設計的結構?如何與他人交流自己設計的結構? 目前很多主流的瀏覽器已經提供了對目前很多主流的瀏覽器已經提供了對XML的支持,但的支持,但這種支持僅限于對這種支持僅限于

2、對XML內容的顯示。如果所開發的程內容的顯示。如果所開發的程序還包含了新的詞匯表,而通過這些新的詞匯就可以序還包含了新的詞匯表,而通過這些新的詞匯就可以明白作者的設計結構,那么作為明白作者的設計結構,那么作為XML詞匯表的設計者,詞匯表的設計者,就必須通過某種通用的方式來說明詞匯表的語法規則。就必須通過某種通用的方式來說明詞匯表的語法規則。為此,為此,XML 1.0提供了一種機制提供了一種機制文檔類型定義文檔類型定義(DocumentType Definition,DTD),并將其作為),并將其作為規范的一部分。規范的一部分。例例3-1含有內部含有內部DTD的的XML文檔。文檔。!DOCTYP

3、E 聯系人列表聯系人列表 &content; 張三張三 001 A公司公司 (010)62345678 五街五街1234號號 北京市北京市 北京北京 元素聲明的語法元素聲明的語法 元素類型聲明的基本語法如下:元素類型聲明的基本語法如下: 控制元素的內容控制元素的內容 根據元素所包含的內容,即通過元素內容模型(根據元素所包含的內容,即通過元素內容模型(ECM)可以將元素內容)可以將元素內容類型歸納為以下六種:類型歸納為以下六種: 簡單類型:元素內容只能是文本字符內容,且沒有屬性;簡單類型:元素內容只能是文本字符內容,且沒有屬性; 包含簡單內容的復雜類型:元素內容只能是文本字符內容,但可以

4、有包含簡單內容的復雜類型:元素內容只能是文本字符內容,但可以有屬性;屬性; 包含復雜內容的復雜類型:元素內容可以包含子元素,也可以有屬性;包含復雜內容的復雜類型:元素內容可以包含子元素,也可以有屬性; 混合內容類型:元素內容既可以有文本字符內容,也可以包含子元素,混合內容類型:元素內容既可以有文本字符內容,也可以包含子元素,同時還可以有屬性;同時還可以有屬性; 空內容類型:元素內容為空,但可以有屬性,此類元素一般都帶有屬空內容類型:元素內容為空,但可以有屬性,此類元素一般都帶有屬性;性; 任何內容類型:元素內容不受限制,也可以有屬性。任何內容類型:元素內容不受限制,也可以有屬性。 簡單類型表示

5、元素只能含有文本字符,聲明語法如下:簡單類型表示元素只能含有文本字符,聲明語法如下: 例如對例例如對例3-1中的中的“說明說明”元素的聲明:元素的聲明: 對于這個聲明,以下的對于這個聲明,以下的“說明說明”元素的使用都是合法的:元素的使用都是合法的: &content; 某公司部分聯系人信息某公司部分聯系人信息 帶有簡單內容的復雜類型的元素類型聲明(帶有簡單內容的復雜類型的元素類型聲明(ETD)采)采用的結構與簡單類型聲明的結構一樣。但是在該元素用的結構與簡單類型聲明的結構一樣。但是在該元素上還有屬性定義,即還要在上還有屬性定義,即還要在DTD 中給該元素聲明屬性。中給該元素聲明屬性。

6、 如例如例3-1中的中的“電話電話”元素的聲明:元素的聲明:對于這個聲明,對于這個聲明,“電話電話”元素的以下使用是合法的:元素的以下使用是合法的: (010)62345678復雜內容表示元素內容可以包含其他元素作為該元素復雜內容表示元素內容可以包含其他元素作為該元素的子元素。復雜類型表示該元素上可以有屬性。對復的子元素。復雜類型表示該元素上可以有屬性。對復雜內容的聲明,只需將含有簡單內容的復雜類型的聲雜內容的聲明,只需將含有簡單內容的復雜類型的聲明中內容模型(明中內容模型(ECM)部分改為相應的子元素即可,)部分改為相應的子元素即可,語法如下:語法如下: 對于所包含

7、子元素,可以控制其出現的先后順序,出對于所包含子元素,可以控制其出現的先后順序,出現的次數,從子元素中進行選擇,還可以對子元素進現的次數,從子元素中進行選擇,還可以對子元素進行分組。行分組。(1)控制子元素出現的先后順序)控制子元素出現的先后順序 在這種格式下,元素擁有哪些子元素、每個子元素出現的次數和位置都有在這種格式下,元素擁有哪些子元素、每個子元素出現的次數和位置都有明確的規定,在具體的文檔實例中,必須嚴格執行。這就是子元素列表明確的規定,在具體的文檔實例中,必須嚴格執行。這就是子元素列表的設置方式。語法如下:的設置方式。語法如下: 如:如: 這個聲明中,這個聲明中,“個人信息個人信息”

8、就可以包含兩個就可以包含兩個“喜好喜好”子元素,以子元素,以下實例是合法的:下實例是合法的: 張三張三 男男 書法書法 音樂音樂 (2)控制元素出現的次數)控制元素出現的次數 可以利用簡單的符號來控制元素出現的次數。可以利用簡單的符號來控制元素出現的次數。DTD支持的可以控制支持的可以控制元素出現次數的符號有:元素出現次數的符號有: ? 0次或次或1次次 1次或多次次或多次 0次或多次,即任意次次或多次,即任意次(3)從元素中進行選擇)從元素中進行選擇 有時需要在兩個或多個互斥的元素中選擇其中一個。從多個元素有時需要在兩個或多個互斥的元素中選擇其中一個。從多個元素中進行選擇使用中進行選擇使用“

9、或或”符號即符號即“|”,語法如下:語法如下: 如:如: (4)對子元素進行分組)對子元素進行分組 對子元素進行分組的語法如下:對子元素進行分組的語法如下:!ELEMENT element(child_element,(child_element,),) 如:如: 混合內容類型的元素允許其內容可以既包含字符數據又含混合內容類型的元素允許其內容可以既包含字符數據又含有子元素。聲明此類元素的基本語法如下:有子元素。聲明此類元素的基本語法如下: 例如:例如: 元素既有字符數據又可包含子元素,從表面上看元素內容的限制少了,元素既有字符數據又可包含子元素,從表面上看元素內容的限制少了,但這樣會擾亂文檔的

10、層次結構,一般在完成的文檔中是不應該出現這種但這樣會擾亂文檔的層次結構,一般在完成的文檔中是不應該出現這種混合元素的。從技術上說,可以輕易地建立一個元素來包含這些字符數混合元素的。從技術上說,可以輕易地建立一個元素來包含這些字符數據。包含混合內容的元素在實際應用中,用的較少。據。包含混合內容的元素在實際應用中,用的較少。 在在XML實例文檔中,還可能有這樣的元素,元素本身不實例文檔中,還可能有這樣的元素,元素本身不包含任何的內容,但可以有屬性。這種元素是聲明語法包含任何的內容,但可以有屬性。這種元素是聲明語法如下:如下: 例如:例如: 在在XML實例文檔中,使用如下:實例文檔中,使用如下: 一

11、般情況下,空元素都包含屬性,否則該元素的出現沒一般情況下,空元素都包含屬性,否則該元素的出現沒有多大的意義。有多大的意義。 這是對于元素內容的最為寬松的限定,實際對元素內容這是對于元素內容的最為寬松的限定,實際對元素內容幾乎沒有任何的要求,語法如下:幾乎沒有任何的要求,語法如下: 例如:例如: !ELEMENT 說明說明 ANY 實際應用中,除非文檔明確要求使用這樣的元素,否則最好避免使實際應用中,除非文檔明確要求使用這樣的元素,否則最好避免使用這種設定。過分的濫用將導致文檔結構的不明確,這與使用用這種設定。過分的濫用將導致文檔結構的不明確,這與使用DTD的初衷背道而弛。應該盡可能準確地描述每

12、個元素的內容。的初衷背道而弛。應該盡可能準確地描述每個元素的內容。 同元素一樣,所有有效的同元素一樣,所有有效的XML文檔中使用到的屬性也必須先在文檔中使用到的屬性也必須先在DTD中進行聲明。聲明的內容包括屬性在哪個元素上使用,屬性中進行聲明。聲明的內容包括屬性在哪個元素上使用,屬性的名稱,屬性值的類型,屬性默認值,以及元素是否必須要有該的名稱,屬性值的類型,屬性默認值,以及元素是否必須要有該屬性等信息。屬性等信息。 屬性聲明語法屬性聲明語法 單個屬性的聲明:單個屬性的聲明: 同一元素上多個屬性的聲明,即屬性列表聲明:同一元素上多個屬性的聲明,即屬性列表聲明: 在在DTD中聲明屬性的默認值時,

13、可以通過設定中聲明屬性的默認值時,可以通過設定Keyword的值,對屬性的取值作出一些規定,根據這的值,對屬性的取值作出一些規定,根據這些規定的具體的情況,屬性的默認值又可以分為以下些規定的具體的情況,屬性的默認值又可以分為以下4類。類。 1、將、將Keyword設置為設置為“#IMPLIED”:表示該屬性是可:表示該屬性是可選的,即在選的,即在XML 實例文檔中,該可以有該屬性,也可實例文檔中,該可以有該屬性,也可以沒有。聲明語法如下:以沒有。聲明語法如下: 2、將、將Keyword設置為設置為“#REQUIRED”:表示屬性是必須的,即在:表示屬性是必須的,即在XML 實例文檔中,必須使用

14、該屬性。聲明語法如下:實例文檔中,必須使用該屬性。聲明語法如下: 3、將、將Keyword設置為設置為“#FIXED”:表示該屬性的值是固定不可變的,:表示該屬性的值是固定不可變的,在這種情況下,必須給出屬性的默認取值。在這種情況下,必須給出屬性的默認取值。 聲明語法如下:聲明語法如下:4、沒有設置、沒有設置Keyword,直接給出默認值,聲明語法如下:,直接給出默認值,聲明語法如下:DTD中共有十種數據類型中共有十種數據類型 :屬性類型屬性類型含義含義CDATACDATA字符數據(字符串)字符數據(字符串)EnumeratedEnumerated枚舉值,枚舉值,接受用戶顯式定義的屬性可選值中

15、的一接受用戶顯式定義的屬性可選值中的一個值個值IDIDIDID類型,類型,特定文檔中唯一的名稱特定文檔中唯一的名稱IDREFIDREFIDID引用類型,引用類型,對某些具有對某些具有IDID屬性的元素的引用,屬性的元素的引用,這些元素的這些元素的IDID屬性值必須與屬性值必須與IDREFIDREF屬性的值相屬性的值相同同IDREFSIDREFS多個多個IDID引用類型,引用類型,若干以空格分隔的若干以空格分隔的IDREFIDREFENTITYENTITY實體類型,實體類型,已定義的實體的名稱已定義的實體的名稱ENTITIESENTITIES多實體類型,若干以空格分開的實體名稱多實體類型,若干以

16、空格分開的實體名稱NMTOKENNMTOKENXMLXML名稱名稱NMTOKENSNMTOKENS由空格分開的多個由空格分開的多個XMLXML名稱名稱NOTATIONNOTATION符號引用類型,符號引用類型,在在DTDDTD中聲明為用于指示表示法類中聲明為用于指示表示法類型的名稱型的名稱內部內部DTD的引用的引用 使用內部使用內部DTD對對XML文檔的有效性進行驗證的格式如下:文檔的有效性進行驗證的格式如下: Xml文檔主體文檔主體外部外部DTD的引用的引用 外部外部DTD的基本格式如下:的基本格式如下:元素、屬性或實體的聲明部分元素、屬性或實體的聲明部分外部外部DTD文件根據其性質,又可以

17、分為私有(或系統)文件根據其性質,又可以分為私有(或系統)DTD文件和公共文件和公共DTD文件兩種。文件兩種。 1、私有(系統)、私有(系統)DTD文件的引用文件的引用 在在XML實例文檔中引用私有實例文檔中引用私有DTD文件的格式如下:文件的格式如下:2、公共、公共DTD文件的引用文件的引用 在在XML實例文檔中引用公共實例文檔中引用公共DTD文件的格式如下:文件的格式如下:既引用外部既引用外部DTD又引用內部又引用內部DTD 如果既想引用外部如果既想引用外部DTD又想包含內部又想包含內部DTD,可以使用如下,可以使用如下格式:格式: 或者或者 XML中的實體機制是一種可以節省大量時間的工具

18、,中的實體機制是一種可以節省大量時間的工具,而且也是將多種不同類型的數據插入而且也是將多種不同類型的數據插入XML文件的方法。文件的方法。實體就是包含了文檔片斷或者說部分文檔內容的虛擬實體就是包含了文檔片斷或者說部分文檔內容的虛擬存儲單元,用來存儲存儲單元,用來存儲XML聲明、聲明、DTD、各種元素或者、各種元素或者其他形式的文本和二進制數據。在其他形式的文本和二進制數據。在XML實例文檔中可實例文檔中可以通過實體名稱來代替實體的具體內容。以通過實體名稱來代替實體的具體內容。XML處理器處理器或其他或其他XML應用程序在分析實例文檔時,將使用實體應用程序在分析實例文檔時,將使用實體的具體內容來

19、代替文檔中的實體名稱,組成一個完整的具體內容來代替文檔中的實體名稱,組成一個完整的文檔。的文檔。1、按照實體內容的位置分類、按照實體內容的位置分類 按照實體內容的位置可將實體分為兩類:按照實體內容的位置可將實體分為兩類: 內部實體:實體所代表的內容和實體聲明在同一個文檔中,即實體的內部實體:實體所代表的內容和實體聲明在同一個文檔中,即實體的內容在聲明中給出,內部實體是可析實體。內容在聲明中給出,內部實體是可析實體。 外部實體:實體所代表的內容在實體聲明文檔之外的文檔中。外部實體:實體所代表的內容在實體聲明文檔之外的文檔中。2、按照實體內容本身分類、按照實體內容本身分類 按照實體內容本身可以將實

20、體分為兩類:按照實體內容本身可以將實體分為兩類: 可析實體:實體的內容是可解析的可析實體:實體的內容是可解析的XML文本、字符、數據等。文本、字符、數據等。 不可析實體:實體的內容是不可析實體:實體的內容是XML處理器不能直接解析的,如圖像、聲處理器不能直接解析的,如圖像、聲音等二進制數據。不可析實體的內容是一種資源,每個不可析實體都音等二進制數據。不可析實體的內容是一種資源,每個不可析實體都應有一個相關聯的用符號名稱標識的符號(應有一個相關聯的用符號名稱標識的符號(Notation)。)。 3、按照實體被使用的位置分類、按照實體被使用的位置分類 按照實體被使用的位置可將實體分為兩類:按照實體被使用的位置可將實體分為兩類: 一般實體:實體只能在一般實體:實體只能在XML實例文檔中被引用。實例文檔中被引用。 參數實體:實體只能在參數實體:實體只能在DTD中被引用,而且它肯定是一個可析實體。中被引用,而且它肯定是一個可析實體。1、內部一般實體的定義和使用、內部一般實體的定義和使用 內部一般實體的作用

溫馨提示

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

評論

0/150

提交評論