XML (Extensible Markup Language) 設計目的是 傳輸和存儲數據,而非顯示數據(HTML 的職責)。核心特征:可擴展(自定義標籤)、結構化(樹狀層級)、自描述(標籤即語義)。
版本現狀:XML 1.0 為主流,1.1 不向後兼容,極少使用。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
| 屬性 | 說明 | 建議值 |
|---|---|---|
| version | XML 版本 | "1.0" |
| encoding | 字符編碼 | UTF-8(通用、無 BOM、支持全字符集) |
| standalone | 是否獨立(不依賴外部 DTD/實體) | "yes" 或 "no",通常省略 |
亂碼根治:文件保存編碼、聲明編碼、解析器編碼、數據庫/傳輸編碼 四者統一為 UTF-8。

<book>Java編程思想</book><br/>、<img src="a.jpg"/><!-- 正確:層級清晰 -->
<library>
<book>
<title>Effective Java</title>
<author>Joshua Bloch</author>
</book>
</library>
<!-- 錯誤:交叉嵌套 -->
<book><title>...</book></title>
整個文檔 有且僅有一個 根元素包裹所有內容。
| 規則 | 說明 | 正例 | 反例 |
|---|---|---|---|
| 大小寫敏感 | <Book> ≠ <book> | <book> | <Book> </book> |
| 首字符限制 | 字母/下劃線/冒號(不推薦冒號) | <book> <_book> | <1book> <-book> |
| 保留前綴 | 不能以 xml/XML/XmL 等任意大小寫組合開頭 | <myXml> | <xmlBook> |
| 字符集限制 | 不含空格、換行、制表符 | <book_name> | <book name> |
| 冒號用途 | 命名空間分隔符,非必要勿用 | <ns:book> | <book:1> |
<book id="bk101" category="programming"> <title>Effective Java</title> </book>
id='bk101' 或 id="bk101"元數據(標識、分類、配置)用屬性;業務數據(內容、結構、可擴展)用子元素。
子元素優勢:支持復雜結構、樹狀層級、易擴展、易讀、可驗證(Schema)。
<!-- 屬性風格(不推薦用於業務數據) --> <note date="08/08/2008" to="George" from="John" heading="Reminder" body="Don't forget!" /> <!-- 子元素風格(推薦) --> <note> <date><day>08</day><month>08</month><year>2008</year></date> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note> <!-- 適合屬性的場景:ID、類型標識 --> <messages> <note id="501"><to>George</to>...</note> <note id="502"><to>John</to>...</note> </messages>
<!-- 這是註釋,可多行 --> <!-- 註釋不能嵌套:<!-- 內層 --> 外層 --> -->
| 字符 | 實體引用 | 數字引用 |
|---|---|---|
| < | < | < |
| > | > | > |
| & | & | & |
| " | " | " |
| ' | ' | ' |
在屬性值中同樣需要轉義。
<![CDATA[ 這裡的 < > & " ' 都不會被解析 適合存放:腳本代碼、SQL 語句、HTML 片段、JSON 數據 ]]>
]]> 序列<?target instruction?>
<?xml ...?><?xml-stylesheet type="text/xsl" href="style.xsl"?> 關聯 XSLT 樣式表applicationContext.xml、Maven pom.xml、Log4j log4j2.xmlweb.xml、持久化映射 orm.xml| 特性 | DTD | XSD (Schema) |
|---|---|---|
| 語法 | 非 XML 格式 | XML 格式,自描述 |
| 數據類型 | 無(僅 PCDATA) | 豐富類型系統 |
| 命名空間 | 不支持 | 原生支持 |
| 擴展性 | 差 | 強(繼承、引用、複雜類型) |
| 現狀 | 歷史遺留 | 主流標準 |
encoding="UTF-8"XML 雖在 JSON、YAML 衝擊下在配置、API 領域份額下降,但其嚴格的結構化、驗證、命名空間、混合內容能力,在企業級集成、文檔標準、元數據管理等領域仍不可替代。