XML是什么
XML -EXtensible Markup Language,是一種可擴展性的標記語言,和HTML形式類似,是一種用來存儲和傳輸數據的語言。
XML作為一種標記語言,它的標簽不是預定義的,而是由作者自行定義標簽。
XML用來標記電子文件使其具有結構性的標記語言,可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言
XML是標準通用標記語言 (SGML) 的子集,非常適合 Web 傳輸。XML 提供統一的方法來描述和交換獨立于應用程序或供應商的結構化數據。
示例:
<note>
<to>Jackson</to>
<from>二吊子程序媛</from>
<heading>Reminder</heading>
<body>Don't forget the food!</body>
</note>
XML知識點
XML樹形結構
XML文檔形成一種樹形結構,從根部開始,擴散到枝葉。
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
上述示例代碼中,第一行是XML聲明,表示XML的版本和所使用的編碼方式。
<note>
標簽描述的便是該文檔的根部,接下來的<to>、<from>、<heading>、<body>
為四個子元素。
XML語法
- 所有xml元素都必須要有關閉標簽
<p>This is a paragraph</p>
。 - xml標簽對大小寫敏感,大小寫的標簽是不一樣的,必須使用相同的大小寫來編寫打開標簽和關閉標簽:
<message>這是正確的。</message>
- xml必須正確的嵌套
<b><i>這是錯誤的嵌套</b></i>
<b><i>這是正確的嵌套</i></b>
- xml必須有根元素
- xml的屬性值需加引號
<note date=08/08/2008>錯的屬性表示</note>
<note date="08/08/2008">正確的屬性表示</note>
- xml中的空格會被保留
<p>Hello my name is Xiaoxia.</p>
輸出則為:Hello my name is Xiaoxia.
XML 元素
XML元素指的是從(且包括)開始標簽直到(且包括)結束標簽的部分,元素可以包括屬性。
XML元素命名規則
XML 元素必須遵循以下命名規則:
- 名稱可以含字母、數字以及其他的字符;
- 名稱不能以數字或者標點符號開始;
- 名稱不能以字符 “xml”(或者 XML、Xml)開始;
- 名稱不能包含空格;
- 可使用任何名稱,沒有保留的字詞;
- 應避免使用"." "-"字符。
XML屬性
在 XML中 ,屬性提供有關元素的額外信息。
- XML屬性必須加引號
<person sex="female">
- 應避免使用屬性,因為屬性無法描述樹結構,且不易擴展。
XML驗證
擁有正確語法的 XML 被稱為“形式良好”的 XML,通過DTD驗證的XML是合法的XML
形式良好(Well Formed)的 XML 文檔會遵守前幾章介紹過的 XML 語法規則:
- XML 文檔必須有根元素
- XML 文檔必須有關閉標簽
- XML 標簽對大小寫敏感
- XML 元素必須被正確的嵌套
- XML 屬性必須加引號
DTD 的作用是定義 XML 文檔的結構。它使用一系列合法的元素來定義文檔結構:
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
詳細的DTD內容請參考DTD驗證
XML與HTML
- 相同點
- XML與HTML均為標記語言
- 均有標記標簽和標簽屬性
- 不同點
- XML的設計宗旨是存儲傳輸數據,而HTML主要是為了顯示數據
- XML的標簽可以自己定義,HTML的標簽是規定好的
- XML的標簽必須要成對出現,而HTML則不是硬性要求
- XML標簽對大小寫敏感,HTML則不敏感
- XML屬性必須加引號,HTML沒有硬性要求
相比HTML,XML支持動態更新,更適合大型網站的開發;而HTML則適合用來開發小型網站,可以提高頁面反應速度。
XML與JSON
JSON
JSON:JavaScript Object Notation,JavaScript對象表示法,是存儲和交換文本信息的語法,類似于XML,但JSON 比 XML 更小、更快,更易解析。
- JSON 是純文本
- JSON 具有“自我描述性”(人類可讀)
- JSON 具有層級結構(值中存在值)
- JSON 可通過 JavaScript 進行解析
- JSON 數據可使用 AJAX 進行傳輸
JSON 與XML的區別之處
功能性區別
- XML格式統一,符合標準;但json沒有XML格式這么推廣的深入人心和喜用廣泛,沒有XML那么通用性;
- XML容易與其他系統進行遠程交互,數據共享比較方便;但JSON格式目前在Web Service中推廣還屬于初級階段;
- XML文件龐大,文件格式復雜,傳輸占帶寬,而json數據格式比較簡單,易于讀寫,格式都是壓縮的,占用帶寬小;
- json沒有結束標簽,但XML要求標簽必須要閉合;
- json數據能夠使用內建的 JavaScript eval() 方法進行解析,但對XML而言,客戶端不同瀏覽器之間解析XML的方式不一致,需要重復編寫很多代碼;
- json支持多種語言,包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等服務器端語言,便于服務器端的解析;而對xml而言,服務器端和客戶端都需要花費大量代碼來解析XML,導致服務器端和客戶端代碼變得異常復雜且不易維護。
詳細的區別可參考JSON與XML的區別比較
XHTML與HTML
XHTML 是更嚴謹更純凈的 HTML 版本,是 HTML 與 XML(擴展標記語言)的結合物.
現在的萬維網上有很多不符合HTML規則的頁面,但依然可以工作的很好。為了避免這種現象,因此才會推出XHT。
XHTML結合了HTML 和 XML 各自的長處,XML 用來描述數據,XML中的所有東西都會被正確的標記,以產生形式良好的文檔;而 HTML 則用來顯示數據,結合二者,便出現了XHTML。
XHTML與HTML的差異
- XHTML 元素必須被正確地嵌套。
- XHTML 元素必須被關閉。
- 標簽名必須用小寫字母。
- XHTML 文檔必須擁有根元素。
- 屬性名稱必須小寫
- 屬性值必須加引號
- 屬性不能簡寫
- 用 Id 屬性代替 name 屬性
- XHTML DTD 定義了強制使用的 HTML 元素
如果你想學習XHTML,請參考XHTML教程