跳转到内容

XML - 数据交换管理/XML 简介

来自 Wikibooks,开放世界的开放书籍



上一章 下一章
前言 单个实体



学习目标
  • 定义 SGML、HTML 和 XML 的用途


数据管理中存在四个核心问题:数据的捕获、存储、检索和交换。本书的目的是讨论 **XML**,一种用于管理数据交换的技术。本书中的基础 XML 章节以“数据模型”方法构建。第一章通过单个实体示例向读者介绍 XML 文档、XML 架构和 XML 样式表。后续章节将通过多实体示例以及一对一关系、一对多关系或多对多关系来扩展 XML 基础知识。

XML 是一种用于数据交换的工具。数据交换长期以来一直是信息技术中的一个问题,但互联网提升了其重要性。电子数据交换 (EDI) 是大型组织传统的数据交换标准,正在逐渐被 XML 取代,XML 可能会成为所有组织(无论规模大小)的数据交换标准。

EDI 支持标准商业文档的电子交换,目前是电子商务的主要数据格式。结构化格式用于在交易伙伴之间交换常见的商业文档(例如,发票和装运订单)。与电子邮件的自由格式相反,EDI 支持重复性、例行的业务交易的交换。标准意味着例行的电子交易可以简洁明了。美国和加拿大使用的主要标准称为 X.12,主要的国际标准是 UN/EDIFACT。遵循相同标准的公司可以电子方式共享数据。

互联网是一个全球网络,几乎每个公司都可能访问它,其通信成本通常低于传统 EDI。因此,互联网已成为交易伙伴之间选择的电子传输路径。最简单的方法是使用互联网作为传输 EDI 文档的手段。但由于 EDI 是在 20 世纪 60 年代开发的,另一种方法是重新审视数据交换技术。这种重新思考的结果是 XML,但在考虑 XML 之前,我们需要了解 XML 的父级 SGML。

对于典型的美国公司,估计文档管理消耗了其高达 15% 的收入、近 25% 的劳动力成本以及办公室员工 10% 到 60% 的时间。标准通用标记语言 (SGML)旨在降低文档管理成本并提高效率。

标记语言将有关文档的信息嵌入到文档的文本中。在以下示例中,标记标签指示文本包含城市详细信息。另请注意,城市的名称、州和人口由特定的标签标识。因此,读者(人或计算机)对雅典佐治亚州100,000的含义毫不怀疑。另请注意,城市的纬度和位置也用相应的标签明确标识。SGML 的实用性基于记录文本及其含义。

图 1:标记语言

<city> 
       <cityname>Athens</cityname> 
       <state>GA</state>
       <description> Home of the University of Georgia</description>
       <population>100,000</population>
       <location>Located about 60 miles Northeast of Atlanta</location>
       <latitude>33 57' 39" N</latitude>
       <longitude>83 22' 42" W</longitude>
</city>

SGML 是一种与供应商无关的 国际标准ISO 8879),定义了文档的结构。SGML 于 1986 年作为 元语言 开发,是 HTMLXML 的父级。由于 SGML 文档是标准文本文件,因此 SGML 提供了跨系统可移植性。当技术快速发展时,SGML 为管理数据交换提供了一个稳定的平台。此外,SGML 文件可以转换为各种媒体以进行发布。SGML 的使用保留了文本信息,而与它如何以及何时呈现无关。组织可以通过将文档存储在一个独立的标准中来获得长期收益,然后可以将其转换为任何所需的媒体进行显示。

SGML 对数据管理具有三大优势

  • 重用:信息可以创建一次并多次重用。
  • 灵活性:SGML 文档可以以任何格式发布。相同的内容可以打印、在 Web 上呈现或通过文本合成传递。由于 SGML 面向内容,因此可以延迟呈现决策,直到确定输出格式。
  • 修订:SGML 支持修订和版本控制。通过内容版本控制,公司可以轻松跟踪文档中的更改。

一小段 SGML 清楚地展示了 SGML 的特性和优势(参见图 2)。围绕文本块的标签描述了其含义,从而支持呈现和检索。例如,围绕“Delta”的一对标签 <airline> 和 </airline> 标识了执行航班的航空公司。

图 2:SGML 示例

   <flight>
       <airline>Delta</airline>
       <flightno>22</flightno>
       <origin>Atlanta</origin>
       <destination>Paris</destination>
       <departure>5:40pm</departure>
       <arrival>8:10am</arrival>
   </flight>

通过将 样式表 应用于文件,前面的 SGML 代码可以以多种方式呈现。例如,它可能显示为

达美航空 22 号航班从亚特兰大飞往巴黎,下午 5:40 出发,上午 8:10 到达

或为

航空公司 航班 出发地 目的地 出发时间 到达时间
达美航空 22 亚特兰大 巴黎 下午 5:40 上午 8:10


如果数据以 HTML 格式存储并在网站上呈现(如图 3 所示),则读者必须推断数据的含义。对于人类来说,这通常非常容易,但对于机器来说是不可能的。此外,呈现格式是固定的,只能通过重写 HTML 来更改。如果您不熟悉 HTML,则应在阅读下一章之前阅读 WikiBooks 中关于 XHTML(HTML 的扩展)的章节。

图 3:HTML 渲染示例

    Delta flight 22 flies from Atlanta to Paris leaving 5:40pm and arriving 8:10am

含义和呈现应相互独立,这是 SGML 比 HTML 更强大的重要原因。

SGML 是一种定义文档结构的标记语言,因为它可以转换为各种媒体,因此优于 HTML。

许多计算机系统以不兼容的格式包含数据。一个耗时的挑战是在此类系统之间交换数据。XML 是一种通用的数据存储格式,附带了许多工具和技术,这些工具和技术应该可以更轻松地在不兼容的系统之间交换特定的 XML“应用程序”。由于 XML 是开放且通用的,因此预计随着时间的推移,越来越多的组织和个人将加入 XML 的行列,包括开发人员和数据用户。这应该使 XML 成为某些类型数据交换的最终可行技术。

XML 不仅用于交换信息,还用于发布网页。XML 非常严格的语法允许使用更小、更快的 Web 浏览器,因此非常适合与 个人数字助理 (PDA) 和 手机 一起使用。另一方面,解释 HTML 文档的 Web 浏览器 充斥着编程代码以弥补 HTML 不那么严格的编码。

通常适合编码为 XML 的数据类型是字段长度未知且不可预测,以及字段内容主要为文本的数据类型。

XML 架构 允许以标准化结构交换信息。架构定义自定义标记标签,这些标签可以包含属性来描述这些标签所包含的内容。可以使用名为“解析器”的应用程序从 XML 文档中的标记数据中提取信息,并且可以使用 XML 样式表将数据格式化以用于网页。

XML 的强大之处在于自定义标记标签和定义的 XML 文档中的内容的组合。可扩展标记语言 (XML) 的目的是使信息具有自描述性。XML 基于 SGML,旨在支持电子商务。万维网联盟 (W3C) 于 1998 年初完成了 XML 的定义,将其描述为元语言——一种生成语言的语言。XML 由于具有一些关键优势,因此应逐步取代许多网站上的 HTML。XML 和 HTML 之间的主要区别在以下表格中进行了说明。

图 4:XML 与 HTML

XML HTML
信息内容 信息呈现
可扩展的标签集 固定的标签集
数据交换语言 数据呈现语言
更大的超文本链接 有限的超文本链接


XML 中的“eXtensible”表示可以通过定义其结构和标签来创建新的数据交换语言。例如,开放地理空间联盟 (OpenGIS Consortium) 设计了 地理标记语言 (GML),以促进地理信息的电子交换。类似地,开放旅游联盟 (Open Tourism Consortium) 正在制定 TourML,以支持旅游信息的交换。保险行业使用与基于 XML 的标准 ACORD 相对应的数据进行电子数据交换。另一个很好的 XML 应用示例是 NewsML™

本文将涵盖 XML 的所有功能,但在此处,让我们先介绍一些关键功能。


XML 的应用:

在我们开始学习 XML 文档的结构之前,让我们先指出 XML 可以用于什么。XML 的四大主要实现是

出版:可以使用 XSLT 样式表将数据库内容转换为 XML,然后转换为 HTML。利用此技术,可以生成复杂的网站以及 PDF 文件等印刷媒体。信息不再需要存储在不同的格式(例如 RTF、DOC、PDF、HTML)中。内容可以存储在中立的 XML 格式中,然后使用适当的布局样式表和转换生成宣传册、网站或数据列表(请参阅 第 17 章)。

可以在 http://www.emimusic.de 找到 XML 和 XSLT 功能的示例:该网站包含大约 20,000 个页面,其中包含艺术家简介、其产品以及歌曲标题。这些页面是使用 XSLT 脚本生成的。根据使用的脚本,还可以创建 PDF 格式的目录。请参见以下内容了解更多详细信息。

交互:XML 可用于交互式访问和更改数据。这种人机通信通常通过 Web 浏览器进行(请参阅 第 12 章)。

集成:使用 XML,可以集成同构和异构应用程序。在这种情况下,XML 用于描述数据、接口和协议。这种机器到机器的通信有助于集成 关系数据库(例如,通过导入和导出不同的格式)。

事务:XML 有助于处理在线市场、供应链管理和电子采购系统等应用程序中的事务。

XML 的关键特性

[编辑 | 编辑源代码]
  • 元素既有开始标签也有结束标签
  • 元素遵循严格的层次结构,文档仅包含一个根元素
  • 元素不能重叠其他元素
  • 元素名称必须符合 XML 命名约定
  • XML 区分大小写

XML 将以多种重要方式提高数据交换效率,包括

  • 一次编写,多次格式化:创建 XML 文件后,可以通过应用不同的 XML 样式表以多种方式呈现它。例如,信息可以显示在网页上或打印在书中。
  • 硬件和软件独立性:XML 文件是标准文本文件,这意味着任何应用程序都可以读取它们。
  • 一次编写,多次交换:一旦某个行业就数据交换的 XML 标准达成一致,数据就可以在使用该标准的所有成员之间轻松交换。
  • 更快、更精确的 Web 搜索:当计算机可以确定信息含义(通过读取标签)时,Web 搜索将得到增强。例如,如果您正在查找特定的书籍标题,对于计算机来说,搜索<booktitle>和</booktitle>标签对之间的文本,比搜索整个文件以查找标题要高效得多。此外,应消除虚假结果。
  • 数据验证XML 允许使用 XSD 或 DTD 进行数据验证,这是两个交互方之间的一项合同协议。

使用 XML 的 10 个理由

[编辑 | 编辑源代码]
  1. XML 是一种广泛接受的开放标准。
  2. XML 允许将内容与形式(外观)清晰地分离。
  3. XML 是面向文本的。
  4. XML 是可扩展的。
  5. XML 是自描述的。
  6. XML 是通用的;这意味着国际化不是问题。
  7. XML 独立于平台和编程语言。
  8. XML 为信息存储提供了一种健壮且持久的格式。
  9. XML 易于转换。
  10. XML 是一项面向未来的技术。

主要的 XML 元素

[编辑 | 编辑源代码]

主要的 XML 元素是

  • XML 文档:包含 XML 代码的 XML 文件。
  • XML 架构:描述文档结构及其标签的 XML 文件。
  • XML 样式表:包含 XML 文件格式化指令的 XML 文件。

在接下来的几章中,您将学习如何创建和使用 XML 的每个元素。

创建标记文件

[编辑 | 编辑源代码]

任何文本编辑器都可以用来创建标记文件(例如 HTML 文件)。在本书中,我们使用 NetBeans 中的文本编辑器,这是一个用于 Java 的开源 集成开发环境 (IDE),因为 NetBeans 支持 XML 文件的编辑和验证。在继续操作之前,您应该从 http://www.NetBeans.org/ 下载并安装 NetBeans。

本书中的示例使用 NetBeans 来说明正确的 XML 代码。有关 NetBeans 的替代方案,请参阅 Exchanger XML Lite

XML 实现案例研究

[编辑 | 编辑源代码]

联合包裹服务公司 (UPS) 中的 XML

[编辑 | 编辑源代码]

“UPS 是一家服务公司,一切都是关于规模和速度,”UPS eSolutions 部门的项目负责人 Geoff Chalmers 说。2003 年,UPS 的年收入为 335 亿美元,全球员工 357,000 人。在任何一天,美国国内生产总值 (GDP) 的 6% 都在 UPS 系统中。

UPS 大量使用技术。信息系统部门雇用了 4,000 人。该公司的网站有 166 个不同的国家/地区主页,并由 44 个应用程序支持。

UPS 每天大约交付 1300 万个包裹,客户可以通过 UPS 网站跟踪这些货物,该网站每天约有 2 亿次访问。ups.com 中的 19 个应用程序是 XML 在线工具(Web 服务)应用程序。

UPS 的在线工具是专门为与客户的应用程序集成而开发的。这使得客户的任务更简单、更容易和更快。UPS 通过“CampusShip”验证了简单性和速度的重要性,该产品是 UPS 在过去 10 年中最成功的产品之一。UPS CampusShip® 是一个基于 Web 的 UPS 托管运输系统。使用互联网连接,员工可以从任何台式电脑运送自己的包裹和信件,而管理层则可以全面控制运输活动。UPS CampusShip® 允许组织在运输商自主权和管理成本控制之间同时实现平衡。该产品之所以成功,是因为它不需要安装或软件维护,并且实施速度很快。XML 在线工具使 CampusShip® 的发展变得廉价且快速。

UPS 特别青睐 XML,因为它与平台和语言无关。这些特性使 XML 非常灵活和强大。它也是解耦和可扩展的。XML 使 UPS 能够瞄准更广泛的市场并减少客户互动,从而降低客户服务成本。XML 的另一个优点是它向后兼容。XML 的采用已大大降低了 UPS 的维护、实施和使用成本。

但是,这些优势并非没有代价。“XML 在许多方面效率低下,”Chalmers 说。不幸的是,XML 比其他技术消耗更多的 CPU 和带宽。然而,带宽和 CPU 非常便宜,而且每天都在变得更便宜,因此这是一个逐渐消失的问题。

然而,Chalmers 还认为 XML 在数据库中效果不佳。他说它过于冗长,它是一种交换媒介,而不是数据库媒介。早期曾有一些尝试将 XML 和数据库紧密集成。由于数据库与 XML 一样为数据提供结构和标识,因此 XML-数据库集成的增值作用仅限于应用层次结构。另一方面,如果数据要存储为 blob,则 XML 很有意义。他指出的另一个关于 XML 的问题是,业务规则不能在 XML 架构中表达。

最后,原始 XML 编程和调试可能具有挑战性。因此,UPS 的企业客户开始探索在 .NETBEA 中找到的代码生成器和嵌入式工具。但是,对于 UPS 需要用于 UPS 在线工具的高可用性、可扩展性和性能,必须由经验丰富的内部工程师进行手工编码。

EMI 音乐中的 XML

[编辑 | 编辑源代码]

它是如何使用的?

EMI德国音乐有限公司(EMI Music Germany GmbH & Co. KG),一家知名的德国唱片公司,在其网站上展示了其合作艺人的信息。访客可以浏览所有音频或视频作品。整个网站包含近20,000个页面,其中包含有关艺术家及其产品(CD、DVD、LP)的信息。所有内容都进行了适当的链接和系统化的分组。

毕竟,每个艺术家、专辑、样本、图片、描述或商品代码都需要提供数据。该网站每天更新,并在必要时由网页编辑进行更改。现在,这是一个相当复杂且庞大的数据量需要处理。

这就是XML发挥作用的地方。存储在数据库中的数据已转换为XML代码。现在,一个XSLT样式表将这些数据转换为HTML代码,任何网页浏览器(例如Internet Explorer或Firefox)都可以轻松读取。

有什么好处?

XML的优势在于,与其他格式相比,编程工作量大大降低。这是因为XML位于XSLT和HTML的交汇点。

网页编辑更新网站也没有问题。使用XML使得负责人员可以轻松处理大量数据。

更进一步…基于EMI Music迄今为止生成的XML脚本,该公司可以轻松生成PDF格式的目录或为当前的手机用户设计i-Mode页面。多亏了XML,这可以以很少的额外工作量完成。

XML简史

[编辑 | 编辑源代码]

在60年代后期,Charles Goldfarb、Raymond Lorie和Edward Mosher都在IBM工作,开始开发GML(通用标记语言),一种文本格式化语言。该语言成功地应用于内部文档程序。正如过去常用的那样,文档编辑是在批处理模式下执行的。GenCode是另一个用于定义各种软件生产商排版系统的通用格式化代码的过程,由GCA(图形通信协会)大约在同一时间开发。这两种技术,GML在语法上,GenCode在语义上,都为SGML(标准通用标记语言)的开发奠定了基础。标准化过程始于80年代初的美国标准化协会ANSI,并在1986年,SGML最终作为ISO标准ISO2879:1986通过。

SGML被认为是一种复杂而全面的语言(规范扩展了500页)。然而,HTML(超文本标记语言)的成功证明了SGML的概念是合适的。基于SGML的HTML由蒂姆·伯纳斯-李在90年代初于日内瓦开发,用于在互联网上说明和链接文档。与此同时,HTML发展成为所有电子文档最成功的格式。互联网最初被设计为人类与人类和人类与机器之间通信的空间,但最近机器与机器之间的通信变得越来越重要,这对使用的计算机语言提出了全新的挑战。

HTML是一种用于文档呈现的描述性语言。主要重点是呈现,这意味着HTML文档混合了呈现的数据及其格式化指令。人类可以通过呈现和上下文含义来识别显示的语义;机器或(更确切地说)软件无法做到这一点。

1996年,在Jos Bosak的指导下,一个团队加入了W3C联盟,旨在使SGML适合网络。结果是一个30页的规范,该规范于1998年2月获得了“W3C建议”的状态,并被命名为“可扩展标记语言(XML)”。

开发XML的最重要目标是

  • XML应与SGML兼容
  • XML应易于在互联网上使用
  • 可选特征的数量应降至最低
  • XML文档应易于生成且易于人类阅读
  • XML应得到各种应用程序的支持
  • 编写XML程序应该很容易
  • XML应及时付诸实践

在标记语言的术语中,用XML制定的描述称为XML文档,尽管内容与文本处理无关。

为什么这本书不是XML文档?

[编辑 | 编辑源代码]

如果您接受了本章提出的想法,那么这个问题就非常重要了。简单的答案是我们无法找到支持用XML创建开放式文本书籍的技术。我们需要几部分技术

  • 用于描述书籍的XML语言。DocBook就是这样一种语言,但书籍的结构非常复杂,DocBook(反映了这种复杂性)无法快速掌握
  • 一个可以使用DocBook等语言的Wiki
  • 一个将XML转换为HTML以显示书籍内容的XML样式表

有一个创建WikiMl(Wiki标记语言)的项目,这可能会在某个时候使用。

参考文献

[编辑 | 编辑源代码]

初始作者 Richard T. Watson,佐治亚大学

华夏公益教科书