最新《Web開(kāi)發(fā)技術(shù)》—XML基礎(chǔ)_第1頁(yè)
最新《Web開(kāi)發(fā)技術(shù)》—XML基礎(chǔ)_第2頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余78頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML基礎(chǔ) Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) 目標(biāo) 了解什么是XML 掌握XML文檔結(jié)構(gòu) 掌握XML文檔驗(yàn)證 掌握XML名稱(chēng)空間 掌握XML顯示和轉(zhuǎn)換技術(shù) Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) 了解什么是了解什么是XML 語(yǔ)義性差 HTML采用固定的標(biāo)記集和固定的格式,其標(biāo)記不能 表達(dá)出數(shù)據(jù)的意義,XML的標(biāo)記是由用戶(hù)自定義的。 交互能力差 采用提交的方式請(qǐng)求服務(wù)器進(jìn)行處理,并將結(jié)果傳回 給用戶(hù),使得服務(wù)器負(fù)擔(dān)繁重,浪費(fèi)了網(wǎng)絡(luò)帶寬和用 戶(hù)時(shí)間,XML可以在本地進(jìn)行處理和顯示。 鏈接單調(diào) 超文本鏈接機(jī)制不能實(shí)現(xiàn)一些更加復(fù)雜的鏈接關(guān)系, 如多個(gè)目的端、多向鏈接。 1.1.1 HTML存在的問(wèn)

2、題存在的問(wèn)題 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) 了解什么是了解什么是XML XML:可擴(kuò)展的標(biāo)記語(yǔ)言(Extensible Markup Language) HTML:超文本標(biāo)記語(yǔ)言(HyperText Markup Language) SGML:標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言(Standard Generalized Markup Language) XML是SGML的一個(gè)子集,是由SGML簡(jiǎn)化而來(lái)。 HTML只使用了SGML中的很小的一部分標(biāo)記,是SGML的 一個(gè)應(yīng)用。 XML是W3C組織的推薦標(biāo)準(zhǔn),第一個(gè)非正式版本誕生于 1996年11月,1998年2月W3C發(fā)布了XML1.0標(biāo)準(zhǔn)。 2000年10月W3C發(fā)

3、布了XML1.0第二版。2004年2月4 日W3C發(fā)布了XML1.0推薦標(biāo)準(zhǔn)第三版,即XML1.1,現(xiàn) 在使用的是XML1.0標(biāo)準(zhǔn)。 1.1.2 XML的產(chǎn)生的產(chǎn)生 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) 了解什么是了解什么是XML W3C:World Wide Web Consortium,萬(wàn)維網(wǎng)聯(lián)盟,成立于1994年 10月,以開(kāi)放論壇的方式促進(jìn)開(kāi)發(fā)互通技術(shù)和網(wǎng)絡(luò)的全部潛能。 W3C不是官方組織,因此將其發(fā)布的規(guī)范成為推薦標(biāo)準(zhǔn),因該 組織自身的權(quán)威性這些標(biāo)準(zhǔn)往往成為事實(shí)上的標(biāo)準(zhǔn)。 一項(xiàng)技術(shù)要成為W3C推薦標(biāo)準(zhǔn),需經(jīng)過(guò)以下七個(gè)步驟: 1、W3C收到提交 任何W3C成員都可以提交一個(gè)建議。 2、W3C發(fā)布注

4、釋 注釋是一個(gè)公開(kāi)的文檔,是對(duì)建議的描述,是一個(gè)討論稿。 3、W3C成立工作組 W3C認(rèn)可提交后,組織成員和感興趣的團(tuán)隊(duì)成立工作組,確定 時(shí)間表,發(fā)布提議標(biāo)準(zhǔn)的工作草案。 4、W3C發(fā)布工作草案 W3C在 發(fā)布工作草案和一個(gè)公眾討論的邀請(qǐng)。 1.1.3 了解了解W3C組織組織 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) 了解什么是了解什么是XML 5、W3C發(fā)布侯選推薦標(biāo)準(zhǔn) 當(dāng)規(guī)范比較復(fù)雜時(shí),需要成員和軟件開(kāi)發(fā)商花更多的時(shí)間來(lái)測(cè)試。 6、W3C發(fā)布提議的推薦標(biāo)準(zhǔn) 提議的推薦標(biāo)準(zhǔn)標(biāo)志著工作組的工作已經(jīng)進(jìn)行到了最后階段,其 內(nèi)容仍然可以被修改。 7、W3C發(fā)布推薦標(biāo)準(zhǔn) 推薦標(biāo)準(zhǔn)經(jīng)W3C的成員審閱,由W3C的主任加蓋

5、正式批準(zhǔn)圖章 而最終成為規(guī)范。推薦標(biāo)準(zhǔn)是一個(gè)穩(wěn)定的文檔,可以作為工作中 的參考資料。 由此可見(jiàn),W3C對(duì)推薦標(biāo)準(zhǔn)的審查、批準(zhǔn)的程序是比較復(fù)雜的,也 是十分嚴(yán)格的。 雖然W3C不是官方組織,但其發(fā)布的規(guī)范是權(quán) 威的,成為事實(shí)上的標(biāo)準(zhǔn)。 1.1.3 了解了解W3C組織組織 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) 了解什么是了解什么是XML 例1-1:test1.html HTML例子 HTML例子 1.1.4 XML與與HTML之比較之比較 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) 了解什么是了解什么是XML A B C 1.1.4 XML與與HTML之比較之比較 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) 了解什么是了解什么是XML 從上面的

6、例子可以看出: 1、HTML的標(biāo)記是固定的,而XML的標(biāo)記是可以自己去創(chuàng)造新的標(biāo) 記,且可以是中文標(biāo)記,XML在設(shè)計(jì)之初就考慮到了國(guó)際化的問(wèn) 題,XML同HTML4.01一樣,是基于ISO/IEC 10646字符集標(biāo)準(zhǔn) 中定義的通用字符集。 2、XML無(wú)現(xiàn)成的一套標(biāo)記供選擇使用,完全需要我們自己去創(chuàng)建, XML是創(chuàng)建標(biāo)記語(yǔ)言的元語(yǔ)言。 3、HTML文檔將數(shù)據(jù)、頁(yè)面的排版和頁(yè)面的表現(xiàn)形式混合在一起; 而XML只是用于描述數(shù)據(jù)和數(shù)據(jù)的結(jié)構(gòu),在XML文檔里并不指 定數(shù)據(jù)的顯示方式,因此同一份數(shù)據(jù)可以用于不同的場(chǎng)合,采用 不同的方式去顯示,真正做到了數(shù)據(jù)獨(dú)立于應(yīng)用系統(tǒng),實(shí)現(xiàn)了數(shù) 據(jù)的可重用性。 4、H

7、TML文檔格式非常松散,導(dǎo)致了HTML文檔解析的復(fù)雜性和瀏 覽器的兼容性問(wèn)題。XML從一開(kāi)始就對(duì)文檔的格式制定了非常嚴(yán) 格的標(biāo)準(zhǔn),凡是符合這一標(biāo)準(zhǔn)的XML文檔就是格式良好的XML 文檔(Well-Formed XML Documents)。 1.1.4 XML與與HTML之比較之比較 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) 了解什么是了解什么是XML 格式良好的XML文檔也稱(chēng)為格式正確的XML文檔: 開(kāi)始標(biāo)簽必須要有一個(gè)結(jié)束標(biāo)簽配套 在HTML里可以直接使用、等標(biāo)簽,但在XML中,開(kāi)始 標(biāo)簽和結(jié)束標(biāo)簽必須配套,即、。 空元素標(biāo)簽必須被關(guān)閉 在HTML文檔里可以直接使用、標(biāo)簽,在XML中空元素 必須采用 /

8、來(lái)關(guān)閉,如:、 所有的標(biāo)簽都區(qū)分大小寫(xiě) 在HTML文檔中標(biāo)簽不區(qū)分大小寫(xiě),XML中的標(biāo)簽嚴(yán)格區(qū)分大小 寫(xiě),且開(kāi)始標(biāo)簽和結(jié)束標(biāo)簽的大小寫(xiě)必須保持一致。 所有的標(biāo)簽必須正確地嵌套,不允許出現(xiàn)交叉 在HTML文檔中,abcd是允許的;但在XML中, 所有的標(biāo)簽都要成對(duì)出現(xiàn),不能交叉,正確形式為: abcd 1.1.4 XML與與HTML之比較之比較 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) 了解什么是了解什么是XML 所有標(biāo)簽的屬性值必須采用引號(hào)括起來(lái) 在HTML文檔中,屬性值可以加引號(hào)也可以不加引號(hào), 如:HTML例子和HTML例子都是合法的。但在XML 文檔中,即使是數(shù)字字符,屬性必須用引號(hào)(單引號(hào) 或雙引號(hào)都

9、可以)括起來(lái),如: XML有且只能有一個(gè)根元素 在HTML文檔中,可以有多個(gè)根元素,如: 但在XML中有且只能有一個(gè)根元素,如: 1.1.4 XML與與HTML之比較之比較 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) 了解什么是了解什么是XML 所有標(biāo)簽的屬性值必須采用引號(hào)括起來(lái) 在HTML文檔中,屬性值可以加引號(hào)也可以不加引號(hào), 如:HTML例子和HTML例子都是合法的。但在XML 文檔中,即使是數(shù)字字符,屬性必須用引號(hào)(單引號(hào) 或雙引號(hào)都可以)括起來(lái),如: XML有且只能有一個(gè)根元素 在HTML文檔中,可以有多個(gè)根元素,如: 但在XML中有且只能有一個(gè)根元素,如: 1.1.4 XML與與HTML之比較之比較

10、 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) 了解什么是了解什么是XML 所有標(biāo)簽的屬性值必須采用引號(hào)括起來(lái) 在HTML文檔中,屬性值可以加引號(hào)也可以不加引號(hào), 如:HTML例子和HTML例子都是合法的。但在XML 文檔中,即使是數(shù)字字符,屬性必須用引號(hào)(單引號(hào) 或雙引號(hào)都可以)括起來(lái),如: XML有且只能有一個(gè)根元素 在HTML文檔中,可以有多個(gè)根元素,如: 但在XML中有且只能有一個(gè)根元素,如: 1.1.4 XML與與HTML之比較之比較 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) 了解什么是了解什么是XML XML文檔本身是純文本格式,因此可用以下工具 進(jìn)行編輯。 1、NotePad(記事本) 2、EditPro 3、Ul

11、traEdit 4、XML Spy 5、XML Writer 1.1.5 XML編寫(xiě)工具編寫(xiě)工具 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔結(jié)構(gòu)文檔結(jié)構(gòu) XML文檔大體上可分為兩個(gè)主要部分:序言 (prologue) 和文檔實(shí)例部分(Document instance)。 序言可以包括處理指令、XML聲明和架構(gòu)聲明 (DTD、SCHEMA): 1.2 XML文檔組成文檔組成 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔結(jié)構(gòu)文檔結(jié)構(gòu) XML文檔總是以一個(gè)XML聲明開(kāi)始,必須位于文檔的第一行,且前 面不能有任何字符。格式如下: 其中 編碼信息 和 文檔獨(dú)立性信息 可選。 版本聲明 文檔編碼聲明 XML默認(rèn)編碼方

12、式是UTF-8,要使用中文可在聲明中加上 encoding=“gb2312” 或 encoding=“GB2312” 均可。如: 獨(dú)立文檔聲明 指明是否依賴(lài)于外部文檔,standalone=“yes”聲明文檔是獨(dú)立的 文檔,如果文檔依賴(lài)于外部文檔,可以通過(guò)standalone=“no”來(lái) 聲明。如: 1.2.1 XML聲明聲明 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔結(jié)構(gòu)文檔結(jié)構(gòu) DTD:Document Type Definition,文檔類(lèi)型定義,用來(lái)定義 XML文檔中元素和屬性的規(guī)則及相互關(guān)系,XML繼承了 SGML的DTD機(jī)制。DTD也是一個(gè)文本文件,以.dtd為擴(kuò) 展名。文檔類(lèi)型聲明有兩

13、種形式,一種是直接在XML文檔 中給出DTD,如: !DOCTYPE data 另一種是聲明DTD在外部文件中,如: 1.2.2 文檔類(lèi)型聲明文檔類(lèi)型聲明 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) 1.2.2: XML指令 用來(lái)給處理XML的應(yīng)用程序提供信息的,解 析器將該信息原封不動(dòng)傳遞給應(yīng)用程序, 由應(yīng)用程序來(lái)解釋這個(gè)指令,并按照它提 供的信息進(jìn)行處理: XML文檔結(jié)構(gòu)文檔結(jié)構(gòu) Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) 根元素: 包含文檔的數(shù)據(jù),以及描述數(shù)據(jù)結(jié)構(gòu)的信息 有且只有一個(gè)根元素 XML文檔結(jié)構(gòu)文檔結(jié)構(gòu) Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔結(jié)構(gòu)文檔結(jié)構(gòu) 元素由開(kāi)始標(biāo)簽、元素內(nèi)容和結(jié)束標(biāo)簽構(gòu)成。文檔的基本構(gòu) 成單元

14、,可包含其它元素、字符數(shù)據(jù)、字符引用。沒(méi)有內(nèi) 容的元素是空元素,由空元素標(biāo)簽構(gòu)成(如:),每 一個(gè)元素用一個(gè)名字標(biāo)識(shí),可以擁有屬性集, 每一個(gè)屬性是一個(gè)名值對(duì)。在給XML元素命名時(shí)需遵守命名 規(guī)范: 以字母、下劃線(xiàn)和冒號(hào)(:)開(kāi)頭; 名稱(chēng)中可以包含字母、數(shù)字、下劃線(xiàn)和其他在XML中允許 的字符; 名稱(chēng)中不能包含空格 名稱(chēng)中盡可能不要使用冒號(hào),以免沖突 1.2.3 XML元素元素 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔結(jié)構(gòu)文檔結(jié)構(gòu) 空元素 無(wú)內(nèi)容的元素即空元素,書(shū)寫(xiě)的時(shí)候一定要寫(xiě)(/)來(lái)關(guān)閉標(biāo)簽。如: 帶屬性的元素 屬性是一個(gè)名值對(duì),如: 帶內(nèi)容的元素 中國(guó) a 帶內(nèi)容和屬性的元素 20 1.2.

15、4 XML元素形式元素形式 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔結(jié)構(gòu)文檔結(jié)構(gòu) 元素:XML元素是指開(kāi)始標(biāo)簽、結(jié)束標(biāo)簽以及兩者之 間的任何內(nèi)容。 標(biāo)簽:是一對(duì)尖括號(hào)和兩者之間的內(nèi)容。 如: 、均是標(biāo)簽 則為data元素 1.2.5 XML元素和標(biāo)簽元素和標(biāo)簽 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔結(jié)構(gòu)文檔結(jié)構(gòu) XML元素的內(nèi)容可以包括子元素、字符數(shù)據(jù)、字符引用和實(shí) 體引用、CDATA段。 子元素 子元素是相對(duì)于父元素而言,子元素是嵌套在上層元素之內(nèi)。如: A 字符數(shù)據(jù) 在一個(gè)元素的內(nèi)容中,字符數(shù)據(jù)不能有和號(hào)( “ Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔結(jié)構(gòu)文檔結(jié)構(gòu) 字符引用和預(yù)定義實(shí)體引用都是以一個(gè)

16、和號(hào)()結(jié)束。 因此,如果想在XML元素內(nèi)容中出現(xiàn),可以采用如下引用方式: 或 CDATA段 CDATA段中包含的都是純字符數(shù)據(jù),其內(nèi)容不被XML處理器分析,因 此可以在其中包含任意的字符。CDATA段主要用于將整個(gè)文本解釋為 字符數(shù)據(jù)而不是標(biāo)記的情況。CDATA段以 結(jié)束。如:test2.xml b) max=a; 1.2.6 XML元素內(nèi)容元素內(nèi)容 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔結(jié)構(gòu)文檔結(jié)構(gòu) 例1-2:test3.xml: b) max=a; 當(dāng)瀏覽器解釋時(shí),發(fā)現(xiàn)元素內(nèi)容中出現(xiàn)字符,因是CDATA段的 結(jié) 束定界符,所以會(huì)出現(xiàn)錯(cuò)誤,可以通過(guò)在字符和之間插入空格或 者把 字符串分別放到

17、兩個(gè)CDATA段中。 當(dāng)字符數(shù)據(jù)中含有少量的特殊字符,可以采用字符引用或預(yù)定義實(shí)體應(yīng)用 的方式去引用。當(dāng)遇到大量的特殊字符時(shí),可以采用CDATA段進(jìn)行處理。 1.2.6 XML元素內(nèi)容元素內(nèi)容 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔結(jié)構(gòu)文檔結(jié)構(gòu) 注釋 XML注釋與HTML注釋類(lèi)似,以 結(jié)束,位 于其中的數(shù)據(jù)將被XML處理器忽略。注釋可以出現(xiàn)在文檔 中其他標(biāo)記之外的任何位置,還可以在文檔類(lèi)型聲明語(yǔ)法 允許的地方出現(xiàn)。 1、注釋不能出現(xiàn)在XML聲明之前,以下情況不允許 ! note 2、注釋不能出現(xiàn)在標(biāo)記中 如:data 3、注釋可以包圍和隱藏標(biāo)記,在保證剩余的文本仍然是一個(gè) 結(jié)構(gòu)完整的XML文檔。

18、 1.2.6 XML元素內(nèi)容元素內(nèi)容 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔結(jié)構(gòu)文檔結(jié)構(gòu) 例1-3:test4.xml: !- - B 4、字符串“-” 不允許出現(xiàn)在注釋中。如: 5、在XML注釋中不允許以 “- - -”結(jié)尾。 1.2.6 XML元素內(nèi)容元素內(nèi)容 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔結(jié)構(gòu)文檔結(jié)構(gòu) 處理指令(PI) PI:(Processing Instructions)處理指令允許文檔中包含由 應(yīng)用程序來(lái)處理的指令。在XML中包含的一些非XML格式 化的數(shù)據(jù),這些數(shù)據(jù)XML處理器無(wú)法處理,可以通過(guò)才處 理指令來(lái)通知其他應(yīng)用程序來(lái)處理。如使用樣式表的處理 指令如下: 空白處理 在

19、編寫(xiě)XML文檔時(shí)經(jīng)常使用空白(空格、制表符、空行) 來(lái)分隔標(biāo)記,以獲得較好的可讀性。在XML文檔中,可以 在元素中使用一個(gè)特殊的屬性xml:space來(lái)通知應(yīng)用程序 保留此元素中的空白。如: 1.2.6 XML元素內(nèi)容元素內(nèi)容 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔結(jié)構(gòu)文檔結(jié)構(gòu) 行尾處理 XML數(shù)據(jù)以文本的方式保留在計(jì)算機(jī)文件中,以行來(lái)分隔。在XML空 白字符中,有兩個(gè)標(biāo)準(zhǔn)的ASCII碼行尾控制字符:回車(chē)(CR,#xA)和換 行(LF,#xD)。Windows:以#xD#xA作為行分隔符,linux、Unix以#xA 作為行分隔符,Mac OS:以#xD作為行分隔符。XML處理器在解析前, 要將

20、#xD#xA及#xD轉(zhuǎn)換成單個(gè)的#xA字符。 語(yǔ)言標(biāo)識(shí) 通過(guò)在文檔中插入一個(gè)特殊的屬性xml:lang 來(lái)指出XML文檔中任何元 素和屬性的值所使用的語(yǔ)言。如: abcd 1.2.6 XML元素內(nèi)容元素內(nèi)容 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔驗(yàn)證文檔驗(yàn)證 DTD是用來(lái)定義一個(gè)XML文檔的結(jié)構(gòu)及其允許的內(nèi)容、元素 與元素之間關(guān)系的一種機(jī)制。 文檔類(lèi)型聲明必須在XML聲明之后,且在根元素之前。在 XML聲明和文檔類(lèi)型聲明之間可以插入注釋和處理指令。 在XML文檔中引入DTD有兩種方式: 1、直接在XML中定義DTD,如: !DOCTYPE data 1.3 XML文檔驗(yàn)證文檔驗(yàn)證 1.3.1 文

21、檔類(lèi)型定義文檔類(lèi)型定義(DTD) Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔驗(yàn)證文檔驗(yàn)證 DTD中所有的關(guān)鍵字都是大寫(xiě)的,DTD中定義的元素大小寫(xiě)是 任意指定的,但要保持一致。 2、外部DTD 在XML文檔類(lèi)型聲明時(shí),采用SYSTEM或PUBLIC關(guān)鍵字來(lái)指 出外部DTD文件的位置。語(yǔ)法如下: SYSTEM關(guān)鍵字表示文檔使用的是私有的DTD文件。可以使用 相對(duì)路徑或絕對(duì)路徑來(lái)指定DTD文件路徑,DTD文件擴(kuò)展名可 以不為.dtd,但一般采用.dtd。 1.3 XML文檔驗(yàn)證文檔驗(yàn)證 1.3.1 文檔類(lèi)型定義文檔類(lèi)型定義(DTD) Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔驗(yàn)證文檔驗(yàn)證 如: 使用PUBLI

22、C關(guān)鍵字聲明的語(yǔ)法如下: DTD的名稱(chēng)成為公共標(biāo)識(shí)符,DTD可以存放在某個(gè)公共的地方, XML處理程序會(huì)根據(jù)名稱(chēng)按照某種方式去檢索DTD,如果檢索 不到,則使用“外部DTD文件的路徑”來(lái)查找該DTD。 1.3 XML文檔驗(yàn)證文檔驗(yàn)證 1.3.1 文檔類(lèi)型定義文檔類(lèi)型定義(DTD) Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔驗(yàn)證文檔驗(yàn)證 DTD名稱(chēng)只能包含ASCII字母和數(shù)字字符、空格、回車(chē)符、換 行符和一些標(biāo)點(diǎn)符合:-()+,./=:?;!*#$_%。公共DTD名稱(chēng)需 遵守如下約定: ISO批準(zhǔn)的DTD,名稱(chēng)要以字符串“ISO”開(kāi)始 非ISO標(biāo)準(zhǔn)組織批準(zhǔn)的DTD,名稱(chēng)以+開(kāi)始。 非標(biāo)準(zhǔn)組織批準(zhǔn)的DT

23、D,名稱(chēng)以 開(kāi)始。 格式如下: 約定符號(hào)/DTD所有者名字/DTD描述的文檔類(lèi)型/語(yǔ)言標(biāo)識(shí)符 如: -/jack/DTD EX 1.0/ZH 1.3 XML文檔驗(yàn)證文檔驗(yàn)證 1.3.1 文檔類(lèi)型定義文檔類(lèi)型定義(DTD) Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔驗(yàn)證文檔驗(yàn)證 如:HTML文檔常件的文檔類(lèi)型定義: 1.3 XML文檔驗(yàn)證文檔驗(yàn)證 1.3.1 文檔類(lèi)型定義文檔類(lèi)型定義(DTD) Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔驗(yàn)證文檔驗(yàn)證 DTD的結(jié)構(gòu)一般由元素類(lèi)型聲明、屬性表聲明、實(shí)體聲明、記 號(hào)聲明等構(gòu)成。 1、元素類(lèi)型聲明 元素類(lèi)型聲明說(shuō)明了每個(gè)文檔中可能存在的元素,元素名稱(chēng)及元素的具 體類(lèi)

24、型。 元素類(lèi)型聲明采用的語(yǔ)法格式如下: 元素內(nèi)容說(shuō)明包括以下5種可能的元素內(nèi)容形式: PCDATA 關(guān)鍵字PCDATA說(shuō)明元素包括字符數(shù)據(jù)。 1.3.2 DTD結(jié)構(gòu)結(jié)構(gòu) Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔驗(yàn)證文檔驗(yàn)證 例1-3-2:test5.xml: !DOCTYPE book J2EE (2) 子元素 說(shuō)明元素包含的是子元素,當(dāng)一個(gè)元素只包含子元素而無(wú)字符 數(shù)據(jù)時(shí),則稱(chēng)此元素具有元素型內(nèi)容。在該元素的類(lèi)型聲明時(shí), 采用內(nèi)容模型來(lái)指定其在內(nèi)容上的約束。內(nèi)容模型是決定子元 素類(lèi)型和子元素出現(xiàn)順序的一種簡(jiǎn)單語(yǔ)法。 1.3.2 DTD結(jié)構(gòu)結(jié)構(gòu) Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔驗(yàn)證文檔驗(yàn)證 例

25、1-3-2:test7.xml: !DOCTYPE book J2EE 清華大學(xué)出版社 30 用逗號(hào)隔開(kāi)的一系列子元素成為一個(gè)序列,表示這些元素在文檔中要嚴(yán)格 按照序列的順序出現(xiàn)在文檔中。元素聲明的順序可以隨意安排。 1.3.2 DTD結(jié)構(gòu)結(jié)構(gòu) Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔驗(yàn)證文檔驗(yàn)證 例1-3-2:test8.xml: !DOCTYPE book J2EE 清華大學(xué)出版社 30 張三 表明author元素必須要有one或two的其中一個(gè)子元素。 1.3.2 DTD結(jié)構(gòu)結(jié)構(gòu) Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔驗(yàn)證文檔驗(yàn)證 例1-3-2:test9.xml: !DOCTYPE stud

26、ent 張三 20 足球 編程 *:表示可以出現(xiàn)零個(gè)或多個(gè)inter元素 1.3.2 DTD結(jié)構(gòu)結(jié)構(gòu) Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔驗(yàn)證文檔驗(yàn)證 +:表示可以出現(xiàn)一個(gè)或多個(gè)inter元素 ?:表示可以出現(xiàn)零個(gè)或一個(gè)inter元素 括號(hào)、逗號(hào)、豎線(xiàn)、星號(hào)、問(wèn)號(hào)和加號(hào)可以進(jìn)行組合, 說(shuō)明很 復(fù)雜的內(nèi)容模型。 如: 1.3.2 DTD結(jié)構(gòu)結(jié)構(gòu) Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔驗(yàn)證文檔驗(yàn)證 (3) 混合內(nèi)容 元素既可以包括字符數(shù)據(jù),也可以包括子元素,混合內(nèi)容必須被定義零 個(gè)或多個(gè)。 例:1-3-2:test10.xml !DOCTYPE student xx 20 表示student可以包含

27、零個(gè)或多個(gè)字符數(shù)據(jù),包含零個(gè)或多個(gè)age子元素。 1.3.2 DTD結(jié)構(gòu)結(jié)構(gòu) Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔驗(yàn)證文檔驗(yàn)證 在使用混合內(nèi)容模型時(shí),#PCDATA關(guān)鍵字必須是模型中的第 一個(gè)選項(xiàng),不能在模型中使用逗號(hào),問(wèn)號(hào)或加號(hào)。 (4) EMPTY EMPTY關(guān)鍵字表明該元素既不包含字符數(shù)據(jù),也不包含子元 素,是一個(gè)空元素。如: (5) ANY ANY關(guān)鍵字表明該元素可以包含任何的字符數(shù)據(jù)和子元素。 如: 1.3.2 DTD結(jié)構(gòu)結(jié)構(gòu) Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔驗(yàn)證文檔驗(yàn)證 2、實(shí)體聲明 對(duì)經(jīng)常出現(xiàn)的、重復(fù)使用的內(nèi)容可以采用定義實(shí)體,當(dāng)XML處 理器對(duì)文檔進(jìn)行分析處理后,引用實(shí)體的

28、位置會(huì)被實(shí)體所替換。 實(shí)體分一般實(shí)體和參數(shù)實(shí)體,一般實(shí)體是在文檔內(nèi)容中使用的 實(shí)體,參數(shù)實(shí)體則是在DTD中使用的已分析的實(shí)體。 一般實(shí)體的聲明語(yǔ)法: 引用實(shí)體的方式為:“” 例:1-3-2:test11.xml 1.3.2 DTD結(jié)構(gòu)結(jié)構(gòu) Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔驗(yàn)證文檔驗(yàn)證 !DOCTYPE book 1.3.2 DTD結(jié)構(gòu)結(jié)構(gòu) Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔驗(yàn)證文檔驗(yàn)證 參數(shù)實(shí)體只能在DTD中使用,聲明語(yǔ)法如下: 引用實(shí)體的方式:“%實(shí)體名;” 例1-3-2:test12.dtd: 1.3.2 DTD結(jié)構(gòu)結(jié)構(gòu) Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔驗(yàn)證文檔驗(yàn)證 test12

29、.xml: xx 內(nèi)部實(shí)體和外部實(shí)體: 內(nèi)部實(shí)體在XML文檔內(nèi)部定義,實(shí)體的內(nèi)容在聲明中給出。內(nèi) 部實(shí)體都是已分析的實(shí)體。一般實(shí)體和參數(shù)實(shí)體可以成為內(nèi)部 一般實(shí)體和內(nèi)部參數(shù)實(shí)體。 1.3.2 DTD結(jié)構(gòu)結(jié)構(gòu) Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔驗(yàn)證文檔驗(yàn)證 外部實(shí)體在單獨(dú)的文件中定義,外部實(shí)體可以是已分 析實(shí)體,也可以是未分析實(shí)體。外部一般實(shí)體的聲 明形式如下: a.xml內(nèi)容如下: 2008,J2EE,All rights reserved 公共的外部一般實(shí)體聲明形式如下: 1.3.2 DTD結(jié)構(gòu)結(jié)構(gòu) Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔驗(yàn)證文檔驗(yàn)證 3、屬性表聲明 聲明格式如下: 屬性類(lèi)型

30、共有10種類(lèi)型,默認(rèn)聲明共有4種,默認(rèn)聲明用于說(shuō) 明在元素中該屬性是否必須出現(xiàn),如果不是必須出現(xiàn),當(dāng)沒(méi)有 出現(xiàn)時(shí),XML處理器該如何處理。 #REQUIRED 說(shuō)明必須為該元素提供屬性,見(jiàn) test13.xml。 #IMPLIED 說(shuō)明該元素可以包含該屬性,也可以不包含該屬性。 1.3.2 DTD結(jié)構(gòu)結(jié)構(gòu) Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔驗(yàn)證文檔驗(yàn)證 #FIXED 默認(rèn)值 說(shuō)明一個(gè)固定的屬性默認(rèn)值,文檔的編寫(xiě)者不能修改該屬性值。 例1-3-2:見(jiàn)test14.xml 只有默認(rèn)值 用該種方式聲明的屬性可以被修改。 例1-3-2:見(jiàn)test15.xml 屬性類(lèi)型 CDATA 表明屬性值為字符數(shù)

31、據(jù) 枚舉類(lèi)型 1.3.2 DTD結(jié)構(gòu)結(jié)構(gòu) Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔驗(yàn)證文檔驗(yàn)證 如: ID、IDREF、IDREFS 一個(gè)ID類(lèi)型的屬性值唯一標(biāo)識(shí)XML文檔中的一個(gè)元素。 見(jiàn)test16.xml 通過(guò)IDREF可以建立元素之間的關(guān)系。見(jiàn):test17.xml 如果一個(gè)屬性需要引用多個(gè)ID類(lèi)型的屬性值,則可以聲明為 IDREFS類(lèi)型。見(jiàn):test18.xml ENTITY、ENTITIES ENTITY類(lèi)型的屬性將外部的二進(jìn)制數(shù)據(jù)鏈接到文檔, ENTITIES類(lèi)型的屬性是將多個(gè)以空格分隔的ENTITY類(lèi)型鏈接 至文檔。 1.3.2 DTD結(jié)構(gòu)結(jié)構(gòu) Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔

32、驗(yàn)證文檔驗(yàn)證 如: 記號(hào)gif的聲明 采用引用圖像。 如果引用多個(gè): 聲明為: 則采用引用圖像。 1.3.2 DTD結(jié)構(gòu)結(jié)構(gòu) Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔驗(yàn)證文檔驗(yàn)證 NMTOKEN、NMTOKENS(名稱(chēng)標(biāo)記) NMTOKEN名稱(chēng)標(biāo)記是任何字符的混合體,只能包含名稱(chēng)字符, 不能包含空白字符。如限制書(shū)名不能有空格,聲明如下: NMTOKENS表示由多個(gè)名稱(chēng)標(biāo)記組成,各名稱(chēng)標(biāo)記之間采用 空格隔開(kāi)。如: 1.3.2 DTD結(jié)構(gòu)結(jié)構(gòu) Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔驗(yàn)證文檔驗(yàn)證 4、記號(hào)聲明 采用記號(hào)聲明,為非XML數(shù)據(jù)描述一種可能的格式或 指定一個(gè) 外部的處理程序。 記號(hào)聲明有兩種形式

33、: 一種是采用MIME類(lèi)型,聲明如下: 另一種是采用URI路徑指出外部處理程序的路徑,聲 明如下: 1.3.2 DTD結(jié)構(gòu)結(jié)構(gòu) Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML文檔驗(yàn)證文檔驗(yàn)證 格式良好的XML文檔:遵守XML規(guī)范即可。 有效的XML文檔:遵守XML規(guī)范且遵守相應(yīng)的DTD約 束。 1.4 有效的有效的XML Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) DTD的缺點(diǎn): 它使用自己的一套語(yǔ)法,與文檔實(shí)例的語(yǔ)法截然不同。 目前幾乎沒(méi)有解析器能夠簡(jiǎn)便地訪問(wèn)它們所處理的 DTD中的聲明; DTD提供的條件選擇結(jié)構(gòu)不能實(shí)現(xiàn)動(dòng)態(tài)創(chuàng)建DTD DTD是一種封閉的結(jié)構(gòu) DTD在數(shù)據(jù)類(lèi)型信息方面也存在一定的缺陷。 DTD 文檔 We

34、b開(kāi)發(fā)技術(shù)XML基礎(chǔ) Schema的優(yōu)點(diǎn): 更豐富的數(shù)據(jù)類(lèi)型,支持布爾值、整數(shù)、日期和時(shí)間、統(tǒng) 一資源描述符(Uniform RestoreIdentifierURL)、整數(shù)、 小數(shù)、實(shí)數(shù)、時(shí)間間隔等。 支持用戶(hù)定義的類(lèi)型(稱(chēng)做原型archetype),這樣用戶(hù) 可以定義自己命名的數(shù)據(jù)類(lèi)型。 支持屬性組,這使得模式作者可以顯式的定義幾個(gè)元素之 間的關(guān)系。 可精簡(jiǎn)的原型或繼承關(guān)系,這允許出現(xiàn)比DTD定義的閉合 模型更有靈活性的內(nèi)容模型。 支持命名空間支持,這使得使用了命名空間的文檔的確認(rèn) 能夠更簡(jiǎn)單 Schema 文檔 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) DTD vs Schema: Schema 文檔

35、Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) DTD vs Schema: Schema 文檔 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) DTD vs Schema: Schema 文檔 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) DTD vs Schema: Tove Jani Reminder Dont forget me this weekend! Schema 文檔 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) 轉(zhuǎn)成DTD Schema 文檔 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) 轉(zhuǎn)成Schema Schema 文檔 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) Schema支持的原子類(lèi)型 string:字符數(shù)據(jù) boolean:布爾值 date:日期 dateTime:當(dāng)前時(shí)間,由日期和

36、時(shí)間構(gòu)成 time:24小時(shí)格式的時(shí)間 decimal:任意精度和位數(shù)的十進(jìn)制數(shù) integer:整數(shù) float:三十二位浮點(diǎn)數(shù) Schema 文檔 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) 用于定義簡(jiǎn)單數(shù)據(jù)類(lèi)型規(guī)則的關(guān)鍵字 Schema 文檔 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML名稱(chēng)空間名稱(chēng)空間 在一個(gè)XML文檔中可以包含許多元素和屬性,當(dāng)使用其 他人的XML文檔或在文檔中使用多個(gè)DTD文件時(shí),可能 出現(xiàn)名稱(chēng)相同的元素卻代表截然不同的含義,為了解決 這一問(wèn)題,通過(guò)給元素或?qū)傩约右幻Q(chēng)空間來(lái)唯一標(biāo)識(shí)。 1.4.1 什么是什么是XML名稱(chēng)空間名稱(chēng)空間 1.4.2 XML名稱(chēng)空間聲明名稱(chēng)空間聲明 如: 采用來(lái)限定引

37、用 注意:xml、xmlns不能用于名稱(chēng)空間前綴。 Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML名稱(chēng)空間名稱(chēng)空間 (2) URI標(biāo)識(shí)的是默認(rèn)的名稱(chēng)空間,屬性值可以為空。如: 例:1-4-1.xml,1-4-2.xml 一個(gè)元素可以有多個(gè)名稱(chēng)空間前綴作為其屬性。 例:1-4-3.xml 1.4.2 XML名稱(chēng)空間聲明名稱(chēng)空間聲明 1.4.3 默認(rèn)名稱(chēng)空間聲明默認(rèn)名稱(chēng)空間聲明 采用無(wú)前綴名的xmlns屬性將默認(rèn)的名稱(chēng)空間附加給元素 及其子元素。 例:1-4-4.xml Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML名稱(chēng)空間名稱(chēng)空間 可以給屬性添加名稱(chēng)空間 例:1-4-5.xml 1.4.4 屬性添加名稱(chēng)空間屬性添加名稱(chēng)空間

38、 1.4.4 名稱(chēng)空間與名稱(chēng)空間與DTD 如果文檔中的元素使用了名稱(chēng)空間,則DTD需要重寫(xiě)。 例:1-4-6.xml 也可以使用默認(rèn)的名稱(chēng)空間 例:1-4-7.xml Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML顯示和轉(zhuǎn)換顯示和轉(zhuǎn)換 CSS:Cascading Style Sheets,層疊樣式表。 通過(guò)處理指令,可以將CSS 應(yīng)用于 XML文檔的顯示,也可以將多個(gè)CSS應(yīng)用于單個(gè) XML文檔。 例:1-5-1.css,1-5-1.xml 1.5.1 采用采用CSS顯示顯示XML Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XML顯示、轉(zhuǎn)換技術(shù) 基本思想: Web開(kāi)發(fā)技術(shù)XML基礎(chǔ) XSL:Extensible Style Lanuage,可擴(kuò)展

溫馨提示

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

評(píng)論

0/150

提交評(píng)論