XML聲明
XML文檔聲明是XML文檔的第一句,格式如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes/no" ?>
- XML聲明由“<?”開始,以“?>”結(jié)束。“<?”表示該行是一個(gè)命令;
- 在“<?”后面跟“xml”。表示這是一個(gè)XML文件("xml"必須小寫),這是處理指令的名稱,用于聲明XML的版本和采用的字符集;
- 在“<”和”?“之間、“?”和“>”之間以及第一個(gè)“?”和xml之間不能有空格。
- version屬性表示XML的版本。version必須小寫,版本號(hào)用引號(hào)引起。必須指定version的屬性值。
- standalone屬性(可以是yes或no)定義了是否可以在不讀取其他任何文件的情況下處理該文檔。standalone默認(rèn)屬性為no。
- encoding屬性表示該文檔所使用的字符集。如果XML沒有設(shè)置encoding,則以Unicode編碼看待。常見的編碼有以下幾種:簡(jiǎn)體中文碼(GB2312);
繁體中文碼(BIG5);西歐字符(UTF-8)。
注意:如果同時(shí)設(shè)置了encoding和standalone屬性,則standalone屬性藥位于encoding屬性之后。
XML文檔內(nèi)容
XML文檔除了XML聲明外,還包括XML文檔內(nèi)容,它表示XML文檔中包含的信息,是XML文檔的主要組成部分。
XML元素
元素是XMl文檔的基本組成部分??梢园渌?、字符數(shù)據(jù)、字符引用、實(shí)體引用、PI、注釋以及CDATA部分,這些合起來(lái)被稱為元素的內(nèi)容。所有的XML數(shù)據(jù)(除了注釋、PI和空白)都必須包含在元素中。
- XML元素的命名規(guī)范
- 元素的名字可以包含字母、數(shù)字和其他字符。
- 元素的名字不能以數(shù)字或者標(biāo)點(diǎn)符號(hào)開頭。
- 元素的名字不能以XML、xml、Xml、xMl···開頭。
- 元素的名字不能包含空格。
- 盡量避免使用“-”、“.”,因?yàn)檫@些符號(hào)有可能引起混亂。
- 元素的命名一個(gè)遵循簡(jiǎn)單易讀的原則。
- XML 文檔往往都對(duì)應(yīng)著數(shù)據(jù)表,應(yīng)該盡量讓數(shù)據(jù)庫(kù)中字段的命名和相應(yīng)的 XML 文檔中的元素的命名保持一致,這樣可以方便數(shù)據(jù)更換。
- 非英文/字符/字符串也可以作為XML元素的名字。
- 在 XML 元素的命名中不要使用”:“,因?yàn)?XML 的命名空間需要用到這個(gè)特殊字符。
- 起始標(biāo)識(shí)
一個(gè)表示元素開始的分隔符被稱為起始標(biāo)記。起始標(biāo)記是一個(gè)包含在尖括號(hào)的元素類型名。
- 結(jié)束標(biāo)記
代表元素結(jié)束的分割符被稱為結(jié)束標(biāo)記。結(jié)束標(biāo)記由一個(gè)反斜杠和元素類型名組成并被圍在一對(duì)尖括號(hào)中。每一個(gè)結(jié)束標(biāo)記都必須與其對(duì)應(yīng)的起始標(biāo)記相匹配。帶有完整的起始、結(jié)束標(biāo)記的元素應(yīng)該有如下形式:
<元素>內(nèi)容</元素>
- XML元素的類型
XML文檔中一共有四類元素:空元素、僅含文本的元素、僅含子元素的元素、含子元素及文本或混合的元素。
- 空元素
元素不包括任何文本,就是空元素。
<book></book>
<book/> - 僅含文本的元素
元素僅含文本。
<book>西游記</book> - 含其他元素的元素
一個(gè)元素可以包含其他的元素。容器元素稱為父元素,被包含的元素稱為子元素。
<book ID="001">
<name>西游記</name>
<author>吳承恩</author>
</book> - 混合元素
混合元素既含有文本也含有子元素。
<book ID="001">四大名著
<name>西游記</name>
<author>吳承恩</author>
</book>
在XML文檔中使用元素時(shí)應(yīng)該注意以下幾點(diǎn)
- 元素必須含有開始標(biāo)簽和結(jié)束標(biāo)簽。
- 在沒有內(nèi)容的情況下,才可以使用省略寫法。
- 標(biāo)簽名必須符合XML命名規(guī)則。
- 元素必須正確嵌套。
元素的屬性
基本格式如下:
<元素名 屬性名=”屬性值“>
注意:特點(diǎn)的屬性名稱在同一個(gè)元素標(biāo)記只能出現(xiàn)一次;屬性值不能包括<、>、&符號(hào)。
我們可以將屬性改寫為嵌套的子元素:
eg:
<book ID="001">
<name>西游記</name>
<author>吳承恩</author>
</book>
我們可以改寫為:
<book>
<ID>001</ID>
<name>西游記</name>
<author>吳承恩</author>
</book>
在 XML 中,我們應(yīng)該盡量避免使用屬性。因?yàn)槭褂脤傩詴?huì)引發(fā)以下一些問(wèn)題。
- 屬性不能包含多個(gè)值(子元素可以)。
- 屬性不容易擴(kuò)展。
- 屬性不能描述結(jié)構(gòu)(子元素可以)。
- 屬性很難被程序代碼處理。
- 屬性值很難通過(guò)DTD進(jìn)行測(cè)試。
屬性規(guī)則:
- 屬性由名稱和數(shù)值。
- 屬性值必須封裝在單引號(hào)或雙引號(hào)中。
- 屬性中不能含有XML標(biāo)簽。
- 屬性名稱必須遵循XML命名規(guī)則。
注釋
語(yǔ)法:
<!--注釋信息-->
注釋遵循規(guī)則:
- 注釋內(nèi)容不能包含”-->“。
- 注釋不能包含于標(biāo)簽內(nèi)部。
- 元素的開始標(biāo)簽或結(jié)束標(biāo)簽不能被注釋掉。
字符引用和實(shí)體引用
-
字符引用
以&#開始并以分號(hào)結(jié)束的引用都是字符引用。中間的數(shù)字是所需字符的Unicode編碼。若編碼寫成十六進(jìn)制,那么數(shù)字前面有一個(gè)x(必須小寫)作為前綴。
eg:<n>©</n> 實(shí)體引用
實(shí)體引用允許在元素內(nèi)容或?qū)傩灾抵胁迦肴魏巫址?,這就為字符引用提供一種助記得替代方式。
實(shí)體引用方式是在一個(gè)合法的 XML 名字前面加上一個(gè)符號(hào)”&“,后面加上一個(gè)分號(hào)”;“。
有五個(gè)實(shí)體被定義為 XML 的固有部分,他們通常用作 XML 標(biāo)記分隔符號(hào)的轉(zhuǎn)義序列。如下表 1所示。

除了上述五個(gè)實(shí)體,其他所有的實(shí)體都必須在文檔使用前,在DTD文檔中定義。