用于数据的 XML: XPath 2.0 有哪些新特性?

http://tech.ddvip.com   2007年10月25日    社区交流

内容摘要:Kevin Williams 研究了 XPath 2.0 规范的最新状态,并且提供了一些 XPath 2.0 特性的特定示例,这些特性会使 XML 开发人员的工作更加轻松。示例是用 XML 和 XPath 的形式提供的。

  XSLT 1.0 和 XPath 1.0 最初是打算为 XML 文档提供简单的样式语言支持,主要是将这些文档转换成 HTML 以呈现在浏览器中。但是,自从 XSLT 和 XPath 可以使用之后,它们就被强行用于各种任务中,而这些任务 ― 从 XML 文档中复杂的数据操作(聚合、单值选择和关系旋转)到一种 XML 形式向另一种形式的 XSLT 转换 ― 并不是它们的设计初衷。在这些规范的版本 2.0 中,W3C 试图使 XSLT 和 XPath 更加灵活和健壮,以便于处理这些技术的新用法。

  在上一篇专栏文章中,我研究了 XSLT 的一些新特性。在本篇专栏文章中,我只研究 XPath2.0 的几个要点 ― 由于要点太多,因而无法在一篇专栏文章中全部研究。

  对于本专栏而言,特定前缀的映射含义如下:

  xf: 前缀被认为映射到 XPath 2.0 函数名称空间(http://www.w3.org/2002/08/xquery-functions)。

  xsl: 前缀映射到 XSLT 2.0 名称空间。

  xs: 前缀映射到 XML 模式名称空间。

  xf:distinct-values 函数

  在使用 XSLT 1.0 样式表时,开发人员面临的最重大的挑战之一就是编写与 SQL 中 SELECT DISTINCT 等同功能的 XML 代码 ― 即一个获取节点集并返回那些节点唯一值列表的表达式。在 XSLT 1.0 和 XPath 1.0 中这不是不可能实现的,但都是极其困难的。基本上,您都必须写一条 xsl:for-each 语句以特殊的排序顺序对每个节点求值,然后不断回头查看节点列表,以了解是否所有匹配特定值的任何其它节点都被处理了。有了 XSLT 2.0 ,以及引入了 xf:distinct-values 函数,这个问题就迎刃而解了。下面 清单 1中是一个 XML 文档的快速示例:

  清单 1. 带有作者姓名的 books

<books>
 <book author="Kevin Williams" title="Professional XML 2.0" />
 <book author="Lewis Carroll" title="Alice in Wonderland" />
 <book author="Lewis Carroll" title="Through the Looking-Glass" />
</books>

来源:ibm    作者:Kevin Williams    责编:豆豆技术应用

正在加载评论...