查询 XML 数据库外的 XML 文档
2010-10-22 17:19:23 来源:WEB开发网当您使用 Saxon XQuery 处理程序代替一个 XML 数据库时,XQJ 命名有点令人迷惑。使用 Saxon,您并非实际建立一个连接。相反,您是在调用一个处理程序。清单 2 展示了使用 Saxon API 调用 XQuery 代码的另一种方法。
清单 2. 使用 Saxon 来运行 XQuery 代码
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException {
try {
Processor processor = new Processor(false);
XQueryCompiler compiler = processor.newXQueryCompiler();
Serializer serializer = new Serializer();
serializer.setOutputStream(response.getOutputStream());
InputStream inputStream =
this.getClass().getResourceAsStream("simple.xqy");
XQueryExecutable executable = compiler.compile(inputStream);
XQueryEvaluator evaluator = executable.load();
evaluator.setDestination(serializer);
evaluator.run();
} catch (SaxonApiException e) {
throw new ServletException(e);
}
}
Saxon API 使将多个处理程序连接到一个 XML 管道相对简单。这些处理程序可能是其他 XQuery 实现,但也可能是 XSLT 或 Java 代码。
对于本文演示的示例,这两个 APIs 同样有效。通常,如果您的程序非常依赖 Java 代码,相对于其他的 XQuery 实现,您可能更喜欢 XQJ 的语法和可移植性。相反,如果您的程序非常依赖 XQuery 或 XSLT 等 XML 技术,而且 Java 代码只是黏合剂,那么您可能更喜欢特定于 Saxon 的 API。
更多精彩
赞助商链接