|
用于数据的XML:对XQuery的前瞻广告 用于数据的XML:对XQuery的前瞻 --XQuery工作草案以及它如何应用到用于数据的XML中的回顾
本专栏文章介绍了 XML Query(也称为 XQuery)工作草案的当前状态。Kevin Williams 演示了如何使用
FLWR(“flower”)子句,介绍了 distinct-values 函数(该函数被使用于透视数据关系)并就 XQuery
将如何影响数据文档操作给出了他的评价。XQuery 和 XML 的样本代码演示了 for、let、where 和
return(FLWR)子句的用法。 那么什么是 XML Query? XQuery 构建在 XPath 规范之上。事实上,XQuery 的一些特性已公认为是非常基本的,以致于它们已被合并入 XPath 2.0 规范中,而且这个规范目前为 W3C 的 XML Query 和 XSL 工作组共同拥有。这是个好消息,因为它意味着样式表作者们将很快就能利用象序列、量化和更强有力的类型控制这样的特性。同样,已将条件表达式和迭代器添加到了 XPath 语言中,而在以前它们是 XSL 语言的一部分。这样就可以在样式表中编写更清晰的代码,并且为样式表创建者带来较少的麻烦。 FLWR 表达式 每个 FLWR 表达式都有一个或多个 for 子句、一个或多个 let 子句、一个可选的 where 子句以及一个 return 子句。 for 子句 清单 1. 单个 for 子句 for $exp1 in (<a/>, <b/>) 运行的程序将对清单 1 中的表达式进行二次求值,其中 $exp 变量分别被设置为 <a/> 和 <b/>。如果引入了另一个 for 表达式,那么这个程序将对笛卡尔积求值。看一下清单 2 中的示例,其中使用了多个 for 子句。 清单 2. 多个 for 子句 在清单 2 中,程序将对表达式进行四次求值,每次对一个元组求值: (<a/>, <c/>) let 子句 where 和 return 子句 在本示例中,查询返回了文档中已编写了多于三本书的所有作者的名字。它以一个示例文档开始,表达式对该示例文档进行操作,如清单 3 所示。 清单 3. 示例文档 authorList.xml
对 authorList.xml 文档进行操作的查询如清单 4 所示。 清单 4 中的 XQuery 将返回清单 5 中的内容。 清单 5. 对多产作者查询的结果
distinct-values
函数 清单 6. 样本客户数据,customerList.xml
如果您想将这个文档转换为一个列出所有产品以及每个产品的客户列表的文档,那么您手头可有活干了。完成这样的工作是可能的,但是编码却非常烦琐。而通过使用 XQuery,问题就变得非常简单,如清单 7 所示。 清单 7. 透视客户-产品关系的代码
清单 7 将产生清单 8 所示的输出。 清单 8. 转换代码的结果
强大、易于使用和易于理解:XQuery 使那种数据操作变得简单。 应该何时使用 XQuery? 无论何时您觉得 XQuery 对您来说可能是个可行的解决方案时,您都应当记住以下几条准则,以判断 XQuery 何时应该成为您解决方案的一个适当部分。 首先,XQuery 不是一粒魔弹。尽管依照句法来说,它在数据操作上比 XSL 要好用得多(它还支持许多 XSL 不直接支持的操作),但是其底层的引擎还是必须读取每篇文档、解析它,然后使用查询语言对它操作。因此,对于已建立索引的文档资源库(即所谓的 XML“数据库”),XQuery 是快速访问文档具体内容的好的解决方案,但是对于未建立索引的文档,它不是一个好的解决方案。 其次,XQuery 包含一些用来访问资源库中多个文档的机制。这个文档函数允许您以编程方式在同一个查询中访问多个文档。但是,相同的问题出现了:您仍需要装入并解析每个文档。因此,要达到最佳性能,您最好还是使用 XML 数据库或一些其它形式的索引模型。 最后,XQuery 最擅长处理“混合”文档 — 同时包含叙述流和量化数据的文档。例如,一个医疗记录文档可能包含手术期间外科医生操作的描述,以及手术期间使用的药物、血和其它物品的数量。该文档不适合存储在关系型数据库中,但是,XQuery 却非常擅长此道,它能直接从该 XML 文档中抽取出量化信息。但是,如果您的文档是纯数据,那么将该文档引入到关系型数据库中进行操作会更有意义。 结束语 W3C 是否会在夏季发布规范还有待观察;目前有许多未解决的重大问题,包括在 XPath 2.0 表达式中是否应该有保留字。几乎可以肯定的是,解决这些问题是要花一些时间的。但是,现在知道了对文档的需求可以使您在这种技术广泛可用时,最大程度地利用这种技术。
如果您希望与本文章的作者或其所在机构,进一步交流,请联系:畅享网 姜小姐 jill.jiang@amteam.org | 021-51096826-112 | 在线联系 |
节能与优化IT 企业CIO过冬良策当前金融危机的影响还在继续漫延,很多企业都在苦寻过冬的良策,在这种情况下,节能与优化技术与产品无疑成为CIO们关注的首要对象,本次选题就是针对节能与优化IT来为CIO们提供过冬的良…… 观08软件并购风潮 议09巨头何处生花2008,似乎注定是不平静的一年。有人说2008是并购年。业内人士表示,在全球软件行业,并购一直是大企业谋求做大做强的捷径之一,包括甲骨文、SAP,微软等全球软件巨头都为了扩大自己…… |
|
|