最后更新: 2025年3月25日

标题 - 什么是 XML:全面指南

什么是 XML?

XML(可扩展标记语言) 是一种用于存储、传输和重建数据的标记语言和文件格式。它提供了一种结构化的方法来编码信息,使其既可被人类读取,也可被机器读取。

XML 的主要特性

1. 由开放标准定义

  • 万维网联盟(W3C) 于1998年根据 XML 1.0规范 建立。
  • 遵循严格的规则以保证数据结构化且易于解释。

2. 设计目标

  • XML 的设计着重于在不同平台上的简洁性、普遍性和可用性
  • 采用基于文本的格式,便于阅读和编辑。

3. 支持 Unicode

  • XML 支持 Unicode,允许存储和处理多语言文本。

4. 适用性

  • 最初为文档创建,现在 XML 被广泛用于各个领域的数据表示,包括网络服务、API 和配置文件

5. 模式和 API

  • XML 结构可以使用文档类型定义(DTD)XML 架构(XSD)Relax NG 来定义。
  • 各种 API,如 DOM(文档对象模型)SAX(简单 API for XML),支持 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 标准下的操作性天气数据表示。类似地,Darwin Information Typing Architecture(DITA) 是一种广泛应用于出版的 XML 标准。


2. XML 中的关键术语

理解 XML 中的核心术语对于有效处理 XML 文档至关重要。

字符

XML 文档是 Unicode 字符的序列。XML 1.1 允许几乎所有的 Unicode 字符,除了严格禁止的 空字符(U+0000

处理器和应用程序

  • **XML 处理器(或解析器)**读取并分析 XML 标记。
  • 应用程序从处理器接收结构化数据并进行操作。

标记和内容

XML 将字符分为标记和内容

  • 标记: 包括元素、属性和实体(如 <tag>&amp;)。
  • 内容: 元素内部的实际数据。
  • CDATA 部分: 允许不作为标记解析的文本,封装在 <![CDATA[ ... ]]> 中。

标签和元素

  • 标签:用 < > 包围的标记结构。
    • <section>(开始标签)
    • </section>(结束标签)
    • <line-break />(空元素标签)
  • 元素:由标签定义的逻辑组件。
    • 示例: <greeting>Hello, world!</greeting>

属性

属性通过使用名称-值对为元素提供元数据。示例:

<img src="image.jpg" alt="Description" />
  • src="image.jpg"alt="Description"<img> 元素的属性。

3. XML 中的字符和转义

XML 中的有效 Unicode 字符

XML 文档仅允许特定的 Unicode 字符以确保正确解析。

XML 1.0 中允许的字符:

  • 控制字符:
    • U+0009(制表符)
    • 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 的应用程序中取得成功。