- 相關(guān)推薦
IBM認(rèn)證:XML入門XML簡(jiǎn)介
ML即為可擴(kuò)展的標(biāo)記語言(eXtensible Markup Language)。XML是一套定義語義標(biāo)記的 規(guī)則,這些標(biāo)記將文檔分成許多部件并對(duì)這些部件加以標(biāo)識(shí)。
什么是XML
XML是標(biāo)記語言。理解XML,首先要理解標(biāo)記。先說說HTML的標(biāo)記(Markup),通俗地講,它 就是一種用來給文本添加標(biāo)記的語言。在HTML里每個(gè)標(biāo)志都是有確切含義的。例如,在HTML 中,標(biāo)簽〈B〉的含義是要求HTML瀏覽器將一段文本加粗表示,而標(biāo)簽〈CENTER〉的含義是告 訴瀏 覽器將這段文本在一行的中間顯示。
而XML并非象HTML那樣,提供了一組事先已經(jīng)定義好了的標(biāo)簽,而是提供了一個(gè)標(biāo)準(zhǔn),利用這 個(gè)標(biāo)準(zhǔn),你可以根據(jù)實(shí)際需要定義自己的新的置標(biāo)語言,并為你的這個(gè)置標(biāo)語言規(guī)定它特有 的一套標(biāo)簽。準(zhǔn)確的說,XML是一種源置標(biāo)語言,它允許你根據(jù)它所提供的規(guī)則,制定各種 各樣的置標(biāo)語言。
XML的產(chǎn)生
XML有兩個(gè)先驅(qū)——SGML和HTML,這兩個(gè)語言都是非常成功的標(biāo)記語言,SGML的全稱是 標(biāo)準(zhǔn)通用化標(biāo)記語言,它從80年代初開始使用。正如XML一樣,SGML也可用于創(chuàng)建成千 上萬的標(biāo)記語言,它為語法置標(biāo)提供了異常強(qiáng)大的工具,同時(shí)具有極好的擴(kuò)展性,因此 在分類和索引數(shù)據(jù)中非常有用。目前,SGML多用于科技文獻(xiàn)和政府辦公文件中。SGML 非常之復(fù)雜,其復(fù)雜程度對(duì)于網(wǎng)絡(luò)上的日常應(yīng)用簡(jiǎn)直不可思議。不僅如此,SGML非常昂 貴。HTML免費(fèi)、簡(jiǎn)單,而且它獲得了廣泛的支持。它是一個(gè)非常簡(jiǎn)單的SGML語言,可以 方便普通人的使用。1996年人們開始致力于描述一個(gè)置標(biāo)語言,它既具有SGML的強(qiáng)大功 能和可擴(kuò)展性,同時(shí)又具有HTML的簡(jiǎn)單性。W3C于1998年2月批準(zhǔn)了XML的1.0版本,一 個(gè)嶄新而大有前途的語言誕生了。
XML的優(yōu)點(diǎn)
1.XML允許各種不同的專業(yè)(如音樂、化學(xué)、數(shù)學(xué)等)開發(fā)與自己的特定領(lǐng)域有關(guān)的標(biāo)記 語言。這就使得該領(lǐng)域中的人們可以交換筆記、數(shù)據(jù)和信息,而不用擔(dān)心接收端的人是否 有特定的軟件來創(chuàng)建數(shù)據(jù)。
2.XML具有較好的保值性.過去40年來的大多數(shù)計(jì)算機(jī)數(shù)據(jù)都丟失了,不是因?yàn)樽匀粨p害或 是備份介質(zhì)的磨損,而只是因?yàn)闆]有人來寫出如何讀取這些數(shù)據(jù)介質(zhì)和格式的文檔。以不常 用的格式保存的二進(jìn)制數(shù)據(jù),數(shù)據(jù)也許會(huì)永遠(yuǎn)地消失了。XML在基本水平上使用的是非常簡(jiǎn) 單的數(shù)據(jù)格式?梢杂100%的純ASCII文本來書寫,也可以用幾種其他定義好的格式來書 寫。ASCII文本是幾乎不會(huì)"磨損"的。
3.應(yīng)用間交換數(shù)據(jù).由于XML是非專有的并易于閱讀和編寫,就使得它成為在不同的應(yīng)用間交 換數(shù)據(jù)的理想格式.XML使用的是非專有的格式,不受版權(quán)、專利、商業(yè)秘密或是其他種類的 知識(shí)產(chǎn)權(quán)的限制。XML的功能是非常強(qiáng)大的,同時(shí)對(duì)于人類或是計(jì)算機(jī)程序來說,都容易閱 讀和編寫。因而成為交換語言的首選。
此外,相對(duì)于HTML,XML具有先天的優(yōu)越性。
為了自己的瀏覽器增加一些特殊的顯示效果,HTML加入了一些特殊的標(biāo)記。日益增多的標(biāo)簽 不但使HTML越來越龐大,瀏覽器的開發(fā)越來越復(fù)雜,還降低了不同瀏覽器之間的兼容性。 盡管HTML的標(biāo)簽越來越多,其顯示力卻還遠(yuǎn)遠(yuǎn)不夠。如果你希望非常精確地表現(xiàn)一些你自 己的數(shù)據(jù),可能你需要一些現(xiàn)在在HTML中尚不存在的標(biāo)簽,F(xiàn)在HTML內(nèi)部結(jié)構(gòu)的條理性越 來越差。你寫的HTML文件,甚至是那些專門的所見即所得工具自動(dòng)生成的HTML文件,可能 在語法上會(huì)錯(cuò)誤百出,不過沒關(guān)系,瀏覽器照樣能讀它。
現(xiàn)在有了XML,你終于可以自由地制定你自己的置標(biāo)語言,而不必再念念不忘微軟、 Netscape、W3C的首肯了。實(shí)際上,現(xiàn)在許多行業(yè)、機(jī)構(gòu)都利用XML定義了自己的置標(biāo)語 言。比較早而且比較典型的是下面兩個(gè)實(shí)例:
化學(xué)置標(biāo)語言CML (Chemistry Markup Language)數(shù)學(xué)置標(biāo)語言MathML (Mathematical Markup Language)一個(gè)簡(jiǎn)單的XML文檔
現(xiàn)在讓我們考察一個(gè)簡(jiǎn)單的XML文檔:
Hello XML!
第一行是XML聲明:
這是XML處理指令的例子。處理指令以結(jié)束。在
XML聲明有version和standalone兩個(gè)特性。特性是由等號(hào)分開的名稱-數(shù)值對(duì)。位于等號(hào) 左邊的是特性名,而其值位于等號(hào)的右邊,并用雙引號(hào)括起來。每一個(gè)XML文檔都以一個(gè)XML 聲明開始,用以指明所用的XML的版本。在上例中, version特性表明這個(gè)文檔符合XML 1.0 規(guī)范。XML聲明還可以有standalone特性,這告訴我們文檔是否在這一個(gè)文件里還是需要從外 部導(dǎo)入文件。在本例中,以及在以后的幾章中,所有的文檔都在一個(gè)文件里完成,因而 standalone特性的值要設(shè)置為yes。
再看剩下三行?傮w上說,這三行組成了FOO元素。分開說,是開始標(biāo)記,而 是結(jié)束標(biāo)記,Hello XML!是FOO元素的內(nèi)容。讀者可能要問,標(biāo)記的意義是什么? 回答是"你要讓它是什么就是什么"。除了幾百個(gè)預(yù)定義的標(biāo)記之外,XML還允許用戶創(chuàng)建 所需的標(biāo)記。因而標(biāo)記可以具有用戶賦于的任何意義.同一個(gè)XML文檔可以用不同的 標(biāo)記名編寫,如:
Hello XML!
或是:
Hello XML!
XML標(biāo)記的意義
標(biāo)記有三類意義:結(jié)構(gòu)、語義和樣式。結(jié)構(gòu)將文檔分成元素樹。語義將單個(gè)的元素與 外部的實(shí)際事物聯(lián)系起來。而樣式指定如何顯示元素。
結(jié)構(gòu)只是表達(dá)文檔的形式,而不管單個(gè)標(biāo)記和元素間的差別。它們都指定文檔具有一個(gè) 非空的基本元素。標(biāo)記的不同名稱沒有結(jié)構(gòu)上的意義。語義的意義存在于文檔之外,在 作者的心中或是讀者或是某些生成或讀取這些文件的計(jì)算機(jī)程序中。例如,理解HTML但 不理解XML的Web瀏覽器,可能會(huì)將段落的意義賦給
和
標(biāo)記。講英語的人可能會(huì) 比和或
或
更容易理解和或是 和的意義。
正如"美麗"的意義存在于觀察者心中。自然地,使標(biāo)記的名稱能夠盡可能反映其包含的意 義更好一些。許多學(xué)科,如數(shù)學(xué)和化學(xué)正在創(chuàng)建該學(xué)科的工業(yè)標(biāo)準(zhǔn)和標(biāo)記集。
可以與標(biāo)記相聯(lián)系的第三類意義是樣式意義。樣式意義指定標(biāo)記的內(nèi)容如何在計(jì)算機(jī)屏幕 上或是其他輸出設(shè)備上展示。樣式意義說明特定的元素是否是用粗體、斜體、綠色的24磅 的字體還是其他字體加以表示。計(jì)算機(jī)在理解樣式時(shí)比理解語義意義要好一些。在XML中, 樣式意義是通過樣式單來施加的。(以后將會(huì)提到)
XML文件的整體結(jié)構(gòu)
xml文件包括三部分:XML聲明、處理指示(可選)、XML元素。XML文檔的一個(gè)基本 要求是形式良好的(well formed),一個(gè)形式良好的XML文檔要包含這三個(gè)部分。
下面是一個(gè)完整的xml文檔(程序1.1):
<學(xué)生花名冊(cè)>
<學(xué)生>
<名字>李華
<籍貫>河北
<年齡>15
<電話號(hào)碼>62875555
<學(xué)生>
<名字>張三
<籍貫>北京
<年齡>14
<電話號(hào)碼>82873425
處理指示
處理指示是用來給處理XML文件的應(yīng)用程序提供信息的。所有的處理指示應(yīng)該遵循 下面的格式:
例如這個(gè)處理指示:
指定與了XML文件配套使用的樣式單的類型為xsl及文件名為mystyle.xsl:
XML文件的實(shí)質(zhì)內(nèi)容——元素
元素是XML文件內(nèi)容的基本單元。從語法上講,一個(gè)元素包含一個(gè)起始標(biāo)記、 一個(gè)結(jié)束標(biāo)記以及標(biāo)記之間的數(shù)據(jù)內(nèi)容。其形式是:
<標(biāo)記>數(shù)據(jù)內(nèi)容
另外,元素中還可以再嵌套別的元素。比如數(shù)據(jù)內(nèi)容可再擴(kuò)展為
<標(biāo)記1>數(shù)據(jù)內(nèi)容1
<標(biāo)記2>數(shù)據(jù)內(nèi)容2
...
<標(biāo)記n>數(shù)據(jù)內(nèi)容1
元素里還可以再嵌套元素,實(shí)現(xiàn)循環(huán)嵌套。最外層的元素稱為根元素。一個(gè)xml文檔 只能有一個(gè)根元素。
字符數(shù)據(jù)與實(shí)體引用
一對(duì)標(biāo)記之間出現(xiàn)的字符數(shù)據(jù)可以是任何合法的UNICODE字符,但不能包含字符"〈"。 這是因?yàn),字?quot;〈"被預(yù)留用作標(biāo)記的開始符。
在XML中,起始和結(jié)束標(biāo)記之間出現(xiàn)的所有合法字符都被忠實(shí)地傳給XML處理程序。 為了避免把字符數(shù)據(jù)和標(biāo)記中需要用到的一些特殊符號(hào)相混淆,XML還提供了一些有用的 實(shí)體引用。實(shí)體引用的作用是,當(dāng)在字符數(shù)據(jù)中需要使用這些特殊符號(hào)時(shí),我們采用它的 實(shí)體引用來代替。這些特殊的XML實(shí)體引用包括:
> >
< <
& &
" "
’ '
這樣,如果我們需要在"示例"這個(gè)標(biāo)記中出現(xiàn)文本
"<姓名>張三"
正確的寫法應(yīng)該是:
〈示例〉<姓名>張三〈/示例〉
容易理解,字符"〈"的實(shí)體引用是必不可少的,為"〉"設(shè)立實(shí)體引用同樣是為了避免與 標(biāo)記混淆,而字符"&"的實(shí)體引用則防止它與實(shí)體引用中開頭所用的"&"相混淆。那么, 我們什么時(shí)候需要用到剩下兩個(gè)字符的實(shí)體引用呢?在標(biāo)記中可以為標(biāo)記設(shè)立屬性, 而XML規(guī)定屬性值必須用"""括起來。因此,當(dāng)屬性值中出現(xiàn)字符"""時(shí),需要將它 用實(shí)體引用代替。請(qǐng)看下面的例子:
正確的寫法應(yīng)該是:
標(biāo)記
正如我們開篇所講,標(biāo)記是XML語言的精髓。因此,標(biāo)記在XML的元素中、乃至整個(gè)XML 文件中,占了舉足輕重的位置。
XML的標(biāo)記和HTML的標(biāo)記在模樣上大體相同,除了注釋和CDATA部分以外,所有符號(hào)〈 和符號(hào)〉之間的內(nèi)容都稱為標(biāo)記。其基本形式為:
〈標(biāo)記名 (屬性名="屬性取值")*〉
不過,XML對(duì)于標(biāo)記的語法規(guī)定可比HTML要嚴(yán)格得多。
大小寫有所區(qū)分
在標(biāo)記中必須注意區(qū)分大小寫。在HTML中,標(biāo)記〈HELLO〉和〈hello〉是一回事,但 在XML中,它們是兩個(gè)截然不同的標(biāo)記。
要有正確的結(jié)束標(biāo)記
結(jié)束標(biāo)記除了要和開始標(biāo)記在拼寫和大小寫上完全相同,還必須在前面加上一個(gè)斜杠 "/"。因此,如果開始標(biāo)記是〈HELLO〉,結(jié)束標(biāo)記應(yīng)該寫作〈/HELLO〉。XML嚴(yán)格 要求標(biāo)記配對(duì),因此,HTML中的、
的元素形式在XML中是不合法的。不過, 為了簡(jiǎn)便起見,當(dāng)一對(duì)標(biāo)記之間沒有任何文本內(nèi)容時(shí),可以不寫結(jié)束標(biāo)記,而在開始 標(biāo)記的最后慣以斜杠"/"來確認(rèn)。這樣的標(biāo)記稱為"空標(biāo)記"。例如,HTML中的標(biāo)記 〈HR〉在XML中的使用方式應(yīng)該是:。
標(biāo)記要正確嵌套
在一個(gè)XML元素中允許包含其它XML元素,但這些元素之間必須滿足嵌套性。
有效使用屬性
最后要指出的是,標(biāo)記中可以包含任意多個(gè)屬性。在標(biāo)記中,屬性以名稱/取值對(duì)出現(xiàn), 屬性名不能重復(fù),名稱與取值之間用等號(hào)"="分隔,且取值用引號(hào)引起來。例如:
<商品 類型 = "服裝" 顏色 = "黃色">
在這個(gè)例子中,"類型"和"顏色"是標(biāo)記"商品"的屬性,"服裝"是屬性"類型"的 取值,"黃色"是屬性"顏色"的取值。
需要特別注意的是,在XML中屬性的取值必須用引號(hào)引起來,而在HTML中這一點(diǎn)并不 嚴(yán)格要求。
CDATA
正象我們前面所說,我們可以把XML文件中除標(biāo)記以外的所有內(nèi)容都看作是字符 數(shù)據(jù),而把標(biāo)記中的所有內(nèi)容都看作置標(biāo)。不過,也有一個(gè)例外。在一個(gè)特殊的 標(biāo)記CDATA下,所有的標(biāo)記、實(shí)體引用都被忽略,而被XML處理程序一視同仁地 當(dāng)作字符數(shù)據(jù)看待。CDATA的形式如下:
〈![CDATA[
文本內(nèi)容
]]〉
聰明的讀者可能已經(jīng)猜出,CDATA的文本內(nèi)容中是不能出現(xiàn)字符串"]]〉"的, 因?yàn)樗砹薈DATA數(shù)據(jù)塊的結(jié)束標(biāo)志。
在前面講字符數(shù)據(jù)時(shí),我們談到過實(shí)體引用?上攵,當(dāng)你的文本數(shù)據(jù)中包含 大量特殊符號(hào)時(shí),你不得不通篇地使用實(shí)體引用,把本來很清晰的一段文字搞得 亂七八糟。例如,我們要在"示例"元素中放入了一個(gè)這么XML程序。
<聯(lián)系人>
<姓名>張三
zhang@aaa.com
這時(shí),如果沒有CDATA,那么麻煩來了。這個(gè)元素需要寫成下面的樣子:
<示例>
<聯(lián)系人>
<姓名>張三
zhang@aaa.com
哇,你要把所有的標(biāo)記都用實(shí)體引用改寫,最后寫出來的東西連你自己都看不懂了。 為了避免這種不便,你可以把這些字符數(shù)據(jù)放在一個(gè)CDATA數(shù)據(jù)塊中,這樣不管它 看上去是一個(gè)標(biāo)記還是一個(gè)實(shí)體引用,這些數(shù)據(jù)統(tǒng)統(tǒng)被當(dāng)作字符照單全收。于是, 上面的元素就可以寫為這個(gè)樣子:
<示例>
<聯(lián)系人>
<姓名>張三
zhang@aaa.com
]]〉
〈/示例〉
清楚多了吧!
注釋
象前一節(jié)的例子中那樣,有些時(shí)候,你希望XML處理器能夠把你在數(shù)據(jù)中引入的 標(biāo)記當(dāng)作普通數(shù)據(jù)而不是真正的標(biāo)記來看待。這時(shí),CDATA為你助了一臂之力。 另外還有些時(shí)候,就象在程序中引入注釋一樣,你可能希望在XML文件中加入一 些用作解釋的字符數(shù)據(jù),并且希望XML處理器不對(duì)它們進(jìn)行任何處理。這種類型 的文本稱作注釋(COMMENT)文本。
在HTML中,注釋是用"〈!--"和"--〉"引起來的。在XML中,注釋的方法完全 相同。因此,下面是一個(gè)合法的XML(但不是形式良好的)文件: <示例>
<聯(lián)系人>
<姓名>張三
zhang@aaa.com
]]>
不過,在XML文件中使用注釋時(shí),同樣要遵守幾個(gè)規(guī)則:
在注釋文本中不能出現(xiàn)字符"-"或字符串"--",XML處理器可能把它們和注釋結(jié)尾 標(biāo)志"-->"相混淆。
不要把注釋文本放在標(biāo)記之中。類似地,不要把注釋文本放在實(shí)體聲明中,也不要 放在XML聲明之前。記住,永遠(yuǎn)用XML聲明作為XML文件中的第一行。
注釋不能被嵌套。在使用一對(duì)注釋符號(hào)表示注釋文本時(shí),要保證其中不再包含另一 對(duì)注釋符號(hào)。例如下面例子是不合法的:
-->
最后再重申一遍,XML處理器對(duì)于注釋中的一切內(nèi)容都會(huì)視而不見,注釋中出現(xiàn)的 標(biāo)記也一同被忽略。
形式良好的XML
為了使一個(gè)文檔"形式良好",XML文檔中的所有置標(biāo)和字符數(shù)據(jù)必須遵守前幾節(jié)中給出 的規(guī)則。而且有幾條關(guān)于如何把置標(biāo)和字符數(shù)據(jù)相互聯(lián)系起來的規(guī)則。 這些規(guī)則總結(jié)如下:
文檔的開始必須是XML聲明。
含有數(shù)據(jù)的元素必須有起始標(biāo)記和結(jié)束標(biāo)記。
不含數(shù)據(jù)并且僅使用一個(gè)標(biāo)記的元素必須以/>結(jié)束。
文檔只能包含一個(gè)能夠包含全部其他元素的元素。
元素只能嵌套不能重疊。
屬性值必須加引號(hào)。
字符<和&只能用于起始標(biāo)記和實(shí)體引用。
出現(xiàn)的實(shí)體引用只有&、<、>、'和"。
【IBM認(rèn)證:XML入門XML簡(jiǎn)介】相關(guān)文章:
關(guān)于IBM XML認(rèn)證考試的要點(diǎn)09-07
IBM XML認(rèn)證知識(shí)點(diǎn):Dtd09-01
XML入門教程10-22
關(guān)于XML的入門教程10-06
XML入門操作程序09-30
XML認(rèn)證元素類型聲明05-28
XML名稱空間入門教程06-07
IBM認(rèn)證簡(jiǎn)介07-24
關(guān)于XML入門教程:分析XM09-25