XML/引言

维基教科书,自由的教学读本
< XML

XML > 引言


学习目标[编辑]

学习本章内容后您应该能够

  • 定义SGML,HTML和XML的目的
  • 使用NetBeans创建简单的标记文档

概述[编辑]

数据管理中有四个核心问题:数据获取、数据存储、数据检索和数据交换。本书旨在详细介绍XML, 这一数据交换的管理技术。
数据交换一直是一个重要的研究课题,互联网的出现进一步加强了它的重要性。电子数据交换(EDI),作为大型企业传统的数据交换标准已经逐渐让位于XML,而后者极有可能成为所有组织的数据交换标准,不论该组织的规模如何皆是如此。
EDI支持标准业务文档的电子交换。贸易伙伴之间的普通业务文档(例如,发货单和装货单)交换采用一种结构化的格式。不同于不拘形式的e-mail消息,EDI支持重复性的、日常商业事务间的数据交换。EDI所定义的标准保证了日常电子事务的简明性和准确性。在美国和加拿大EDI的标准是X.12,而主要的国际标准则是EDIFACT。遵循同样EDI标准的企业之间就可以通过电子方式进行数据共享。
互联网是一种几乎任何公司都能够进入并且通信费用比传统EDI降低很多的全球化的网络。因此,互联网已经成为贸易伙伴间选择用来进行电子信息交换的途径。利用互联网的最简单方式就是直接传送EDI文件。另外一种方式是重新审视数据交换技术,毕竟EDI技术是在20世纪60年代发展起来的。这种再思考导致了XML的诞生。但在思考XML之前,我们有必要了解XML的源头——SGML。

SGML[编辑]

据估计,在一个典型的美国公司中,企业相关文档的管理费用占全年收入的15%,占人力成本的近25%,并且占办公室工作人员10%-60%的工作时间。 标准通用标记语言Standard Generalized Markup Language (SGML) 的设计目的正是为了降低管理成本、提高文档管理的效率。
所谓的标记语言 就是将文档的相关信息嵌入到文档的正文之中。在下面的例子中,标记标签显示该段文字包含了一个城市的细节信息。包括城市名称、所在州、人口等均为特定的标签所标识。这样作为“读者”,无论是人还是计算机,都可以准确无误地理解诸

如“Athens”、“Georgia”、“100,000”等内容的确切含义。我们还可以观察到,城市所在的纬度以及地理位置等内容也可以用合适的标签显式地标识出来。SGML的有用性在于它记录了文本及其含义。

表1 标记语言

<city><cityname>Athens</cityname> is located 60 miles northeast of Atlanta, <statename> Georgia</statename>. Home of the University of Georgia, it has a population of just over <population> 100,000</population>. Athens' location is <latitude>33º 57' 39" N</latitude>, <longitude> 83º 22' 42" W</longitude></city>
SGML是一种独立于提供商(vendor-independent)的国际标准(ISO 8879),它用于定义文档的结构。于1986年作为一种元语言而开发的SGML是HTML和XML的前身。由于SGML文档是标准化的文本文件,因此SGML可以进行跨系统的便捷应用。随着技术的快速发展,SGML

为数据交换管理提供了一个稳定的平台。而且,SGML文件能够任意转换并在多种媒介中发布。SGML的使用使得文本信息与它的显示方式和显示时间无关。当一个组织能够以一种单一的、独立的标准存储文档并且能够将其转换成任意格式在任何媒介中显示的话,它就获得了长期的效益。

SGML用于数据管理有三个主要的优势:
  • 可重用性: 信息可以在被创造之后多次使用。
  • 柔性: SGML文档可以以任意格式发布。同样的内容可以打印出、发布在网页上或通过一个文本进行传递。由于SGML是面向内容的,内容的表达方式可以推迟到输出格式确定后,再做出决定。
  • 可修正性: SGML支持修订和版本控制。通过内容的版本控制,公司可以容易地跟踪文档的修改。
下面一个SGML片断很好地展示了SGML的特征和优势。一段文字的前后标签描述了该文字的含义,因此也很好地支持了内容的表达和检索。例如, 包围“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代码可以以不同的形式表示出来。例如,可以表示成:

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

Airline Flight Origin Destination Dep Arr
Delta 22 Atlanta Paris 5:40pm 8:10am
如果该数据是以如表3所示的HTML格式存放,则读者就必须推断这些数据的含义。这对于人来说是非常简单的,但是对于机器便是不可能完成的任务。并且,这种文本显示格式是固定的,只能通过重写HTML代码进行更改。

表3 HTML示例

1
2
3
4
5

<html>
 <body>
Delta flight 22 flies from Atlanta to Paris leaving 5:40pm and arriving 8:10am
 </body>
</html>

含义和表达方式应该分离, 这就是SGML比HTML更加强大的一个重要原因。

小节总结:SGML是一种定义文档结构的标记语言,因为它可以变换为多种媒介格式,所以它优于HTML。

XML[编辑]

可扩展标记语言(XML)的目的就是实现信息的自描述。XML是基于SGML的,它被设计成一种支持电子商务应用的标记语言。国际互联网组织[http://www.w3.org/ World Wide Web Consortium (W3C,于1998年完成了XML的定义,它是一种元语言——用来生成语言的语

言。由于它相对于HTML的优势,XML势必在许多网站上逐步地取代HTML。XML和HTML的主要不同点如下:

XML HTML
信息的含义 信息的显示
可扩展的标签集 固定的标签集
数据交换语言 数据显示语言
更强的超链接功能 有限的超链接功能
XML中的可扩展性的含义是,通过定义结构和标签便可以创造一种新的数据交换语言。例如,OpenGIS组织 设计了地理标记语言(GML)来解决地理信息的电子交换问题。同样的,开放旅游组织也致力于定义支持旅游信息交互的TourML语言。另外一个很好的XML应用例证是NewsML™.
本文将介绍XML的所有特征,但是在此我们首先引入一些关键特征。

XML的关键特征[编辑]

  • 所有元素都有开始和结束标签
  • 所有元素都都遵从严格的层次结构,只有一个根元素。
  • 一个元素不能覆盖其它元素
  • 元素的名称必须遵循XML的命名规范
  • XML是区分大小写的
XML能够通过以下几种重要方式提高数据交换的效率
  • 一次输入、多次格式定义:一旦创建了一个XML文件,其能够通过应用XML样式表可以以不同的形式显示。例如,信息可以显示在网页上或者打印在书中出版。
  • 独立于软硬件: XML文件是标准化的文本文件,这就意味着它可以被任何操作系统所读取。
  • 一次输入,多次交换: 如果一个用于数据交换的XML标准在一个行业内达成一致意见,那么使用该标准的成员之间就可以方便的进行数据交换。
  • 更快捷、更准确的网页搜索: 一旦计算机能够确认信息的真正含义(通过读取标签),网络搜索的能力便会被极大地增强。例如,如果你正在查找一个书名,对于计算机来说搜索在标签对<booktitle> 和 </booktitle>之间的文本其效率将远远高于搜索整篇文

章。而且,虚假、无用的信息也可以通过搜索标签过滤掉。

主要的XML元素[编辑]

主要的XML元素包括

  • XML schema:模式是描述文档结构和标签定义的XML文档。
  • XML文档: 包含XML代码的文件。
  • XML样式表: 包含XML文档显示格式说明的XML文档。
在随后的几章中,您将学会如何创建和使用这些XML元素。

XML在UPS中的应用[编辑]

“UPS是一个只关注规模和速度的服务性公司”——Geoff Chalmers,UPS eSolution部门项目经理。2003年,UPS在世界范围内拥有357,000位员工,年收入335亿美金。UPS创造了美国国内生产总值的6%。


UPS广泛地使用各种技术。其信息系统部门拥有4,000名员工。公司的网站拥有166个不同国家的主页并且支持44种应用。


UPS每天大约运送1亿3千万件包裹,用户可以通过UPS的网站全程跟踪包裹的运送状态。单就这项服务,UPS的网站每天便会接受超过20亿次的点击访问。UPS网站提供的44种服务中有19种是基于XML在线工具(Web service)的应用。


UPS在线工具可以与客户应用程序进行集成。这使得客户方的任务更简单、更容易而且更快捷。通过“CampusShip”(UPS十年中最成功的产品之一)UPS证明了简便与速度的重要性。UPS的CampusShip是一个基于Web的,UPS提供主机服务的运输系统。通过使用网络连接,雇员可以通过任一远程桌面运送自己的包裹或信件。与此同时,管理层全面掌控所有的运输活动。UPS的CampusShip能同时支持组织内部托运人的自治和管理成本的控制。该产品的成功之处在于无需任何安装和软件维护需求,并且其能够以最快的速度进行部署。XML的在线工具也使得CampusShip得到更快的发展。


UPS对于XML情有独钟正是因为XML独立于语言和平台。这使得XML具有非常好的柔性和强大的功能。同时XML也是非耦合的和可扩展的。

XML使得UPS能够定位于更加广阔的市场和减少用户的交互以降低客户服务成本。XML另外一个突出的特征是向后兼容。CML的使用使得UPS显著地降低了维护、实施和使用成本。

但是这些好处的取得也是付出了相当代价的。Geoff Chalmers说“XML在很多方面是很低效的”。XML比其他技术占用了更多的处理器资源和网络带宽。但是另一方面,CPU和网络设备越来越便宜,这使得上述问题逐渐的弱化。


不管怎样,Geoff Chalmers还是认为XML不能很好支持数据库方面的应用。他说,XML太冗长,它只能作为一个数据交换的媒介而无法成为数据库的存储媒介。曾经有过一些研究者力求将XML与数据库紧密集成。但是数据库和XML一样都提供了数据结构和标识,因此XML与数

据库的集成能够带来的好处仅限于层次结构的使用。另一方面,如果数据以大块进行存储,那么XML的应用将会变得很有意义。 GeoffChalmers指出的另外一个问题是业务规则也无法在XML模式中进行表示。

最后,我们知道原始XML文档的编程和调试将是很困难的。因此UPS的企业及客户已经开始利用相应的代码生成器以及.NET和BEA中的内嵌工具解决此问题。但是对于UPS对UPS在线工具的高可靠性、可扩展性要求来说,开发工程师进行手工编码仍然是必不可少的。

小节总结: XML 是一种可转换的元语言,其可以通过遵循某些特定的规则而实现对于电子商务的支持。

创建一个标记文件[编辑]

所有的文本编辑工具都可以用来创建标记文件(例如,HTML文件)。本书中,我们将使用[http://www.NetBeans.org/
NetBeans],NetBeans是一个基于java的开放源码集成开发环境 Integrated Development Environment (IDE),您

可以从www.NetBeans.org. 下载并安装NetBeans。然后按照下面的步骤:

  1. 进入NetBeans
  2. 通过阅读Help-〉Contents下的材料熟悉IDE
  3. 在系统目录下,为您的练习建立一个本地目录
  4. 通过File > Mount Filesystem > Local Directory 将IDE与您刚刚建立的目录连接
  5. 创建新的XML文件:File > New > XML > XML
  6. 命名该文件(例如:exo1) 并且选择该文件的存放位置
  7. 选择Well-formed Document
  8. 您应该能够看到如下的XML框架文件
<?xml version="1.0" encoding="UTF-8"?>


<!--
Document  : ex01.xml
Created on : January 6, 2004, 9:57 AM
Author  : Rick
Description:
Purpose of the document follows.
-->

<root>

</root>


  1. 我们的目的是创建一个普通的标记文件而不是XML文件,所以用表1中的四行代码代替上面的XML框架文件。
  2. 通过点击绿色的三角(Alt+F9)来检测该标记文档是否符合格式要求,这里应该可以通过该项检测。
  3. 删除标签</city>并再次检验。这次您应该能够看到一个结束标签缺失的错误警告。

小节总结:因为NetBeans可以检测文档是否符合XML规则,因此它适合用来创建标记文档

练习1[编辑]

使用NetBeans创建一个描述一饭店的标记文件。文件中的标记应该能够标识饭店的名称、地址以及食品的名称和该饭店特色食品。

练习2[编辑]

假设我们想为一个小公司创建一个人事文档。

我们拥有何种数据? 分析下表的数据。我们的目标是将它转换为一个标记文档。 公司的名称“Exercises inc.”

firstname lastname street city country date_of_birth phone number department title
Tobias Boeswald Laxenburger str. 384 Vienna Austria 02/07/1974 0431/3445346 finance and accounting Accountant
Dimitri Felber Neuburger str. 19a Passau Germany 05/12/1967 00498510/523456 finance and accounting CFO
Stefan Meyer Breite Gasse 10 Nuremberg Germany 10/09/1972 00499110/45365 human resources HR Manager
所有的练习数据均出自杜撰,如有雷同纯属巧合。:)

为什么本书不是一个XML文档?[编辑]

如果您已经接受了本章提出的概念,这个问题自然而然地会在您的脑中产生。问题的答案是我们无法找到一种能够使用XML创建开放文本书籍的技术。我们需要如下的一些技术:
  • 一种描述书籍的XML语言。DocBook (http://www.docbook.org/) 是这样的一种语言,但是一本书的结构是相当复杂的,

DocBook由于其的复杂程度而无法快速掌握。

  • 能够使用DocBook的Wiki。
  • 一种能够将XML转换成HTML以便显示本书内容的XML样式表
我们已经创建了一个项目WikiMl (Wiki MarkupLanguage)。该项目可能会

在您学习中使用到。

引文[编辑]

原始作者 Richard T. Watson, University of Georgia