查询 XML 数据库外的 XML 文档
2010-10-22 17:19:23 来源:WEB开发网但是,这里有一个问题:副本结果又回来了。这毫不奇怪,因为这个查询不再包含 distinct-values() 函数。可以使用该函数修复这个副本问题。那么,为何要移除它呢?
distinct-values() 函数返回文本值,而不是 XML 元素。不能针对一个文本值查询上级节点。要解决这个副本问题,这个查询将添加一些内容,如 清单 8 所示。
清单 8. 再次从版本移除副本
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 $artifactId := 'log4j'
return <results>
{
for $doc in $docs[//m:artifactId = $artifactId]
let $name := $doc/m:project/m:name/text()
return
<result>
<project-name>{$name}</project-name>
{
let $versions := distinct-values($doc//m:dependency[m:artifactId
eq $artifactId]/m:version)
for $version in $versions
return <version library="{$artifactId}">{$version}</version>
}
</result>
}
</results>
更多精彩
赞助商链接