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