本節要點:
- 了解XML的文檔聲明
- 了解XML的元素、命名規則、屬性、元素內容、處理指令等概念
1 XML文檔聲明
表示該文檔是一個XML文檔,以及遵循哪個XML版本的規范。
規范:<?xml 版本信息(編碼信息)(文檔獨立性信息)?>
文檔聲明在XML文件中是可選的第一項,推薦在每個XML文檔中都包含文檔聲明。如果在XML文件中寫出了聲明就必須包含version屬性,表示XML的版本,截止目前XML只有一個版本,即1.0。在XML聲明之前不許有任何內容,包括空格。
示例:<?xml version=“1.0” encoding=”UTF-8” standalone=”no”?>
文檔聲明屬性:
encoding屬性(可選的):注明XML文檔使用的字符編碼方式。采用Unicode編碼時可以在XML文檔聲明中省略字符集編碼,當XML文檔使用非Unicode編碼時,必須在XML文檔聲明中指定其字符集編碼
如:< ?xml version=“1.0” encoding=”gb2312”?>
standalone屬性(可選的):說明文檔是否是獨立的,yes(缺省)——該文檔沒有依賴外面的任何文件而可以獨立存在,no——該文檔依賴於外面的某個文件
如果同時設置了encoding和standalone屬性,standalone屬性要位於encoding屬性之后。
2 元素
XML的基本組成單位是元素,元素由標記來定義,標記包括起始標記<>和結束標記</>,屬性要寫在起始標記內。在XML中,所有元素必須有結束標記。
語法樣式:
<元素名 屬性名=“屬性值”>
元素內容
</元素名>
1) 元素內容
可以是其他元素標記、簡單的文本、沒有任何信息、其他元素標記和文本內容混合等。
嵌套
在一個元素中可以嵌套若干個子元素,如下:
XML標記不能交叉,如下:
2) 元素關系
在XML中,各元素之間是相互關聯的。包含在另一個元素中的元素稱為子元素,包含子元素的元素稱為父元素。嵌套子元素必須完整地包含在它的父元素中
3) 根元素
根元素指沒有被嵌套在其他元素內的元素,最高層元素,僅一個。XML文檔中所有元素都是根元素的子孫元素。
4) 空元素
不包含任何內容的元素。
3 命名規則
在XML中,可以使用自己需要的元素來擴展標記語言。
命名基本規則:
- 元素名稱不能以數字或特殊字符開頭
- 可以包含字母,數字,下划線等
- 不能以字符串“XML”作為開頭
- 不能包含空格
- 盡量不要包含特殊字符
- 區分大小寫
判斷對錯,如:
區分大小寫:
流行的命名規則:
- 元素名稱盡量簡短
- 大小寫盡量采用同一標准
- 完全用小寫字母來書寫名稱,當名稱中包含多個單詞時,相互之間用下划線隔開
- 將每個單詞的首字母大寫,不使用分隔符
- 可以使用非英文字符
- 推薦使用英文字符+數字來命
4 元素屬性
元素屬性是用來對元素做進一步說明的:
在XML中,屬性值一定要用雙引號或者單引號引起來,否則將被視為錯誤,推薦先使用雙引號。屬性區分大小寫。
屬性也可以被改為使用子元素來描述,但是推薦使用子元素描述數據。
屬性不能包含多個值。
5 CDATA & PCDATA
5.1 CDATA
術語 CDATA 指的是不應由 XML 解析器進行解析的文本數據(Unparsed Character Data)。
在 XML 元素中,"<" 和 "&" 是非法的。
"<" 會產生錯誤,因為解析器會把該字符解釋為新元素的開始。
"&" 也會產生錯誤,因為解析器會把該字符解釋為字符實體的開始。
某些文本,比如 JavaScript 代碼,包含大量 "<" 或 "&" 字符。為了避免錯誤,可以將腳本代碼定義為 CDATA。
CDATA 部分中的所有內容都會被解析器忽略。
CDATA 部分由 "<![CDATA[" 開始,由 "]]>" 結束,可以在CDATA區嵌入其它語言的代碼。
示例:
<?xml version="1.0" encoding="utf-8" ?>
<people>
<![CDATA[ <!-- !和[之間不要有空白 -->
<teacher>
<name>yeah</name>
<sex>Boy</sex>
<age>22</age>
<add>&address;</add>
</techer>
]]>
</people>
5.2 PCDATA
PCDATA指的是由XML解析器解析的內容,當作一般的文字資料來解讀。
PCDATA區是指:
- 直接寫在元素的起始標記和結尾標記之間的內容
- 由XML解析器解析的內容,當作一般的文字資料來解讀
- XML解析程序會將空格和換行如實地交給下游程序去處理
有些字符不能直接寫在pcdata區,如<、&等。
6 注釋
注釋的內容會被程序忽略而不做解釋和處理。
注:不要把注釋放在XML的聲明之前;注釋不能嵌套使用。
7 處理指令
為處理XML文檔的應用程序提供提示信息
處理指令格式:
<?處理指令名 處理指令信息?>
<?xml-stylesheet type=“text/css” href=“book.css”?>
XML解析器會把處理指令原封不動地傳送給應用程序,由應用程序來解釋這個指令,按照它所提供的信息進行處理。