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

標題 - 什麼是XML:全面指南

什麼是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>&amp;)。
  • 內容: 元素內的實際數據。
  • 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實體:

字符轉義形式示例
<(小於)&lt;I &lt;3 XMLI <3 XML
>(大於)&gt;x &gt; yx > y
&(與號)&amp;AT&amp;TAT&T
'(單引號)&apos;"O&apos;Reilly"O’Reilly
"(雙引號)&quot;She said &quot;hello&quot;She said “hello”

數字符引用:

對於不能鍵入的特殊字符,使用數字引用:

  • 十進制:
    &#20013;  <!-- 漢字 "中" -->
    
  • 十六進制:
    &#x4E2D;  <!-- 漢字 "中" -->
    
  • 示例:
    <message>I &lt;3 J&#xF6;rg</message>
    
    顯示為: I <3 Jörg

處理二進制數據:

XML 不支持原始二進制數據。需要使用Base64編碼


6. XML中的註釋

XML註釋語法:

<!-- 這是一個有效的XML註釋 -->

XML註釋的規則:

  • 不能出現在XML聲明之前。
  • 註釋中不能包含 --(雙連字符)。
  • 實體引用在註釋中被忽略。

示例:

<!-- 這是包含 < 和 & 符號的註釋 -->

結論

XML是一種結構化數據交換的基本技術,推動網絡提要、辦公文檔、科學數據和行業標準的發展。理解關鍵的XML術語、編碼規則和轉義機制可以確保形成良好的XML文檔,在不同系統中正常運作。

遵循字符編碼和轉義的最佳實踐,開發者可以避免解析錯誤並確保與基於XML的應用程序的兼容性