




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第3章XML文檔類型定義
----DTD
1目標理解文檔類型定義DTD聲明元素聲明屬性聲明實體聲明2XML確認
----確保XML文檔中數據的一致性
符合語法的XML文檔稱為結構良好的XML文檔。通過DTD驗證的XML文檔稱為有效的XML文檔。33.1 DTD概述文檔類型定義--DocumentTypeDefinitionDTD用來描述XML文檔的結構,DTD定義了XML文檔中可用的合法元素。用DTD指定:可以在文檔中存在的元素元素可以具有的屬性在元素內部元素的層次結構元素在整個文檔中出現的順序43.2DTD聲明DTD可以是一個完全獨立的文件,也可以在XML文件中直接設定。DTD分為外部DTD(在XML文件中調用另外已經編輯好的DTD)和內部DTD(在XML文件中直接設定DTD)兩種。
53.2.1內部DTD
內部DTD是在XML文件的文件序言區域中定義的。內部DTD的XML文檔的結構為:
<?xmlversion="1.0"?>
<!DOCTYPE根元素名[
元素描述
]>
文檔數據區.......63.2.1內部DTD(續)<?xmlversion='1.0'encoding='gb2312'?><!DOCTYPEpoem[<----------------根元素的名稱<!ELEMENTpoem(author,title,content)><-----------子元素的名稱及順序<!ELEMENTauthor(#PCDATA)><------------------子元素的數據類型<!ELEMENTtitle(#PCDATA)><!ELEMENTcontent(#PCDATA)>]><------------------------結束標簽<poem><author>王維</author><title>鹿柴</title><content>空山不見人,但聞人語聲.返景入深林,復照青苔上.</content></poem>注意:例中的定義關鍵字一定要大寫,如DOCTYPE、ELEMENT、#PCDATA,且元素名稱與數據類型之間也要有空格。內部DTD示例73.2.2外部DTD外部DTD是一個獨立于XML文件的文件,實際上也是一個文本文件,只是使用.dtd為文件擴展名。外部DTD的好處是:它可以方便高效地被多個XML文檔所共享。外部DTD的創建方式、語法和內部DTD是一樣的。83.2.2外部DTD(續2-1)使用外部DTD的XML文檔的結構為:<?xmlversion="1.0"?><!DOCTYPE根元素名SYSTEM/PUBLIC"外部DTD文件名及其位置">文檔數據區.......93.2.2外部DTD(續2-2)<?xmlversion='1.0'encoding='gb2312'?><!DOCTYPEpoemSYSTEM"ex2.dtd"><poem> <author>王維</author> <title>鹿柴</title> <content>空山不見人,但聞人語聲.返景入深林,復照青苔上.</content></poem><?xmlversion="1.0"encoding="gb2312"?><!ELEMENTpoem(author,title,content)><!ELEMENTauthor(#PCDATA)><!ELEMENTtitle(#PCDATA)><!ELEMENTcontent(#PCDATA)>外部DTD使用示例103.3 DTD語法一個DTD文檔包含元素(ELEMENT)的定義規則元素之間的關系規則屬性(ATTLIST)的定義規則可使用的實體(ENTITY)或符號(NOTATION)規則113.3.1元素聲明—確定元素及其類型元素有三種不同的類型數據型(即字符內容)<Text>Hello</Text>元素型(即包含的內容是元素)<Letter><sub>QUIT</sub><Body>Helloeverybody!</Body></Letter>混合型(包含的內容既有元素又有內容)<para>Helloeverybody<bold>quit</bold></para>123.3.1元素聲明——元素的定義(1/5)語法<!ELEMENT
NAME
CONTENT>關鍵字元素名稱EMPTY-該元素不能包含子元素和文本,但可以有屬性-(空元素)ANY-該元素可以包含任何在DTD中定義的元素內容#PCDATA-可以包含任何字符數據,但是不能在其中包含任何子元素PCDATA代表字符數據,為防止與關鍵字混淆,加#前綴純元素類型--只包含子元素,并且這些子元素外沒有文本混合類型--包含子元素和文本數據的混合體元素類型133.3.1元素聲明——元素的定義(2/5)EMPTY示例--空元素<!ELEMENT人EMPTY>XML示例:<家庭> <人名字="皮諾曹"性別="男"年齡="6"/></家庭><家庭> <人>皮諾曹</人> <人><大人>皮諾曹爸爸</大人></人></家庭>√×143.3.1元素聲明——元素的定義(3/5)ANY示例<!ELEMENT人ANY>XML示例:<家庭> <人>皮諾曹</人> <人><大人>皮諾曹爸爸</大人></人></家庭>將根元素設為ANY類型后,元素出現的次數和順序不受限制。15√×3.3.1元素聲明——元素的定義(4/5)#PCDATA示例<!ELEMENT人(#PCDATA)><家庭> <人性別="男"年齡="6">皮諾曹</人></家庭><家庭> <人><大人>皮諾曹爸爸</大人></人></家庭>XML示例:163.3.1元素聲明——元素的定義(5/5)組合類型示例<!ELEMENT家庭(人+,家電*)>XML示例:<家庭> <人名字="郭大路"性別="男"年齡="25"/> <人名字="李尋歡"性別="男"年齡="38"愛好="作個教育家和偉人"/> <家電名稱="彩電"數量="3"/></家庭>17注意1:在元素設置中,如果元素包含多個子元素,如:〈!ELEMENT書籍(名稱,作者,價格)〉這種含多個子元素的聲明,那么“名稱”、“作者”、“價格”這些標記在XML文件中必須以上面排列的順序出現,每個標記必須而且只能夠出現一次。18練習—判斷對錯若DTD為:<!ELEMENT學生(姓名,性別,英語,數學)>其對應的XML:<學生> <姓名>李方方</姓名> <性別>男</性別><英語>99</英語><數學>88</數學><數學>88</數學></學生>×19注意2:如果在設定元素時,按照〈!ELEMENT書籍ANY〉,這樣在元素下就可以包含任意被設定過的元素,出現的次數和順序也不受限制,并且在該元素下,除了可以包含子元素以外,還能夠包含一般的文字。20注意3:在XML文件中,一個標記可能多次出現(或者不出現),除了在它們的父元素中用ANY關鍵字之外,還可以在元素的旁邊加上特定的符號來控制標記出現的次數。
21修飾符號------無符號:只能出現一次
符號用途示例示例說明()用來給元素分組(古龍|金庸|梁羽生),(王朔|余杰),毛毛分成三組|在列出的對象中選擇一個(男人|女人)表示男人或者女人必須出現,兩者至少選一+該對象最少出現一次,可以出現多次(1或多次)(成員+)表示成員必須出現,而且可以出現多個成員*該對象允許出現零次到任意多次(0到多次)(愛好*)愛好可以出現零次到多次?該對象可以出現,但只能出現一次(0到1次)(菜鳥?)菜鳥可以出現,也可以不出現,如果出現的話,最多只能出現一次,對象必須按指定的順序出現(西瓜,蘋果,香蕉)表示西瓜、蘋果、香蕉必須出現,并且按這個順序出現22練習—解釋語句<!ELEMENT圖書(書名,作者+,書號?,出版日期*)><!ELEMENT元素名(子元素名1|子元素名2|子元素名3|…)><!ELEMENT作者聯系方式(姓名,地址+,(電話|手機|email))><!ELEMENT作者(姓名,(電話|手機|email)*)><!ELEMENT元素名(#PCDATA|子元素名1|子元素名2|子元素名3|…)*>233.3.2屬性聲明
在DTD中定義屬性時,我們使用下面的格式來給一個元素定義一組合適的屬性,同時指定這些屬性的類型和缺省值:<!ATTLIST元素名(屬性名值類型[屬性類型][“缺省值“])>其中:元素名是屬性所屬的元素的名字。屬性名是屬性的命名。值類型是給屬性分配的值。缺省值是屬性的初值。24屬性的定義語法<!ATTLIST
元素名稱
屬性名稱類型屬性特點 …...>CDATA
ID
IDREF/IDREFS
NMTOKEN/NMTOKENS
Enumerated#REQUIRED
#IMPLIED
#FIXEDvalue
Defaultvalue25屬性類型-CDATA屬性值可以是任何字符(包括數字和中文)<!ATTLIST木偶
姓名CDATA#REQUIRED
>
XML示例:<木偶姓名="皮諾曹"/>
<木偶姓名="PiLuocao"/>
<木偶姓名="123"/>26屬性類型-NMTOKEN/NMTOKENSNMTOKEN是CDATA的一個子集,表示屬性值必須是英文字母、數字、句號、破折號、下劃線或冒號(不能是中文!)。NMTOKENS與NMTOKEN類似,包含多個由空格分隔的字符。<?xmlversion="1.0"encoding="gb2312"?><!DOCTYPEpoems[<!ELEMENTpoems(title,content)><!ELEMENTtitle(#PCDATA)><!ATTLISTtitleauthorNMTOKEN#REQUIRED><!ELEMENTcontent(#PCDATA)>]><poems><titleauthor="杜甫">八陣圖</title><content>功蓋三分國,名成八陣圖,江流石不轉,遺恨失吞吳.</content></poems><?xmlversion="1.0"encoding="gb2312"?><!DOCTYPEpoems[<!ELEMENTpoems(title,content)><!ELEMENTtitle(#PCDATA)><!ATTLISTtitleauthorNMTOKEN#REQUIRED><!ELEMENTcontent(#PCDATA)>]><poems><titleauthor="dupu">八陣圖</title><content>功蓋三分國,名成八陣圖,江流石不轉,遺恨失吞吳.</content></poems>×√XML示例:27屬性類型-ID表明該屬性的取值必須是唯一的。該ID必須以一個字母開頭<!ELEMENT公司職員ANY>
<!ATTLIST公司職員
編號ID#REQUIRED
姓名CDATA#REQUIRED
><公司職員編號="Z001"姓名="張三"/><公司職員編號="Z002"姓名="李四"/><公司職員編號="Z001"姓名="張三"/><公司職員編號="Z001"姓名="李四"/>√×ID屬性值必須是合格的XML名字XML示例:28屬性類型-IDREF/IDREFSIDREF屬性的值指向文檔中其它地方聲明的ID類型的值。IDREFS同IDREF,但是可以具有由空格分開的多個引用。<!ELEMENT家庭(人+)>
<!ELEMENT人EMPTY>
<!ATTLIST人
relIDID#REQUIRED
parentIDIDREFS#IMPLIED
nameCDATA#REQUIRED
><家庭>
<人relID="P_1"name="爸爸"/>
<人relID="P_2"name="媽媽"/>
<人relID="P_3"parentID="P_1P_2"name="兒子">
</家庭>空格XML示例29屬性類型-Enumerated事先定義好一些值,屬性的值必須在所列出的值的范圍內。<!ATTLISTperson 婚姻狀態(single|married|divorced|widowed)#IMPLIED><!ATTLISTpersion性別(男|女)#REQUIRED>30屬性的特點-#REQUIRED元素的所有實例都必須有該屬性的值(NOTNULL)語法:<!ATTLIST元素名屬性名屬性類型#REQUIRED>DTD示例:<!ATTLISTpersonnumberCDATA#REQUIRED>
XML示例:<personnumber="5677"/>31屬性的特點-#IMPLIED元素的實例中可以忽略該屬性(NULL)。語法:
<!ATTLIST元素名屬性名
屬性類型#IMPLIED>DTD示例:<!ATTLISTcontactfaxCDATA#IMPLIED>XML示例:<contactfax="555-667788"/>32屬性的特點-#FIXEDvalue元素實例中該屬性的值必須為指定的固定值。在元素中不能夠設定該屬性,因為這個屬性被設為具有固定值的屬性(#FIX關鍵字)語法:<!ATTLIST元素名屬性名類型#FIXED"value">DTD示例:<!ATTLISTsendercompanyCDATA#FIXED"Microsoft">XML示例:<sendercompany="Microsoft"/>33屬性的特點-Defaultvalue為屬性提供一個默認的值語法:<!ATTLIST元素名屬性名類型"value">DTD示例:<!ATTLISTpaymenttypeCDATA"check">
XML示例:<paymenttype="check"/>34定義實體-內部實體作用:避免重復輸入-(宏、變量)XML中五個預定義實體自定義實體語法:<!DOCTYPE根元素[<!ENTITY實體名"實體內容">]>引用已定義的實體:&實體名;實體符號<<>>&&""''35實體示例?xmlversion="1.0"encoding="gb2312"?><!--文件名:例3-13.xml--><!DOCTYPE圖書信息表[<!ELEMENT圖書信息表(圖書+)><!ELEMENT圖書(書名,類別,作者,出版
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學年八年級物理上冊 5.1物態變化與溫度教學設計 (新版)教科版
- 2023八年級數學上冊 第1章 分式1.5 可化為一元一次方程的分式方程第1課時 可化為一元一次方程的分式方程的解法教學設計 (新版)湘教版
- 2024年秋七年級生物上冊 1.2 認識我們身邊的其他生物教學設計 北京課改版
- 5《我愛我們班》第二課時(教學設計)-部編版道德與法治二年級上冊
- 腦卒中取栓后護理
- 2024-2025學年高中歷史 第6單元 基層治理與社會保障單元小結與測評教學設計 新人教版選擇性必修第一冊
- 知識與創新創業策劃書
- Unit 3 Section A 3a 教學設計 2023-2024學年人教版英語八年級下冊
- Module 2 Unit 1 What did you buy?(教學設計)-2024-2025學年外研版(三起)英語五年級上冊
- 電力維修安全培訓
- 企業勞動關系課件
- 固定資產管理制度實施細則
- 2024-2025學年人教版數學八年級下冊期中檢測卷(含答案)
- 2024年共青團入團積極分子結業考試題庫及答案
- 江蘇省南京市聯合體2023-2024學年七年級下學期期中英語試卷
- 突發性聾診療指南
- 安全文明施工費記取中存在的問題以及原因案例分析
- 輪扣式模板支撐架安全專項施工方案
- 起重傷害事故現場應急處置卡
- (完整版)食品安全管理制度文本(完整版)
- DB4228∕T 24-2021 包裝用箬葉
評論
0/150
提交評論