本文章集合兩篇博文而寫,兩篇博文地址:
XML學習總結(二)——XML入門:
XML基礎<第一篇>
XML簡介
XML是一種標記語言,用于描述數據,它提供一種標準化的方式來來表示文本數據。XML文檔以.xml為后綴。需要徹底注意的是XML是區分大小寫的。
先從一個簡單的XML例子來了解下xml基礎:
<strong><?xml version="1.0" encoding="utf-8" ?>
<books ISBN="9787544238212"><title>xml學習筆記</title><price>30</price><pagecount>300</pagecount>
</books></strong>
第一行表明,本XML遵守的版本是1.0,使用的字符編碼是UTF-8字符集。
每個XML元素都已一個起始標記開始和一個結束標記結束。比如開始:,結束:。XML元素可以帶有屬性,屬性值要加引號。比如上例中的ISBN就是屬性,屬性值要加雙引號。同時用等號連接。
一個XML文檔只能夠有一個根節點,如上例中books就是根節點。
以下列出XML的幾個要點:
- XML是一種可擴展標記語言;
- XML的標記沒有被預定義,用戶可以自行定義標記來描述數據;
- XML主要用來描述和存儲數據;
- XML具有自我描述性;
- XML是樹狀結構的文檔,是個結構化的文檔;
- XML文檔是個文本文件;
XML語法
聲明:
1. 每個開始標記都必須有結束標記;
2. 一個XML文檔只能夠有一個根元素;
3. 所有XML元素必須正確嵌套;
4. 屬性值必須加引號;
5. 一個元素不能有相同的屬性;
6. 一個XML文件分為如下幾部分內容:
我們從以下模塊介紹:
- 文檔聲明
- 元素
- 屬性
- 注釋
- CDATA區 、特殊字符
- 處理指令(processing instruction)
- 命名空間
1.1、xml語法——文檔聲明
XML文檔應當以XML聲明開始,不過不是必須的。
示例:
<strong><?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<person>張三
</person></strong>
如果一個XML文檔含有聲明,必須放在XML文檔的第一行。
XML文檔聲明主要有三個參數。
版本: 版本表示遵循的是W3C的XML1.0標準。
字符編碼:字符編碼表示該XML文檔使用的字符編碼方式。對于中文文檔,應該使用UTF-8或者Unicode。如果是純英文,可以使ISO-8859-1編碼。
獨立: 如果XML standalone的值是no,表示它需要DTD。不需要DTD的XML文檔,standalone的值應該寫為yes。
最簡單的聲明語法: <?xml version="1.0" ?>
例如:
<strong><?xml version="1.0"?><softCompany><company>MicroSoft</company><company>google</company><company>Apple</company>
</softCompany></strong>
瀏覽器解析結果如下:
用encoding屬性說明文檔的字符編碼:<?xml version="1.0" encoding="GB2312" ?>
當XML文件中有中文時,必須使用encoding屬性指明文檔的字符編碼,例如:encoding=”GB2312”或者encoding=”utf-8”,并且在保存文件時,也要以相應的文件編碼來保存,否則在使用瀏覽器解析XML文件時,就會出現解析錯誤的情況。
例如:
<strong><?xml version="1.0"?><softCompany><company>MicroSoft</company><company>google</company><company>Apple</company><company>百度</company></softCompany></strong>
這個XML文件中沒有使用encoding屬性來指明文檔的字符編碼,但文檔里面有“百度”這樣的中文字符,在使用IE瀏覽器解析該XML文件時,IE就不知道該使用什么編碼去解析該文件,就無法解析了,出現的錯誤如下圖所示:
要想正確解析該XML文檔,就可以使用encoding屬性指明該文檔的字符編碼。在保存文件時,也要以GB2312編碼來保存
例如:
<strong><?xml version="1.0" encoding="GB2312"?><softCompany><company>MicroSoft</company><company>google</company><company>Apple</company><company>百度</company></softCompany></strong>
此時再次使用IE瀏覽器來解析該XML文件,就可以正常解析出里面的中文字符了,如下圖所示:
1.2、xml語法——標記
標記分為開始標記和結束標記,如就是一個開始標記。就是一個結束標記。開始標記與結束標記之間的內容成為XML元素的內容。如果一個XML元素沒有內容,我們稱其為空元素。如。
1.3、xml語法——元素
XML元素指XML文件中出現的標簽,一個標簽分為開始標簽和結束標簽,一個標簽有如下幾種書寫形式,例如:
包含標簽體:<a>www.cnblogs.com/</a>
不含標簽體的:<a></a>, 簡寫為:<a/>
一個標簽中也可以嵌套若干子標簽。但所有標簽必須合理的嵌套,絕對不允許交叉嵌套 ,例如:
錯誤的寫法:<a>welcome to <b>www.cnblogs.com/</a></b>
格式良好的XML文檔必須有且僅有一個根標簽,其它標簽都是這個根標簽的子孫標簽。
對于XML標簽中出現的所有空格和換行,XML解析程序都會當作標簽內容進行處理。例如:下面兩段內容的意義是不一樣的。
第一段:
<strong><網址>http://www.cnblogs.com/</網址></strong>
第二段:
<strong><網址>http://www.cnblogs.com/</網址></strong>
由于在XML中,空格和換行都作為原始內容被處理,所以,在編寫XML文件時,使用換行和縮進等方式來讓原文件中的內容清晰可讀的“良好”書寫習慣可能要被迫改變。
一個XML元素可以包含字母、數字以及其它一些可見字符,但必須遵守下面的一些規范:
1. 不能以數字或”_” (下劃線)開頭。
2. 不能以xml(或XML、或Xml 等)開頭。
3. 不能包含空格。
4. 名稱中間不能包含冒號(:)
1.4、XML語法——屬性
一個標簽可以有多個屬性,每個屬性都有它自己的名稱和取值,例如: <input name=“text”>
,屬性是name,屬性值為“text”,屬性值一定要用雙引號(”)或單引號(’)引起來,定義屬性必須遵循與標簽相同的命名規范 。一個XML元素不能有相同的XML屬性名。
多學一招:在XML技術中,標簽屬性所代表的信息,也可以被改成用子元素的形式來描述,例如:
<strong><input><name>text</name></input>
</strong>
XML元素中可以帶有屬性作為XML元素的附加信息。
- 如果屬性值中包含雙引號,就用單引號包圍屬性值。如:
<strong><site info = 'wo "ai" ni'></strong>
- 如果屬性值中包含單引號,就用雙引號包圍屬性值。如:
<strong><site info = "wo 'ai' ni"></strong>
- 一個XML元素可以有一個或多個屬性,每個屬性用空格分開。如:
<strong><person name="zhangsan" age="23"></strong>
1.5、XML語法——注釋
XML注釋以 <!-- 開始,以 -->
結束。XML文件中的注釋采用: <!--注釋-->
格式。
注意:
XML聲明之前不能有注釋, 注釋不能嵌套,例如:
<!--大段注釋……<!--局部注釋-->……-->
1.6、XML語法——CDATA區
在編寫XML文件時,有些內容可能不想讓解析引擎解析執行,而是當作原始內容處理,遇到此種情況,可以把這些內容放在CDATA區里,對于CDATA區域內的內容,XML解析程序不會處理,而是直接原封不動的輸出。
語法:<![CDATA[ 內容 ]]>
例如:
<strong><?xml version="1.0" encoding="utf-8"?><soft><![CDATA[<a className="gacl.xdp"><a1>gacl</a1><a2>xdp</a2></a>]]><b><b1>孤傲蒼狼</b1><b2>徐達沛</b2></b></soft></strong>
該XML文件使用IE瀏覽器解析引擎解析執行后,結果如下圖所示:
對于一些單個字符,若想顯示其原始樣式,也可以使用轉義的形式予以處理。
例如:
<?xml version="1.0" encoding="utf-8"?><soft><b><b1>孤傲蒼狼</b1><b2>徐達沛</b2></b></soft>
解析器解析的結果如下圖所示:
1.7、XML語法-處理指令
處理指令,簡稱PI (processing instruction)。處理指令用來指揮解析引擎如何解析XML文檔內容。例如,在XML文檔中可以使用xml-stylesheet指令,通知XML解析引擎,應用css文件顯示xml文檔內容,標簽名為中文時,css不起作用。
<?xml-stylesheet type="text/css" href="css文件名.css"?>
例如:
<?xml version="1.0" encoding="utf-8"?>
<!--在XML文檔中可以使用xml-stylesheet指令,通知XML解析引擎,應用country.css文件顯示xml文檔內容-->
<?xml-stylesheet type="text/css" href="country.css"?>
<Country><c1>中國</c1><c2>美國</c2><c3>日本</c3><c4>韓國</c4>
</Country>
Country.css樣式文件代碼如下:
<strong>c1{font-size:200px;color:red;
}
c2{font-size:150px;color:green;
}
c3{font-size:100px;color:#ccc;
}
c4{font-size:130px;color:blue;
}</strong>
在瀏覽器中解析該XML文件的結果如下圖所示:
處理指令必須以”<?
“作為開頭,以”?>
“作為結尾,XML聲明語句(<?xml version="1.0" encoding="utf-8"?>)
就是最常見的一種處理指令。
1.8、XML語法-命名空間
XML命名空間是為了解決當XML文檔中存在多個相同名稱的元素時,避免沖突而引入的。
命名空間的語法:
xmlns:prefix=”URI”
xmlns:表示必須的屬性。
prefix:表示命名空間的別名,它的值不能為xml。
URI:用來標識抽象或物理資源的的緊湊字符串。為了保證標識的唯一性,xml采用Internet上的網址作為這個標識符,因為網址是獨一無二的。
默認命名空間示例:
<strong><?xml version="1.0" encoding="utf-8" ?>
<Article xmlns="http://www.xxx.com/"> <!--默認命名空間--><author age="30">張三</author><length>12000</length><price>42</price>
</Article></strong>
帶名字的命名空間|:
<strong><?xml version="1.0" encoding="utf-8" ?>
<h:Article xmlns:h="http://www.xxx.com/"> <!--帶前綴的命名空間--><h:author age="30">張三</h:author><h:length>12000</h:length><h:price>42</h:price>
</h:Article></strong>
附錄:
xml編輯工具推薦:
http://www.ibm.com/developerworks/cn/xml/x-xmltools/
我這里使用的是 XML Copy Editor