查询 XML 数据库外的 XML 文档
2010-10-22 17:19:23 来源:WEB开发网这个查询的结果是:
<results>
<version>1.2.13</version>
</results>
下一步是查询一组文档而不是单个文档。为此,需要进行一些微小的更改,如 清单 6 所示。
清单 6. 一次查询多个 Maven POMs
declare namespace m = "http://maven.apache.org/POM/4.0.0";
let $docs := (doc("http://q4e.googlecode.com/svn/trunk/pom.xml"),
doc("http://gmaps4jsf.googlecode.com/svn/trunk/pom.xml"),
doc("http://java-twitter.googlecode.com/svn/trunk/pom.xml"),
doc("http://xmlzen.googlecode.com/svn/trunk/pom.xml"),
doc("http://krank.googlecode.com/svn/trunk/pom.xml"))
let $versions := distinct-values($docs//m:dependency[m:artifactId eq 'log4j']/m:version)
return <results>
{
for $version in $versions
return <version>{$version}</version>
}
</results>
这个查询的结果是:
<results>
<version>1.2.14</version>
<version>1.2.13</version>
</results>
您可能已经预料到一个额外的 for 循环了。这个示例加载一些文档并将它们放置到一个序列中以便查询。根据 XQuery 实现,这个构造可能在内存使用方面效率低下。性能和资源使用 将在本文末尾处讨论。
另一个问题是您是否想将这些文档引用硬编码到您的 XQuery 代码中。当然,您也可以将这些 URLs 放置到一个 XML 文件中并将其作为输入传递到查询:这只是一个个人喜好问题。
更多精彩
赞助商链接