World Wide Web Consortium (W3C)对XML进行了如下描述:"Extensible Markup Language,缩写为 XML,描述了一类被称为XML文档的数据对象,并部分描述了处理它们的计算机程序的行为。XML 是SGML (Standard Generalized Markup Language [ISO 8879])的一个应用实例或一种受限形式。从结构上说,XML文档顺从SGML文档标准。"
Microsoft 对 XML 的定义是:
Standard Generalized Markup Language (SGML) 的简化子集,专门为 Web 应用程序而设计。XML 提供描述不同类型数据的标准格式 —— 例如,约会记录、购买定单、数据库记录 —— 从而可一致而正确地解码、管理和显示信息。XML 提供表示数据的文件格式、描述数据结构的计划、以及用语义信息扩展和注释 HTML 的机制。
总而言之,XML 是一种元标注语言,该语言提供一种描述结构数据的格式。这有助于更精确地声明内容,方便跨越多种平台的更有意义的搜索结果。此外,XML 将起用新一代的基于 Web 的数据查询和处理应用程序。
2 数据的结构表示
XML 提供可以广泛执行并易于配置的数据的结构表示。XML 是 万维网协会(W3C) 定义的用于优化 Web 上的传输的 SGML 的子集,XML 确保结构数据是一致的并独立于应用程序或供应商。
XML 提供可以编码各种情况(从简单至复杂)的内容、语义和架构的数据标准,可被用于标注以下对象:
普通文档。
诸如约会记录或采购定单之类的结构记录。
具有数据和方法的对象,如 Java 对象或 ActiveX 控件的持续型表单。
数据记录,如查询的结果集。
有关 Web 站点的元内容,如“频道定义格式 (CDF)”。
图形表示,如应用程序的用户界面。
标准架构实体和类型。
Web 上的信息与用户之间的所有链接。
一旦该数据在客户机桌面上,就可以在多个视图中处理、编辑和表示它,而无需返回到服务器。由于较低的计算量和带宽负载,所以目前的服务器更易于升级。此外,由于以 XML 格式交换数据,所以可以轻而易举地合并来自不同来源的数据。
XML 对 Internet 和大型企业的 Intranet 环境是颇有价值的,这是由于 XML 提供使用灵活、开放、基于标准格式的互用性,并具备访问遗留数据库和将数据传输到 Web 客户机的新方式。可以更快地生成应用程序,应用程序更易于维护,并且可以在结构数据上轻易提供多种视图。
XML 是一种基于文本的格式,在许多方面类似于 HTML,后者是专为存储和传输数据而设计的。XML 源是由 XML 元素组成的,每个 XML 元素包括一个开始标记(<title>),一个结束标记(</title>)以及两个标记之间的信息(称为内容)。就象 HTML 一样,XML 文档保存利用标记注释的文本。然而,与 HTML 不同的是,XML 允许无限的标记集,各标记集并不表示如何显示,而是表示其含义。例如,可以将 XML 元素标记为价格、订单编号或名称。由文档的作者确定使用何种数据以及哪种标记名称最合适。
标记是对了文档存储格式和逻辑结构的描述。在形式上,标记有以下各种可能项:注释、引用、字符数据段、起始标记、结束标记、空元素、文档类型声明(DTD)和序言。
很容易创建 XML 文档。如果您熟悉 HTML,那么您可以很快地学会采用 XML 格式进行编写。在该示例中,利用 XML 描述天气预报,可以用 XML 的扩展名保存该文件,如 Weather.xml。
<weather-report>
<date>2001 年 1 月 1 日</date>
<time>08:00</time>
<area>
<city>南京</city>
<state>江苏</state>
<region>东部</region>
<country>中国</country>
</area>
<measurements>
<skies>局部多云</skies>
<temperature>-3</temperature>
<wind>
<direction>西北</direction>
<windspeed>3</windspeed>
</wind>
<h-index>51</h-index>
<humidity>87</humidity>
<visibility>10</visibility>
<uv-index>1</uv-index>
</measurements>
</weather-report>
各标记表示各数据项的含义(是否为 <日期> 元素、<区域> 元素等等),而并不描述显示数据的次序和形式。此数据的所有接收者均可将该文档解码,以便用于自己的特定目的。例如,某人可以利用该信息制定当天的计划,而气象研究员可以将其作为南京的历史记录。
每个XML文档都有一个逻辑结构和物理结构。从物理角度来看,文档由实体单元组成,一个实体也可以在其他文档的实体中被引用。一个文档以一个根元素或文档实体来开始。从逻辑上讲,文档由声明(declaration)、元素(element)、注释(comment)、字符引用(character reference)和处理说明(processing instruction)组成。这些组成部分在文档的标记中必须明确规定。物理结构从另一角度来规范XML文档。文档的起始标记和结束标记对数据进行结构化组织,并确定了元素的范围和相互之间的关系。
在XML文档中,除标记之外就是字符数据。一般的字符用其本身来表示,但这不适用于XML中的保留字符。例如,字复符"&"和"< "只能作为标记定界符,或在注释、处理指令和CDATA字段中直接使用,其他情况下则需要用字符引用或特定的字符串来表示。这类字符是XML的预定义实体。常见的预定义实体见下表:
表1 XML预定义实体
字符 | 名称 | 实体引用 |
& | Ampersand | & |
> | Greater than | > |
< | Less than | < |
' | Apostrophe | ' |
" | Quotation mark | " |
例如,如果要表示"a< b",就必须写成:" a"、" '"和""",它们的名称分别为amp、lt、gt、apos和quot。因此,如果要在元素中引用这些实体,就必须写成":&"、"<"、">"、"'"和"""。
字符引用代表了ISO/IEC 10646字符集中的一个特定字符,它是一个十六进制代码。如果XML文档需要引用现有设备不能直接输入的字符(比如回车),则必须用字符引用来代表。
XML文件也可以对一个处理XML数据的应用提供处理信息,即处理说明,其格式为:"< ?目标应用名 instructions? >"。例如,< ?xml version="1.0" ? >就是一种处理指令。解析器通过它得知该文档应当遵循XML 1.0标准。XML文件可以对不同应用提供不同处理说明。
引用预定义实体或字符非常方便,而且计算机处理也十分容易,但去读一懂大堆像"&&"、"#xNNNN;"这样枯燥的数据确实是一件烦琐的事;在写文档时也得面临同样的问题,你必须化精力去寻找这些字符实体,然后将特殊字符替换为字符引用。以"< ![CDATA"开始并以"]] >"结束的字符数据段(CDATA Section)凌驾于解析器之上,其中的内容将不被解析。字符数据段中除了不能有结束标志"]] >"外,可以包括任意字符序列。例如,标记化的文本可以直接放在字符数据段中而不会被解释为结构化的标记。我们可以在字符数据段中包含一段HTML代码,也可以在字符数据段中添加编程语言代码。
字符数据段为XML的后续处理提供了编程接口。例如,我们可以在XML的样式语言XSL中采用ECMAScript脚本语言编写灵活丰富的应用。
XML文件总有一个"序言(prolog)"声明该文件为XML文档,例如(< ?xml version="1.0"? >)。该序言也可以包含附加信息,如:
< ?xml version="1.0" encoding="ISO-8859-1" standalone="yes"? >
Prolog的属性包括:版本、编码以及是否独立,后者指明该文档是否引用一个外部实体或外部数据类型。另外还可以直接包含本来在DTD中声明的实体定义和规范。
从上面的介绍,我们可以看出,XML有以下几个特点:
l XML文档是纯文本,因此可用从文本编辑器直到可视化开发环境的任何工具创建和编辑,程序可以更简单,而在需要存储大量数据的场合,一个数据库的XML前端就可以满足需要,因此XML提供了从小配置文件到公司级数据仓库的可扩展性。
l 基于内容的数据标识,因而可被不同程序用于不同用途。
l 可格式化。在显示很重要的时候,XSL可指定如何显示数据。由于数据和显示是分离的,甚至可以为同一数据指定不同的样式表用于不同输出,并很容易在将来使用新的格式。
l 具有很强的链接能力,可以定义双向链接、多目标链接、扩展联结和两个文档间的链接。
l 易于处理。XML
嵌入式Linux下基于MiniGUI的信息终端软件开发(zt):【上一篇】
XML学习进阶1-- 什么是XML:【下一篇】