XML 简介
XML 规范是由 W3C(World Wide Web Consortium)定义的一组指南,用于以纯文本的形式描述结构化数据,一种基于尖括号间标签的标记语言。
XML 没有一组固定的标签。相反,XML 是一种可用于创建其他标记语言的元语言。
下面的文档显示一个保存产品类别的自定义 XML 格式:
<?xml version="1.0" encoding="utf-8" ?> <productCatalog> <catalogName>Acme Fall 2008 Catalog</catalogName> <expiryDate>2008-01-01</expiryDate> <products> <product id="1001"> <productName>Magic Ring</productName> <productPrice>342.10</productPrice> <inStock>true</inStock> </product> <product id="1002"> <productName>Flying Carpet</productName> <productPrice>982.99</productPrice> <inStock>true</inStock> </product> </products> </productCatalog>
标签可以自由使用最能描述你的数据的任意名称,正是这种灵活性使得 XML 非常成功。当然,灵活性也会有缺点。不同公司完全可用不同的标签名来描述相似的数据,尽管所有应用程序都能够解析 XML 数据,但数据的写入者和读取者需要对标签和结构达成共识,才能使读取者可用解释数据并抽取有意义的信息。
XML 的优点
今天,XML 比过去任何一天都更为有用。现代应用程序使用 XML 的好处有以下几点:
- 适应性。XML 无处不在,无论什么时候需要共享数据,XML 都会成为首选目标。
- 扩展性和灵活性。XML 不会强加任何数据语义的规则,适用于任意数据的类型并且实现的代价很低。
- 相关标准和工具。XML 成功的另一个原因在于创建和处理 XML 的工具(解析器)和相关标准(XML架构、XPath、XSLT)。这样几乎每种语言的开发者都有现成的组件用于阅读 XML,按某种规则(被称作架构)验证 XML 的有效性,将 XML 转换格式等。
格式良好的 XML
XML 是一个非常严格的标准,这种严格性是用于保留广泛的兼容性的。(臭名昭著的 HTML 语言就是在没有这种严格性标准下的产物)
所有的 XML 解析器都会执行一些基本的质量检查。如果一个 XML 文档不能满足所有标准,它就会被彻底拒绝。否则,它就被认为是格式良好的。格式良好的 XML 未必就是正确的 XML ,例如含有错误数据,但 XML 解析器能够解析它。
XML 文档必须满足下面这些条件才能被认为是格式良好的:
- 每个开始标签必须有一个对应的结束标签
- 空元素必须以“/>”结束
- 元素可以嵌套但不能交错
- XML 是严格区分大小写的,因此
和 </firstName > 不能配对 - 一个元素不能有两个或更多的同名特性,但是可以嵌套多个同名的元素
- 一个文档只可以有一个根元素
- 所有特性在值的前后都要有引号
- 注释不能放入标签中(它们包含在 标记中)
XML 架构
XML 的灵活性也带来了一些问题。世界各地的开发人员都使用你的 XML 格式,怎样才能保证所有人都遵守规则?
解决办法是创建一个格式文档,它定义你的自定义标记语言的规则,它被称为架构。这些规则不会包括语法细节(那是 XML 标准所要规定的),架构文档需要定义的是符合你的数据类型的逻辑规则,它包括以下几项:
- 文档词汇。它定义了哪些元素或特性的名字可以出现在你的 XML 文档中。
- 文档结构。它定义了标签放在哪儿,可以指定标签之间的顺序,还可以指定某个元素可以出现的次数。
- 支持的数据类型。可以定义数据是文本,或者必须是可以解析的数值数据、日期信息等。
- 允许的数据范围。可将数值限制在范围内,文本限定在特定长度内,强迫正则表达式模式匹配,或者限制仅可以是某些特定的值。