WEB開發(fā)技術(shù)-第5章-可擴(kuò)展標(biāo)記語(yǔ)言XML課件_第1頁(yè)
WEB開發(fā)技術(shù)-第5章-可擴(kuò)展標(biāo)記語(yǔ)言XML課件_第2頁(yè)
WEB開發(fā)技術(shù)-第5章-可擴(kuò)展標(biāo)記語(yǔ)言XML課件_第3頁(yè)
WEB開發(fā)技術(shù)-第5章-可擴(kuò)展標(biāo)記語(yǔ)言XML課件_第4頁(yè)
WEB開發(fā)技術(shù)-第5章-可擴(kuò)展標(biāo)記語(yǔ)言XML課件_第5頁(yè)
已閱讀5頁(yè),還剩137頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第5章可擴(kuò)展標(biāo)記語(yǔ)言XML12/9/20221《WEB開發(fā)技術(shù)實(shí)用教程》第5章可擴(kuò)展標(biāo)記語(yǔ)言XML12/9/20221《WEB開發(fā)了解XML基礎(chǔ)以及應(yīng)用XML的背景了解XML的兩種驗(yàn)證機(jī)制DTD和XSM學(xué)習(xí)和比較展示XML文件的兩種方式:CSS和XSLTXSLT在轉(zhuǎn)換XML的具體實(shí)現(xiàn)教學(xué)目的12/9/20222《WEB開發(fā)技術(shù)實(shí)用教程》了解XML基礎(chǔ)以及應(yīng)用XML的背景教學(xué)目的12/9/2022教學(xué)內(nèi)容12/9/20223《WEB開發(fā)技術(shù)實(shí)用教程》5.3CSS顯示XML5.4XSLT轉(zhuǎn)換XML5.4.1XPath基礎(chǔ)5.4.2XSLT的基本結(jié)構(gòu)5.4.3用XSLT顯示XML5.1XML基礎(chǔ)5.1.1什么是XML5.1.2XML的相關(guān)技術(shù)5.1.3建立XML文件5.1.4XML的命名空間5.1.5XML的數(shù)據(jù)島5.2XML驗(yàn)證機(jī)制5.2.1文檔類型定義DTD5.2.2XML模式定義語(yǔ)言教學(xué)內(nèi)容12/9/20223《WEB開發(fā)技術(shù)實(shí)用教程》5.3數(shù)據(jù)在表示內(nèi)容方面分成兩種形式:(1)結(jié)構(gòu)性的數(shù)據(jù):文件中的數(shù)據(jù)是經(jīng)過(guò)分析和處理過(guò)的,具有一定的結(jié)構(gòu)格式。結(jié)構(gòu)性的數(shù)據(jù)形式方便信息處理、存儲(chǔ)和應(yīng)用。但是往往必須借助于特定軟件工具表現(xiàn)數(shù)據(jù)。(2)非結(jié)構(gòu)性的數(shù)據(jù):這是在計(jì)算機(jī)世界中大量存在的數(shù)據(jù)形式。例如,文本文件、電子郵件、html網(wǎng)頁(yè)、WinWord2003的doc文件等包含的數(shù)據(jù)。這種形式的數(shù)據(jù)與結(jié)構(gòu)性數(shù)據(jù)比較,可以發(fā)現(xiàn),它們可以表示一定數(shù)據(jù)內(nèi)容,但是這些內(nèi)容之間不能直接體現(xiàn)之間的聯(lián)系,也沒(méi)有有效的方式來(lái)表達(dá)這些數(shù)據(jù)之間是否存在關(guān)系。XML結(jié)合結(jié)構(gòu)性的數(shù)據(jù)和非結(jié)構(gòu)性的數(shù)據(jù)的優(yōu)點(diǎn),將不同文件格式的文件數(shù)據(jù),在保持?jǐn)?shù)據(jù)一致性的同時(shí),進(jìn)行內(nèi)容轉(zhuǎn)換和良好地顯示,達(dá)到實(shí)現(xiàn)數(shù)據(jù)的共享的目的.5.1XML基礎(chǔ)12/9/20224《WEB開發(fā)技術(shù)實(shí)用教程》數(shù)據(jù)在表示內(nèi)容方面分成兩種形式:5.1XML基礎(chǔ)12/9/XML是eXtenibleMarkupLanguage的簡(jiǎn)稱,它代表可擴(kuò)展標(biāo)記語(yǔ)言。1996年,W3C聯(lián)盟組織XML工作組來(lái)研究新的標(biāo)記語(yǔ)言XML。1998年2月,W3C正式推薦了XML1.0標(biāo)準(zhǔn)。XML語(yǔ)言的基本原理與SGML語(yǔ)言一致,就是只定義數(shù)據(jù)內(nèi)容,不嵌入任何過(guò)程和處理內(nèi)容。定義后的文件可以與多種技術(shù)結(jié)合重新編碼形成多種的應(yīng)用。XML語(yǔ)言的重點(diǎn)就是定義數(shù)據(jù)的內(nèi)容,然后結(jié)合其他技術(shù)表現(xiàn)數(shù)據(jù)。5.1.1什么是XML12/9/20225《WEB開發(fā)技術(shù)實(shí)用教程》XML是eXtenibleMarkupLanguage的XML的特點(diǎn)(1)擴(kuò)展性(2)靈活性(3)自描述性(4)簡(jiǎn)單性XML的應(yīng)用領(lǐng)域XML實(shí)現(xiàn)了數(shù)據(jù)和顯示的分離XML實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)和共享XML實(shí)現(xiàn)數(shù)據(jù)的交換XML大量應(yīng)用于WEB應(yīng)用。XML為網(wǎng)絡(luò)應(yīng)用提供強(qiáng)大支持。5.1.1什么是XML12/9/20226《WEB開發(fā)技術(shù)實(shí)用教程》XML的特點(diǎn)5.1.1什么是XML12/9/20226《W5.1.2XML的相關(guān)技術(shù)數(shù)據(jù)驗(yàn)證實(shí)現(xiàn)超級(jí)鏈接實(shí)現(xiàn)數(shù)據(jù)查詢數(shù)據(jù)顯示XMLCSSXSL/XSLTDTDXMLSchemaXLinkXPointerXQueryCSS:CSS往往和XML結(jié)合,將XML文件中的數(shù)據(jù)以一定格式顯示出來(lái)。XSL/XSLT:XSL是eXtensibleStyleSheetLanguage,表示擴(kuò)展樣式表語(yǔ)言。XSL由三個(gè)組成構(gòu)成,XSLT(擴(kuò)展樣式表語(yǔ)言轉(zhuǎn)換)XPathXSL-FO12/9/20227《WEB開發(fā)技術(shù)實(shí)用教程》5.1.2XML的相關(guān)技術(shù)XMLCSSXSL/XSLTD5.1.2XML的相關(guān)技術(shù)XLink和XPointer:XLink和XPointer結(jié)合使用。XLink和XPointer可以實(shí)現(xiàn)訪問(wèn)鏈接資源的作用。其中:XLink全稱為XMLLinkingLanguage,表示XML鏈接語(yǔ)言。XLink可以插入XML元素,實(shí)現(xiàn)創(chuàng)建和描述資源的鏈接作用。XPointer是XMLPointerLanguage的簡(jiǎn)寫,表示XML指針語(yǔ)言。XPointer能讓超級(jí)鏈接指向XML文檔的片段。XQuery:XQuery是XML查詢語(yǔ)言。XQuery是一種查找和提取XML元素與屬性的語(yǔ)言。DTD:是DocumentTypeDefinition文檔類型定義。定義XML文件的文檔結(jié)構(gòu)。通過(guò)DTD可以實(shí)現(xiàn)XML文件數(shù)據(jù)的驗(yàn)證。XMLSchema:通常把XMLSchema規(guī)范視為XMLSchemaDefinition(XML模式定義),簡(jiǎn)寫成XSD。XSD可以實(shí)現(xiàn)XML文件的語(yǔ)法檢查以及數(shù)據(jù)的驗(yàn)證。12/9/20228《WEB開發(fā)技術(shù)實(shí)用教程》5.1.2XML的相關(guān)技術(shù)XLink和XPointer:XML是一個(gè)自描述性的具有良構(gòu)(Well-formed)的標(biāo)記語(yǔ)言。可以用XML語(yǔ)言定義XML文件。在W3C推薦的XML1.0說(shuō)明書明確說(shuō)明了“如果一個(gè)數(shù)據(jù)對(duì)象滿足本規(guī)范中格式正確的定義時(shí),它是一個(gè)XML文件”。5.1.3建立XML文件12/9/20229《WEB開發(fā)技術(shù)實(shí)用教程》XML是一個(gè)自描述性的具有良構(gòu)(Well-formed)的標(biāo)XML文件是由數(shù)字字符和各種類型的標(biāo)記所構(gòu)成,從邏輯上可以將XML文件由:處理指令文件聲明標(biāo)記實(shí)體引用注釋PCDATA段和CDATA段一個(gè)XML示例,見程序清單XML5-1.xml。在IE瀏覽器的運(yùn)行結(jié)果。5.1.3建立XML文件12/9/202210《WEB開發(fā)技術(shù)實(shí)用教程》XML文件是由數(shù)字字符和各種類型的標(biāo)記所構(gòu)成,從邏輯上可以將處理指令XML文件的處理指令是向應(yīng)用程序傳遞的特殊指令。處理指令必須處于XML文件首部。例如:<?xmlversion="1.0"encoding="UTF-8"?>表示該XML文件的版本是1.0,采用的字符集是“UTF-8”5.1.3建立XML文件12/9/202211《WEB開發(fā)技術(shù)實(shí)用教程》處理指令5.1.3建立XML文件12/9/202211《文檔類型定義(DTD)XML文件通過(guò)DOCTYPE文件類型聲明說(shuō)明文件的使用的文法,定義了XML文件的元素、屬性、以及實(shí)體等多項(xiàng)內(nèi)容,具體指明了XML文件文件結(jié)構(gòu)。XML文件確定的使用文法,有兩種方式:指明外部的DTD文件;可以通過(guò)在XML的內(nèi)部的DTD。文件類型定義具體的位于文件首部,第一個(gè)標(biāo)記元素之前。例:<!DOCTYPEmailboxSYSTEM"DTD5-5.dtd">5.1.3建立XML文件12/9/202212《WEB開發(fā)技術(shù)實(shí)用教程》文檔類型定義(DTD)5.1.3建立XML文件12/9/標(biāo)記XML文件中最主要的內(nèi)容是由大量的元素構(gòu)成的。XML文件元素可以是由成對(duì)標(biāo)記中封閉內(nèi)容構(gòu)成,也可以是不包含內(nèi)容的空元素。XML文件中的標(biāo)記具有幾點(diǎn)語(yǔ)法要求,以符合XML文件的良構(gòu)性:XML的標(biāo)記區(qū)分大小寫;標(biāo)記<a>和<A>在XML文件中就是代表兩種不同的標(biāo)記;XML的標(biāo)記必須是封閉的。XML文件中必須有一個(gè)根元素。在XML文件中標(biāo)記的屬性必須通過(guò)雙引號(hào)包含起來(lái),不能忽略。5.1.3建立XML文件12/9/202213《WEB開發(fā)技術(shù)實(shí)用教程》標(biāo)記5.1.3建立XML文件12/9/202213《WE實(shí)體引用實(shí)體引用實(shí)際上就是引用具有特定意義的字符對(duì)象。引用實(shí)體有兩種形式:“&字符串;”例如: “&#實(shí)體編號(hào)”其中實(shí)體編號(hào)是由十六進(jìn)制的數(shù)字構(gòu)成。5.1.3建立XML文件12/9/202214《WEB開發(fā)技術(shù)實(shí)用教程》實(shí)體引用5.1.3建立XML文件12/9/202214《注釋XML文件也定義注釋,注釋的形式同HTML注釋一致,形如“<!--注釋-->”。注釋為XML文件提供必要的解釋說(shuō)明。在應(yīng)用程序使用XML文件時(shí),XML文件的注釋會(huì)被忽略。5.1.3建立XML文件12/9/202215《WEB開發(fā)技術(shù)實(shí)用教程》注釋5.1.3建立XML文件12/9/202215《WEPCDATA段和CDATA段在XML元素中,標(biāo)記之間包含的內(nèi)容就是PCDATA段。CDATA段具有特定的格式標(biāo)明它的特殊性。CDATA片段不會(huì)被應(yīng)用程序進(jìn)行解析,而是全部顯示。在CDATA段中的標(biāo)記與實(shí)體和其他內(nèi)容一起會(huì)原樣顯示。CDATA片段定義形如:<![CDATA[

文本……]]>5.1.3建立XML文件12/9/202216《WEB開發(fā)技術(shù)實(shí)用教程》PCDATA段和CDATA段5.1.3建立XML文件12<book><bookname>計(jì)算機(jī)應(yīng)用</bookname><author>程地</author><publisher>XX出版社</publisher><script><![CDATA[functiongetNumber(number){if(number<0&&number>MAXLEN)returnelse{number++;returnnumber;}}]]></script></book>程序代碼見程序XML5-2.xml,運(yùn)行結(jié)果。5.1.3建立XML文件PCDATA段CDATA段12/9/202217《WEB開發(fā)技術(shù)實(shí)用教程》<book>5.1.3建立XML文件PCDATA段CDAXML命名空間是一組關(guān)于元素和屬性命名惟一的集合的名稱。通過(guò)XML命名空間可以標(biāo)識(shí)和區(qū)分不同的元素和屬性。W3C于1999年初次推薦使用XML命名空間規(guī)范。在該規(guī)范中指出了如下XML命名空間的定義形式。<命名空間前綴:元素名xmlns:命名空間前綴="命名空間URI">定義XML命名空間后,可以直接使用命名空間前綴來(lái)表示命名空間標(biāo)識(shí)符。5.1.4XML的命名空間12/9/202218《WEB開發(fā)技術(shù)實(shí)用教程》XML命名空間是一組關(guān)于元素和屬性命名惟一的集合的名稱。通過(guò)……<sl:studentlistxmlns:sl="/"><sl:student><sl:name>張珊</sl:name><sl:gender>女</sl:gender><school:namexmlns:school="">XXX市北京路232號(hào)

</school:name></sl:student></sl:studentlist>……5.1.4XML的命名空間命名空間前綴命名空間URI12/9/202219《WEB開發(fā)技術(shù)實(shí)用教程》……5.1.4XML的命名空間命名空間前綴命名空間URI可以采用默認(rèn)的命名空間形如“xmlns=命名空間URI”以簡(jiǎn)化文件。將上述的代碼可以改寫成如下內(nèi)容。5.1.4XML的命名空間……<studentlistxmlns:sl="/"xmlns:school=""> <student> <name>張珊</name> <gender>女</gender> <school:name>XXX市北京路232號(hào)

</school:name> </student></studentlist>……12/9/202220《WEB開發(fā)技術(shù)實(shí)用教程》可以采用默認(rèn)的命名空間形如“xmlns=命名空間URI”以簡(jiǎn)XML數(shù)據(jù)島指能被微軟的InternetExplorer5.x以上版本識(shí)別,以及嵌入到HTML中的XML數(shù)據(jù)。通過(guò)XML數(shù)據(jù)島可以將XML數(shù)據(jù)作為一個(gè)整體直接傳入到具有HTML的網(wǎng)頁(yè)中,不需要腳本語(yǔ)言就可以實(shí)現(xiàn)。5.1.5XML的數(shù)據(jù)島12/9/202221《WEB開發(fā)技術(shù)實(shí)用教程》XML數(shù)據(jù)島指能被微軟的InternetExplorer要定義XML數(shù)據(jù)島,這需要在HTML代碼按照下列形式將一個(gè)XML文件聲明XML數(shù)據(jù)島。<xmlid="數(shù)據(jù)島名"src="XML文件URL“>要使用數(shù)據(jù)島還需要實(shí)現(xiàn)XML數(shù)據(jù)綁定到具體HTML元素中:在HTML的元素如table通過(guò)屬性“datasrc”指明使用具體名稱的XML數(shù)據(jù)島。在HTML的元素如div、span中用屬性“datafld”來(lái)綁定到具體的XML數(shù)據(jù)。例將XML數(shù)據(jù)按表格輸出,代碼見HTML5-3.xml,運(yùn)行結(jié)果。5.1.5XML的數(shù)據(jù)島12/9/202222《WEB開發(fā)技術(shù)實(shí)用教程》要定義XML數(shù)據(jù)島,這需要在HTML代碼按照下列形式將一個(gè)XXML文件必須符合XML規(guī)范。在具體表現(xiàn)上,XML文件不單具有嚴(yán)格的XML語(yǔ)法要求,還要求XML文件定義結(jié)構(gòu)在文檔中必須保持一致。為了保證一個(gè)XML文件的良構(gòu)(Well-formed)特點(diǎn)和確保XML文件符合定義規(guī)則,有必要對(duì)XML文件進(jìn)行驗(yàn)證。DTD和XMLSchema常用于XML驗(yàn)證機(jī)制。5.2XML的驗(yàn)證機(jī)制12/9/202223《WEB開發(fā)技術(shù)實(shí)用教程》XML文件必須符合XML規(guī)范。在具體表現(xiàn)上,XML文件不單具DTD(DocumentTypeDefinition,文檔類型定義)是一種XML驗(yàn)證機(jī)制,是XML標(biāo)準(zhǔn)的一部分。DTD可以確定XML文件的合法組成,定義XML文件的結(jié)構(gòu)。DTD可以定義在XML文件內(nèi)部,稱為內(nèi)部DTD。XML文件也可以通過(guò)語(yǔ)句實(shí)現(xiàn)外部DTD的引用。5.2.1文檔類型定義DTD12/9/202224《WEB開發(fā)技術(shù)實(shí)用教程》DTD(DocumentTypeDefinition,文內(nèi)部DTDXML文件中通過(guò)DOCTYPE實(shí)現(xiàn)內(nèi)部DTD的定義。具體DTD內(nèi)容包括在DOCTYPE中。形如:<!DOCTYPE根元素名[<!--定義元素-->…….]>一個(gè)內(nèi)部DTD的應(yīng)用實(shí)例,代碼見XML5-4.xml.5.2.1文檔類型定義DTD12/9/202225《WEB開發(fā)技術(shù)實(shí)用教程》內(nèi)部DTD5.2.1文檔類型定義DTD12/9/202225導(dǎo)入外部DTD外部DTD是導(dǎo)入到XML的DTD。首先,用戶需要按DTD語(yǔ)法規(guī)則定義一個(gè)文件擴(kuò)展名為“dtd”的文件。在這個(gè)DTD文件中確定XML文件的結(jié)構(gòu)及組成。然后在XML文件中通過(guò)DOCTYPE導(dǎo)入該文件。具體的形如:“<!DOCTYPE根元素SYSTEM"文件名">”。5.2.1文檔類型定義DTD12/9/202226《WEB開發(fā)技術(shù)實(shí)用教程》導(dǎo)入外部DTD5.2.1文檔類型定義DTD12/9/2022DTD元素在DTD中聲明XML文件中元素的元素是DTD元素。DTD元素可以說(shuō)明XML的元素標(biāo)記、特定元素的子元素以及元素包含的內(nèi)容。DTD元素可以定義XML文件的元素結(jié)構(gòu),以及反映元素間的相互關(guān)系。DTD元素通過(guò)<!ELEMENT…>實(shí)現(xiàn)定義,語(yǔ)法形式如下:<!ELEMENT元素名稱內(nèi)容>5.2.1文檔類型定義DTD12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼27DTD元素5.2.1文檔類型定義DTD12/9/2022《定義一個(gè)空元素<!ELEMENT元素名稱

EMPTY>例:<!ELEMENThrEMPTY>對(duì)應(yīng)<hr/>5.2.1文檔類型定義DTD12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼28定義一個(gè)空元素5.2.1文檔類型定義DTD12/9/202定義包含內(nèi)容的元素XML包含內(nèi)容的元素具有三種形式:<!ELEMENT元素名稱(#PCDATA)>:#PCDATA表示元素的內(nèi)容是字符數(shù)據(jù)。用DTD定義b元素為:<!ELEMENTb(#PCDATA)><!ELEMENT元素名稱(#CDATA)>:#CDATA表示元素內(nèi)容可以包含了解析器中不可以解析的字符。<!ELEMENT元素名稱(ANY)>:ANY表示元素內(nèi)容可以是任何可以被解析器理解的數(shù)據(jù)組合。例,<!ELEMENTemail(ANY)>5.2.1文檔類型定義DTD12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼29定義包含內(nèi)容的元素5.2.1文檔類型定義DTD12/9/2定義包含子元素的元素XML文件體現(xiàn)了樹型結(jié)構(gòu),元素可以嵌套,即一個(gè)元素中包含了多個(gè)子元素。DTD元素可以定義子元素序列。子元素序列的定義形式如下:<!ELEMENT元素名稱(子元素名稱)>:表示元素中包含一個(gè)子元素。<!ELEMENT元素名稱(子元素1名稱,子元素2名稱,…….)>:表示一個(gè)元素包含了一個(gè)子元素序列。<!ELEMENT元素名稱(子元素1名稱|子元素2名稱|…..)>:表示一個(gè)元素可以包含多種子元素,這些子元素不能同時(shí)嵌套在元素中。5.2.1文檔類型定義DTD12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼30定義包含子元素的元素5.2.1文檔類型定義DTD12/9/規(guī)定DTD元素出現(xiàn)次數(shù)的符號(hào)定義混合型的元素混合型的元素指一個(gè)元素中包含的內(nèi)容具有多種形式,元素內(nèi)容可以是子元素也可以是字符數(shù)據(jù)例如:<!ELEMENTemail(#PCDATA|from|to|body)*>表示email元素可以包含字符數(shù)據(jù)以及子元素from、to和body,這些子元素可以出現(xiàn)零次或多次見程序DTD5-6.dtd和XML5-7.xml.5.2.1文檔類型定義DTD12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼31字符說(shuō)明示例+元素最少出現(xiàn)一次<!ELEMENTmailbox(email+)>*元素可以出現(xiàn)零次或多次<!ELEMENTemail(from,to*,body)>?元素可以出現(xiàn)零次或一次<!ELEMENTemail(from,to,body?)>規(guī)定DTD元素出現(xiàn)次數(shù)的符號(hào)規(guī)定DTD元素出現(xiàn)次數(shù)的符號(hào)5.2.1文檔類型定義DTD1DTD屬性DTD屬性是確定XML元素的屬性的規(guī)則。DTD屬性的聲明是通過(guò)<!ATTLIST….>來(lái)實(shí)現(xiàn)的。具體的語(yǔ)法要求如下:<!ATTLIST元素名稱屬性名稱屬性類型默認(rèn)值……>定義屬性,必須指定屬性的歸屬:元素名稱,以及屬性的性質(zhì),即確定屬性的名稱、屬性的類型、屬性的默認(rèn)值。有幾點(diǎn)說(shuō)明如下:元素名稱:是說(shuō)明要定義屬性的元素;屬性名稱:確定屬性的名字;屬性類型:指定屬性的類別,見教材表5-3.默認(rèn)值:確定給屬性值在沒(méi)有指定時(shí)自動(dòng)具有的內(nèi)容,教材表5-45.2.1文檔類型定義DTD12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼32DTD屬性5.2.1文檔類型定義DTD12/9/2022《DTD實(shí)體實(shí)體實(shí)質(zhì)上是一個(gè)變量,可以快速的引入普通文本或特殊含義的字符。DTD實(shí)體用于定義XML的實(shí)體,是XML實(shí)體引用實(shí)現(xiàn)的保證。DTD的實(shí)體有兩種形式:內(nèi)部實(shí)體和外部實(shí)體。內(nèi)部實(shí)體是在DTD文件內(nèi)部中聲明的實(shí)體。定義的語(yǔ)法形如:“<!ENTITY實(shí)體名實(shí)體值>”。例如在XHTML空格實(shí)體( ;),用DTD定義為“<!ENTITYnbsp” “>”,瀏覽器會(huì)解析成空格。外部實(shí)體是引入其他文件的實(shí)體。聲明的語(yǔ)法形式如:“<!ENTITY實(shí)體名SYSTEM"URI/URL">”。其中,“URI/URL”指定引入實(shí)體的URL地址。5.2.1文檔類型定義DTD12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼33DTD實(shí)體5.2.1文檔類型定義DTD12/9/2022《XMLSchema定義語(yǔ)言(XSDL)與2001年5月2日成為W3C推薦標(biāo)準(zhǔn)的一員。它也是XML驗(yàn)證機(jī)制的一種,可以表達(dá)以及驗(yàn)證XML文件結(jié)構(gòu)。與DTD相比,XMLSchema定義語(yǔ)言在形式上最明顯的特點(diǎn)就是:基于XML具有XML語(yǔ)言的同樣的語(yǔ)法要求繼承了XML語(yǔ)言的良構(gòu)性、靈活性、擴(kuò)展性和簡(jiǎn)單性XMLSchema定義語(yǔ)言克服了DTD中表達(dá)元素屬性和元素內(nèi)容的約束性不足的特點(diǎn)。5.2.2XML模式定義語(yǔ)言12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼34XMLSchema定義語(yǔ)言(XSDL)與2001年5月2日利用XMLSchema定義語(yǔ)言定義的文件稱為XMLSchema文件文件的可擴(kuò)展名為“.xsd”。XMLSchema文件組成:基本結(jié)構(gòu)元素聲明數(shù)據(jù)類型屬性聲明命名空間5.2.2XML模式定義語(yǔ)言12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼35利用XMLSchema定義語(yǔ)言定義的文件稱為XMLSchXMLSchema的基本結(jié)構(gòu)XMLSchema文件實(shí)際上就是一個(gè)XML文件,不同在于指定了這個(gè)XML文件的根元素必須是schema,表示XML文件的模式結(jié)構(gòu)定義。形式如下:<?xmlversion="1.0"encoding="UTF-8"?><xs:schemaxmlns:xs="/2001/XMLSchema"elementFormDefault="qualified"> ……</xs:schema>5.2.2XML模式定義語(yǔ)言12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼36XMLSchema的基本結(jié)構(gòu)5.2.2XML模式定義語(yǔ)言“xs:”(注意有時(shí)也可以寫成“xsd:”)表示文件中的元素和數(shù)據(jù)類型來(lái)自于XMLSchema的命名空間,空間位于“/2001/XMLSchema”中。“elementFormDefault”表示schema的元素屬于目標(biāo)命名空間的默認(rèn)寫法。如果取值為“qualified”,表示任何使用該XSD文件的元素?cái)?shù)據(jù)的XML文件,必須使用同一命名空間.否則取值為“unqualified”。5.2.2XML模式定義語(yǔ)言12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼37“xs:”(注意有時(shí)也可以寫成“xsd:”)表示文件中的元素為了運(yùn)用xsd文件進(jìn)行驗(yàn)證,xml文件內(nèi)必須對(duì)此進(jìn)行說(shuō)明,聲明形式如下:<根元素xmlns:xsi="/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="xsd文件">一個(gè)簡(jiǎn)單實(shí)例,用XSD5-11.xsd驗(yàn)證XML5-12.xml.5.2.2XML模式定義語(yǔ)言12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼38為了運(yùn)用xsd文件進(jìn)行驗(yàn)證,xml文件內(nèi)必須對(duì)此進(jìn)行說(shuō)明,聲XMLSchema元素的聲明XMLSchema元素是用“<xs:element>”來(lái)實(shí)現(xiàn)XMLSchema元素的定義,常見的語(yǔ)法格式如下:<xs:elementname="元素名"type="數(shù)據(jù)類型"default="默認(rèn)值"maxOccurs="最大取值“minOccurs="最小取值"fixed="固定取值“ref="引用元素名">5.2.2XML模式定義語(yǔ)言12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼39XMLSchema元素的聲明5.2.2XML模式定義語(yǔ)言name表示定義XMLSchema元素的命名;該屬性是XMLSchema元素定義必不可少的屬性。type表示XMLSchema元素的取值的性質(zhì),指明屬于的數(shù)據(jù)類型,可以是XMLSchema內(nèi)置基本數(shù)據(jù)類型,也可以是用戶自定義數(shù)據(jù)類型。default表示XMLSchema元素自動(dòng)帶有的默認(rèn)值,除非改變。5.2.2XML模式定義語(yǔ)言12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼40name表示定義XMLSchema元素的命名;該屬性是XMmaxOccurs和minOccurs分別表示XMLSchema元素取值最大和最小范圍,只能取非負(fù)整數(shù)。如果maxOccurs取值為“unbounded”,表示不受限制。如果XMLSchema元素沒(méi)有定義maxOccurs和minOccurs屬性,這兩個(gè)屬性的值默認(rèn)為1。fixed表示元素取一個(gè)固定的值,不能改變。ref表示一個(gè)元素的引用,通常表示引用元素的子元素。該屬性往往結(jié)合XMLSchema復(fù)雜元素的定義。5.2.2XML模式定義語(yǔ)言12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼41maxOccurs和minOccurs分別表示XMLSch基本數(shù)據(jù)類型5.2.2XML模式定義語(yǔ)言12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼42數(shù)據(jù)類型說(shuō)明數(shù)據(jù)類型說(shuō)明 xs:string字符串xs:gYearMonth按Gregorian歷的年月xs:boolean布爾數(shù)xs:gYear按Gregorian歷的年xs:decimal十進(jìn)制數(shù)xs:gMonthDay按Gregorian歷的月日xs:precisionDecimal精確十進(jìn)制數(shù),如-0xs:gDay按Gregorian歷的日xs:float單精度實(shí)數(shù)xs:gMonth按Gregorian歷的月xs:double雙精度實(shí)數(shù)xs:hexBinary十六進(jìn)制編碼的二進(jìn)制數(shù)xs:duration持續(xù)時(shí)間的長(zhǎng)度xs:base64Binary六十四進(jìn)制編碼的二進(jìn)制數(shù)xs:dateTime指定日期時(shí)間xs:QNameXML限制名xs:date日期xs:anyURIURLxs:time時(shí)間,格式hh:mm:ss:ssxs:NOTATION標(biāo)記基本數(shù)據(jù)類型5.2.2XML模式定義語(yǔ)言12/9/2022XMLSchema的屬性聲明XMLSchema元素的屬性是通過(guò)“<xs:attribute>”來(lái)定義的。通過(guò)屬性的定義可以更好地描繪元素的特征和性質(zhì)。XMLSchema屬性聲明的語(yǔ)法形式如下:<xs:attributename="屬性名稱“type="數(shù)據(jù)類型“default="默認(rèn)值“fixed="固定值"id="標(biāo)號(hào)"use="使用性質(zhì)">5.2.2XML模式定義語(yǔ)言12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼43XMLSchema的屬性聲明5.2.2XML模式定義語(yǔ)言name是一個(gè)必選項(xiàng),表示屬性的名稱。type表示屬性所屬的數(shù)據(jù)類型,可以是XMLSchema內(nèi)置的數(shù)據(jù)類型,也可以是用戶自定義的數(shù)據(jù)類型;default與fixed分別表示屬性的取值為默認(rèn)值與固定值,二者不能同時(shí)出現(xiàn)。id表示屬性的唯一標(biāo)號(hào),取值只能是由字符開頭。use表示屬性的性質(zhì),可以表示屬性是:“optional”(可選的)“required”(必選的)“prohibited”(禁止的),默認(rèn)值為optional表示可選的。5.2.2XML模式定義語(yǔ)言12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼44name是一個(gè)必選項(xiàng),表示屬性的名稱。5.2.2XML模式簡(jiǎn)單元素簡(jiǎn)單元素只定義元素的內(nèi)容。對(duì)于元素的內(nèi)容可以根據(jù)實(shí)際情況,帶有默認(rèn)值或固定值。例如XSDL描述以下語(yǔ)句:<xs:elementname="class"type="xs:string"fixed="計(jì)算機(jī)2班">該語(yǔ)句對(duì)應(yīng)的XML內(nèi)容可以是:“<class>計(jì)算機(jī)2班</class>”。5.2.2XML模式定義語(yǔ)言12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼45簡(jiǎn)單元素5.2.2XML模式定義語(yǔ)言12/9/2022《W復(fù)雜元素不包括簡(jiǎn)單元素的元素就是復(fù)雜元素。復(fù)雜元素表示多種特殊情況的元素,復(fù)雜元素可以是:嵌套子元素包含文本的元素空元素包含屬性的元素包含屬性和文本內(nèi)容的元素5.2.2XML模式定義語(yǔ)言12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼46復(fù)雜元素5.2.2XML模式定義語(yǔ)言12/9/2022《W嵌套子元素的元素嵌套子元素的元素的定義基本形式如下:<xs:elementname="元素"><xs:complexType>…</xs:complexType><xs:element>嵌套子元素的元素的代碼片段,對(duì)應(yīng)的XML片段如下.5.2.2XML模式定義語(yǔ)言12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼47嵌套子元素的元素5.2.2XML模式定義語(yǔ)言12/9/20包含子元素和文本的元素如果要定義包含子元素有要定義元素本身內(nèi)容的文本取值,就需要對(duì)xs:complexType的一個(gè)屬性mixed進(jìn)行說(shuō)明。通常情況,xs:complexType的mixed屬性默認(rèn)值為“false”,表示只定義XML元素。如果需要包含文本和子元素,則要將mixed屬性設(shè)定為“true”。包含子元素和文本的元素的程序片段,對(duì)應(yīng)的XML片段如下所示。5.2.2XML模式定義語(yǔ)言12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼48包含子元素和文本的元素5.2.2XML模式定義語(yǔ)言12/9空元素空元素是不包含文本內(nèi)容的元素。用XMLSchema實(shí)現(xiàn)XML元素的定義是要利用xs:complexContent元素來(lái)實(shí)現(xiàn)的。xs:complexContent元素是xs:complexType的子元素,通常是用于xs:complexType元素的擴(kuò)展或限制。該元素有常見兩個(gè)屬性:屬性id:表示為元素指定唯一的編號(hào);屬性mixed:用于定義混合內(nèi)容。默認(rèn)值為false,表示元素內(nèi)容不允許出現(xiàn)在子元素中,如果設(shè)定true,表示子元素可以出現(xiàn)元素內(nèi)容。包含空元素的程序片段,對(duì)應(yīng)的XML片段如下所示。5.2.2XML模式定義語(yǔ)言12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼49空元素5.2.2XML模式定義語(yǔ)言12/9/2022《WE包含屬性的元素通常XML元素帶有一些屬性,帶屬性的XML元素可以通過(guò)XMLSchema的xs:simpleContent元素來(lái)實(shí)現(xiàn)。xs:simpleContent元素作為xs:complexType的子元素,通常用于擴(kuò)展或限制帶有文本內(nèi)容復(fù)雜類型元素和簡(jiǎn)單類型的元素。它有兩個(gè)子元素xs:extension和xs:restriction:xs:extension元素用于元素的擴(kuò)展;xs:restriction元素用于限制元素,設(shè)置元素的約束條件。包含屬性的元素的程序片段,對(duì)應(yīng)的XML片段如下所示。5.2.2XML模式定義語(yǔ)言12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼50包含屬性的元素5.2.2XML模式定義語(yǔ)言12/9/202用XML可以定義文件內(nèi)容,這些內(nèi)容最終是顯示給用戶瀏覽查看。CSS層疊樣式表(見第3章)是可以顯示XML文件的一種常見方式。通常,利用外部CSS文件顯示XML內(nèi)容,充分體現(xiàn)了內(nèi)容和顯示分離的要求。5.3CSS顯示XML12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼51用XML可以定義文件內(nèi)容,這些內(nèi)容最終是顯示給用戶瀏覽查看。具體做法是將定義顯示樣式的內(nèi)容定義到一個(gè)獨(dú)立的CSS文件中,然后在XML文件中利用下列的語(yǔ)法格式指定CSS文件。<?xml-stylesheettype=“text/css”href=“CSS文件”?>type屬性指明了樣式的種類為“text/css”;href屬性指明了外部的CSS文件。用CSS顯示XML的應(yīng)用實(shí)例,CSS文件見代碼CSS5-15.css,XML文件見代碼XML5-14.xml,運(yùn)行結(jié)果.5.3CSS顯示XML12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼52具體做法是將定義顯示樣式的內(nèi)容定義到一個(gè)獨(dú)立的CSS文件中,XSLT表示XMLStylesheetLanguageTransformation,表示XML樣式表語(yǔ)言轉(zhuǎn)換。它是基于XML,具有XML的基本語(yǔ)法要求.當(dāng)前的版本是XSLT2.0,是1999年推出的XSLT1.0的修正版。5.4XSLT轉(zhuǎn)換XML12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼53XSLT表示XMLStylesheetLanguageXSLT可以實(shí)現(xiàn)按照特定格式顯示XML文件的內(nèi)容。但不同在于CSS僅僅設(shè)置XML文件的格式,XML文件的內(nèi)容不變。而XSLT是將一個(gè)XML文件轉(zhuǎn)換成另外一個(gè)格式的XML文件,文件的內(nèi)容發(fā)生變化。XSLT就好比一個(gè)模板,XML文件按照模板進(jìn)行處理。5.4XSLT轉(zhuǎn)換XML12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼54XSLT的工作原理XSLT可以實(shí)現(xiàn)按照特定格式顯示XML文件的內(nèi)容。但不同在于XPath全稱是XMLPathLanguage,表示XML路徑語(yǔ)言。XPath也是XSL的組成部分之一。XPath的重要作用就是實(shí)現(xiàn)XML文件的導(dǎo)航。通過(guò)導(dǎo)航實(shí)現(xiàn)XML文件內(nèi)部的定位,實(shí)現(xiàn)對(duì)XML文件的元素、屬性、文本數(shù)據(jù)等內(nèi)容的訪問(wèn)。但是作為XSL的組成,XPath并不是基于XML的語(yǔ)法,而是采用類似目錄結(jié)構(gòu)的簡(jiǎn)潔語(yǔ)法內(nèi)容。5.4.1XPATH基礎(chǔ)12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼55XPath全稱是XMLPathLanguage,表示XMXPATH的組成:XPath的節(jié)點(diǎn)XPath位置路徑XPath的軸XPath的運(yùn)算符5.4.1XPATH基礎(chǔ)12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼56XPATH的組成:5.4.1XPATH基礎(chǔ)12/9/202XPath的節(jié)點(diǎn)XPath將XML文檔視之為節(jié)點(diǎn)樹節(jié)點(diǎn)樹中由節(jié)點(diǎn)構(gòu)成各個(gè)節(jié)點(diǎn)可以表示XML文檔的元素或?qū)傩曰蚱渌麅?nèi)容。5.4.1XPATH基礎(chǔ)12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼57名稱說(shuō)明(以程序清單5-14為例)根(文檔)節(jié)點(diǎn)表示XML文件的層次結(jié)構(gòu)的頂層,如studentlist元素節(jié)點(diǎn)表示XML元素,如student,id,name,birthday,gender屬性節(jié)點(diǎn)表示XML元素的屬性文本節(jié)點(diǎn)表示XML文件的文本數(shù)據(jù)內(nèi)容命名空間節(jié)點(diǎn)表示XML命名空間前綴/URI對(duì)處理指令節(jié)點(diǎn)表示XML文件的處理指令注釋節(jié)點(diǎn)表示XML文件的注釋XPath的節(jié)點(diǎn)5.4.1XPATH基礎(chǔ)12/9/2022XPath的軸XPath的節(jié)點(diǎn)之間并不是孤立的,而是存在特定的關(guān)系。XPath將節(jié)點(diǎn)的關(guān)系定義為軸。父(Parent):每一個(gè)元素和屬性都有一個(gè)父。子(Children):元素節(jié)點(diǎn)的分支。兄弟(Sibling):具有相同父節(jié)點(diǎn)的節(jié)點(diǎn)。祖先(Ancestor):節(jié)點(diǎn)的前續(xù)節(jié)點(diǎn)。后代(Descendant):節(jié)點(diǎn)的后續(xù)節(jié)點(diǎn)。5.4.1XPATH基礎(chǔ)12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼58XPath的軸5.4.1XPATH基礎(chǔ)12/9/2022《XPath的位置路徑位置路徑是XPath的重要語(yǔ)法內(nèi)容。位置路徑是XPath的表達(dá)式,可以描述其他節(jié)點(diǎn)相對(duì)于一個(gè)起點(diǎn)(當(dāng)前節(jié)點(diǎn))的位置。位置路徑的作用是從當(dāng)前節(jié)點(diǎn)開始,選擇滿足條件相對(duì)于起點(diǎn)位置的相關(guān)節(jié)點(diǎn)或節(jié)點(diǎn)集。XPath有絕對(duì)定位和相對(duì)定位兩種方式。絕對(duì)定位表示從根節(jié)點(diǎn)開始定位的方式,在設(shè)置時(shí)需要使用運(yùn)算符“/”。相對(duì)定位是當(dāng)前節(jié)點(diǎn)開始的定位方式,利用運(yùn)算符“//”實(shí)現(xiàn)。5.4.1XPATH基礎(chǔ)12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼59XPath的位置路徑5.4.1XPATH基礎(chǔ)12/9/20XPath的運(yùn)算符運(yùn)算符實(shí)現(xiàn)選擇滿足特定條件的節(jié)點(diǎn)。5.4.1XPATH基礎(chǔ)12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼60運(yùn)算符說(shuō)明/從根節(jié)點(diǎn)開始//從所在節(jié)點(diǎn)開始選擇所有的后輩節(jié)點(diǎn).表示當(dāng)前節(jié)點(diǎn)..表示父節(jié)點(diǎn)*表示所有元素節(jié)點(diǎn)@表示元素的屬性,@*表示元素的所有屬性node()表示任何類型的節(jié)點(diǎn)[]選擇運(yùn)算,內(nèi)含謂詞,謂詞表示XPath的導(dǎo)航特定條件|組合位置路徑,實(shí)現(xiàn)多個(gè)路徑XPath的運(yùn)算符5.4.1XPATH基礎(chǔ)12/9/202運(yùn)算符組合,可以形成XPath路徑表達(dá)式。通過(guò)XPath的路徑表達(dá)式來(lái)導(dǎo)航特定條件的節(jié)點(diǎn)或節(jié)點(diǎn)集。例如,已知XML文件的樹型結(jié)構(gòu)如下圖所示,則寫出選擇list下層student元素的所有子元素的XPath的路徑表達(dá)式:/list/student5.4.1XPATH基礎(chǔ)12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼61運(yùn)算符組合,可以形成XPath路徑表達(dá)式。通過(guò)XPath的路XSLT可轉(zhuǎn)換XML數(shù)據(jù),將XML數(shù)據(jù)轉(zhuǎn)換成其他形式的文檔。與XPath不同在于,XSLT是基于XML的,它具有XML的語(yǔ)法要求。作為轉(zhuǎn)換XML的一種樣式表定義形式,XSLT也具有其自身的特點(diǎn)。5.4.2XSLT的基本結(jié)構(gòu)12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼62XSLT可轉(zhuǎn)換XML數(shù)據(jù),將XML數(shù)據(jù)轉(zhuǎn)換成其他形式的文檔。XSLT的基本結(jié)構(gòu)如下:<?xmlversion="1.0"encoding="UTF-8"?><xsl:stylesheetversion=版本號(hào)xmlns:xsl="/1999/XSL/Transform"> ……<!--加入XSLT元素--></xsl:stylesheet>5.4.2XSLT的基本結(jié)構(gòu)12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼63XSLT的基本結(jié)構(gòu)如下:5.4.2XSLT的基本結(jié)構(gòu)12/XSLT的基本元素(1)<xsl:template>元素“xsl:template”元素是模板元素,用于定義XML元素的轉(zhuǎn)換規(guī)則。“xsl:template”元素有一個(gè)重要屬性“match”。這個(gè)屬性的作用是利用XPath表達(dá)式指出需要套用模板的XML元素的位置路徑。對(duì)于符合XPath導(dǎo)航條件的位置路徑,則需要按模板的定義進(jìn)行轉(zhuǎn)換。5.4.2XSLT的基本結(jié)構(gòu)12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼64XSLT的基本元素5.4.2XSLT的基本結(jié)構(gòu)12/9/(2)<xsl:value-of>元素“xsl:value-of”元素是內(nèi)容元素。該元素的最主要作用是獲取XML數(shù)據(jù)(包括XML元素和屬性)的具體內(nèi)容。與“xsl:template”一樣,“xsl:value-of”元素需要XPath來(lái)定位XML數(shù)據(jù)。具體實(shí)現(xiàn)是先用XPath定位XML數(shù)據(jù)的位置路徑,“xsl:value-of”元素通過(guò)屬性有“select”選擇位置路徑指定的相關(guān)數(shù)據(jù)。例5.1

要求編寫一個(gè)XSLT文件,能將程序清單5-9中的第二個(gè)email相關(guān)數(shù)據(jù)按照XHTML的表格形式顯示。程序代碼見XSLT5-17.xslt.5.4.2XSLT的基本結(jié)構(gòu)12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼65(2)<xsl:value-of>元素5.4.2XSLT(3)控制元素XSLT與其他語(yǔ)言一樣也提供了控制元素。這些控制元素有:循環(huán)元素“xsl:for-each”單條件元素“xsl:if”多條件元素“xsl:choose”例5.2要求編寫一個(gè)XSLT文件,能將程序清單5-9中所有wang@發(fā)送的email的相關(guān)數(shù)據(jù)按照XHTML的表格形式顯示。代碼見XSLT5-18.xslt.5.4.2XSLT的基本結(jié)構(gòu)12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼66(3)控制元素5.4.2XSLT的基本結(jié)構(gòu)12/9/202(4)<xsl:apply-templates>元素“xsl:apply-templates”元素是遞歸調(diào)用模板元素。該元素的作用是將定義的模板遞歸調(diào)用到當(dāng)前節(jié)點(diǎn)以及子節(jié)點(diǎn)。該元素有一個(gè)可選屬性select,該屬性設(shè)置指定節(jié)點(diǎn)的轉(zhuǎn)換規(guī)則。通過(guò)select屬性也可以規(guī)定模板轉(zhuǎn)換的順序。例5.3要求編寫一個(gè)XSLT文件,能將程序清單5-9中所有email元素的from與to元素按照列表形式輸出顯示。代碼見XSLT5-19.xslt5.4.2XSLT的基本結(jié)構(gòu)12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼67(4)<xsl:apply-templates>元素5.4.XSLT可以將XML文件轉(zhuǎn)換成特定格式的文檔,然后以這些文檔形式進(jìn)行顯示。為了實(shí)現(xiàn)XSLT轉(zhuǎn)換XML文件,需要在XML文件中聲明使用XSLT定義的樣式表,具體定義形式如下:<?xml-stylesheettype="text/xsl"href="XSLT樣式表文件"?>type屬性指定了樣式表的格式為“text/xsl”,表示使用XSLT的樣式表;href屬性明確了樣式表文件的URL,按照指定的位置使用XSLT樣式表。5.4.3XSLT顯示XML12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼68XSLT可以將XML文件轉(zhuǎn)換成特定格式的文檔,然后以這些文檔XML是可擴(kuò)展標(biāo)記語(yǔ)言,常用于數(shù)據(jù)的表達(dá)。它具有良構(gòu)性、可擴(kuò)展性、靈活性和簡(jiǎn)單性。符合當(dāng)前的數(shù)據(jù)表達(dá)與表現(xiàn)分離的基本原則。了解XML客戶端應(yīng)用,詳細(xì)介紹了XML的基礎(chǔ)知識(shí)。特別對(duì)于XML的語(yǔ)法要求,以及建立一個(gè)良構(gòu)的XML文件必須遵循的原則進(jìn)行深入淺出的說(shuō)明。5.5小結(jié)12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼69XML是可擴(kuò)展標(biāo)記語(yǔ)言,常用于數(shù)據(jù)的表達(dá)。它具有良構(gòu)性、可擴(kuò)為了更加符合XML應(yīng)用的要求,本章還介紹了XML驗(yàn)證兩種機(jī)制:文檔類型定義和XML模式定義語(yǔ)言XML的兩種顯示方式:CSS顯示XML與XSLT轉(zhuǎn)換XML。XML實(shí)質(zhì)是一個(gè)服務(wù)器端的技術(shù),更深入的介紹見第14章。5.5小結(jié)12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼70為了更加符合XML應(yīng)用的要求,本章還介紹了XML驗(yàn)證兩種機(jī)制12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》71-TheEnd-謝謝12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》71-TheE第5章可擴(kuò)展標(biāo)記語(yǔ)言XML12/9/202272《WEB開發(fā)技術(shù)實(shí)用教程》第5章可擴(kuò)展標(biāo)記語(yǔ)言XML12/9/20221《WEB開發(fā)了解XML基礎(chǔ)以及應(yīng)用XML的背景了解XML的兩種驗(yàn)證機(jī)制DTD和XSM學(xué)習(xí)和比較展示XML文件的兩種方式:CSS和XSLTXSLT在轉(zhuǎn)換XML的具體實(shí)現(xiàn)教學(xué)目的12/9/202273《WEB開發(fā)技術(shù)實(shí)用教程》了解XML基礎(chǔ)以及應(yīng)用XML的背景教學(xué)目的12/9/2022教學(xué)內(nèi)容12/9/202274《WEB開發(fā)技術(shù)實(shí)用教程》5.3CSS顯示XML5.4XSLT轉(zhuǎn)換XML5.4.1XPath基礎(chǔ)5.4.2XSLT的基本結(jié)構(gòu)5.4.3用XSLT顯示XML5.1XML基礎(chǔ)5.1.1什么是XML5.1.2XML的相關(guān)技術(shù)5.1.3建立XML文件5.1.4XML的命名空間5.1.5XML的數(shù)據(jù)島5.2XML驗(yàn)證機(jī)制5.2.1文檔類型定義DTD5.2.2XML模式定義語(yǔ)言教學(xué)內(nèi)容12/9/20223《WEB開發(fā)技術(shù)實(shí)用教程》5.3數(shù)據(jù)在表示內(nèi)容方面分成兩種形式:(1)結(jié)構(gòu)性的數(shù)據(jù):文件中的數(shù)據(jù)是經(jīng)過(guò)分析和處理過(guò)的,具有一定的結(jié)構(gòu)格式。結(jié)構(gòu)性的數(shù)據(jù)形式方便信息處理、存儲(chǔ)和應(yīng)用。但是往往必須借助于特定軟件工具表現(xiàn)數(shù)據(jù)。(2)非結(jié)構(gòu)性的數(shù)據(jù):這是在計(jì)算機(jī)世界中大量存在的數(shù)據(jù)形式。例如,文本文件、電子郵件、html網(wǎng)頁(yè)、WinWord2003的doc文件等包含的數(shù)據(jù)。這種形式的數(shù)據(jù)與結(jié)構(gòu)性數(shù)據(jù)比較,可以發(fā)現(xiàn),它們可以表示一定數(shù)據(jù)內(nèi)容,但是這些內(nèi)容之間不能直接體現(xiàn)之間的聯(lián)系,也沒(méi)有有效的方式來(lái)表達(dá)這些數(shù)據(jù)之間是否存在關(guān)系。XML結(jié)合結(jié)構(gòu)性的數(shù)據(jù)和非結(jié)構(gòu)性的數(shù)據(jù)的優(yōu)點(diǎn),將不同文件格式的文件數(shù)據(jù),在保持?jǐn)?shù)據(jù)一致性的同時(shí),進(jìn)行內(nèi)容轉(zhuǎn)換和良好地顯示,達(dá)到實(shí)現(xiàn)數(shù)據(jù)的共享的目的.5.1XML基礎(chǔ)12/9/202275《WEB開發(fā)技術(shù)實(shí)用教程》數(shù)據(jù)在表示內(nèi)容方面分成兩種形式:5.1XML基礎(chǔ)12/9/XML是eXtenibleMarkupLanguage的簡(jiǎn)稱,它代表可擴(kuò)展標(biāo)記語(yǔ)言。1996年,W3C聯(lián)盟組織XML工作組來(lái)研究新的標(biāo)記語(yǔ)言XML。1998年2月,W3C正式推薦了XML1.0標(biāo)準(zhǔn)。XML語(yǔ)言的基本原理與SGML語(yǔ)言一致,就是只定義數(shù)據(jù)內(nèi)容,不嵌入任何過(guò)程和處理內(nèi)容。定義后的文件可以與多種技術(shù)結(jié)合重新編碼形成多種的應(yīng)用。XML語(yǔ)言的重點(diǎn)就是定義數(shù)據(jù)的內(nèi)容,然后結(jié)合其他技術(shù)表現(xiàn)數(shù)據(jù)。5.1.1什么是XML12/9/202276《WEB開發(fā)技術(shù)實(shí)用教程》XML是eXtenibleMarkupLanguage的XML的特點(diǎn)(1)擴(kuò)展性(2)靈活性(3)自描述性(4)簡(jiǎn)單性XML的應(yīng)用領(lǐng)域XML實(shí)現(xiàn)了數(shù)據(jù)和顯示的分離XML實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)和共享XML實(shí)現(xiàn)數(shù)據(jù)的交換XML大量應(yīng)用于WEB應(yīng)用。XML為網(wǎng)絡(luò)應(yīng)用提供強(qiáng)大支持。5.1.1什么是XML12/9/202277《WEB開發(fā)技術(shù)實(shí)用教程》XML的特點(diǎn)5.1.1什么是XML12/9/20226《W5.1.2XML的相關(guān)技術(shù)數(shù)據(jù)驗(yàn)證實(shí)現(xiàn)超級(jí)鏈接實(shí)現(xiàn)數(shù)據(jù)查詢數(shù)據(jù)顯示XMLCSSXSL/XSLTDTDXMLSchemaXLinkXPointerXQueryCSS:CSS往往和XML結(jié)合,將XML文件中的數(shù)據(jù)以一定格式顯示出來(lái)。XSL/XSLT:XSL是eXtensibleStyleSheetLanguage,表示擴(kuò)展樣式表語(yǔ)言。XSL由三個(gè)組成構(gòu)成,XSLT(擴(kuò)展樣式表語(yǔ)言轉(zhuǎn)換)XPathXSL-FO12/9/202278《WEB開發(fā)技術(shù)實(shí)用教程》5.1.2XML的相關(guān)技術(shù)XMLCSSXSL/XSLTD5.1.2XML的相關(guān)技術(shù)XLink和XPointer:XLink和XPointer結(jié)合使用。XLink和XPointer可以實(shí)現(xiàn)訪問(wèn)鏈接資源的作用。其中:XLink全稱為XMLLinkingLanguage,表示XML鏈接語(yǔ)言。XLink可以插入XML元素,實(shí)現(xiàn)創(chuàng)建和描述資源的鏈接作用。XPointer是XMLPointerLanguage的簡(jiǎn)寫,表示XML指針語(yǔ)言。XPointer能讓超級(jí)鏈接指向XML文檔的片段。XQuery:XQuery是XML查詢語(yǔ)言。XQuery是一種查找和提取XML元素與屬性的語(yǔ)言。DTD:是DocumentTypeDefinition文檔類型定義。定義XML文件的文檔結(jié)構(gòu)。通過(guò)DTD可以實(shí)現(xiàn)XML文件數(shù)據(jù)的驗(yàn)證。XMLSchema:通常把XMLSchema規(guī)范視為XMLSchemaDefinition(XML模式定義),簡(jiǎn)寫成XSD。XSD可以實(shí)現(xiàn)XML文件的語(yǔ)法檢查以及數(shù)據(jù)的驗(yàn)證。12/9/202279《WEB開發(fā)技術(shù)實(shí)用教程》5.1.2XML的相關(guān)技術(shù)XLink和XPointer:XML是一個(gè)自描述性的具有良構(gòu)(Well-formed)的標(biāo)記語(yǔ)言。可以用XML語(yǔ)言定義XML文件。在W3C推薦的XML1.0說(shuō)明書明確說(shuō)明了“如果一個(gè)數(shù)據(jù)對(duì)象滿足本規(guī)范中格式正確的定義時(shí),它是一個(gè)XML文件”。5.1.3建立XML文件12/9/202280《WEB開發(fā)技術(shù)實(shí)用教程》XML是一個(gè)自描述性的具有良構(gòu)(Well-formed)的標(biāo)XML文件是由數(shù)字字符和各種類型的標(biāo)記所構(gòu)成,從邏輯上可以將XML文件由:處理指令文件聲明標(biāo)記實(shí)體引用注釋PCDATA段和CDATA段一個(gè)XML示例,見程序清單XML5-1.xml。在IE瀏覽器的運(yùn)行結(jié)果。5.1.3建立XML文件12/9/202281《WEB開發(fā)技術(shù)實(shí)用教程》XML文件是由數(shù)字字符和各種類型的標(biāo)記所構(gòu)成,從邏輯上可以將處理指令XML文件的處理指令是向應(yīng)用程序傳遞的特殊指令。處理指令必須處于XML文件首部。例如:<?xmlversion="1.0"encoding="UTF-8"?>表示該XML文件的版本是1.0,采用的字符集是“UTF-8”5.1.3建立XML文件12/9/202282《WEB開發(fā)技術(shù)實(shí)用教程》處理指令5.1.3建立XML文件12/9/202211《文檔類型定義(DTD)XML文件通過(guò)DOCTYPE文件類型聲明說(shuō)明文件的使用的文法,定義了XML文件的元素、屬性、以及實(shí)體等多項(xiàng)內(nèi)容,具體指明了XML文件文件結(jié)構(gòu)。XML文件確定的使用文法,有兩種方式:指明外部的DTD文件;可以通過(guò)在XML的內(nèi)部的DTD。文件類型定義具體的位于文件首部,第一個(gè)標(biāo)記元素之前。例:<!DOCTYPEmailboxSYSTEM"DTD5-5.dtd">5.1.3建立XML文件12/9/202283《WEB開發(fā)技術(shù)實(shí)用教程》文檔類型定義(DTD)5.1.3建立XML文件12/9/標(biāo)記XML文件中最主要的內(nèi)容是由大量的元素構(gòu)成的。XML文件元素可以是由成對(duì)標(biāo)記中封閉內(nèi)容構(gòu)成,也可以是不包含內(nèi)容的空元素。XML文件中的標(biāo)記具有幾點(diǎn)語(yǔ)法要求,以符合XML文件的良構(gòu)性:XML的標(biāo)記區(qū)分大小寫;標(biāo)記<a>和<A>在XML文件中就是代表兩種不同的標(biāo)記;XML的標(biāo)記必須是封閉的。XML文件中必須有一個(gè)根元素。在XML文件中標(biāo)記的屬性必須通過(guò)雙引號(hào)包含起來(lái),不能忽略。5.1.3建立XML文件12/9/202284《WEB開發(fā)技術(shù)實(shí)用教程》標(biāo)記5.1.3建立XML文件12/9/202213《WE實(shí)體引用實(shí)體引用實(shí)際上就是引用具有特定意義的字符對(duì)象。引用實(shí)體有兩種形式:“&字符串;”例如: “&#實(shí)體編號(hào)”其中實(shí)體編號(hào)是由十六進(jìn)制的數(shù)字構(gòu)成。5.1.3建立XML文件12/9/202285《WEB開發(fā)技術(shù)實(shí)用教程》實(shí)體引用5.1.3建立XML文件12/9/202214《注釋XML文件也定義注釋,注釋的形式同HTML注釋一致,形如“<!--注釋-->”。注釋為XML文件提供必要的解釋說(shuō)明。在應(yīng)用程序使用XML文件時(shí),XML文件的注釋會(huì)被忽略。5.1.3建立XML文件12/9/202286《WEB開發(fā)技術(shù)實(shí)用教程》注釋5.1.3建立XML文件12/9/202215《WEPCDATA段和CDATA段在XML元素中,標(biāo)記之間包含的內(nèi)容就是PCDATA段。CDATA段具有特定的格式標(biāo)明它的特殊性。CDATA片段不會(huì)被應(yīng)用程序進(jìn)行解析,而是全部顯示。在CDATA段中的標(biāo)記與實(shí)體和其他內(nèi)容一起會(huì)原樣顯示。CDATA片段定義形如:<![CDATA[

文本……]]>5.1.3建立XML文件12/9/202287《WEB開發(fā)技術(shù)實(shí)用教程》PCDATA段和CDATA段5.1.3建立XML文件12<book><bookname>計(jì)算機(jī)應(yīng)用</bookname><author>程地</author><publisher>XX出版社</publisher><script><![CDATA[functiongetNumber(number){if(number<0&&number>MAXLEN)returnelse{number++;returnnumber;}}]]></script></book>程序代碼見程序XML5-2.xml,運(yùn)行結(jié)果。5.1.3建立XML文件PCDATA段CDATA段12/9/202288《WEB開發(fā)技術(shù)實(shí)用教程》<book>5.1.3建立XML文件PCDATA段CDAXML命名空間是一組關(guān)于元素和屬性命名惟一的集合的名稱。通過(guò)XML命名空間可以標(biāo)識(shí)和區(qū)分不同的元素和屬性。W3C于1999年初次推薦使用XML命名空間規(guī)范。在該規(guī)范中指出了如下XML命名空間的定義形式。<命名空間前綴:元素名xmlns:命名空間前綴="命名空間URI">定義XML命名空間后,可以直接使用命名空間前綴來(lái)表示命名空間標(biāo)識(shí)符。5.1.4XML的命名空間12/9/202289《WEB開發(fā)技術(shù)實(shí)用教程》XML命名空間是一組關(guān)于元素和屬性命名惟一的集合的名稱。通過(guò)……<sl:studentlistxmlns:sl="/"><sl:student><sl:name>張珊</sl:name><sl:gender>女</sl:gender><school:namexmlns:school="">XXX市北京路232號(hào)

</school:name></sl:student></sl:studentlist>……5.1.4XML的命名空間命名空間前綴命名空間URI12/9/202290《WEB開發(fā)技術(shù)實(shí)用教程》……5.1.4XML的命名空間命名空間前綴命名空間URI可以采用默認(rèn)的命名空間形如“xmlns=命名空間URI”以簡(jiǎn)化文件。將上述的代碼可以改寫成如下內(nèi)容。5.1.4XML的命名空間……<studentlistxmlns:sl="/"xmlns:school=""> <student> <name>張珊</name> <gender>女</gender> <school:name>XXX市北京路232號(hào)

</school:name> </student></studentlist>……12/9/202291《WEB開發(fā)技術(shù)實(shí)用教程》可以采用默認(rèn)的命名空間形如“xmlns=命名空間URI”以簡(jiǎn)XML數(shù)據(jù)島指能被微軟的InternetExplorer5.x以上版本識(shí)別,以及嵌入到HTML中的XML數(shù)據(jù)。通過(guò)XML數(shù)據(jù)島可以將XML數(shù)據(jù)作為一個(gè)整體直接傳入到具有HTML的網(wǎng)頁(yè)中,不需要腳本語(yǔ)言就可以實(shí)現(xiàn)。5.1.5XML的數(shù)據(jù)島12/9/202292《WEB開發(fā)技術(shù)實(shí)用教程》XML數(shù)據(jù)島指能被微軟的InternetExplorer要定義XML數(shù)據(jù)島,這需要在HTML代碼按照下列形式將一個(gè)XML文件聲明XML數(shù)據(jù)島。<xmlid="數(shù)據(jù)島名"src="XML文件URL“>要使用數(shù)據(jù)島還需要實(shí)現(xiàn)XML數(shù)據(jù)綁定到具體HTML元素中:在HTML的元素如table通過(guò)屬性“datasrc”指明使用具體名稱的XML數(shù)據(jù)島。在HTML的元素如div、span中用屬性“datafld”來(lái)綁定到具體的XML數(shù)據(jù)。例將XML數(shù)據(jù)按表格輸出,代碼見HTML5-3.xml,運(yùn)行結(jié)果。5.1.5XML的數(shù)據(jù)島12/9/202293《WEB開發(fā)技術(shù)實(shí)用教程》要定義XML數(shù)據(jù)島,這需要在HTML代碼按照下列形式將一個(gè)XXML文件必須符合XML規(guī)范。在具體表現(xiàn)上,XML文件不單具有嚴(yán)格的XML語(yǔ)法要求,還要求XML文件定義結(jié)構(gòu)在文檔中必須保持一致。為了保證一個(gè)XML文件的良構(gòu)(Well-formed)特點(diǎn)和確保XML文件符合定義規(guī)則,有必要對(duì)XML文件進(jìn)行驗(yàn)證。DTD和XMLSchema常用于XML驗(yàn)證機(jī)制。5.2XML的驗(yàn)證機(jī)制12/9/202294《WEB開發(fā)技術(shù)實(shí)用教程》XML文件必須符合XML規(guī)范。在具體表現(xiàn)上,XML文件不單具DTD(DocumentTypeDefinition,文檔類型定義)是一種XML驗(yàn)證機(jī)制,是XML標(biāo)準(zhǔn)的一部分。DTD可以確定XML文件的合法組成,定義XML文件的結(jié)構(gòu)。DTD可以定義在XML文件內(nèi)部,稱為內(nèi)部DTD。XML文件也可以通過(guò)語(yǔ)句實(shí)現(xiàn)外部DTD的引用。5.2.1文檔類型定義DTD12/9/202295《WEB開發(fā)技術(shù)實(shí)用教程》DTD(DocumentTypeDefinition,文內(nèi)部DTDXML文件中通過(guò)DOCTYPE實(shí)現(xiàn)內(nèi)部DTD的定義。具體DTD內(nèi)容包括在DOCTYPE中。形如:<!DOCTYPE根元素名[<!--定義元素-->…….]>一個(gè)內(nèi)部DTD的應(yīng)用實(shí)例,代碼見XML5-4.xml.5.2.1文檔類型定義DTD12/9/202296《WEB開發(fā)技術(shù)實(shí)用教程》內(nèi)部DTD5.2.1文檔類型定義DTD12/9/202225導(dǎo)入外部DTD外部DTD是導(dǎo)入到XML的DTD。首先,用戶需要按DTD語(yǔ)法規(guī)則定義一個(gè)文件擴(kuò)展名為“dtd”的文件。在這個(gè)DTD文件中確定XML文件的結(jié)構(gòu)及組成。然后在XML文件中通過(guò)DOCTYPE導(dǎo)入該文件。具體的形如:“<!DOCTYPE根元素SYSTEM"文件名">”。5.2.1文檔類型定義DTD12/9/202297《WEB開發(fā)技術(shù)實(shí)用教程》導(dǎo)入外部DTD5.2.1文檔類型定義DTD12/9/2022DTD元素在DTD中聲明XML文件中元素的元素是DTD元素。DTD元素可以說(shuō)明XML的元素標(biāo)記、特定元素的子元素以及元素包含的內(nèi)容。DTD元素可以定義XML文件的元素結(jié)構(gòu),以及反映元素間的相互關(guān)系。DTD元素通過(guò)<!ELEMENT…>實(shí)現(xiàn)定義,語(yǔ)法形式如下:<!ELEMENT元素名稱內(nèi)容>5.2.1文檔類型定義DTD12/9/2022《WEB開發(fā)技術(shù)實(shí)用教程》陳軼98DTD元素5.2.1文檔類型定義DTD12/9/2022《定義一個(gè)空元素<!ELEMENT元素名稱

EM

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論