《XML精要》
前言
開(kāi)始學(xué)XML也有個(gè)把星期了,前后看了幾本書(shū)關(guān)于XML基礎(chǔ)的書(shū),感覺(jué)講的甚是凌亂,有些書(shū)甚至干脆直接在網(wǎng)上COPY些資料東抄一點(diǎn)西抄一點(diǎn)最后就出版了(比如《XML語(yǔ)言及應(yīng)用---清華大學(xué)出版社》就干脆直接將網(wǎng)上的《XML初學(xué)進(jìn)階》抄下來(lái),將例子改改就完了)現(xiàn)在中國(guó)大學(xué)治學(xué)的態(tài)度可見(jiàn)一斑,直到本周發(fā)現(xiàn)了一個(gè)IBM的在線XML教程,該教程將XML所有的知識(shí)分解為一個(gè)個(gè)單獨(dú)的講座,每堂課還介紹了所需要的前提知識(shí)以及所要用到到參考資料,而且教程將知識(shí)講的非常的簡(jiǎn)練和精確,但可惜該教程是在2002年左右發(fā)表的了,在網(wǎng)上資源不是很好找而且比較散,所以我決定將我學(xué)的每趟講座的精要和我個(gè)人的讀書(shū)筆記整理出來(lái)形成一個(gè)連載,一來(lái)鞏固我的學(xué)習(xí),二來(lái)也可以供大家參考,取名《XML精要》。言歸正傳,那我就開(kāi)始嘍!
//===============================
第一講《理解XML》精要
第一部分《XML 文檔基本規(guī)則》:
定義:
無(wú)效文檔:沒(méi)有遵守 XML 規(guī)范定義的語(yǔ)法規(guī)則。如果開(kāi)發(fā)人員已經(jīng)在 DTD 或模式中定義了文檔能夠包含什么,而某個(gè)文檔沒(méi)有遵守那些規(guī)則,那么這個(gè)文檔也是無(wú)效的。
有效文檔:既遵守 XML 語(yǔ)法規(guī)則也遵守在其 DTD 或模式中定義的規(guī)則。
格式良好的文檔:遵守 XML 語(yǔ)法,但沒(méi)有 DTD 或模式。
//===============================
語(yǔ)法:
1 XML聲明:xml以聲明作為開(kāi)始,它向解析器提供了關(guān)于文檔的基本信息。建議使用 XML聲明,但它不是必需的。如果有的話(huà),那么它一定是文檔的第一樣?xùn)|西即只能放在第一行。
//==========
2 根元素:XML 文檔有且僅有一個(gè)根元素。
3 XML 元素不能重疊 例如 <b>I <i>really love</b> XML.</i>在xml里是不允許的。
4 不能省去任何結(jié)束標(biāo)記 所有的標(biāo)簽都要成對(duì)的出現(xiàn)。
5 XML中可以出現(xiàn)空元素。例如下面兩種寫(xiě)法是相同的
<img src="../img/c.gif"></img>
<img src="../img/c.gif" />你可以把“/”寫(xiě)在“<>”中;
6 XML 元素是區(qū)分大小寫(xiě)的,xml語(yǔ)言是大小寫(xiě)敏感的。
7 屬性必須有用引號(hào)括起的值<img? src=” ../img/c.gif”>
//===============================
其他:
9 注釋?zhuān)鹤⑨尶梢猿霈F(xiàn)在文檔的任何位置。格式:<!—這里是注釋-->
//==========
10 處理指令:處理指令是為使用一段特殊代碼而設(shè)計(jì)的標(biāo)記。在下面的示例中,有一個(gè)用于 Cocoon 的處理指令(有時(shí)稱(chēng)為 PI),Cocoon 是來(lái)自 Apache 軟件基金會(huì)(Apache Software Foundation)的 XML 處理框架。當(dāng) Cocoon處理 XML 文檔時(shí),它會(huì)尋找以cocoon-process開(kāi)頭的處理指令,然后相應(yīng)地處理XML 文檔。
在該示例中,type屬性告訴 Cocoon:XML 文檔包含一個(gè) SQL 語(yǔ)句。
<!-- Here's a PI for Cocoon: -->
<?cocoon-process type="sql"?>
//==========
11 實(shí)體:下面的示例為文檔定義了一個(gè)實(shí)體。
<!-- Here's an entity: -->
<!ENTITY dw "developerWorks">
無(wú)論 XML 處理器在何處找到字符串dw,它都會(huì)用字符串developerWorkds代替該實(shí)體。XML 規(guī)范還定義了五個(gè)您可以用來(lái)替代不同的特殊字符的實(shí)體。這些實(shí)體是:<代表小于符號(hào)>代表大于符號(hào) "代表一個(gè)雙引號(hào)&apos代表一個(gè)單引號(hào)(或撇號(hào))&代表一個(gè)“與”符號(hào)。
//==========
12 名稱(chēng)空間
為了區(qū)別不同XML文檔檔中的同一些標(biāo)簽符號(hào)引入名稱(chēng)空間以示區(qū)別,定義名稱(chēng)空間的語(yǔ)法如下:要使用名稱(chēng)空間,您要定義一個(gè)名稱(chēng)空間前綴,然后將它映射至一個(gè)特殊字符串。下面介紹如何定義元素的名稱(chēng)空間前綴:
<?xml version="1.0"?>
<customer_summary
? xmlns:addr="h...
<addr:name><title>Mrs.</title> ... </addr:name>
注意:名稱(chēng)空間定義中的字符串僅僅是字符串。對(duì),這些字符串看似 URL,其實(shí)不是。稱(chēng)空間唯一的重要性在于其唯一性。所以通常使用URL原因。它只是把那個(gè)文本作為字符串使用。這有些令人困惑,但名稱(chēng)空間就是這樣工作的。