XML(简介)
XML(可扩展标记语言)在 20 世纪 90 年代后期登上舞台后,就不停是众多活动和狂热思考的焦点。XML 只是基于平常文本,但却提供了险些可以在任何两个应用程序间共享数据的方式。
虽然 XML 在概念上很简朴,但对 XML 的处理却通常很烦琐(必要编写大量重复性的代码)和复杂(许多容易被忽视的细节导致错误)。
什么时间利用 XML?
什么时间在Web 应用程序中利用 XML?
你必要处理已经保存在 XML 中的数据时。
你希望用 XML 保存数据并为将来大概的整合做准备时。(XML 在应用程序整合的场景中最有意义)
你希望利用依赖于 XML 的技术时。(Web 服务利用各种建立在 XML 上的标准)
注解:
必须明确的一个重要概念是,存储数据时必须决定两件事情:
确定命据布局化的方式(逻辑格式)
确定命据保存的方式(物理存储)
XML 是格式的选择而不是存储的选择。也就是说,纵然你决定用 XML 保存数据,你还要决定是保存到数据库字段里,还是要插入到一个文件里,大概只是以字符串或其他对象的情势保存在内存中。
XML 简介
XML 规范是由 W3C(World Wide Web Consortium)定义的一组指南,用于以纯文本的情势形貌布局化数据,一种基于尖括号间标签的标记语言。
XML 没有一组固定的标签。相反,XML 是一种可用于创建其他标记语言的元语言。
下面的文档体现一个保存产物类别的自定义 XML 格式:
<?xml version="1.0" encoding="utf-8" ?>
<productCatalog>
<catalogName>Acme Fall 2015 Catalog</catalogName>
<expiryDate>2015-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> 和 </firstName > 不能配对
一个元素不能有两个或更多的同名特性,但是可以嵌套多个同名的元素
一个文档只可以有一个根元素
全部特性在值的前后都要有引号
解释不能放入标签中(它们包罗在 <!-- 和 --> 标记中)
XML 命名空间
随着 XML 标准的成长,已创建了数十种 XML 标记语言(通常叫做 XML 语法)。此中许多属于特定的行业、流程和信息类型。如果你必要同时组合两个具有相同名称元素的 XML 语法,会发生什么呢?另一个更典型的问题是怎样区分它们?
办理办法在于 XML 命名空间标准。这个标准的焦点头脑是全部的 XML 标记语言都拥有可以大概唯一区分相关元素的命名空间。简朴的说,命名空间可以在整合时消除同名元素的歧义。
全部的 XML 命名空间都利用 URI(Universal Resource Identifiers,统一资源标识符),一样平常看起来和网页的 URL 相似。比方,http://www.mycompany.com/mystandard 是一种典型的命名空间,但这不是须要的(也不应该被假设),命名空间可以是恣意文本序列,标准是为了确保它的唯一性。
要指定某个元素属于特定的命名空间,只需在开始标签中参加 xmlns(XML Name Space)特性表明要利用的命名空间即可。比方,下面这个元素是http://mycompany/OrderML 命名空间的一部门。
XML 架构
XML 的灵活性也带来了一些问题。天下各地的开发人员都利用你的 XML 格式,怎样才能包管全部人都服从规则?
办理办法是创建一个格式文档,它定义你的自定义标记语言的规则,它被称为架构。这些规则不会包括语法细节(那是 XML 标准所要规定的),架构文档必要定义的是符合你的数据类型的逻辑规则,它包括以下几项: