## XML
可擴展標記語言,標準通用標記語言的子集,是一種用于標記電子文件使其具有結構性的標記語言。
? ? ? 近年來,隨著 Web的應用越來越廣泛和深入,人們漸漸覺得HTML不夠用了,HTML過于簡單的語法嚴重地阻礙了用它來表現復雜的形式。盡管HTML推出了一個又一個新版本,已經有了腳本、表格、幀等表達功能,但始終滿足不了不斷增長的需求。
有人建議直接使用SGML 作為Web語言,這固然能解決HTML遇到的困難。但是SGML太龐大了,用戶學習和使用不方便尚且不說,要全面實現SGML的瀏覽器就非常困難,于是自然會想到僅使用SGML的子集,使新的語言既方便使用又實現容易。正是在這種形勢下,Web標準化組織W3C建議使用一種精簡的SGML版本——XML應運而生了。

[圖一] XML家族史
### Q1:什么是XML?
- XML 指可擴展標記語言(EXtensible Markup Language)
- XML 是一種標記語言,很類似 HTML
- XML 的設計宗旨是傳輸數據,而非顯示數據,常用于簡化數據的存儲和共享
- XML 標簽沒有被預定義。您需要自行定義標簽。
- XML 被設計為具有自我描述性。
- XML 的優勢之一,就是可以經常在不中斷應用程序的情況進行擴展。
### Q2:XML與HTML的區別?
- XML 被設計用來傳輸和存儲數據。
- HTML 被設計用來顯示數據。
- XML 不是 HTML 的替代。
- XML 和 HTML 為不同的目的而設計:
- XML 被設計為傳輸和存儲數據,其焦點是數據的內容。
- HTML 被設計用來顯示數據,其焦點是數據的外觀。
- XML 把數據從 HTML 分離。XML 文檔形成了一種樹結構,它從“根部”開始,然后擴展到“枝葉”。

## XML DTD 和XML Schema
二者的作用很容易理解,為了進行正確的數據交換,就要規定文檔的數據類型,也就是規定文檔的結構。這里打個比方,意大利人說意大利語,日本人說Japanese,兩個的商人要進行對外的貿易,就要有個統一的語言,那就是需要貿易通則?Incoterm2010(作為一名國貿生,能把計算機與專業課聯系在一起,可見我專業課上總是開小差了~)
想象一下,一個XML的組成就是元素,屬性,內容,那么DTD或是它的升級版Schema就是用來規定一個XML文檔什么時候什么地點可以出現什么元素,每個元素都可以有什么描述屬性。以及它們出現的順序,重復的次數。在二者中都有詳細的規定了。
DTD可以嵌入在XML文檔中,也可以單獨形成一個文件,引入即可。
~~~
<?xml version="1.0"encoding="UTF-8"? >
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
~~~
### Q1:DTD與Schema的關系
- 都是用于描述XML文檔的結構。
- Schema是基于XML的DTD的替代品。
- Schema要比DTD更強大。
### Q2:Schema的優點
- XML Schema 支持數據類型
- XML Schema 使用 XML 語法
這樣的好處是不必學習新的語言,可以使用XML編輯器來編輯、解析Schema文件。
- XML Schema 可保護數據通信
通過Schema,發送方可以使用一種接收方能夠明白的方法來描述數據。
- XML Schema 可擴展
可以根據原有的數據類型自定義出自己需要的數據類型,在相同的文檔中可以引用多重的Schema。
## 小結:
通過XML的學習,知道了HTML與XML實際上沒有必然的聯系,用途不同的兩者總是被大家搞混。了解了XML的組成,下一步就是JavaScript腳本語言的學習,看看在JS中如何操作XML文件。