WEB开发网
开发学院WEB开发Xml 查询 XML 数据库外的 XML 文档 阅读

查询 XML 数据库外的 XML 文档

 2010-10-22 17:19:23 来源:WEB开发网   
核心提示: 查询结果(至少在本文撰写之时)是两个版本的文字,直接显示在彼此之后,查询 XML 数据库外的 XML 文档(6),如果您知道这个特定 POM 文件的内容,那么这个结果就是符合逻辑的,第二个 <version> 元素只在版本不同时相关, 您可以使用 distinct-values()

查询结果(至少在本文撰写之时)是两个版本的文字,直接显示在彼此之后。如果您知道这个特定 POM 文件的内容,那么这个结果就是符合逻辑的。两个依赖项声明引用 Log4J:一个用于代码,一个用于插件。

在单独的元素中写入这些版本有助于轻松区分它们。对于本示例,您可以使用一个简单的 for 构造(参见 清单 4)。

清单 4. 在单独的元素中创建版本

declare namespace m = "http://maven.apache.org/POM/4.0.0"; 
let $doc := doc("http://krank.googlecode.com/svn/trunk/pom.xml") 
let $versions := $doc//m:dependency[m:artifactId eq 'log4j']/m:version/text() 
return <results> 
{ 
  for $version in $versions 
  return <version>{$version}</version> 
} 
</results> 

这个查询的结果是:

<results> 
  <version>1.2.13</version> 
  <version>1.2.13</version> 
</results> 

严格来说,这个结果没有回答这个问题:它只是重复相同的版本号。问题是:您的项目使用的是哪个 Log4J 版本?在第一个 <version> 元素之后,已经清楚地指出使用的版本是 version 1.2.13。第二个 <version> 元素只在版本不同时相关。

您可以使用 distinct-values() 函数轻松修复这个差别,如 清单 5 所示。

清单 5. 移除 version 元素的副本

declare namespace m = "http://maven.apache.org/POM/4.0.0"; 
let $doc := doc("http://krank.googlecode.com/svn/trunk/pom.xml") 
let $versions := distinct-values($doc//m:dependency[m:artifactId eq 'log4j']/m:version) 
return <results> 
{ 
  for $version in $versions 
  return <version>{$version}</version> 
} 
</results> 

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:查询 XML 数据库

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接