1

如何使用 javax.xml.xpath 对 XML 文件执行以下 XQuery?

for $com in //RepoStatistics/Commits/Commit
  return 
    for $file in $com//File
      return element tuple {
        element path {
          string($file/Path)
        },
        element action {
          string($file/@action)
        },
        element date {
          string($com/@date)
        },
        element developer {
          string($com/@author)
        },
        element locAdd{
          if (not(empty($file/LocAdd)))
            then string($file/LocAdd)
            else 0
        },
        element locRem{
          if (not(empty($file/LocRem)))
            then string($file/LocRem)
            else 0
        }
      }

如果这个问题很愚蠢,请原谅,但我是一个非常初学者。

4

2 回答 2

2

我认为 Oracle JRE 不支持 XQuery,因此您需要安装像 Saxon 9 这样的第三方库才能使用 Java 执行 XQuery。然后您就有了http://www.saxonica.com/documentation/using-xquery/api-query.xml中列出的选项。

于 2012-11-15T18:29:30.500 回答
2

XPath 是 XQuery 的一个子集。JDK 带有一个内置的 XPath 实现,可以通过 javax.xml.path API 使用(同样的 API 也可以用于其他 XPath 实现,例如 Saxon 和 Jaxen)。JDK 没有提供 XQuery 引擎,但第三方提供了一些引擎;W3C XQuery 页面上有一些产品列表,但最容易试用的是 Saxon。有一个用于从 Java 访问 XQuery 的“标准”API,称为 XQJ(包 javax.xml.xquery),Saxon 和大多数其他基于 Java 的 XQuery 实现都支持该 API。

(Saxon 还有另一个称为 s9api 的接口,其设计部分是为了绕过 XQJ 的限制,部分是为了提供一个单一的集成 API,以连贯的方式处理 XSLT、XPath、XQuery 和 XML Schema,允许您构建使用所有这些技术结合在一起。)

于 2012-11-16T08:47:45.360 回答