📄 一句话概括
【元】就是【用来定义别人的】——XML 本身不含任何标签,它定义的是【怎么造标签】的规则,所以能长出 SVG、RSS 等成百上千种方言。
📝 本节和前面几节的关系
讲完了可扩展,本节给出它最抽象也最要害的定位:XML 不是一门语言,而是造语言的模具。
一、元语言:语言之上的语言
元(meta)=【关于……本身的】:元数据是描述数据的数据,元语言是规定语言怎么写的语言;
普通语言的词汇是【内容词】:HTML 的 <p> 说的是段落;
XML 没有内容词,只有语法规则——所以它不能直接用来写文章,只能用来定义【怎么写文章】。
二、方言遍地:XML 长出的一大家子
用 XML 规则造出来的语言叫 XML 方言:XHTML(按 XML 规矩重写的网页)、SVG(矢量图)、RSS/Atom(订阅)、OOXML(Office 文档); 还有各个行业的交换标准,例如地理数据的 KML、GPS 轨迹的 GPX、电子商务的 ebXML——数得出上千种; 它们彼此内容毫不相干,却共享同一套语法——这就是元语言的价值:一次打地基,无数楼随意盖。
三、为什么这个定位很重要
明白了 XML 是元语言,就不会问【XML 有哪些标签】——答案是:它自己一个都没有; 同一个解析工具能读懂所有方言,正是因为它只认语法层:文档对不对是语法的事,标签什么意思交给各行业自己定义; 【⚠️ 2026 现状】XML 作为元语言的地基地位依然稳固——今天打开任何一个 docx 或 svg 文件,看到的仍是它的后代。
四、动手 Demo:同一套解析器读懂两种方言
把 SVG 和 RSS 两种毫不相干的方言交给同一个解析器,观察它只看语法不看词汇。
import xml.etree.ElementTree as ET
svg = '<svg><circle r="20"/><rect w="30"/></svg>'
rss = '<rss><item><title>今日笔记</title></item></rss>'
for name, doc in (("SVG", svg), ("RSS", rss)):
r = ET.fromstring(doc)
print(name, "根:", r.tag, "| 子元素:", len(list(r)))
实跑输出:
--------------------------------------------------------------------
XML 是元语言
--------------------------------------------------------------------
【元】= 用来定义别人的语言。XML 本身不含任何标签, 它定义的是【怎么造标签】的规则;
用这套规则造出来的语言(方言)已经成百上千:
方言 用途 长什么样
---------------------------------------------------------------------
XHTML 按 XML 规则重写的 HTML <html>... 但必须严闭合
SVG 矢量图形 <circle r="20"/>
RSS 新闻订阅 <item><title>...</title></item>
OOXML Word/Excel 文档格式 docx 里其实是一包 XML
同一套解析器, 读懂所有这些方言——因为地基都是 XML:
SVG 元素 2 个, 第一个 = circle
RSS 元素 1 个, 第一个 = item
XML 像【造语言的模具】——这是本节最抽象也最要害的一句。
图形方言与新闻方言, 同一解析器各读出 2 个与 1 个子元素——元语言的通用性一目了然。 照这个思路, 你可以为任何领域发明一套新的 XML 方言, 解析工具不必改一行代码。
30 秒实验
- 用一句话向别人解释【XML 是元语言】,并各举一个方言例子。
- 找一找身边有哪些文件其实是 XML 方言(提示:用写字板打开 .svg,用解压软件打开 .docx)。
常见误区
- 以为 XML 是一套现成的标签表——它自己不含标签,是造标签的规则。
- 以为元语言高深莫测——【规定语言怎么写的语言】一句话即可概括。
自测三问(点开对答案)
1. 【元语言】的含义? —— 规定语言怎么写的语言——XML 定义语法,不定义词汇。 2. XML 方言有哪些例子? —— XHTML、SVG、RSS、OOXML、KML、GPX 等,上千种。 3. 为什么一个解析器能读所有方言? —— 因为方言共享 XML 语法——解析器只认语法层。- ☐ 下一节(11.4 XML 可以为信息赋予意义)
相关笔记
- XML 是可扩展的语言 — 可扩展的根因就在【元语言】
- 🕸️ Web技术原理 · 索引 — XHTML 这一支方言的用途
- 💻 计算机是怎样跑起来的 · 索引