何为 XML?
- XML 和 HTML
- 良好格式和有效 XML 文档
- XML 的优点
- 逻辑三层 XML 应用程序
- XML 文档结构选项
- XML 文档内容选项
- XML 文档显示选项
- XML 文档结构服务
- 核心 XML API
- SiteOutliner 示例
- 相关信息
XML 和 HTML
可扩展的标记语言(XML)是用来定义文档标记语言的框架,人们预言它将成为在 Internet 上交换文档的主要方法。简单地说,文档标记语言是具下列一项或多项功能的元素(通常称为标记)集:
- 说明文档结构
- 说明文档内容
- 控制如何为用户显示文档
XML 和超文本标识语言(HTML)源于更为复杂的标准通用标记语言(SGML)。SGML 的复杂程度和高实现成本刺激了人们开发替代产品的兴趣。
HTML 是 Web 文档中使用最广泛的标记语言。随着 HTML 的普及越来越广,该语言的限制也变得越来越明显。这些限制包括允许用户使用的标记集相对较小。HTML 编程人员无法创建他们自己的 HTML 标记,因为商业可用的 Web 浏览器无法识别非 HTML 标准的标记。
HTML 的另一个限制是,控制显示的标记和说明文档内容的标记在同一个文件中。尽管 HTML 4 和级联样式表(CSS)允许 HTML 编程人员分离内容和显示,但 HTML 4 仍未改善说明文档内容的能力。
XML 克服了 HTML 和其它标记语言在提供非早期语言的能力上的限制。这里有一个包含相同数据的简单 XML 文档和 HTML 文档:
XML 文档 | HTML 文档 |
<?xml version="1.0" standalone="yes" ?> <state stateid="MN"> <city cityid="12"> <name>Johnson</name> <population>5000</population> </city> <city cityid="15"> <name>Pineville</name> <population>60000</population> </city> <city cityid="20"> <name>Lake Bell</name> <population>20</population> </city> </state> | <html> <h1 id="MN">State</h1> <h2 id="12">City</h2> <dl> <dt>Name</dt> <dd>Johnson</dd> <dt>Population</dt> <dd>5000</dd> </dl> <h2 id="15">City</h2> <dl> <dt>Name</dt> <dd>Pineville</dd> <dt>Population</dt> <dd>60000</dd> </dl> <h2 id="20">City</h2> <dl> <dt>Name</dt> <dd>Lake Bell</dd> <dt>Population</dt> <dd>20</dd> </dl> </html> |
在 XML 文档中,标记的命名能够表达它们所包含的数据的意义。文档的结构依照一种模式,且容易辨别。相比较,HTML 标记的命名则很少表达关于它们的内容和结构的意义,这种命名方式对于操纵文档和文档与应用程序之间的交换毫无帮助。
良好格式和有效 XML 文档
XML 文档的结构是按其标记集的语法规则进行控制的。有一些一般规则应用于所有 XML 文档以确定文档是否为良好格式。要进行语法分析的 XML 文档必须为“良好格式”。XML 1.0 建议书说明了使用“良好格式”文档的规则,其中一些如下:
- 文档的第 1 行必须是 XML 文档说明。
- 文档必须包含至少一个元素(或更流行的术语标记)。
- 每个开始标记必须和结束标记配套使用,例如 <tag></tag>。对于没有内容(无内容数据)的标记也允许使用格式 <tag/>。
- 文档中必须包含唯一的打开和关闭标记,文档中的所有其它标记都必须包含在这两个标记中。例如,在 state XML 文档中,<state> 和</state> 标记是唯一的打开和关闭标记。所有其它标记都包含在这两个标记中。
- 标记不能重叠。例如,在 state XML 文档中,<name><population></name></population> 无效。
XML 1.0 没有指定可以出现在 XML 文档中的标记集。作为替代,XML 确定了文档中允许使用的实际标记。这些标记形式上是基于 XML 的语法规则(如文档类型定义(DTD))定义的。DTD 可以在 XML 文档或文档的 <!DOCTYPE> 语句中引用的独立文件中。
“良好格式”且符合指定语法规则的 XML 文档才是有效的 XML 文档。执行验证处理的 XML 文档(验证者)必须报告验证错误,但不需要它们结束验证处理。
XML 的优点
XML :
- 通过启用一个可扩展的标记集,来提供更多有关文档内容的精确说明。
XML 实现了用定义它们自己的标记集来说明文档内容的功能。 这些说明的精确度是根据实现者而定的。 例如,一个实现者可能使用 <name> 标记而另一个实现者可能发现使用 <city_name> 标记更好一些。
- 启用验证与标准化语法相应的文档内容
XML 文档的结构和内容是由其语法定义的。文档类型定义(DTD)就是这种语法的一个示例。其它基于 XML 的模式正在形成中。该文档中所使用的 Grammar 是作为对这种模式的类属引用。
语法说明了有效标记、属性(标记的特性,如识别符)和其它 XML 文档的内容。无论是动态地生成 XML 文档,还是将 XML 文档创建成一个静态文件,编程人员都必须确保这一过程遵守语法的规则。
- 方便用户和应用程序交换文档
由于计算机网络很早就开始应用,所以至今仍需要用于在用户之间交换信息的设备。大型网络(如 Internet) 的使用和日渐增大的计算机通信量扩充了潜在用户人数的大小。XML 不是第 1 种公共文档格式,但它在可比的文档交换格式上具有很多优点。
XML 是源文档的最佳格式,因为它允许用最佳的输出格式(例如 HTML 、可移植文档格式(PDF)和 PostScript)来传递内容,并格式化应用程序(EDI,电子数据交换)。
- 支持高级搜索
因为知晓了文档内容的结构和含意(由于是根据它的语法规则定义的),所以很容易在 XML 文档中进行搜索。 XML 文档的一个要求是它们必须是“良好格式”。“良好格式”的表现为每个开始标记必须相对于一个结束标记。 这个要求使得对文档进行语法分析和操纵变得更为容易。
语法规则定义了 XML 文档的结构和内容,并可用于执行更高效的搜索。例如,用户代理程序可以支持搜索文档集合操作, 该集合是根据特殊语法规则编写的。根据标记名、标记属性、数据内容和文档中的位置进行搜索是其它 XML 文档所实现的更容易的搜索方法。
- 分离文档结构和显示内容
当必须用程序动态地生成 Web 文档内容时,分离文档内容和文档结构显得尤为重要。这种分离允许 Web 组成员(Web 页面编程人员、业务逻辑程序员和图形设计者)并行工作,并只是有限地影响其它人。
和 HTML 级联样式表相似,XSL 样式表控制 XML 文档的显示。XSL 样式表可以是内联的或一个独立文件。 将显示控制与内容放入不同的单独文件中,以不更改文档本身而启用 XML 实现为 XML 文档创建多个视图。
可以根据不同的用户以不同的格式显示内容。例如,可以将一个包括零件价格、说明和订单号码的汽车零件目录作为视图显示给购物者看。 显示给汽车修理工人看的目录视图可能包括对购物者可用的信息和用于显示安装零件的位置图解。而显示给制造商看的视图可能包括有关子部件和材料的信息。
- 改进用户响应、网络装入和服务器装入
XML 实现可以让 Web 服务器立刻将一个 XML 文档和与其关联的 XSL 样式表发送给客户机。每个样式表都可以提供一个不同的视图,该视图中包括部分或所有文档数据。用户选择应用样式表。从一个视图(样式表)到下一个视图的更改不会导致对服务器发送另一个请求。
- 支持 Unicode
XML 应用程序支持许多文档编码,包括 Unicode 双字节字符集(UTF-16)和压缩版本(UTF-8)。但是,XML 文档实际上可以包括所有语言和脚本。
- 支持文档间的高级链接
在 HTML 中,<A> 标记用于链接一个文档和另一个文档或同一文档中的某个目标。这些链接是单向的(即从源文档到目标)。<A> 标记包括目标链接的地址(URL)和此链接的文本标签。
相反,XML 支持两种高级链接类型:XLink 和 XPointer。目前 XLink 和 XPointer 标准还在发展中。使用 XLink 时,所有标记都可以成为一个链接。可选的 XLink 属性提供了其它有关链接自身和目标文档的信息。 其它属性则用于控制如何激活链接,以及激活链接后执行什么操作。单个链接(即扩展链接)甚至可以指向多个目标。
在 HTML 中,<A> 标记可以指向一个标题、段或文档中的列表。目标部分必须是一个已命名的热点或允许使用标识符(id)属性的标记。在 XML 中,XPointer 链接可以指向 XML 文档的任何部分,甚至那些没有标识符的部分。XPointers 链接到文档对象模型(DOM)树中的节点(即表示 XML 文档),并由对象引用(如 root().child(2, address))组成。XPointers 也可以指向文档中的范围。
逻辑三层 XML 应用程序
XML 应用程序可以展开为下图中所示的逻辑三层环境。
- 第 1 层
启用 XML 的用户代理程序对一个 XML 文档进行语法分析,应用样式表并显示文档内容。为了显示,某些用户代理程序将 XML 文档转换成 HTML 文档。Microsoft Internet Explorer 5 就是一个用户代理程序示例,它可显示 XML 文档而无需将它们转换成 HTML。尽管今天可用的启用 XML 用户代理程序的数量很少,但它们的数量将随着 XML 的日渐流行而不断壮大。
- 第 2 层
基于 XML 的小服务程序和应用程序提供了服务器端的 XML 处理。可以通过配置一个 Web 服务器(HTTP 服务器)来处理静态 XML 文档。但是,为了处理并动态地生成 XML 文档,必须扩展 Web 服务器的基本功能。Application Server 中的 XML 文档结构服务便实现了 Web 服务器的这种扩展,并启用第 2 层的小服务程序(数据库连接器和集成应用程序)来进行语法分析、生成、操纵和验证基于 XML 的动态内容。该内容被发送至第 1 层,并与其它小服务程序进行交换。当第 1 层设备不支持将 XSL 样式表应用于 XML 文档时,第 2 层也可用于有选择性地将样式表应用于 XML 文档。
- 第 3 层
动态生成的 XML 文档的内容可以从数据服务器中检索出来。根据不同的 XML 应用程序,抽取出来的数据可以作为一个 XML 文档,或以 JDBC 或其它一些格式返回至小服务程序中,该小服务程序将数据转换成一个 XML 文档。今后您应可购买到能用于访问数据库的具 XML 能力的 JavaBean。
XML 文档结构选项
XML 文档的结构是按其标记集的语法规则进行控制的。这些标记形式上是以基于 XML 的语法规则(如文档类型定义 (DTD))定义的。在该出版物出版时,DTD 是实现最广的语法规则。但是,该章节讨论的是使用 DTD 的选项。
XML 文档结构选项如下:
- 不使用 DTD
不使用 DTD 能够最为灵活地发展 XML 文档结构,但这种灵活性同时也限制了用户和应用程序间共享文档的能力。可以不用 DTD 对 XML 文档进行语法分析。如果语法分析器未找到内联 DTD 或对外部 DTD 的引用,则语法分析器继续在文档中将标记的实际结构作为隐含 DTD 来使用。处理器评估文档以确定它是否符合“良好格式”的规则。
- 使用公用 DTD
各种行业和集团正在开发各种不同文档的 DTD,例如化学数据和档案文档。许多这些 DTD 是在公用域中的,并可从 Internet 上获得。使用工业标准 DTD 能最大程度地在符合语法规则的应用程序间共享文档。如果标准 DTD 不能提供应用程序所需的模式,则此灵活性将受到限制。
- 开发 DTD
如果没有公用 DTD 符合企业的需求,且要求实施文档必须有效,则 XML 实现可以开发 DTD。开发 DTD 时要求对将要包含在内的文档信息(数据)进行细致地分析。
XML 文档内容选项
XML 文档内容是出现在文档标记中的实际数据。XML 实现必须用于将数据放入到文档标记中的来源和标记。这些选项包括:
- 静态内容
XML 文档内容是作为静态文件创建并存储在 Web 服务器上的。同 HTML 编程人员编写静态 HTML 文件类似,XML 文档编程人员将文档编写成包括有效 XML 标记。对不会更改或不经常更改的数据来说,这种方法十分有效。例如杂志文章、词汇表和文学作品。
- 动态生成的内容
XML 文档内容可由数据库和用户输入动态地生成。在此情况下,具有 XML 能力的小服务程序、JavaBean,甚至是 JavaServer 页面(JSP)中的内联 Java 代码都可用于生成 XML 文档内容。
- 静态和动态生成的混合内容
这种情况要涉及到静态和动态生成内容的审慎组合。
XML 文档显示选项
XML 文档可无需借助人工介入而在智能应用程序间进行交换。在这种情况下,XML 实现无需考虑文档显示。相反,如果用户需要显示格式化后的 XML 文档,则此实现必须确定显示的格式。 XSL 样式表用于控制如何显示 XML 文档。除了控制显示所有或部分文档外,样式表还控制显示的外观特征,如字体、颜色和对齐等。
XML 也支持级联样式表(CCS),CCS 是为使用 HTML 而开发的。如果 XSL 是为较复杂的文档格式而设计的,那么对于简单输出,CSS 是最理想的。XSL 支持高级特性,如在样式表中包括 JavaScript,控制标记内容的格式和隐藏内容等。
显示 XML 文档的选项如下:
- 在启用 XML 的浏览器中显示 XML 文档
启用 XML 的浏览器可以对文档进行语法分析,应用其 XSL 样式表,并将文档显示给用户。搜索用户并允许用户修改 XML 文档是启用 XML 的浏览器的其它功能。
- 将 XML 文档显示在浏览器上,该浏览器可将 XML 文档转换成 HTML 文档
在可以使用启用 XML 的浏览器之前,用户显示 XML 文档仍将涉及从 XML 文档到 HTML 文档的转换过程。这种转换可由具转换能力的浏览器进行处理。另一个选项是使用嵌入在 XML 文档中的 JavaScripts 或 ActiveX 控制。Microsoft Internet Explorer 版本 5 就是一个能将 XML 转换成 HTML 的转换器。
除了 HTML 文件外,XML 文档还可以转换成其它格式。这对于实现给定的商业上可用的浏览器和用户代理程序恰恰是最容易的。
- 将 HTML 文件发送到浏览器上
如果用户没有具有 XML 能力的浏览器,则必须在将 XML 文档发送到浏览器前,在服务器上转换 XML 文档。处理转换的服务器端 XML 应用程序也可以在将文档转换成 HTML 格式前,确定浏览器的转换能力,从而避免不必要的处理(如果浏览器具有 XML 能力)。包括 Application Server 版本 3 中的 Lotus XSL 处理程序支持这种服务器端的功能。
何为 XML 文档结构服务?
Application Server 版本 3.0 提供了 XML 文档结构服务,该服务由用于服务器端 XML 处理的文档语法分析器、文档验证器和文档生成器组成。文档结构服务支持:
- W3C 可扩展标记语言(XML)1.0
- XML 中 W3C 名称空间(1999年1月14日 建议书)
- W3C 级别 1 文档对象模型(DOM)规范 1.0(1998 年 10 月 1 日 建议书)
- XSL Transformations 版本 1.0
- XML Path Language 版本 1.0
- Microstar SAX 1.0
核心 API
核心 API 包含在 AS_install_root/lib 目录中的两个 JAR 文件中:
- XML4J.JAR 是一个提供对语法分析,验证和生成 XML 数据支持的 XML 处理程序。该处理程序实现了基本 XML,名称空间和 DOM W3C 建议和 SAX 缺陷标准。请参阅 Java 文档以获更多信息。
XML4J.JAR 按照开放的源模型,并作为 Java 的 XML 语法分析器独立地分布。如需获得 XML4J 和其它与 XML 相关资源的更新代码和源代码,请访问 IBM alphaWorks 的 Web 站点 http://alphaworks.ibm.com/。
- LOTUSXSL.JAR 中包含 Lotus XSL 处理器的 API,是一种在 Web 服务器上格式化和变换 XML 文档的机制。如需获得 LOTUSXSL 的更新代码和源代码,请访问 IBM alphaWorks 的 Web 站点 http://alphaworks.ibm.com/。
请参阅开发 XML 应用程序,以获得关于使用这些 API 和移植 Application Servers 版本 2 中开发的 XML 应用程序的更多信息。
安装 Application Server 时,XML4J.JAR 和 LOTUSXSL.JAR 会自动添加到 Application Server 类路径中。因此,安装产品后您就可开始处理静态 XML 文档。要处理动态生成的 XML 文档,请使用核心 API 来开发用于生成 XML 文档的小服务程序或 Web 应用程序(例如,应用程序可能从数据库中读取文档内容),然后在您的 Application Server 中展开这些组件。
文档类型定义(DTD)和其它语法规则的程序库
DTD 和语法描述了某个特定类型 XML 文档的结构和内容。尽管您可以不使用语法规则来实现 XML,但语法规则在帮助您确保在企业外部的用户间和应用程序间交换您的 XML 文档方面是很有帮助的。
XML 验证器使用与 XML 文档关联的语法规则来验证文档。验证器将比较语法规则和 XML 文档。如果文档不符合所指定的语法规则,则验证器必须报告出错情况。
一些行业和集团已开发并推出了各种他们使用的文档类型语法规则。为了更为方便地使用这些语法规则,您可使用 Application Server 安装的本地副本。使用这些语法规则作为示例开发您自己的语法规则,并创建和验证这些类型的 XML 文档。
程序库所在的路径为:
AS_install_root/web/xml/grammar/
访问 XML Industry Portal 于 http://www.xml.org/ 以获取 DTD 的更新信息。
程序库中的一些语法规则如下:
- 通道定义格式(CDF)
由 Microsoft 公司开发的 CDF 允许对基于 Web 的通道(一个 Web 站点或部分 Web 站点)使用订购。可以通过让 Web 站点自动发送用户更新通道的信息(使用 push 技术),或在订购者的请求中发送更新(使用 pull 技术),从而实现订购。无论在哪种情况下,订购者都必须能连接到通道站点上的某个 CDF 文件。CDF 文件是一个符合 CDF DTD 的 XML 文件。如需有关 CDF 的更多信息,请参阅 CDF 规范。
- 数学标记语言(MathML)
这是由 W3C 公司开发的,MathML 是适用于那些包含数学公式、记数法和其它数据的文档的语法规则。请访问 W3C Math 页面以获得更多有关 MathML 的信息及相关信息。
- 无线标记语言(WML)
实现在移动设备上访问基于 Web 的文档是一个特殊的挑战,例如用小型显示器显示数据。WML 是适用于创建在窄带设备上可高效传送和显示的文档(例如移动电话、电子记事本(PDA)和寻呼机)的语法规则。 请访问 Wireless Application Protocol Forum Web 站点上的规范页面。
SiteOutliner 示例
SiteOutiner 小服务程序用图示说明了如何使用 XML 文档结构服务,以生成并查看小服务程序所在的 Web 服务器上目标目录中的通道定义格式(CDF)文件。可使用 Lotus Notes 5 (Headlines 页面),Microsoft Internet Explorer 4 Channel Bar,PointCast,Netscape Navigator 4.06 或其它一些具有 CDF 能力的浏览器来查看并操纵 CDF 文件。
如需运行 SiteOutliner 示例:
- 请用浏览器打开以下页面:
http://your.server.name/WebSphereSamples/index.html
其中 your.server.name 为主机名。
- 单击相应的链接以在您的 Application Server 上运行 SiteOutliner。
相关信息
http://websphere.sina.com.cn/school/developerzone/advwas/doc/whatis/icxml4j.html