當前位置:才華齋>IT認證>IBM認證>

IBM認證:XML入門XML簡介

IBM認證 閱讀(7.5K)

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宣告。

含有資料的元素必須有起始標記和結束標記。

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

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

元素只能巢狀不能重疊。

屬性值必須加引號。

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

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