XML基礎(chǔ)教程第3章課件_第1頁(yè)
XML基礎(chǔ)教程第3章課件_第2頁(yè)
XML基礎(chǔ)教程第3章課件_第3頁(yè)
XML基礎(chǔ)教程第3章課件_第4頁(yè)
XML基礎(chǔ)教程第3章課件_第5頁(yè)
已閱讀5頁(yè),還剩41頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第3章 文檔類型定義教學(xué)目標(biāo)熟練掌握: DTD元素的聲明語(yǔ)法及對(duì)不同元素類型的聲明方法;DTD屬性的類型及DTD屬性的聲明。掌握: 內(nèi)部DTD和外部DTD的概念。了解: 了解DTD實(shí)體的聲明以及DTD屬性的類型。 XML是SGML的子集,在XML文檔元素、元素屬性、實(shí)體等內(nèi)容的聲明和定義方面,沿用SGML的文檔類型定義來描述和定義XML文檔內(nèi)容變得順理成章的事情。3.1 DTD概述 SGML是通過一個(gè)獨(dú)立的描述性文本文件來定義SGML中出現(xiàn)的所有元素類型、元素屬性、字符集、實(shí)體、PCDATA和CDATA等,SGML文檔中的這些內(nèi)容結(jié)構(gòu)及其組合稱為模式,這個(gè)描述性文本文件稱為文檔類型定義(doc

2、ument type definition,DTD)。 DTD明確地說明了SGML文檔的元素、元素類型、內(nèi)容模型,還為它們的結(jié)構(gòu)和它們與其他元素的關(guān)系定義了規(guī)則。3.1.1 DTD簡(jiǎn)介 DTD是用來描述XML文檔結(jié)構(gòu)的一種常見方法,用來定義文檔的邏輯結(jié)構(gòu)。一個(gè)有效的XML文檔應(yīng)該是一個(gè)符合相應(yīng)DTD驗(yàn)證的XML文檔。有了統(tǒng)一制定的DTD,XML解析器就能夠依據(jù)DTD來驗(yàn)證這類XML文檔的結(jié)構(gòu)和數(shù)據(jù)是否正確有效,并能正確解析。 除此之外,DTD還有以下作用:為應(yīng)用程序員提供XML文檔邏輯結(jié)構(gòu)的參考。4能夠保證在一定范圍內(nèi),交流和共享XML文檔數(shù)據(jù)。3統(tǒng)一某行業(yè)或組織聯(lián)盟的XML文檔的格式和結(jié)構(gòu)。

3、2用來驗(yàn)證XML文檔數(shù)據(jù)的有效性。13.1.2 DTD的基本結(jié)構(gòu) DTD用來對(duì)XML文檔所使用的元素、元素間的關(guān)系、元素可用的屬性以及可使用的實(shí)體等定義規(guī)則。實(shí)際上,DTD是由若干條元素、屬性、實(shí)體等的定義和聲明語(yǔ)句組成的。一個(gè)內(nèi)部包含DTD的XML完整文檔。!DOCTYPE 書目 C語(yǔ)言程序設(shè)計(jì)(第三版)譚浩強(qiáng)計(jì)算機(jī)網(wǎng)絡(luò)(第四版)謝希仁屬性列表聲明語(yǔ)句。DTD聲明語(yǔ)句。元素類型聲明語(yǔ)句。實(shí)體聲明語(yǔ)句。12345注釋。通過示例可以看出,一個(gè)DTD的基本結(jié)構(gòu)包括以下幾部分:示例在XML Writer中的有效性驗(yàn)證 一個(gè)合法有效的XML文檔所使用的每一種元素,都必須在相應(yīng)的DTD中明確聲明,聲明的

4、內(nèi)容包括元素的名稱、可能包含的內(nèi)容、元素的數(shù)據(jù)類型、元素允許具有的子元素及子元素出現(xiàn)的順序以及元素所具有的屬性等。在DTD中精確控制元素所包含的內(nèi)容可以控制一個(gè)有效XML文檔的邏輯結(jié)構(gòu)。3.2 元素聲明3.2.1 元素聲明的語(yǔ)法在DTD中,元素聲明的語(yǔ)法格式如下:!ELEMENT 元素名稱 元素內(nèi)容模型其中的參數(shù)說明如下:表示一條元素聲明語(yǔ)句的結(jié)束。舉例說明合法的元素聲明,如: (1)例子共定義了標(biāo)題、型號(hào)、價(jià)格和品牌4個(gè)基本元素,也就是不包含其他元素的元素,這些元素的內(nèi)容均為字符數(shù)據(jù),由“(#PCDATA)”指明;其中PCDATA為可解析數(shù)據(jù)。 (2)語(yǔ)句“”定義了一個(gè)名為的復(fù)合元素,包含、

5、和3個(gè)子元素,而且子元素出現(xiàn)的順序必須是子元素在最前,接著是子元素,最后是子元素。 (3)語(yǔ)句“”定義了一個(gè)名為的復(fù)合元素,其包含和兩個(gè)子元素,子元素必須出現(xiàn)在子元素之前。 (4)若由上述語(yǔ)句組成的DTD所定義的元素都直接或間接地包含在元素中,當(dāng)然除了元素自身,因此上述語(yǔ)句還隱含地定義了DTD的根元素,即。對(duì)上述說明舉例如下:1.基本字符元素聲明XML文檔中的基本元素是指那些含有字符數(shù)據(jù),而不含任何子元素的元素。在相應(yīng)的DTD中,聲明基本字符元素的具體格式如下:這里的PCDATA是指可解析字符數(shù)據(jù),小括號(hào)和PCDATA前面的“#”不能省略。3.2.2 不同元素類型的聲明2. 含有子元素的元素聲

6、明 有時(shí)XML文檔中的一個(gè)元素可以包含若干指定的子元素,也就是說,元素含有子元素。 在相應(yīng)的DTD中,聲明含有子元素的元素的具體格式如下: 經(jīng)上述聲明的元素只能包含所指定的子元素,而不能直接包含其他任何字符數(shù)據(jù);同時(shí)這些子元素在XML文檔中必須以聲明中的排列順序依次出現(xiàn)在其父元素中,每個(gè)子元素必須出現(xiàn)且只能夠出現(xiàn)一次。3.子元素出現(xiàn)次數(shù)的聲明 在XML文檔中,有的元素可能會(huì)出現(xiàn)多次或者一次也不出現(xiàn)。在對(duì)應(yīng)的DTD中,對(duì)包含子元素的元素聲明時(shí),除了對(duì)父元素使用ANY關(guān)鍵字聲明外,還可以在該元素的后面加上特定的符號(hào)來控制其可以出現(xiàn)的次數(shù)。 在對(duì)應(yīng)的DTD中,控制子元素出現(xiàn)次數(shù)的聲明格式為:符號(hào)允許

7、元素出現(xiàn)的次數(shù)無符號(hào)沒有基數(shù)操作符,表示必須出現(xiàn)且只能出現(xiàn)一次?可不出現(xiàn)或只出現(xiàn)一次*可不出現(xiàn)或可多次出現(xiàn),即可出現(xiàn)任意次+出現(xiàn)一次或多次,即至少出現(xiàn)一次DTD中控制子元素出現(xiàn)次數(shù)的特定符號(hào)4.選擇性子元素的聲明 在XML文檔中,有時(shí)一個(gè)父元素可以在指定的多個(gè)子元素中選擇其中的一個(gè)作為子元素。 在對(duì)應(yīng)的DTD中,選擇性子元素的聲明格式為: 此聲明語(yǔ)句規(guī)定了一個(gè)父元素可以包含的子元素必須是小括號(hào)內(nèi)所指定的多個(gè)子元素中的一個(gè)。指定的可供選擇的子元素之間用“|”作為分隔符。5. EMPTY元素的聲明 在HTML中, 如、等標(biāo)記都是沒有內(nèi)容的,稱之為空元素。在XML文檔中也可能會(huì)包含一些空元素,這些空

8、元素只有一個(gè)獨(dú)立標(biāo)記,而沒有任何內(nèi)容。在對(duì)應(yīng)的DTD中,空元素的聲明格式為: 空元素在XML文檔中的表示格式為,可以沒有結(jié)束標(biāo)記,但必須在標(biāo)記名之后添加“/”。6. ANY元素的聲明 內(nèi)容模型為ANY的元素實(shí)質(zhì)上是沒有結(jié)構(gòu)的,若在DTD中聲明了某一元素為ANY類型時(shí),說明這一元素可以包含任意內(nèi)容、任何數(shù)據(jù)、任何聲明的子元素及其數(shù)據(jù)、子元素的組合。在對(duì)應(yīng)的DTD中,ANY元素的聲明格式為:如定義一個(gè)包含任意內(nèi)容的元素:7.混合內(nèi)容類型元素的聲明 混合內(nèi)容類型元素既允許包含字符數(shù)據(jù),又允許包含以任意順序出現(xiàn)的、指定的一個(gè)或多個(gè)子元素,還允許不包含任何內(nèi)容。 混合內(nèi)容類型元素與ANY型元素最主要的區(qū)

9、別在于,前者所能包含的子元素必須是在指定的若干個(gè)元素之中,而后者則沒有任何限制。 在DTD中,聲明混合內(nèi)容類型元素的元素聲明格式: 小括號(hào)內(nèi)的每個(gè)子元素名應(yīng)寫在#PCDATA之后,并用“|”符號(hào)分隔,再在右小括號(hào)之后加星號(hào)“*”。8.實(shí)體的聲明 在DTD中,可以聲明一個(gè)實(shí)體來將多種不同類型的數(shù)據(jù)并入到一個(gè)XML文檔中,這樣能夠節(jié)省大量的時(shí)間,大大提高編制XML文檔的效率。 實(shí)體是一個(gè)事先定義好的數(shù)據(jù)或數(shù)據(jù)集合,可以被方便地引用到任何需要這些數(shù)據(jù)或數(shù)據(jù)集合的地方。 在DTD中,聲明實(shí)體的一般格式為: 其中,ENTITY是關(guān)鍵字,必須大寫。3.3 屬性聲明 DTD中除了元素需要聲明外,元素的屬性也

10、要進(jìn)行相應(yīng)的聲明。 屬性聲明規(guī)定了與給定的元素相聯(lián)系的屬性的名字、數(shù)據(jù)類型和默認(rèn)值,還規(guī)定了屬性是可選擇的還是必需的,是否有默認(rèn)值等。屬性和元素的關(guān)系是隸屬關(guān)系,屬性隸屬于元素。在書寫XML文檔時(shí),屬性寫在元素結(jié)束標(biāo)記“”之前。3.3.1 屬性聲明的語(yǔ)法 在XML文檔中,屬性是元素組成的可選部分,是由“”分隔開的名稱鍵值對(duì)的組成,其作用是對(duì)元素及其內(nèi)容的附加信息進(jìn)行描述;DTD中的屬性聲明用來定義其相應(yīng)的XML文檔中某些元素可接受的屬性。 DTD中對(duì)屬性定義的一般語(yǔ)法為:屬性聲明示例!DOCTYPE 手機(jī)卡品 移動(dòng)動(dòng)感地帶卡移動(dòng)動(dòng)感地帶卡3.3.2 屬性默認(rèn)值的設(shè)置 在DTD中,定義屬性的缺省

11、值時(shí),可以對(duì)其取值作出許多規(guī)定,包括文檔是否需要為一個(gè)屬性提供取值,是否在未定義取值時(shí)使用它的缺省值,這個(gè)缺省值是否可以修改等。根據(jù)這些規(guī)定,在定義屬性時(shí)可以指定屬性的默認(rèn)值,可以用REQUIRED、IMPLIED、FIXED三個(gè)關(guān)鍵字分別來指定在對(duì)應(yīng)的XML文檔中必須提供元素屬性的屬性值,忽略元素屬性的屬性值,使用固定值作為元素屬性的屬性值。1.必須賦值的屬性 關(guān)鍵字REQUIRED用來聲明XML文檔中必須給出屬性的屬性值。 在DTD中,為元素聲明屬性必須賦值的格式為:2.屬性值可有可無的屬性 當(dāng)使用IMPLIED關(guān)鍵字時(shí),語(yǔ)法分析器不再?gòu)?qiáng)行要求在XML文檔中給該屬性賦值,而且也不必在DTD

12、中為該屬性提供缺省值。 在DTD中,為元素聲明一個(gè)屬性值可有可無的屬性的格式為:!ATTLIST 元素名 屬性名 屬性類型 #IMPLIED3.有固定取值的屬性 有一種特殊情況,需要為一個(gè)特定的屬性提供一個(gè)缺省值,且不希望XML文檔的程序員用別的值替代這個(gè)缺省值。這時(shí),可使用FIXED關(guān)鍵字來聲明屬性,并為該屬性提供一個(gè)固定取值的缺省值。 在DTD中,為元素聲明一個(gè)屬性值固定的屬性的格式為:!ATTLIST 元素名 屬性名 屬性類型 #FIXED “缺省值”4.事先定義了缺省值的屬性 在DTD中,在屬性定義時(shí)若沒有使用任何關(guān)鍵字,就必須為該屬性提供一個(gè)缺省值。如果在對(duì)應(yīng)的XML文檔中為該屬性提

13、供一個(gè)新的屬性值,這個(gè)新屬性值就覆蓋了事先定義的缺省值,若不給出屬性值,就默認(rèn)采用DTD中給出的缺省值。在DTD中,為元素定義一個(gè)具有默認(rèn)屬性值的屬性的格式為:!ATTLIST 元素名 屬性名 屬性類型 缺省值3.3.3 屬性的類型 屬性類型規(guī)定了屬性的值是哪種類型的數(shù)據(jù),常見的屬性類型為CDATA,即字符數(shù)據(jù)類型的屬性。事實(shí)上,XML規(guī)范允許為元素的屬性指定10種不同的類型。屬性類型說 明CDATA屬性值為普通的字符數(shù)據(jù)ID屬性值在XML文檔中必須是唯一的IDREF表示該屬性值參考了XML文檔中另一個(gè)ID屬性IDREFS表示該屬性值參考了用空格分隔的多個(gè)XML文檔中的ID屬性ENTITY表示

14、該屬性的設(shè)定值是一個(gè)外部實(shí)體,例如,一個(gè)聲音文件ENTITIES表示該屬性包含了多個(gè)外部實(shí)體,實(shí)體間用空格分隔NMTOKEN屬性值只能由字母、數(shù)字、下劃線、連字符、圓點(diǎn)、冒號(hào)等組成NMTOKENS屬性值能由多個(gè)NMTOKEN組成,NMTOKEN間用空格分隔NOTATION屬性值是在DTD中聲明過的注釋名稱Enumerated(枚舉)屬性值是從給定的值的列表中選定的一個(gè)1.CDATA類型 CDATA指的是純文本,是由多個(gè)字符組成的字符串,其中,字符可以是除了“”、“”和“”的任意字符。 屬性值中既包含雙引號(hào)又包含單引號(hào),則定界符最好使用雙引號(hào),屬性值中的引號(hào)用預(yù)定義實(shí)體引用代替。例如: 如果屬性

15、值中包含了其他特殊字符,也要使用預(yù)定義實(shí)體引用替代,如“&”代替“&”等。 需要特別注意的是,在DTD中聲明XML元素的內(nèi)容為字符串時(shí),用的是“#PCDATA”,而聲明屬性值為字符數(shù)據(jù)時(shí),用的是“#CDATA”。2.ID類型 在一個(gè)XML文檔中,所有聲明為ID屬性類型的元素,其對(duì)應(yīng)屬性的值不能重復(fù)。 使用ID類型的屬性需要注意的是: (1)一個(gè)元素只能聲明一個(gè)ID類型的屬性。 (2)因?yàn)镮D類型的屬性要求屬性值在一個(gè)XML文檔內(nèi)唯一,而FIXED類型要求屬性的屬性值都是聲明時(shí)的值,在一個(gè)XML文檔內(nèi)都是一樣的,因此ID類型的屬性與FIXED類型缺省值不能同時(shí)出現(xiàn),否則是非法的。3.IDREF類

16、型 ID是identifier的縮寫,IDREF是identifier reference的縮寫。IDREF類型屬性的屬性值必須是其他元素的ID類型屬性的屬性值,而且此ID類型的屬性值必須在文檔的其他位置已經(jīng)設(shè)定過。4.IDREFS類型 IDREFS類型的屬性與IDREF類型的屬性是有關(guān)系的。IDREFS類型屬性的屬性值可以有多個(gè),每一個(gè)都是在文檔中其他位置設(shè)定過ID類型的屬性值,多個(gè)屬性值之間用空格分隔。5.ENTITY類型 ENTITY類型的屬性值必須是一個(gè)外部實(shí)體,而這個(gè)外部實(shí)體為二進(jìn)制形式的文件,如GIF、TIF、JPEG、MP3、AVI、RMVB等格式的文件。ENTITY類型的屬性提

17、供了將外部的不可析實(shí)體鏈接到XML文檔的方式。6.ENTITIES類型 ENTITIES類型和ENTITY類型的關(guān)系,IDREFS類型和IDREF類型的關(guān)系,以及與后面要介紹的NMTOKENS類型和NMTOKEN類型的關(guān)系是一樣的,實(shí)際上,前者就是后者的復(fù)數(shù)形式。ENTITIES類型的屬性值由多個(gè)外部的不可解析實(shí)體組成,名稱之間用空格分隔。7.NOTATION類型 在XML文檔中引入外部的不可解析實(shí)體后,XML解析器是無法解析這些二進(jìn)制文件的。通過NOTATION類型的屬性可以指定一個(gè)其他的應(yīng)用程序來識(shí)別和處理這些二進(jìn)制文件,但要具有這種能力需要和NOTATION聲明結(jié)合起來。 NOTATIO

18、N聲明定義了一個(gè)外部應(yīng)用程序,相應(yīng)類型的屬性引用了這個(gè)外部應(yīng)用程序的定義,從而可達(dá)到為不可解析的數(shù)據(jù)指定一個(gè)應(yīng)用程序的目的。8.NMTOKEN類型 NMTOKEN類型的屬性值只能是英文字母、數(shù)字、“.”、“:”、“”、“_”等字符。 在設(shè)計(jì)XML文檔的處理程序時(shí),NMTOKEN類型將會(huì)發(fā)揮出它的作用。由于NMTOKEN類型對(duì)合法字符的要求非常嚴(yán)格,使得它在Java、JavaScript、VBScript等許多編程語(yǔ)言中,獲得的都是合法數(shù)據(jù),所以將會(huì)減少處理程序的許多麻煩。9.NMTOKENS類型 NMTOKENS類型是NMTOKEN類型的復(fù)數(shù)形式,但是在NMTOKENS類型中,空格也屬于合法字符。 NMTOKENS類型允許屬性有多個(gè)屬性值,屬性值之間用空格分隔,并且要求它們?cè)谕粚?duì)引號(hào)內(nèi)。10.Enumerated枚舉類型 如果屬性值不是一個(gè)任意的字符串,而只可能是幾個(gè)指定的值中的一個(gè),例如,一般的“性別”屬性只可能是“男”和“女”中的一個(gè),不可能是其他值,就可以將這個(gè)屬性聲明為Enumerated(枚舉)類型。 這里的Enumerated不是一個(gè)關(guān)鍵字。實(shí)際上,將一個(gè)屬性設(shè)置為Enumerated類型,就是在屬性聲明語(yǔ)句的“類型”位置列出用“|”分隔

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論