Skip to content

XML 简介

XML (EXtensible Markup Language,可扩展标记语言) 是一种用于描述数据的语言。

HTML (HyperText Markup Language,超文本标记语言) 是一种用于显示数据的语言。

可以将 XML 视为一种组织结构和携带信息的方式,而 HTML 则专注于呈现(present)信息。

对 HTML 结构(标签、元素)有一个基本了解有助于理解标记(markup)的概念。

  • HTML 基础

虽然对于理解 XML 概念并非严格必要,但了解 JavaScript 对于在 Web 浏览器中操作 XML 数据至关重要。

  • 可扩展标记语言(EXtensible Markup Language): “可扩展”意味着你可以定义自己的标签,与 HTML 中标签预定义不同。
  • 标记语言(Markup Language): 和 HTML 一样,它使用标签(<tag>...</tag>)来组织内容结构。
  • 描述数据: 它的主要目的是存储和传输数据,侧重于数据是什么。
  • 自我描述性(Self-Descriptive): 用户自定义的标签通常能清晰地表明数据的含义(例如,<customerName>,<orderId>)。
  • W3C 推荐标准(W3C Recommendation): XML 是一个成熟的、标准化的技术,由万维网联盟(World Wide Web Consortium,简称 W3C)推荐。
  • 目的: XML 存储/传输数据(侧重于意义)。HTML 显示数据(侧重于呈现)。
  • 标签: XML 标签是用户定义的。HTML 标签是预定义的。
  • 结构: XML 的语法非常严格(例如,必须有结束标签,正确的嵌套)。HTML 更宽松(浏览器通常会尝试纠正错误)。
  • 目标: XML 旨在实现数据结构和可移植性(portability)。HTML 旨在浏览器中渲染(render)内容。

XML 不是 HTML 的替代品;它们经常协同工作。XML 可以持有数据,而 HTML(结合 CSS 和 JavaScript)可以格式化和显示数据。

XML 文档本身只是一种结构化的文本。它不执行任何操作。

考虑这个 XML 便签:

<?xml version="1.0" encoding="UTF-8"?>
<note priority="high">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

这份文档清晰地描述了一个便签,包含发送者、接收者、标题、正文和优先级。然而,它只是静静地存在。

需要软件应用程序来处理这个 XML:读取它、通过网络发送它、显示它、验证其结构(validate its structure)或将其转换为其他格式。

XML 的强大之处在于其可扩展性(extensibility)。像 <to>、<from>、<heading>、<body> 这样的标签以及像 priority 这样的属性并非 XML 标准本身的一部分。它们是由这个特定 XML 文档的创建者选择的,以便有意义地表示他们的数据。

这使得 XML 能够建模几乎任何类型的结构化数据,从配置文件到科学数据再到金融交易。

在现代 Web 开发中,JSON (JavaScript Object Notation,JavaScript 对象表示法) 通常用于数据交换,可以替代 XML 或与 XML 并行使用。JSON 通常更简洁(less verbose),并且更直接地映射到 JavaScript 对象。

然而,XML 提供了 JSON 不具备的原生特性,例如命名空间(namespace)(用于避免标签名称冲突)、Schema(DTD/XSD 用于验证)、内置的注释支持以及转换能力(transformation capabilities)(XSLT)。XML 和 JSON 之间的选择通常取决于应用程序和生态系统的具体要求。

XML 的关键价值主张(key value proposition)在于它是一个独立于软件和硬件的结构化和交换信息的标准。

XML 于 1998 年 2 月成为 W3C 推荐标准,并且在许多领域仍然是一项基础技术。