http://www.runoob.com/xml/xml-tutorial.html
簡(jiǎn)介
XML 指可擴(kuò)展標(biāo)記語(yǔ)言(eXtensible Markup Language), 半結(jié)構(gòu)化數(shù)據(jù)。
XML 被設(shè)計(jì)用來(lái)傳輸和存儲(chǔ)數(shù)據(jù)。
XML樹(shù)結(jié)構(gòu)
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
第一行是XML聲明 版本1.0, 編碼:萬(wàn)國(guó)碼
<note> 根元素
<to> <from> <heading> <body> 子元素
<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
根元素是 <bookstore>。文檔中的所有 <book> 元素都被包含在 <bookstore> 中。
<book> 元素有 4 個(gè)子元素:<title>、<author>、<year>、<price>。
category 是book的屬性 屬性可跟在開(kāi)標(biāo)簽后面,也可以另起一行
lang 是 title的屬性。
語(yǔ)法
XML 聲明文件的可選部分,如果存在需要放在文檔的第一行,如下所示:
<?xml version="1.0" encoding="utf-8"?>XML 文檔必須有根元素
XML 必須包含根元素,它是所有其他元素的父元素所有的 XML 元素都必須有一個(gè)關(guān)閉標(biāo)簽
注釋:從上面的實(shí)例中,您也許已經(jīng)注意到 XML 聲明沒(méi)有關(guān)閉標(biāo)簽。這不是錯(cuò)誤。聲明不是 XML 文檔本身的一部分,它沒(méi)有關(guān)閉標(biāo)簽。XML 標(biāo)簽對(duì)大小寫(xiě)敏感
XML 必須正確嵌套
XML 屬性值必須加引號(hào)
實(shí)體引用
在 XML 中,一些字符擁有特殊的意義。
如果您把字符 "<" 放在 XML 元素中,會(huì)發(fā)生錯(cuò)誤,這是因?yàn)榻馕銎鲿?huì)把它當(dāng)作新元素的開(kāi)始。
這樣會(huì)產(chǎn)生 XML 錯(cuò)誤:
<message>if salary < 1000 then</message>
為了避免這個(gè)錯(cuò)誤,請(qǐng)用實(shí)體引用來(lái)代替 "<" 字符:
<message>if salary < 1000 then</message>
在 XML 中,有 5 個(gè)預(yù)定義的實(shí)體引用:
轉(zhuǎn)義符號(hào) | 實(shí)際符號(hào) | 釋義 |
---|---|---|
< | < | less than |
> | > | greater than |
& | & | ampersand |
' | ' | apostrophe |
" | " | quotation mark |
只有 & 和 < 是嚴(yán)格要求的, 其它的可以不替換,盡管會(huì)引起歧義。
XML 中的注釋
在 XML 中編寫(xiě)注釋的語(yǔ)法與 HTML 的語(yǔ)法很相似。
在 XML 中,空格會(huì)被保留
HTML 會(huì)把多個(gè)連續(xù)的空格字符裁減(合并)為一個(gè):
在 XML 中,文檔中的空格不會(huì)被刪減。XML 以 LF 存儲(chǔ)換行
在 Windows 應(yīng)用程序中,換行通常以一對(duì)字符來(lái)存儲(chǔ):回車符(CR)和換行符(LF)。
在 Unix 和 Mac OSX 中,使用 LF 來(lái)存儲(chǔ)新行。
在舊的 Mac 系統(tǒng)中,使用 CR 來(lái)存儲(chǔ)新行。
XML 以 LF 存儲(chǔ)換行。
XML元素
- XML 命名規(guī)則
XML 元素必須遵循以下命名規(guī)則:
名稱可以包含字母、數(shù)字以及其他的字符
名稱不能以數(shù)字或者標(biāo)點(diǎn)符號(hào)開(kāi)始
名稱不能以字母 xml(或者 XML、Xml 等等)開(kāi)始
名稱不能包含空格
可使用任何名稱,沒(méi)有保留的字詞。
- 最佳命名習(xí)慣
- 使名稱具有描述性。使用下劃線的名稱也很不錯(cuò):<first_name>、<last_name>。
- 名稱應(yīng)簡(jiǎn)短和簡(jiǎn)單,比如:<book_title>,而不是:<the_title_of_the_book>。
- 避免 "-" 字符。如果您按照這樣的方式進(jìn)行命名:"first-name",一些軟件會(huì)認(rèn)為您想要從 first 里邊減去 name。
- 避免 "." 字符。如果您按照這樣的方式進(jìn)行命名:"first.name",一些軟件會(huì)認(rèn)為 "name" 是對(duì)象 "first" 的屬性。
- 避免 ":" 字符。冒號(hào)會(huì)被轉(zhuǎn)換為命名空間來(lái)使用(稍后介紹)。
- XML 文檔經(jīng)常有一個(gè)對(duì)應(yīng)的數(shù)據(jù)庫(kù),其中的字段會(huì)對(duì)應(yīng) XML 文檔中的元素。有一個(gè)實(shí)用的經(jīng)驗(yàn),即使用數(shù)據(jù)庫(kù)的命名規(guī)則來(lái)命名 XML 文檔中的元素。 ??
- 在 XML 中,éòá 等非英語(yǔ)字母是完全合法的,不過(guò) 需要留意,您的軟件供應(yīng)商不支持這些字符時(shí)可能出現(xiàn)的問(wèn)題。
XML屬性
- 屬性不能包含多個(gè)值(元素可以)
一個(gè)屬性只能有一個(gè)值 - 屬性不能包含樹(shù)結(jié)構(gòu)(元素可以)
屬性不嵌套 - 屬性不容易擴(kuò)展(為未來(lái)的變化)
<messages>
<note id="501">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note id="502">
<to>Jani</to>
<from>Tove</from>
<heading>Re: Reminder</heading>
<body>I will not</body>
</note>
</messages>
上面的 id 屬性僅僅是一個(gè)標(biāo)識(shí)符,用于標(biāo)識(shí)不同的便簽。它并不是便簽數(shù)據(jù)的組成部分。
在此我們極力向您傳遞的理念是:元數(shù)據(jù)(有關(guān)數(shù)據(jù)的數(shù)據(jù))應(yīng)當(dāng)存儲(chǔ)為屬性,而數(shù)據(jù)本身應(yīng)當(dāng)存儲(chǔ)為元素。