- 相關推薦
IBM認證:XML入門XML簡介
ML即為可擴展的標記語言(eXtensible Markup Language)。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的優點
1.XML允許各種不同的專業(如音樂、化學、數學等)開發與自己的特定領域有關的標記 語言。這就使得該領域中的人們可以交換筆記、數據和信息,而不用擔心接收端的人是否 有特定的軟件來創建數據。
2.XML具有較好的保值性.過去40年來的大多數計算機數據都丟失了,不是因為自然損害或 是備份介質的磨損,而只是因為沒有人來寫出如何讀取這些數據介質和格式的文檔。以不常 用的格式保存的二進制數據,數據也許會永遠地消失了。XML在基本水平上使用的是非常簡 單的數據格式?梢杂100%的純ASCII文本來書寫,也可以用幾種其他定義好的格式來書 寫。ASCII文本是幾乎不會"磨損"的。
3.應用間交換數據.由于XML是非專有的并易于閱讀和編寫,就使得它成為在不同的應用間交 換數據的理想格式.XML使用的是非專有的格式,不受版權、專利、商業秘密或是其他種類的 知識產權的限制。XML的功能是非常強大的,同時對于人類或是計算機程序來說,都容易閱 讀和編寫。因而成為交換語言的首選。
此外,相對于HTML,XML具有先天的優越性。
為了自己的瀏覽器增加一些特殊的顯示效果,HTML加入了一些特殊的標記。日益增多的標簽 不但使HTML越來越龐大,瀏覽器的開發越來越復雜,還降低了不同瀏覽器之間的兼容性。 盡管HTML的標簽越來越多,其顯示力卻還遠遠不夠。如果你希望非常精確地表現一些你自 己的數據,可能你需要一些現在在HTML中尚不存在的標簽,F在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。
再看剩下三行?傮w上說,這三行組成了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及文件名為mystyle.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程序。
<聯系人>
<姓名>張三
zhang@aaa.com
這時,如果沒有CDATA,那么麻煩來了。這個元素需要寫成下面的樣子:
<示例>
<聯系人>
<姓名>張三
zhang@aaa.com
哇,你要把所有的標記都用實體引用改寫,最后寫出來的東西連你自己都看不懂了。 為了避免這種不便,你可以把這些字符數據放在一個CDATA數據塊中,這樣不管它 看上去是一個標記還是一個實體引用,這些數據統統被當作字符照單全收。于是, 上面的元素就可以寫為這個樣子:
<示例>
<聯系人>
<姓名>張三
zhang@aaa.com
]]〉
〈/示例〉
清楚多了吧!
注釋
象前一節的例子中那樣,有些時候,你希望XML處理器能夠把你在數據中引入的 標記當作普通數據而不是真正的標記來看待。這時,CDATA為你助了一臂之力。 另外還有些時候,就象在程序中引入注釋一樣,你可能希望在XML文件中加入一 些用作解釋的字符數據,并且希望XML處理器不對它們進行任何處理。這種類型 的文本稱作注釋(COMMENT)文本。
在HTML中,注釋是用"〈!--"和"--〉"引起來的。在XML中,注釋的方法完全 相同。因此,下面是一個合法的XML(但不是形式良好的)文件: <示例>
<聯系人>
<姓名>張三
zhang@aaa.com
]]>
不過,在XML文件中使用注釋時,同樣要遵守幾個規則:
在注釋文本中不能出現字符"-"或字符串"--",XML處理器可能把它們和注釋結尾 標志"-->"相混淆。
不要把注釋文本放在標記之中。類似地,不要把注釋文本放在實體聲明中,也不要 放在XML聲明之前。記住,永遠用XML聲明作為XML文件中的第一行。
注釋不能被嵌套。在使用一對注釋符號表示注釋文本時,要保證其中不再包含另一 對注釋符號。例如下面例子是不合法的:
-->
最后再重申一遍,XML處理器對于注釋中的一切內容都會視而不見,注釋中出現的 標記也一同被忽略。
形式良好的XML
為了使一個文檔"形式良好",XML文檔中的所有置標和字符數據必須遵守前幾節中給出 的規則。而且有幾條關于如何把置標和字符數據相互聯系起來的規則。 這些規則總結如下:
文檔的開始必須是XML聲明。
含有數據的元素必須有起始標記和結束標記。
不含數據并且僅使用一個標記的元素必須以/>結束。
文檔只能包含一個能夠包含全部其他元素的元素。
元素只能嵌套不能重疊。
屬性值必須加引號。
字符<和&只能用于起始標記和實體引用。
出現的實體引用只有&、<、>、'和"。
【IBM認證:XML入門XML簡介】相關文章:
關于IBM XML認證考試的要點09-07
IBM XML認證知識點:Dtd09-01
XML入門教程10-22
關于XML的入門教程10-06
XML入門操作程序09-30
XML認證元素類型聲明05-28
XML名稱空間入門教程06-07
IBM認證簡介07-24
關于XML入門教程:分析XM09-25
XML認證考試知識點:Parser08-21