糯米文學吧

位置:首頁 > IT認證 > IBM認證

IBM認證:XML入門XML簡介

IBM認證7.12K

ML即為可擴展的標記語言(eXtensible Markup Language)。XML是一套定義語義標記的 規則,這些標記將文檔分成許多部件並對這些部件加以標識。

IBM認證:XML入門XML簡介

  什麼是XML

XML是標記語言。理解XML,首先要理解標記。先説説HTML的標記(Markup),通俗地講,它 就是一種用來給文本添加標記的語言。在HTML裏每個標誌都是有確切含義的。例如,在HTML 中,標籤〈B〉的含義是要求HTML瀏覽器將一段文本加粗表示,而標籤〈CENTER〉的含義是告 訴瀏 覽器將這段文本在一行的中間顯示。

而XML並非象HTML那樣,提供了一組事先已經定義好了的標籤,而是提供了一個標準,利用這 個標準,你可以根據實際需要定義自己的新的置標語言,併為你的這個置標語言規定它特有 的一套標籤。準確的説,XML是一種源置標語言,它允許你根據它所提供的規則,制定各種 各樣的置標語言。

  XML的產生

XML有兩個先驅——SGML和HTML,這兩個語言都是非常成功的標記語言,SGML的全稱是 標準通用化標記語言,它從80年代初開始使用。正如XML一樣,SGML也可用於創建成千 上萬的標記語言,它為語法置標提供了異常強大的工具,同時具有極好的擴展性,因此 在分類和索引數據中非常有用。目前,SGML多用於科技文獻和政府辦公文件中。SGML 非常之複雜,其複雜程度對於網絡上的日常應用簡直不可思議。不僅如此,SGML非常昂 貴。HTML免費、簡單,而且它獲得了廣泛的支持。它是一個非常簡單的SGML語言,可以 方便普通人的使用。1996年人們開始致力於描述一個置標語言,它既具有SGML的強大功 能和可擴展性,同時又具有HTML的簡單性。W3C於1998年2月批准了XML的1.0版本,一 個嶄新而大有前途的語言誕生了。

  XML的優點

允許各種不同的專業(如音樂、化學、數學等)開發與自己的特定領域有關的標記 語言。這就使得該領域中的人們可以交換筆記、數據和信息,而不用擔心接收端的人是否 有特定的軟件來創建數據。

具有較好的保值性.過去40年來的大多數計算機數據都丟失了,不是因為自然損害或 是備份介質的磨損,而只是因為沒有人來寫出如何讀取這些數據介質和格式的文檔。以不常 用的格式保存的二進制數據,數據也許會永遠地消失了。XML在基本水平上使用的是非常簡 單的數據格式。可以用100%的純ASCII文本來書寫,也可以用幾種其他定義好的格式來書 寫。ASCII文本是幾乎不會"磨損"的。

3.應用間交換數據.由於XML是非專有的並易於閲讀和編寫,就使得它成為在不同的應用間交 換數據的理想格式使用的是非專有的格式,不受版權、專利、商業祕密或是其他種類的 知識產權的限制。XML的功能是非常強大的,同時對於人類或是計算機程序來説,都容易閲 讀和編寫。因而成為交換語言的首選。

此外,相對於HTML,XML具有先天的優越性。

為了自己的瀏覽器增加一些特殊的顯示效果,HTML加入了一些特殊的標記。日益增多的標籤 不但使HTML越來越龐大,瀏覽器的開發越來越複雜,還降低了不同瀏覽器之間的兼容性。 儘管HTML的標籤越來越多,其顯示力卻還遠遠不夠。如果你希望非常精確地表現一些你自 己的數據,可能你需要一些現在在HTML中尚不存在的標籤。現在HTML內部結構的條理性越 來越差。你寫的HTML文件,甚至是那些專門的所見即所得工具自動生成的HTML文件,可能 在語法上會錯誤百出,不過沒關係,瀏覽器照樣能讀它。

現在有了XML,你終於可以自由地制定你自己的置標語言,而不必再念念不忘微軟、 Netscape、W3C的首肯了。實際上,現在許多行業、機構都利用XML定義了自己的置標語 言。比較早而且比較典型的是下面兩個實例:

化學置標語言CML (Chemistry Markup Language)數學置標語言MathML (Mathematical Markup Language)一個簡單的XML文檔

現在讓我們考察一個簡單的XML文檔:

Hello XML!

第一行是XML聲明:

這是XML處理指令的例子。處理指令以結束。在

XML聲明有version和standalone兩個特性。特性是由等號分開的名稱-數值對。位於等號 左邊的是特性名,而其值位於等號的右邊,並用雙引號括起來。每一個XML文檔都以一個XML 聲明開始,用以指明所用的XML的版本。在上例中, version特性表明這個文檔符合XML 1.0 規範。XML聲明還可以有standalone特性,這告訴我們文檔是否在這一個文件裏還是需要從外 部導入文件。在本例中,以及在以後的幾章中,所有的文檔都在一個文件裏完成,因而 standalone特性的值要設置為yes。

再看剩下三行。總體上説,這三行組成了FOO元素。分開説,是開始標記,而 是結束標記,Hello XML!是FOO元素的內容。讀者可能要問,標記的意義是什麼? 回答是"你要讓它是什麼就是什麼"。除了幾百個預定義的標記之外,XML還允許用户創建 所需的標記。因而標記可以具有用户賦於的任何意義.同一個XML文檔可以用不同的 標記名編寫,如:

Hello XML!

或是:

Hello XML!

  XML標記的意義

標記有三類意義:結構、語義和樣式。結構將文檔分成元素樹。語義將單個的元素與 外部的實際事物聯繫起來。而樣式指定如何顯示元素。

結構只是表達文檔的形式,而不管單個標記和元素間的差別。它們都指定文檔具有一個 非空的基本元素。標記的不同名稱沒有結構上的意義。語義的意義存在於文檔之外,在 作者的心中或是讀者或是某些生成或讀取這些文件的計算機程序中。例如,理解HTML但 不理解XML的Web瀏覽器,可能會將段落的意義賦給

標記。講英語的人可能會 比和或

更容易理解和或是 和的意義。

正如"美麗"的意義存在於觀察者心中。自然地,使標記的名稱能夠儘可能反映其包含的意 義更好一些。許多學科,如數學和化學正在創建該學科的工業標準和標記集。

可以與標記相聯繫的第三類意義是樣式意義。樣式意義指定標記的內容如何在計算機屏幕 上或是其他輸出設備上展示。樣式意義説明特定的元素是否是用粗體、斜體、綠色的24磅 的字體還是其他字體加以表示。計算機在理解樣式時比理解語義意義要好一些。在XML中, 樣式意義是通過樣式單來施加的。(以後將會提到)

  XML文件的整體結構

xml文件包括三部分:XML聲明、處理指示(可選)、XML元素。XML文檔的一個基本 要求是形式良好的(well formed),一個形式良好的XML文檔要包含這三個部分。

下面是一個完整的xml文檔(程序1.1):

<學生花名冊>

<學生>

<名字>李華

<籍貫>河北

<年齡>15

<電話號碼>62875555

<學生>

<名字>張三

<籍貫>北京

<年齡>14

<電話號碼>82873425

  處理指示

處理指示是用來給處理XML文件的應用程序提供信息的。所有的處理指示應該遵循 下面的格式:

例如這個處理指示:

指定與了XML文件配套使用的樣式單的類型為xsl及文件名為:

  XML文件的實質內容——元素

元素是XML文件內容的基本單元。從語法上講,一個元素包含一個起始標記、 一個結束標記以及標記之間的數據內容。其形式是:

<標記>數據內容

另外,元素中還可以再嵌套別的元素。比如數據內容可再擴展為

<標記1>數據內容1

<標記2>數據內容2

...

<標記n>數據內容1

元素裏還可以再嵌套元素,實現循環嵌套。最外層的元素稱為根元素。一個xml文檔 只能有一個根元素。

  字符數據與實體引用

一對標記之間出現的字符數據可以是任何合法的UNICODE字符,但不能包含字符"〈"。 這是因為,字符"〈"被預留用作標記的開始符。

在XML中,起始和結束標記之間出現的所有合法字符都被忠實地傳給XML處理程序。 為了避免把字符數據和標記中需要用到的一些特殊符號相混淆,XML還提供了一些有用的 實體引用。實體引用的作用是,當在字符數據中需要使用這些特殊符號時,我們採用它的 實體引用來代替。這些特殊的XML實體引用包括:

> >

< <

& &

" "

’ '

這樣,如果我們需要在"示例"這個標記中出現文本

"<姓名>張三"

正確的寫法應該是:

〈示例〉<姓名>張三〈/示例〉

容易理解,字符"〈"的實體引用是必不可少的,為"〉"設立實體引用同樣是為了避免與 標記混淆,而字符"&"的實體引用則防止它與實體引用中開頭所用的"&"相混淆。那麼, 我們什麼時候需要用到剩下兩個字符的實體引用呢?在標記中可以為標記設立屬性, 而XML規定屬性值必須用"""括起來。因此,當屬性值中出現字符"""時,需要將它 用實體引用代替。請看下面的例子:

正確的.寫法應該是:

  標記

正如我們開篇所講,標記是XML語言的精髓。因此,標記在XML的元素中、乃至整個XML 文件中,佔了舉足輕重的位置。

XML的標記和HTML的標記在模樣上大體相同,除了註釋和CDATA部分以外,所有符號〈 和符號〉之間的內容都稱為標記。其基本形式為:

〈標記名 (屬性名="屬性取值")*〉

不過,XML對於標記的語法規定可比HTML要嚴格得多。

大小寫有所區分

在標記中必須注意區分大小寫。在HTML中,標記〈HELLO〉和〈hello〉是一回事,但 在XML中,它們是兩個截然不同的標記。

要有正確的結束標記

結束標記除了要和開始標記在拼寫和大小寫上完全相同,還必須在前面加上一個斜槓 "/"。因此,如果開始標記是〈HELLO〉,結束標記應該寫作〈/HELLO〉。XML嚴格 要求標記配對,因此,HTML中的、

的元素形式在XML中是不合法的。不過, 為了簡便起見,當一對標記之間沒有任何文本內容時,可以不寫結束標記,而在開始 標記的最後慣以斜槓"/"來確認。這樣的標記稱為"空標記"。例如,HTML中的標記 〈HR〉在XML中的使用方式應該是:。

標記要正確嵌套

在一個XML元素中允許包含其它XML元素,但這些元素之間必須滿足嵌套性。

有效使用屬性

最後要指出的是,標記中可以包含任意多個屬性。在標記中,屬性以名稱/取值對出現, 屬性名不能重複,名稱與取值之間用等號"="分隔,且取值用引號引起來。例如:

<商品 類型 = "服裝" 顏色 = "黃色">

在這個例子中,"類型"和"顏色"是標記"商品"的屬性,"服裝"是屬性"類型"的 取值,"黃色"是屬性"顏色"的取值。

需要特別注意的是,在XML中屬性的取值必須用引號引起來,而在HTML中這一點並不 嚴格要求。

  CDATA

正象我們前面所説,我們可以把XML文件中除標記以外的所有內容都看作是字符 數據,而把標記中的所有內容都看作置標。不過,也有一個例外。在一個特殊的 標記CDATA下,所有的標記、實體引用都被忽略,而被XML處理程序一視同仁地 當作字符數據看待。CDATA的形式如下:

〈![CDATA[

文本內容

]]〉

聰明的讀者可能已經猜出,CDATA的文本內容中是不能出現字符串"]]〉"的, 因為它代表了CDATA數據塊的結束標誌。

在前面講字符數據時,我們談到過實體引用。可想而知,當你的文本數據中包含 大量特殊符號時,你不得不通篇地使用實體引用,把本來很清晰的一段文字搞得 亂七八糟。例如,我們要在"示例"元素中放入了一個這麼XML程序。

<聯繫人>

<姓名>張三

這時,如果沒有CDATA,那麼麻煩來了。這個元素需要寫成下面的樣子:

<示例>

<聯繫人>

<姓名>張三

哇,你要把所有的標記都用實體引用改寫,最後寫出來的東西連你自己都看不懂了。 為了避免這種不便,你可以把這些字符數據放在一個CDATA數據塊中,這樣不管它 看上去是一個標記還是一個實體引用,這些數據統統被當作字符照單全收。於是, 上面的元素就可以寫為這個樣子:

<示例>

<聯繫人>

<姓名>張三

]]〉

〈/示例〉

清楚多了吧!

  註釋

象前一節的例子中那樣,有些時候,你希望XML處理器能夠把你在數據中引入的 標記當作普通數據而不是真正的標記來看待。這時,CDATA為你助了一臂之力。 另外還有些時候,就象在程序中引入註釋一樣,你可能希望在XML文件中加入一 些用作解釋的字符數據,並且希望XML處理器不對它們進行任何處理。這種類型 的文本稱作註釋(COMMENT)文本。

在HTML中,註釋是用"〈!--"和"--〉"引起來的。在XML中,註釋的方法完全 相同。因此,下面是一個合法的XML(但不是形式良好的)文件: <示例>

<聯繫人>

<姓名>張三

]]>

不過,在XML文件中使用註釋時,同樣要遵守幾個規則:

在註釋文本中不能出現字符"-"或字符串"--",XML處理器可能把它們和註釋結尾 標誌"-->"相混淆。

不要把註釋文本放在標記之中。類似地,不要把註釋文本放在實體聲明中,也不要 放在XML聲明之前。記住,永遠用XML聲明作為XML文件中的第一行。

註釋不能被嵌套。在使用一對註釋符號表示註釋文本時,要保證其中不再包含另一 對註釋符號。例如下面例子是不合法的:

-->

最後再重申一遍,XML處理器對於註釋中的一切內容都會視而不見,註釋中出現的 標記也一同被忽略。

  形式良好的XML

為了使一個文檔"形式良好",XML文檔中的所有置標和字符數據必須遵守前幾節中給出 的規則。而且有幾條關於如何把置標和字符數據相互聯繫起來的規則。 這些規則總結如下:

文檔的開始必須是XML聲明。

含有數據的元素必須有起始標記和結束標記。

不含數據並且僅使用一個標記的元素必須以/>結束。

文檔只能包含一個能夠包含全部其他元素的元素。

元素只能嵌套不能重疊。

屬性值必須加引號。

字符<和&只能用於起始標記和實體引用。

出現的實體引用只有&、<、>、'和"。

標籤:XML IBM