最後更新日期:2025年3月25日

什麼是XML?
XML(可擴展標記語言)是一種用於儲存、傳輸和重構數據的標記語言和文件格式。它提供了一種結構化的編碼信息方法,使其既可讀於人又可讀於機器。
XML的關鍵特性
1. 由開放標準定義
- 由萬維網協會(W3C)於1998年根據XML 1.0規範建立。
- 遵循嚴格的規則以確保數據結構化且易於解讀。
2. 設計目標
- XML的設計考慮到簡單性、通用性和可用性,可在不同平台上使用。
- 使用基於文本的格式,易於閱讀和編輯。
3. Unicode支持
- XML支持Unicode,允許存儲和處理多語言文本。
4. 多功能性
- 最初為文檔創建,現已廣泛用於各領域的數據表示,包括網絡服務、API 和配置文件。
5. 架構和API
- XML結構可以使用文檔類型定義(DTD)、XML結構(XSD)或Relax NG定義。
- 各種API,如DOM(文檔對象模型)和SAX(簡單XML API),使XML處理成為可能。
6. XML的常見用途
- 不同系統之間的數據交換(例如,網絡服務,API)。
- 軟件應用程序中的配置文件。
- 存儲結構化信息(例如,RSS提要,SVG圖形,類似DOCX的文檔格式)。
- 網頁開發(例如,XHTML,SOAP,基於AJAX的應用程序)。
XML概述
1. XML的主要用途:序列化
XML中的序列化意味著:
- 以結構化格式存儲數據。
- 在不同系統之間傳輸數據。
- 重建可用形式的數據。
當兩個系統需要交換信息時,XML提供了一個標準化的文件格式以實現互操作性。它充當結構化數據交換的**“通用語言”**。
2. XML作為標記語言
XML是一種標記語言,意思是它:
- 用標籤標記數據以清晰結構。
- 層次結構化地組織信息。
- 用元數據分類數據。
示例:
<book>
<title>XML Basics</title>
<author>John Doe</author>
</book>
在此,<book>
、<title>
和<author>
是定義數據元素的標籤。
3. XML結構(XSD)和驗證
一個**XML結構(XSD)**定義了XML文檔的結構規則。
XML文檔可以是:
- 格式良好的 → 遵循基本語法規則(正確嵌套,正確閉合標籤)。
- 有效的 → 符合結構規則(必需元素,正確數據類型)。
XSD規則示例:
<xs:element name="title" type="xs:string"/>
這確保了<title>
必須包含一個字符串值。
4. XML媒體類型(RFC 7303)
IETF RFC 7303 定義了用於數據傳輸的XML媒體類型:
- application/xml → 標準XML數據。
- application/xml-external-parsed-entity → 解析的XML實體。
- application/xml-dtd → XML DTD文檔。
對於基於XML的格式,使用**+xml**後綴(例如,image/svg+xml
用於SVG圖像)。
5. 網絡應用中的XML(RFC 3470 / IETF BCP 70)
IETF BCP 70(RFC 3470)概述了基于網絡的應用程序中XML使用的最佳實踐,以確保系統之間的數據互操作性。
1. XML的應用
XML是一種靈活的標記語言,旨在通過互聯網進行數據交換。其語法影響了許多文檔格式和通信協議,使其成為許多行業的基礎技術。
常見的XML格式:
- 網路訂閱源: RSS, Atom
- 辦公文檔: Office Open XML, OpenDocument
- 圖形和3D模型: SVG, COLLADA
- 網頁技術: XHTML
- 數據交換協議: SOAP, XMPP
- AJAX: 使用XML進行異步數據交換
使用XML的行業標準:
- 醫療: HL7(Health Level 7)
- 旅遊行業: OpenTravel Alliance
- 金融: FpML(金融產品標記語言)
- 房地產與抵押貸款: MISMO
- 政府數據交換: 國家信息交換模型
XML在科學中的應用:
在氣象學中,XML用於遵循IWXXM標準的運營天氣數據表示。類似地,達爾文信息類型架構(DITA) 是出版業廣泛使用的XML標準。
2. XML中的關鍵術語
理解XML中的核心術語對於有效地處理XML文檔至關重要。
字符
一個XML文檔是一個Unicode字符序列。XML 1.1允許幾乎所有的Unicode字符,除了Null字符 (U+0000
),這是嚴格禁用的。
處理器和應用
- XML處理器(或解析器) 讀取並分析XML標記。
- 應用程序 從處理器接收結構化數據並對其進行操作。
標記和內容
XML將字符分為標記和內容:
- 標記: 包括元素、屬性和實體(例如,
<tag>
和&
)。 - 內容: 元素內的實際數據。
- CDATA節: 允許文字不被解析為標記,封閉在
<![CDATA[ ... ]]>
內。
標籤和元素
- 標籤: 用
< >
括起的標記構造。<section>
(開始標籤)</section>
(結束標籤)<line-break />
(空標籤)
- 元素: 由標籤定義的邏輯組件。
- 例如:
<greeting>Hello, world!</greeting>
- 例如:
屬性
屬性使用名稱-值對為元素提供元數據。示例:
<img src="image.jpg" alt="描述" />
src="image.jpg"
和alt="描述"
是<img>
元素的屬性。
3. XML中的字符和轉義
XML中有效的Unicode字符
XML文檔僅允許特定的Unicode字符以確保正確解析。
XML 1.0中允許的字符:
- 控制字符:
U+0009
(Tab)U+000A
(換行符)U+000D
(回車符)
- 文本字符:
U+0020–U+D7FF
U+E000–U+FFFD
U+10000–U+10FFFF
XML 1.1的增強:
- 允許所有U+0001–U+001F控制字符,但需要將其轉義。
- U+0000(空字符)仍然禁止。
4. XML中的編碼
常見的XML編碼:
XML支持基於Unicode的編碼,包括:
- UTF-8(推薦默認)
- UTF-16(所有XML解析器必須支持)
- ASCII,ISO-8859-X(舊有編碼)
XML中的編碼聲明:
XML頭部可以指定編碼:
<?xml version="1.0" encoding="UTF-8"?>
- 如果未指定編碼,默認為UTF-8。
- **UTF-16需要BOM(字節順序標記)**以正確檢測。
5. 在XML中轉義特殊字符
由於XML語法保留了某些字符,因此它們必須被轉義以避免沖突。
預定義的XML實體:
字符 | 轉義形式 | 示例 |
---|---|---|
< (小於) | < | I <3 XML → I <3 XML |
> (大於) | > | x > y → x > y |
& (與號) | & | AT&T → AT&T |
' (單引號) | ' | "O'Reilly" → O’Reilly |
" (雙引號) | " | She said "hello" → She said “hello” |
數字符引用:
對於不能鍵入的特殊字符,使用數字引用:
- 十進制:
中 <!-- 漢字 "中" -->
- 十六進制:
中 <!-- 漢字 "中" -->
- 示例:顯示為: I <3 Jörg
<message>I <3 Jörg</message>
處理二進制數據:
XML 不支持原始二進制數據。需要使用Base64編碼。
6. XML中的註釋
XML註釋語法:
<!-- 這是一個有效的XML註釋 -->
XML註釋的規則:
- 不能出現在XML聲明之前。
- 註釋中不能包含
--
(雙連字符)。 - 實體引用在註釋中被忽略。
示例:
<!-- 這是包含 < 和 & 符號的註釋 -->
結論
XML是一種結構化數據交換的基本技術,推動網絡提要、辦公文檔、科學數據和行業標準的發展。理解關鍵的XML術語、編碼規則和轉義機制可以確保形成良好的XML文檔,在不同系統中正常運作。
遵循字符編碼和轉義的最佳實踐,開發者可以避免解析錯誤並確保與基於XML的應用程序的兼容性。