如何使用saxon 9.2he在java中设置xquery上下文文档?

时间:2010-06-24 15:35:13

标签: java xml xquery saxon

如何执行一个简单的xquery,例如这个

for $elem in /root/element()
return 
    $elem
使用java而不使用fn:doc?

的xml文件上的

我一直在努力 XPDY0002:轴步子:: element(xml,xs:anyType)的上下文项未定义

- 纲要:我需要一个简单的解决方案来加载xml文件,加载xquery和进程

1 个答案:

答案 0 :(得分:0)

这是我发现的最简单的方法,但我希望使用XQStaticContext将contextDocument“绑定”到表达式。

XQDataSource ds = new SaxonXQDataSource();
XQConnection xqjc = ds.getConnection();
XQPreparedExpression xqje = xqjc.prepareExpression(new FileInputStream("xml\\foo.xquery"));

XMLInputFactory factory = XMLInputFactory.newInstance();
XMLStreamReader streamReader = factory.createXMLStreamReader(new FileReader("xml\\foo.xml"));

xqje.bindDocument(XQConstants.CONTEXT_ITEM,streamReader, xqjc.createDocumentType());

XQResultSequence xqjs  = xqje.executeQuery();

xqjs.writeSequence(System.out, null);