版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
XML基礎(chǔ)《Web開發(fā)技術(shù)》—XML基礎(chǔ)目標(biāo)了解什么是XML掌握XML文檔結(jié)構(gòu)掌握XML文檔驗(yàn)證掌握XML名稱空間掌握XML顯示和轉(zhuǎn)換技術(shù)《Web開發(fā)技術(shù)》—XML基礎(chǔ)了解什么是XML語義性差
HTML采用固定的標(biāo)記集和固定的格式,其標(biāo)記不能表達(dá)出數(shù)據(jù)的意義,XML的標(biāo)記是由用戶自定義的。交互能力差 采用提交的方式請求服務(wù)器進(jìn)行處理,并將結(jié)果傳回給用戶,使得服務(wù)器負(fù)擔(dān)繁重,浪費(fèi)了網(wǎng)絡(luò)帶寬和用戶時(shí)間,XML可以在本地進(jìn)行處理和顯示。鏈接單調(diào)超文本鏈接機(jī)制不能實(shí)現(xiàn)一些更加復(fù)雜的鏈接關(guān)系,如多個(gè)目的端、多向鏈接。1.1.1HTML存在的問題《Web開發(fā)技術(shù)》—XML基礎(chǔ)了解什么是XMLXML:可擴(kuò)展的標(biāo)記語言(ExtensibleMarkupLanguage)HTML:超文本標(biāo)記語言(HyperTextMarkupLanguage)SGML:標(biāo)準(zhǔn)通用標(biāo)記語言(StandardGeneralizedMarkupLanguage)XML是SGML的一個(gè)子集,是由SGML簡化而來。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ā)布了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.2XML的產(chǎn)生《Web開發(fā)技術(shù)》—XML基礎(chǔ)了解什么是XMLW3C:WorldWideWebConsortium,萬維網(wǎng)聯(lián)盟,成立于1994年10月,以開放論壇的方式促進(jìn)開發(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)過以下七個(gè)步驟:1、W3C收到提交 任何W3C成員都可以提交一個(gè)建議。2、W3C發(fā)布注釋 注釋是一個(gè)公開的文檔,是對建議的描述,是一個(gè)討論稿。3、W3C成立工作組
W3C認(rèn)可提交后,組織成員和感興趣的團(tuán)隊(duì)成立工作組,確定時(shí)間表,發(fā)布提議標(biāo)準(zhǔn)的工作草案。4、W3C發(fā)布工作草案
W3C在發(fā)布工作草案和一個(gè)公眾討論的邀請。1.1.3了解W3C組織《Web開發(fā)技術(shù)》—XML基礎(chǔ)了解什么是XML5、W3C發(fā)布侯選推薦標(biāo)準(zhǔn) 當(dāng)規(guī)范比較復(fù)雜時(shí),需要成員和軟件開發(fā)商花更多的時(shí)間來測試。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的主任加蓋正式批準(zhǔn)圖章而最終成為規(guī)范。推薦標(biāo)準(zhǔn)是一個(gè)穩(wěn)定的文檔,可以作為工作中的參考資料。由此可見,W3C對推薦標(biāo)準(zhǔn)的審查、批準(zhǔn)的程序是比較復(fù)雜的,也是十分嚴(yán)格的。雖然W3C不是官方組織,但其發(fā)布的規(guī)范是權(quán)威的,成為事實(shí)上的標(biāo)準(zhǔn)。1.1.3了解W3C組織《Web開發(fā)技術(shù)》—XML基礎(chǔ)了解什么是XML例1-1:test1.html<html><head><title>HTML例子</title></head><body><center><h1><fontcolor="red">HTML例子</font></h1></center></body></html>1.1.4XML與HTML之比較《Web開發(fā)技術(shù)》—XML基礎(chǔ)了解什么是XML<?xmlversion="1.0"encoding="gb2312"?><data> <row> <col>A</col> </row> <row> <col>B</col> </row> <row> <col>C</col> </row></data>1.1.4XML與HTML之比較《Web開發(fā)技術(shù)》—XML基礎(chǔ)了解什么是XML從上面的例子可以看出:1、HTML的標(biāo)記是固定的,而XML的標(biāo)記是可以自己去創(chuàng)造新的標(biāo)記,且可以是中文標(biāo)記,XML在設(shè)計(jì)之初就考慮到了國際化的問題,XML同HTML4.01一樣,是基于ISO/IEC10646字符集標(biāo)準(zhǔn)中定義的通用字符集。2、XML無現(xiàn)成的一套標(biāo)記供選擇使用,完全需要我們自己去創(chuàng)建,XML是創(chuàng)建標(biāo)記語言的元語言。3、HTML文檔將數(shù)據(jù)、頁面的排版和頁面的表現(xiàn)形式混合在一起;而XML只是用于描述數(shù)據(jù)和數(shù)據(jù)的結(jié)構(gòu),在XML文檔里并不指定數(shù)據(jù)的顯示方式,因此同一份數(shù)據(jù)可以用于不同的場合,采用不同的方式去顯示,真正做到了數(shù)據(jù)獨(dú)立于應(yīng)用系統(tǒng),實(shí)現(xiàn)了數(shù)據(jù)的可重用性。4、HTML文檔格式非常松散,導(dǎo)致了HTML文檔解析的復(fù)雜性和瀏覽器的兼容性問題。XML從一開始就對文檔的格式制定了非常嚴(yán)格的標(biāo)準(zhǔn),凡是符合這一標(biāo)準(zhǔn)的XML文檔就是格式良好的XML文檔(Well-FormedXMLDocuments)。1.1.4XML與HTML之比較《Web開發(fā)技術(shù)》—XML基礎(chǔ)了解什么是XML格式良好的XML文檔也稱為格式正確的XML文檔:開始標(biāo)簽必須要有一個(gè)結(jié)束標(biāo)簽配套 在HTML里可以直接使用<p>、<tr>等標(biāo)簽,但在XML中,開始標(biāo)簽和結(jié)束標(biāo)簽必須配套,即<p>…</p>、<tr>…</tr>??赵貥?biāo)簽必須被關(guān)閉 在HTML文檔里可以直接使用<br>、<hr>標(biāo)簽,在XML中空元素必須采用/來關(guān)閉,如:<br/>、<hr/>所有的標(biāo)簽都區(qū)分大小寫 在HTML文檔中標(biāo)簽不區(qū)分大小寫,XML中的標(biāo)簽嚴(yán)格區(qū)分大小寫,且開始標(biāo)簽和結(jié)束標(biāo)簽的大小寫必須保持一致。所有的標(biāo)簽必須正確地嵌套,不允許出現(xiàn)交叉 在HTML文檔中,<p><b>abcd</p></b>是允許的;但在XML中,所有的標(biāo)簽都要成對出現(xiàn),不能交叉,正確形式為:<p><b>abcd</b></p>1.1.4XML與HTML之比較《Web開發(fā)技術(shù)》—XML基礎(chǔ)了解什么是XML所有標(biāo)簽的屬性值必須采用引號(hào)括起來 在HTML文檔中,屬性值可以加引號(hào)也可以不加引號(hào),如:<fontcolor=“red”>HTML例子</font>和<fontcolor=red>HTML例子</font>都是合法的。但在XML文檔中,即使是數(shù)字字符,屬性必須用引號(hào)(單引號(hào)或雙引號(hào)都可以)括起來,如:
<bookname=“XML”price=’25’/>XML有且只能有一個(gè)根元素 在HTML文檔中,可以有多個(gè)根元素,如:
<table>…</table> <table>…</table>
但在XML中有且只能有一個(gè)根元素,如:
<data>…</data>1.1.4XML與HTML之比較《Web開發(fā)技術(shù)》—XML基礎(chǔ)了解什么是XML所有標(biāo)簽的屬性值必須采用引號(hào)括起來 在HTML文檔中,屬性值可以加引號(hào)也可以不加引號(hào),如:<fontcolor=“red”>HTML例子</font>和<fontcolor=red>HTML例子</font>都是合法的。但在XML文檔中,即使是數(shù)字字符,屬性必須用引號(hào)(單引號(hào)或雙引號(hào)都可以)括起來,如:
<bookname=“XML”price=’25’/>XML有且只能有一個(gè)根元素 在HTML文檔中,可以有多個(gè)根元素,如:
<table>…</table> <table>…</table>
但在XML中有且只能有一個(gè)根元素,如:
<data>…</data>1.1.4XML與HTML之比較《Web開發(fā)技術(shù)》—XML基礎(chǔ)了解什么是XML所有標(biāo)簽的屬性值必須采用引號(hào)括起來 在HTML文檔中,屬性值可以加引號(hào)也可以不加引號(hào),如:<fontcolor=“red”>HTML例子</font>和<fontcolor=red>HTML例子</font>都是合法的。但在XML文檔中,即使是數(shù)字字符,屬性必須用引號(hào)(單引號(hào)或雙引號(hào)都可以)括起來,如:
<bookname=“XML”price=’25’/>XML有且只能有一個(gè)根元素 在HTML文檔中,可以有多個(gè)根元素,如:
<table>…</table> <table>…</table>
但在XML中有且只能有一個(gè)根元素,如:
<data>…</data>1.1.4XML與HTML之比較《Web開發(fā)技術(shù)》—XML基礎(chǔ)了解什么是XMLXML文檔本身是純文本格式,因此可用以下工具進(jìn)行編輯。1、NotePad(記事本)2、EditPro3、UltraEdit4、XMLSpy5、XMLWriter1.1.5XML編寫工具《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔結(jié)構(gòu)XML文檔大體上可分為兩個(gè)主要部分:序言(prologue)和文檔實(shí)例部分(Documentinstance)。序言可以包括處理指令、XML聲明和架構(gòu)聲明(DTD、SCHEMA):
1.2XML文檔組成《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔結(jié)構(gòu)XML文檔總是以一個(gè)XML聲明開始,必須位于文檔的第一行,且前面不能有任何字符。格式如下:<?xml版本信息[編碼信息][文檔獨(dú)立性信息]?>其中編碼信息和文檔獨(dú)立性信息可選。版本聲明
<?xmlversion=“1.0”?>文檔編碼聲明
XML默認(rèn)編碼方式是UTF-8,要使用中文可在聲明中加上encoding=“gb2312”或encoding=“GB2312”均可。如:
<?xmlverion=“1.0”encoding=“gb2312”?>獨(dú)立文檔聲明 指明是否依賴于外部文檔,standalone=“yes”聲明文檔是獨(dú)立的文檔,如果文檔依賴于外部文檔,可以通過standalone=“no”來聲明。如:
<?xmlversion=“1.0”encoding=“gb2312”standalone=“yes”?>1.2.1XML聲明《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔結(jié)構(gòu)DTD:DocumentTypeDefinition,文檔類型定義,用來定義XML文檔中元素和屬性的規(guī)則及相互關(guān)系,XML繼承了SGML的DTD機(jī)制。DTD也是一個(gè)文本文件,以.dtd為擴(kuò)展名。文檔類型聲明有兩種形式,一種是直接在XML文檔中給出DTD,如:<?xmlversion=“1.0”encoding=“gb2312”standalone=“yes”?><!DOCTYPEdata[ <!ELEMENTrow(#PCDATA)>]>另一種是聲明DTD在外部文件中,如:<!DOCTYPEdataSYSTEM“data.dtd”>1.2.2文檔類型聲明《Web開發(fā)技術(shù)》—XML基礎(chǔ)1.2.2:XML指令用來給處理XML的應(yīng)用程序提供信息的,解析器將該信息原封不動(dòng)傳遞給應(yīng)用程序,由應(yīng)用程序來解釋這個(gè)指令,并按照它提供的信息進(jìn)行處理:<?處理指令處理信息?><?xml-stylesheettype=“text/css”href=“aa.css”?>XML文檔結(jié)構(gòu)《Web開發(fā)技術(shù)》—XML基礎(chǔ)根元素:包含文檔的數(shù)據(jù),以及描述數(shù)據(jù)結(jié)構(gòu)的信息有且只有一個(gè)根元素<netbookstore>……</netbookstore>XML文檔結(jié)構(gòu)《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔結(jié)構(gòu)元素由開始標(biāo)簽、元素內(nèi)容和結(jié)束標(biāo)簽構(gòu)成。文檔的基本構(gòu)成單元,可包含其它元素、字符數(shù)據(jù)、字符引用。沒有內(nèi)容的元素是空元素,由空元素標(biāo)簽構(gòu)成(如:<br/>),每一個(gè)元素用一個(gè)名字標(biāo)識(shí),可以擁有屬性集,每一個(gè)屬性是一個(gè)名值對。在給XML元素命名時(shí)需遵守命名規(guī)范:以字母、下劃線和冒號(hào)(:)開頭;名稱中可以包含字母、數(shù)字、下劃線和其他在XML中允許的字符;名稱中不能包含空格名稱中盡可能不要使用冒號(hào),以免沖突1.2.3XML元素《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔結(jié)構(gòu)空元素 無內(nèi)容的元素即空元素,書寫的時(shí)候一定要寫(/)來關(guān)閉標(biāo)簽。如:<data/>帶屬性的元素 屬性是一個(gè)名值對,如:
<datalen=“10”/>帶內(nèi)容的元素
<data>
中國
<row>a</row> </data>帶內(nèi)容和屬性的元素
<studentname=“jack”> <age>20</age> </student>1.2.4XML元素形式《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔結(jié)構(gòu)元素:XML元素是指開始標(biāo)簽、結(jié)束標(biāo)簽以及兩者之間的任何內(nèi)容。標(biāo)簽:是一對尖括號(hào)<>和兩者之間的內(nèi)容。如:<datalen=“10”>、</data>均是標(biāo)簽<datalen=“10”> …</data>則為data元素1.2.5XML元素和標(biāo)簽《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔結(jié)構(gòu)XML元素的內(nèi)容可以包括子元素、字符數(shù)據(jù)、字符引用和實(shí)體引用、CDATA段。子元素 子元素是相對于父元素而言,子元素是嵌套在上層元素之內(nèi)。如: <data> <rows> <row>A</row> </rows> </data>字符數(shù)據(jù) 在一個(gè)元素的內(nèi)容中,字符數(shù)據(jù)不能有和號(hào)(&)、小于號(hào)(<)及CDATA段的結(jié)束定界符(]]>)。如:
<data>&</data>、<data><</data>、<data>]]></data>都是錯(cuò)誤的。1.2.6XML元素內(nèi)容《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔結(jié)構(gòu)字符引用和預(yù)定義實(shí)體引用 在字符數(shù)據(jù)中不能有和號(hào)(&)和小于號(hào)(<),因?yàn)樵赬ML文檔解釋中會(huì)被作為標(biāo)記的起始定界符來對待。確因在XML中需要出現(xiàn)&和<,可以通過字符引用或預(yù)定義實(shí)體引用的方式去引用。5個(gè)特殊字符的字符引用和實(shí)體引用如下:1.2.6XML元素內(nèi)容字符字符引用(十進(jìn)制)字符引用(十六進(jìn)制)預(yù)定義實(shí)體引用<<<<>>>>“"""‘'''&&&&《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔結(jié)構(gòu)字符引用和預(yù)定義實(shí)體引用都是以一個(gè)和號(hào)(&)開始,以一個(gè)分號(hào)(;)結(jié)束。因此,如果想在XML元素內(nèi)容中出現(xiàn)<,可以采用如下引用方式:
<data><</data>
或<data><</data>CDATA段
CDATA段中包含的都是純字符數(shù)據(jù),其內(nèi)容不被XML處理器分析,因此可以在其中包含任意的字符。CDATA段主要用于將整個(gè)文本解釋為字符數(shù)據(jù)而不是標(biāo)記的情況。CDATA段以<![CDATA[開始,以字符串]]>結(jié)束。如:test2.xml<?xmlversion="1.0"encoding="gb2312"?><data> <![CDATA[ if(a>b) max=a; ]]></data>1.2.6XML元素內(nèi)容《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔結(jié)構(gòu)例1-2:test3.xml:<?xmlversion="1.0"encoding="gb2312"?><data> <![CDATA[ if(a[b[i]]>b) max=a; ]]></data>當(dāng)瀏覽器解釋時(shí),發(fā)現(xiàn)元素內(nèi)容中出現(xiàn)字符‘]]>’,因‘]]>’是CDATA段的結(jié)束定界符,所以會(huì)出現(xiàn)錯(cuò)誤,可以通過在字符‘]]’和‘>’之間插入空格或者把字符串分別放到兩個(gè)CDATA段中。當(dāng)字符數(shù)據(jù)中含有少量的特殊字符,可以采用字符引用或預(yù)定義實(shí)體應(yīng)用的方式去引用。當(dāng)遇到大量的特殊字符時(shí),可以采用CDATA段進(jìn)行處理。
1.2.6XML元素內(nèi)容《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔結(jié)構(gòu)注釋
XML注釋與HTML注釋類似,以<!--開始和-->結(jié)束,位于其中的數(shù)據(jù)將被XML處理器忽略。注釋可以出現(xiàn)在文檔中其他標(biāo)記之外的任何位置,還可以在文檔類型聲明語法允許的地方出現(xiàn)。1、注釋不能出現(xiàn)在XML聲明之前,以下情況不允許<!–note
<?xmlversion=“1.0”?>2、注釋不能出現(xiàn)在標(biāo)記中如:<data<!–note/>3、注釋可以包圍和隱藏標(biāo)記,在保證剩余的文本仍然是一個(gè)結(jié)構(gòu)完整的XML文檔。1.2.6XML元素內(nèi)容《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔結(jié)構(gòu)例1-3:test4.xml:<?xmlversion="1.0"encoding="gb2312"?><data><!-- <row> <col>></col>
</row>--> <row> <col>B</col> </row></data>4、字符串“--”不允許出現(xiàn)在注釋中。如:<!--data—data-->5、在XML注釋中不允許以“--->”結(jié)尾。1.2.6XML元素內(nèi)容《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔結(jié)構(gòu)處理指令(PI)
PI:(ProcessingInstructions)處理指令允許文檔中包含由應(yīng)用程序來處理的指令。在XML中包含的一些非XML格式化的數(shù)據(jù),這些數(shù)據(jù)XML處理器無法處理,可以通過才處理指令來通知其他應(yīng)用程序來處理。如使用樣式表的處理指令如下:<?xml-stylesheethref=“test.css”type=“text/css”?>空白處理 在編寫XML文檔時(shí)經(jīng)常使用空白(空格、制表符、空行)來分隔標(biāo)記,以獲得較好的可讀性。在XML文檔中,可以在元素中使用一個(gè)特殊的屬性xml:space來通知應(yīng)用程序保留此元素中的空白。如:
<!ATTLISTdataxml:space(default|preserve)‘preserve’>1.2.6XML元素內(nèi)容《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔結(jié)構(gòu)行尾處理
XML數(shù)據(jù)以文本的方式保留在計(jì)算機(jī)文件中,以行來分隔。在XML空白字符中,有兩個(gè)標(biāo)準(zhǔn)的ASCII碼行尾控制字符:回車(CR,#xA)和換行(LF,#xD)。Windows:以#xD#xA作為行分隔符,linux、Unix以#xA作為行分隔符,MacOS:以#xD作為行分隔符。XML處理器在解析前,要將#xD#xA及#xD轉(zhuǎn)換成單個(gè)的#xA字符。語言標(biāo)識(shí) 通過在文檔中插入一個(gè)特殊的屬性xml:lang來指出XML文檔中任何元素和屬性的值所使用的語言。如:<dataxml:lang=“en”>abcd</data>1.2.6XML元素內(nèi)容《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔驗(yàn)證DTD是用來定義一個(gè)XML文檔的結(jié)構(gòu)及其允許的內(nèi)容、元素與元素之間關(guān)系的一種機(jī)制。文檔類型聲明必須在XML聲明之后,且在根元素之前。在XML聲明和文檔類型聲明之間可以插入注釋和處理指令。在XML文檔中引入DTD有兩種方式:1、直接在XML中定義DTD,如:<?xmlversion=“1.0”encoding=“gb2312”standalone=“yes”?><!DOCTYPEdata[<!ELEMENTdata(#PCDATA)>]>1.3XML文檔驗(yàn)證1.3.1文檔類型定義(DTD)《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔驗(yàn)證DTD中所有的關(guān)鍵字都是大寫的,DTD中定義的元素大小寫是任意指定的,但要保持一致。2、外部DTD在XML文檔類型聲明時(shí),采用SYSTEM或PUBLIC關(guān)鍵字來指出外部DTD文件的位置。語法如下:<!DOCTYPE根元素名字SYSTEM“外部DTD文件路徑”><!DOCTYPEdataSYSTEM“data.dtd”>SYSTEM關(guān)鍵字表示文檔使用的是私有的DTD文件??梢允褂孟鄬β窂交蚪^對路徑來指定DTD文件路徑,DTD文件擴(kuò)展名可以不為.dtd,但一般采用.dtd。1.3XML文檔驗(yàn)證1.3.1文檔類型定義(DTD)《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔驗(yàn)證如:<!DOCTYPEdataSYSTEM“”><!DOCTYPEdataSYSTEM“web/test/data.dtd”><!DOCTYPEdataSYSTEM“../../test/data.dtd”>使用PUBLIC關(guān)鍵字聲明的語法如下:<!DOCTYPE根元素的名字PUBLIC“DTD的名稱”“外部DTD文件的路徑”>DTD的名稱成為公共標(biāo)識(shí)符,DTD可以存放在某個(gè)公共的地方,XML處理程序會(huì)根據(jù)名稱按照某種方式去檢索DTD,如果檢索不到,則使用“外部DTD文件的路徑”來查找該DTD。1.3XML文檔驗(yàn)證1.3.1文檔類型定義(DTD)《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔驗(yàn)證DTD名稱只能包含ASCII字母和數(shù)字字符、空格、回車符、換行符和一些標(biāo)點(diǎn)符合:-‘()+,./=:?;!*#@$_%。公共DTD名稱需遵守如下約定:ISO批準(zhǔn)的DTD,名稱要以字符串“ISO”開始非ISO標(biāo)準(zhǔn)組織批準(zhǔn)的DTD,名稱以+開始。非標(biāo)準(zhǔn)組織批準(zhǔn)的DTD,名稱以–開始。格式如下:約定符號(hào)//DTD所有者名字//DTD描述的文檔類型//語言標(biāo)識(shí)符如:-//jack//DTDEX1.0//ZH1.3XML文檔驗(yàn)證1.3.1文檔類型定義(DTD)《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔驗(yàn)證如:HTML文檔常件的文檔類型定義:<!DOCTYPEHTMLPUBLIC“-//W3C//DTDHTML4.01/EN”“./TR/html4/strict.dtd”>1.3XML文檔驗(yàn)證1.3.1文檔類型定義(DTD)《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔驗(yàn)證DTD的結(jié)構(gòu)一般由元素類型聲明、屬性表聲明、實(shí)體聲明、記號(hào)聲明等構(gòu)成。1、元素類型聲明 元素類型聲明說明了每個(gè)文檔中可能存在的元素,元素名稱及元素的具體類型。 元素類型聲明采用的語法格式如下:<!ELEMENT元素名稱元素內(nèi)容說明>元素內(nèi)容說明包括以下5種可能的元素內(nèi)容形式:PCDATA
關(guān)鍵字PCDATA說明元素包括字符數(shù)據(jù)。1.3.2DTD結(jié)構(gòu)《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔驗(yàn)證例1-3-2:test5.xml:<?xmlversion="1.0"encoding="gb2312"?><!DOCTYPEbook[<!ELEMENTbook(#PCDATA)>]><book>J2EE</book>(2)子元素說明元素包含的是子元素,當(dāng)一個(gè)元素只包含子元素而無字符數(shù)據(jù)時(shí),則稱此元素具有元素型內(nèi)容。在該元素的類型聲明時(shí),采用內(nèi)容模型來指定其在內(nèi)容上的約束。內(nèi)容模型是決定子元素類型和子元素出現(xiàn)順序的一種簡單語法。1.3.2DTD結(jié)構(gòu)《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔驗(yàn)證例1-3-2:test7.xml:<?xmlversion="1.0"encoding="gb2312"?><!DOCTYPEbook[<!ELEMENTbook(name,press,price)><!ELEMENTname(#PCDATA)><!ELEMENTpress(#PCDATA)><!ELEMENTprice(#PCDATA)>]><book><name>J2EE</name> <press>清華大學(xué)出版社</press> <price>30</price></book>用逗號(hào)隔開的一系列子元素成為一個(gè)序列,表示這些元素在文檔中要嚴(yán)格按照序列的順序出現(xiàn)在文檔中。元素聲明的順序可以隨意安排。1.3.2DTD結(jié)構(gòu)《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔驗(yàn)證例1-3-2:test8.xml:<?xmlversion="1.0"encoding="gb2312"?><!DOCTYPEbook[<!ELEMENTbook(name,press,price,author)><!ELEMENTname(#PCDATA)><!ELEMENTpress(#PCDATA)><!ELEMENTprice(#PCDATA)><!ELEMENTauthor(one|two)><!ELEMENTone(#PCDATA)><!ELEMENTtwo(#PCDATA)>]><book><name>J2EE</name> <press>清華大學(xué)出版社</press> <price>30</price> <author><one>張三</one></author></book>表明author元素必須要有one或two的其中一個(gè)子元素。1.3.2DTD結(jié)構(gòu)《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔驗(yàn)證例1-3-2:test9.xml:<?xmlversion="1.0"encoding="gb2312"?><!DOCTYPEstudent[<!ELEMENTstudent(name,age,inter*)><!ELEMENTname(#PCDATA)><!ELEMENTage(#PCDATA)><!ELEMENTinter(#PCDATA)>]><student> <name>張三</name> <age>20</age> <inter>足球</inter> <inter>編程</inter></student>*:表示可以出現(xiàn)零個(gè)或多個(gè)inter元素1.3.2DTD結(jié)構(gòu)《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔驗(yàn)證+:表示可以出現(xiàn)一個(gè)或多個(gè)inter元素?:表示可以出現(xiàn)零個(gè)或一個(gè)inter元素<!ELEMENTstudent(name,age,inter+)><!ELEMENTstudent(name,age,inter+,spousal?)>括號(hào)、逗號(hào)、豎線、星號(hào)、問號(hào)和加號(hào)可以進(jìn)行組合,說明很復(fù)雜的內(nèi)容模型。如:<!ELEMENTresume(name,age,sex,(電話|手機(jī)),家庭住址?,興趣愛好*,教育經(jīng)歷+,工作經(jīng)驗(yàn)*>1.3.2DTD結(jié)構(gòu)《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔驗(yàn)證(3)混合內(nèi)容 元素既可以包括字符數(shù)據(jù),也可以包括子元素,混合內(nèi)容必須被定義零個(gè)或多個(gè)。例:1-3-2:test10.xml<?xmlversion="1.0"encoding="gb2312"?><!DOCTYPEstudent[<!ELEMENTstudent(#PCDATA|age)*><!ELEMENTage(#PCDATA)>]><student> xx <age>20</age></student>表示student可以包含零個(gè)或多個(gè)字符數(shù)據(jù),包含零個(gè)或多個(gè)age子元素。1.3.2DTD結(jié)構(gòu)《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔驗(yàn)證在使用混合內(nèi)容模型時(shí),#PCDATA關(guān)鍵字必須是模型中的第一個(gè)選項(xiàng),不能在模型中使用逗號(hào),問號(hào)或加號(hào)。(4)EMPTYEMPTY關(guān)鍵字表明該元素既不包含字符數(shù)據(jù),也不包含子元素,是一個(gè)空元素。如:<!ELEMENTstudentEMPTY>(5)ANYANY關(guān)鍵字表明該元素可以包含任何的字符數(shù)據(jù)和子元素。如:<!ELEMENTstudentANY>1.3.2DTD結(jié)構(gòu)《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔驗(yàn)證2、實(shí)體聲明對經(jīng)常出現(xiàn)的、重復(fù)使用的內(nèi)容可以采用定義實(shí)體,當(dāng)XML處理器對文檔進(jìn)行分析處理后,引用實(shí)體的位置會(huì)被實(shí)體所替換。實(shí)體分一般實(shí)體和參數(shù)實(shí)體,一般實(shí)體是在文檔內(nèi)容中使用的實(shí)體,參數(shù)實(shí)體則是在DTD中使用的已分析的實(shí)體。一般實(shí)體的聲明語法:<!ENTITY實(shí)體名“實(shí)體內(nèi)容”>引用實(shí)體的方式為:“&實(shí)體名;”例:1-3-2:test11.xml1.3.2DTD結(jié)構(gòu)《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔驗(yàn)證<?xmlversion="1.0"encoding="gb2312"?><!DOCTYPEbook[<!ELEMENTbook(name,copyright)><!ELEMENTname(#PCDATA)><!ELEMENTcopyright(#PCDATA)><!ENTITYname"J2EE"><!ENTITYcopyright"©2008,J2EE">]><book> <name>&name;</name> <copyright>©right;</copyright></book>1.3.2DTD結(jié)構(gòu)《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔驗(yàn)證參數(shù)實(shí)體只能在DTD中使用,聲明語法如下:<!ENTITY%實(shí)體名“實(shí)體內(nèi)容”>引用實(shí)體的方式:“%實(shí)體名;”例1-3-2:test12.dtd:<?xmlversion="1.0"encoding="gb2312"?><!ELEMENTbook(name,copyright)><!ELEMENTname(#PCDATA)><!ELEMENTcopyright(#PCDATA)><!ENTITY%name"J2EE"><!ENTITYcopyright"©2008,%name;,Allrightsreserved">1.3.2DTD結(jié)構(gòu)《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔驗(yàn)證test12.xml:<?xmlversion="1.0"encoding="gb2312"?><!DOCTYPEbookSYSTEM"test12.dtd"><book> <name>xx</name> <copyright>©right;</copyright></book>內(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.2DTD結(jié)構(gòu)《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔驗(yàn)證外部實(shí)體在單獨(dú)的文件中定義,外部實(shí)體可以是已分析實(shí)體,也可以是未分析實(shí)體。外部一般實(shí)體的聲明形式如下:<!ENTITYcopyrightSYSTEM>a.xml內(nèi)容如下:<?xmlversion=“1.0”encoding=“gb2312”?>©2008,J2EE,Allrightsreserved公共的外部一般實(shí)體聲明形式如下:<!ENTITYcopyrightPUBLIC“-//xx//yy//EN”>1.3.2DTD結(jié)構(gòu)《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔驗(yàn)證3、屬性表聲明聲明格式如下:<!ATTLIST元素名屬性名屬性類型默認(rèn)聲明>屬性類型共有10種類型,默認(rèn)聲明共有4種,默認(rèn)聲明用于說明在元素中該屬性是否必須出現(xiàn),如果不是必須出現(xiàn),當(dāng)沒有出現(xiàn)時(shí),XML處理器該如何處理。#REQUIRED說明必須為該元素提供屬性,見test13.xml。#IMPLIED說明該元素可以包含該屬性,也可以不包含該屬性。1.3.2DTD結(jié)構(gòu)《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔驗(yàn)證#FIXED默認(rèn)值說明一個(gè)固定的屬性默認(rèn)值,文檔的編寫者不能修改該屬性值。例1-3-2:見test14.xml只有默認(rèn)值用該種方式聲明的屬性可以被修改。例1-3-2:見test15.xml屬性類型CDATA
表明屬性值為字符數(shù)據(jù)枚舉類型1.3.2DTD結(jié)構(gòu)《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔驗(yàn)證如:<!ATTLISTstudentsex(male|female)#REQUIRED>ID、IDREF、IDREFS一個(gè)ID類型的屬性值唯一標(biāo)識(shí)XML文檔中的一個(gè)元素。見test16.xml通過IDREF可以建立元素之間的關(guān)系。見:test17.xml如果一個(gè)屬性需要引用多個(gè)ID類型的屬性值,則可以聲明為IDREFS類型。見:test18.xmlENTITY、ENTITIESENTITY類型的屬性將外部的二進(jìn)制數(shù)據(jù)鏈接到文檔,ENTITIES類型的屬性是將多個(gè)以空格分隔的ENTITY類型鏈接至文檔。1.3.2DTD結(jié)構(gòu)《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔驗(yàn)證如:<!ATTLISTimagesrcENTITY#REQUIRED><!ENTITYlogoSYSTEMNDATAgif>記號(hào)gif的聲明<!NOTATIONgifSYSTEM“imageview.exe”>采用<imagesrc=“l(fā)ogo”/>引用圖像。如果引用多個(gè):<!ENTITYlogoSYSTEMNDATAgif>聲明為:<!ATTLISTimagesrcENTITIES#REQUIRED>則采用<imagesrc=“l(fā)ogoa”/>引用圖像。1.3.2DTD結(jié)構(gòu)《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔驗(yàn)證NMTOKEN、NMTOKENS(名稱標(biāo)記)NMTOKEN名稱標(biāo)記是任何字符的混合體,只能包含名稱字符,不能包含空白字符。如限制書名不能有空格,聲明如下:<!ATTLISTbooknameNMTOKEN#REQUIRED><bookname=“J2EE”/>NMTOKENS表示由多個(gè)名稱標(biāo)記組成,各名稱標(biāo)記之間采用空格隔開。如:<!ATTLISTbooknameNMTOKENS#REQUIRED><bookname=“J2EEJAVASCRIPT”/>1.3.2DTD結(jié)構(gòu)《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔驗(yàn)證4、記號(hào)聲明采用記號(hào)聲明,為非XML數(shù)據(jù)描述一種可能的格式或指定一個(gè)外部的處理程序。記號(hào)聲明有兩種形式:一種是采用MIME類型,聲明如下:<!NOTATIONgifSYSTEM“image/gif”/>另一種是采用URI路徑指出外部處理程序的路徑,聲明如下:<!NOTATIONgifSYSTEM“view.exe”/>1.3.2DTD結(jié)構(gòu)《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML文檔驗(yàn)證格式良好的XML文檔:遵守XML規(guī)范即可。有效的XML文檔:遵守XML規(guī)范且遵守相應(yīng)的DTD約束。1.4有效的XML《Web開發(fā)技術(shù)》—XML基礎(chǔ)DTD的缺點(diǎn):它使用自己的一套語法,與文檔實(shí)例的語法截然不同。目前幾乎沒有解析器能夠簡便地訪問它們所處理的DTD中的聲明;DTD提供的條件選擇結(jié)構(gòu)不能實(shí)現(xiàn)動(dòng)態(tài)創(chuàng)建DTDDTD是一種封閉的結(jié)構(gòu)DTD在數(shù)據(jù)類型信息方面也存在一定的缺陷。DTD文檔《Web開發(fā)技術(shù)》—XML基礎(chǔ)Schema的優(yōu)點(diǎn):更豐富的數(shù)據(jù)類型,支持布爾值、整數(shù)、日期和時(shí)間、統(tǒng)一資源描述符(UniformRestoreIdentifier——URL)、整數(shù)、小數(shù)、實(shí)數(shù)、時(shí)間間隔等。支持用戶定義的類型(稱做原型——archetype),這樣用戶可以定義自己命名的數(shù)據(jù)類型。支持屬性組,這使得模式作者可以顯式的定義幾個(gè)元素之間的關(guān)系??删喌脑突蚶^承關(guān)系,這允許出現(xiàn)比DTD定義的閉合模型更有靈活性的內(nèi)容模型。支持命名空間支持,這使得使用了命名空間的文檔的確認(rèn)能夠更簡單Schema文檔《Web開發(fā)技術(shù)》—XML基礎(chǔ)DTDvsSchema:Schema文檔《Web開發(fā)技術(shù)》—XML基礎(chǔ)DTDvsSchema:Schema文檔《Web開發(fā)技術(shù)》—XML基礎(chǔ)DTDvsSchema:Schema文檔《Web開發(fā)技術(shù)》—XML基礎(chǔ)DTDvsSchema:<?xmlversion="1.0"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don'tforgetmethisweekend!</body></note>Schema文檔《Web開發(fā)技術(shù)》—XML基礎(chǔ)轉(zhuǎn)成DTD<!ELEMENTnote(to,from,heading,body)><!ELEMENTto(#PCDATA)><!ELEMENTfrom(#PCDATA)><!ELEMENTheading(#PCDATA)><!ELEMENTbody(#PCDATA)>Schema文檔《Web開發(fā)技術(shù)》—XML基礎(chǔ)轉(zhuǎn)成SchemaSchema文檔《Web開發(fā)技術(shù)》—XML基礎(chǔ)Schema支持的原子類型
string:字符數(shù)據(jù)
boolean:布爾值
date:日期
dateTime:當(dāng)前時(shí)間,由日期和時(shí)間構(gòu)成
time:24小時(shí)格式的時(shí)間
decimal:任意精度和位數(shù)的十進(jìn)制數(shù)
integer:整數(shù)
float:三十二位浮點(diǎn)數(shù)
Schema文檔《Web開發(fā)技術(shù)》—XML基礎(chǔ)用于定義簡單數(shù)據(jù)類型規(guī)則的關(guān)鍵字Schema文檔《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML名稱空間在一個(gè)XML文檔中可以包含許多元素和屬性,當(dāng)使用其他人的XML文檔或在文檔中使用多個(gè)DTD文件時(shí),可能出現(xiàn)名稱相同的元素卻代表截然不同的含義,為了解決這一問題,通過給元素或?qū)傩约右幻Q空間來唯一標(biāo)識(shí)。1.4.1什么是XML名稱空間1.4.2XML名稱空間聲明<元素名xmlns:前綴名稱=“URI”>如:<bookxmlns:book=“”>采用<book:name>來限定引用注意:xml、xmlns不能用于名稱空間前綴。《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML名稱空間(2)<元素名xmlns=“URI”>URI標(biāo)識(shí)的是默認(rèn)的名稱空間,屬性值可以為空。如:<bookxmlns=“http:///book”>例:1-4-1.xml,1-4-2.xml一個(gè)元素可以有多個(gè)名稱空間前綴作為其屬性。例:1-4-3.xml1.4.2XML名稱空間聲明1.4.3默認(rèn)名稱空間聲明采用無前綴名的xmlns屬性將默認(rèn)的名稱空間附加給元素及其子元素。例:1-4-4.xml《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML名稱空間可以給屬性添加名稱空間例:1-4-5.xml1.4.4屬性添加名稱空間1.4.4名稱空間與DTD如果文檔中的元素使用了名稱空間,則DTD需要重寫。例:1-4-6.xml也可以使用默認(rèn)的名稱空間例:1-4-7.xml《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML顯示和轉(zhuǎn)換CSS:CascadingStyleSheets,層疊樣式表。通過<?xml-stylesheet?>處理指令,可以將CSS應(yīng)用于XML文檔的顯示,也可以將多個(gè)CSS應(yīng)用于單個(gè)XML文檔。例:1-5-1.css,1-5-1.xml1.5.1采用CSS顯示XML《Web開發(fā)技術(shù)》—XML基礎(chǔ)XML顯示、轉(zhuǎn)換技術(shù)基本思想:《Web開發(fā)技術(shù)》—XML基礎(chǔ)XSL:ExtensibleStyleLanuage,可擴(kuò)展的樣式語言。XSL能完成的工作:1.將XML文件轉(zhuǎn)換成HTML文件;2.過濾和分類XML數(shù)據(jù)及數(shù)據(jù);3.將特定的數(shù)據(jù)用特定的方式來呈現(xiàn);4.定義部分的XML文件;5.基于數(shù)據(jù)數(shù)據(jù)值格式化XML數(shù)據(jù),將XSL轉(zhuǎn)換的結(jié)果格式化成適合讀者或大眾使用的輸出格式。XML顯示、轉(zhuǎn)換技術(shù)《Web開發(fā)技術(shù)》—XML基礎(chǔ)XSL的組成XPath:一種定義XML部分或模式的語言,設(shè)計(jì)XPath是讓XSLT使用的。XSLT:一種轉(zhuǎn)換XML文件結(jié)構(gòu)的語言。XSL-FO:一種定義XML顯示方式的語言
XML顯示、轉(zhuǎn)換技術(shù)《Web開發(fā)技術(shù)》—XML基礎(chǔ)簡單的例子-Xml文件:<?xmlversion="1.0"encoding="UTF-8"?><cardtype
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個(gè)人創(chuàng)業(yè)投資延期借款合同
- 二零二五年度房地產(chǎn)項(xiàng)目開發(fā)合同合4篇
- 2025年度個(gè)人應(yīng)收賬款抵押債權(quán)轉(zhuǎn)讓合同4篇
- 2025年度美容院員工職業(yè)傷害賠償合同范本4篇
- 二零二五年度綠色建筑項(xiàng)目農(nóng)民工用工保障合同2篇
- 2025年度個(gè)人營運(yùn)汽車租賃車輛智能駕駛輔助系統(tǒng)安裝合同3篇
- 二零二五年度慈溪市生態(tài)環(huán)境編制與治理合同4篇
- 二零二五年度古董家具修復(fù)木工合同范本4篇
- 2025年度個(gè)人土地抵押貸款合同信用評(píng)估范本4篇
- 臨建設(shè)施轉(zhuǎn)讓合同范本(2024版)
- 《電力用直流電源系統(tǒng)蓄電池組遠(yuǎn)程充放電技術(shù)規(guī)范》
- 《哪吒之魔童降世》中的哪吒形象分析
- 信息化運(yùn)維服務(wù)信息化運(yùn)維方案
- 汽車修理廠員工守則
- 六年級(jí)上冊數(shù)學(xué)應(yīng)用題100題
- 個(gè)人代賣協(xié)議
- 公安交通管理行政處罰決定書式樣
- 10.《運(yùn)動(dòng)技能學(xué)習(xí)與控制》李強(qiáng)
- 冀教版數(shù)學(xué)七年級(jí)下冊綜合訓(xùn)練100題含答案
- 1神經(jīng)外科分級(jí)護(hù)理制度
- 場館惡劣天氣處置應(yīng)急預(yù)案
評(píng)論
0/150
提交評(píng)論