二、XML基礎 (一)XML術語 在學習XML之前,我想先給大家介紹一些XML使用的術語。平常我們學習新的語言時,總會遇到許多難以理解的術語,在這裡 就先介紹一些主要的給大家。 元素(Elements):代表XML文檔中的每一個組件,包含字元、元素或者兩者皆有,允許有空元素(empty element)。 屬性(Attributes):放在元素後面的資料,代表這個元素的另一種特性和特徵。 統一編碼(Unicode):一種字元集,包括了全世界各種語言中有用的字元。 實體:“文本片”,實體也像一個縮寫,一個實體可以是一個字元也可以是一個文檔的資料,是XML文本的基本單位。 標記(Markup):像標記(TAG)、實體引用(Entity reference)和聲明這樣的構件。 樣式表(XSL):描述XML的中繼資料檔案格式的語言(因為CSS對於XML來講不夠用)。 序言(Prolog):關於文檔執行個體表現形式的資訊。 文檔執行個體(Document instance):以元素的階層組織的實際文檔資料。 (二)XML文法簡介 1.看一個簡單的例子 這是一個關於庫存物品清單的簡單例子,大家可以從中發現XML的許多特性,並且可以體會到XML的中繼資料檔案是非常清晰易 讀的: <!-XML檔案樣本--> <?xml version="1.0" encoding="GB2312" ?> <庫存清單> <!--這裡就是注釋--> <庫存物品> <名稱>毛巾</名稱> <規格 單位="cm">25*50</規格> <生產廠家>中國棉紡廠</生產廠家> <生產日期>20010-09-01</生產日期> <數量 單位="條">400</數量> <進貨價 單位="元">2.5</進貨價> <零售價 單位="元">6.5</零售價> </庫存物品> <庫存物品> <名稱>碗</名稱> <規格 單位="cm">5*15</規格> <生產廠家>中國搪瓷廠</生產廠家> <生產日期>20010-09-11</生產日期> <數量 單位="個">200</數量> <進貨價 單位="元">1.5</進貨價> <零售價 單位="元">4.5</零售價> </庫存物品> <庫存物品> <名稱>筷子</名稱> <規格 單位="個">1*10</規格> <生產廠家>中國搪瓷廠</生產廠家> <生產日期>20010-09-11</生產日期> <數量 單位="把">200</數量> <進貨價 單位="元">1.5</進貨價> <零售價 單位="元">3.5</零售價> </庫存物品> </庫存清單> 看過了XML語言的基本格式,下面將詳細講解XML中繼資料檔案的各個組成部分,實際就上面這些而言是非常簡單的,當然,我 們要想更清楚的瞭解和學習XML,就必須清楚地知道這些定義的意義。 2.聲明(Declaration) XML資料檔案的定義不象HTML那樣自由,它是非常嚴格的,缺少一個就會出錯!因為每個XML的解析器第一步要做的事情就是 檢查XML檔案是否合格,就是“well-formed”,所以大家看到第一句是這樣些的: <?xml version="1.0" encoding="GB2312" ?> 注意的是:不能漏掉此句,否則解析器不予解析的!當然裡面的encoding可以不用寫,預設是Unicode,在此對XML使用的字元編 碼作一下說明,大家都應該知道中文和英文的區別吧,呵呵,有人說了,這也太簡單了,實際上平時有區別就罷了,結果鬧到電腦 上真是比較麻煩,大家用過古董DOS的就知道使用漢字在電腦上是一件多麼困難的事情,別人26個字母就可以搞定,漢字卻要好幾萬 個。現在的電腦的發展雖然神速,可國際化的問題卻一直存在,況且不屬英語語系的國家也都有此類問題,因此美國的各大電腦廠 商組成了一個Unicode促進會,結合ISO的字型檔標準,推出了Unicode,這個編碼可以滿足絕大多數語系的需要! 3.元素(Elements)和屬性(Attributes) <元素名 屬性名稱=”屬性值”> <子項目>元素的資料</子項目> </元素名> 大家看上面的這個例子,就能很形象的理解什麼是元素什麼是屬性,但是需要注意的是元素的大小寫是不一樣的,也就是說< t></t>和<T></T>不是同一個元素。還有就是元素裡的資料,只要是合法的就會完全忠實的成為資料,就如: <元素名>這是一個</元素名> <!-這是另一個--> <元素名>這是一個 </元素名> <!-這又是另一個--> <元素名>這是一個 </元素名> 大家注意到沒有,第一、二隻差一個空格,第三個則是多了一個斷行符號符,但是這三個資料卻是不同的資料,因此大夥在寫這 些資料的時候可一定要小心! 如果大家對於物件導向熟悉的話,一定清楚類也是有屬性的,而XML自然也是包括屬性的,XML的元素是擁有屬性的,而且可 以有許多屬性,並且屬性值必須使用單引號或雙引號包含起來。 4.注釋(Comments) 如果大家編寫過程式,就一定知道,看別人的程式是一件非常痛苦的事情。如果別人的程式是沒有注釋的話,那簡直就成了 一種慘無人道的折磨,呵呵,所以,在文檔中嵌入關於文檔和標記的資訊就是很有協助的。這樣不但可以協助別人也可以協助自己。 在XML的注釋裡是這樣的: <!-啊,這就是協助--> 在這個注釋中間,可以放入除了“--”符號以外的所有字元,這稍稍有些不習慣,我們往往會使用這個符號來分離不同組成部分 的文檔,在XML的檔案裡則需要改一改了。 5.預定義實體 當我們建立XML時候,有些符號例如“<”等和XML相重的標記,譬如下面的: <文章> <段落> <html> <head> <title></title> </head> <body> <h1>我們那嘎都是活雷鋒</h1> <b>老張開車去東北……撞了</b> </body> </html> </段落> </文章> 這樣是肯定行不通的,HTML和XML的定義相重,因為XML有5種預定義的實體,如下: &-------------------& <----------------------< >--------------------- > '------------------‘ "------------------“ 這樣再寫這些檔案就會象下面這樣: <文章> <段落> <html> <head> <title></title> </head> <body> <h1>我們那嘎都是活雷鋒</h1> <b>老張開車去東北……撞了</b> </body> </html> </段落> </文章> 解析器會自動把這些符號轉換成我們所要的檔案,但是這樣實在是不好看懂,所以就又有了這個CDATA。 6.CDATA 從上面那一節的例子可以看出,使用預定義實體實在是難以看懂,但是有了這個CDATA之後,我們就可以讓分析器把那些特殊 資料當作普通的資料來處理了! CDATA的定義如下: <![CDATA[ 內容 ]]> 將上節的例子拿來使用: <文章> <段落><![CDATA[ <html> <head> <title></title> </head> <body> <h1>我們那嘎都是活雷鋒</h1> <b>老張開車去東北……撞了</b> </body> </html> ]]> </段落> </文章> 這樣,解析器就可以解釋在這個符號中間的特殊字元了! |