您的位置:首页 > Web前端 > HTML

XML教程一(转自IBM)-XML是什么?

2004-11-24 11:47 316 查看
简介
XML,或称为可扩展标记语言(Extensible Markup Language),是一种您可以用来创建自己的标记的标记语言。它由万维网协会(W3C)创建,用来克服 HTML(即超文本标记语言(Hypertext Markup Language),它是所有网页的基础)的局限。和 HTML 一样,XML 基于 SGML ― 标准通用标记语言(Standard Generalized Markup Language)。尽管 SGML 已在出版业使用了数十年,但其理解方面的复杂性使许多本打算使用它的人望而却步(SGML 也代表“听起来很棒,但或许以后会用(Sounds great, maybe later)”)。XML 是为 Web 设计的。
我们为什么需要 XML?
HTML 始终是最成功的标记语言。您几乎可以在任何设备(从掌上电脑到大型机)上查看最简单的 HTML 标记,并且您甚至可以用合适的工具将 HTML 标记转换成语音和其它格式。既然 HTML 成功了,为什么 W3C 还要创建 XML 呢?为了回答这个问题,请查看下面这个文档:
<p><b>Mrs. Mary McGoon</b>
<br>
1401 Main Street
<br>
Anytown, NC 34829</p>


HTML 的问题在于它是为人设计的。即使不用浏览器查看上面的 HTML 文档,您和我也会知道那是某个人的邮政地址。(具体而言,它是美国某个人的邮政地址;即使您一点也不熟悉美国邮政地址的格式,您可能也会猜出这表示什么。)作为人,您和我具有理解大多数文档的含义和意图的智慧。遗憾的是机器不能做到。尽管这个文档中的标记告诉浏览器如何显示该信息,但标记没有告诉浏览器信息是什么。您和我知道它是一个地址,但机器不知道。
显示 HTML
要显示 HTML,浏览器只需遵循 HTML 文档中的指令即可。段标记告诉浏览器在新的一行显示,并且通常在前面有一个空行,而两个换行标记则告诉浏览器前进到下一行,并且行之间没有空行。尽管浏览器出色地将文档格式化,但机器仍不知道这是地址。
 
处理 HTML
为了完成对样本 HTML 文档的讨论,请考虑从该地址抽取邮政编码的任务。下面是一个在 HTML 标记中查找邮政编码的算法(我有意使用脆弱的算法):如果您找到有两个
<br>
标记的段落,那么邮政编码就是第二个换行标记下面第一个逗号之后的第二个词。尽管该算法对于这个示例起作用,但对于全世界许多完全有效的地址,该算法根本不起作用。即使您可以编写算法来找出任何用 HTML 编写的地址的邮政编码,但许多具有两个换行标记的段落根本不包含地址。即便有可能编写算法来查看任意 HTML 段落并找出其中的任意邮政编码,也是极其困难的。
样本 XML 文档
现在让我们来看一个样本 XML 文档。使用 XML,您可以给文档中的标记赋予某种含意。更重要的是,机器也容易处理这样的信息。您只需通过找到
<postal-code>
</postal-code>
标记之间的内容(技术上称为
<postal-code>
元素),就可以从该文档抽取邮政编码。
<address>
<name>
<title>Mrs.</title>
<first-name>
Mary
</first-name>
<last-name>
McGoon
</last-name>
</name>
<street>
1401 Main Street
</street>
<city>Anytown</city>
<state>NC</state>
<postal-code>
34829
</postal-code>
</address>
标记、元素和属性
有三个通用术语用来描述 XML 文档的组成部分:标记元素属性。下面的样本文档说明了这些术语:


<address>
<name>
<title>Mrs.</title>
<first-name>
Mary
</first-name>
<last-name>
McGoon
</last-name>
</name>
<street>
1401 Main Street
</street>
<city state="NC">Anytown</city>
<postal-code>
34829
</postal-code>
</address>

[/code]
标记是左尖括号(
<
)和右尖括号([code]>
)之间的文本。有开始标记(例如
<name>
)和结束标记(例如
</name>
) 元素是开始标记、结束标记以及位于二者之间的所有内容。在上面的样本中,
<name>
元素包含三个子元素:
<title>
<first-name>
<last-name>
。 属性是一个元素的开始标记中的名称-值对。在该示例中,
state
<city>
元素的属性;而在前面的示例中,
<state>
是元素(请参阅样本 XML 文档)。[/code]

XML 正如何改变着 Web
既然您已经看到开发人员可以使用 XML 创建具有自我描述性数据的文档,让我们看看人们正如何利用这些文档来改进 Web。以下是几个关键领域:

XML 简化了数据交换。因为不同组织(乃至同一组织的不同部门)很少就单一工具集形成标准,所以要使应用程序相互交流需要进行大量工作。使用 XML,每个组织可以创建单一的实用程序,该实用程序将该组织的内部数据格式转换成 XML,反之亦然。最好有这样的机会:这些组织的软件供应商已经提供了在它们的数据库记录(或 LDAP 目录,或采购订单等等)与 XML 之间进行相互转换的工具。 XML 支持智能代码。因为可以使 XML 文档结构化以标识每个非常重要的信息片段(以及这些片段之间的关系),所以可以编写无需人工干预就能处理这些 XML 文档的代码。软件供应商花费了大量时间和金钱来构建 XML 开发工具这一事实意味着编写那样的代码是相对简单的过程。 XML 支持智能搜索。尽管搜索引擎这些年在稳步改进,但从搜索中得到错误的结果仍很常见。如果您正在搜索包含名叫“Chip”的人的 HTML 页面,您可能还会找到有关功克力片、计算机芯片、木片以及许多其它无用匹配的页面。搜索 XML 文档查找包含文本 
Chip
的 [code]<first-name>
元素会给您一个好得多的结果集。 [/code]
我还将在案例研究中讨论 XML 在现实世界中的使用。



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息