package org.basex.examples.xqj.cfoster; import java.net.*; import javax.xml.namespace.*; import javax.xml.xquery.*; /** * XQJ Example, derived from the XQJ Tutorial * <a href="http://www.cfoster.net/articles/xqj-tutorial"> * http://www.cfoster.net/articles/xqj-tutorial</a> from Charles Foster. * * Part 5: Stream massive amounts of XML to XQuery expressions. * * @author BaseX Team 2005-17, BSD License */ public final class Part5 extends Main { /** * Main method of the example class. * @param args (ignored) command-line arguments * @throws Exception exception */ public static void main(final String... args) throws Exception { init("5: Stream massive amounts of XML to XQuery expressions"); // Create the connection XQConnection conn = connect(); // Enable deferred binding info("Enable deferred binding"); // Create a NEW XQStaticContext Object (based on the current static context) XQStaticContext properties = conn.getStaticContext(); // Set its Binding Mode property to deferred (i.e. streaming). properties.setBindingMode(XQConstants.BINDING_MODE_DEFERRED); XQExpression xqe = conn.createExpression(properties); String surl = "http://www.w3.org/TR/2007/REC-xquery-20070123/xquery.xml"; URL url = new URL(surl); xqe.bindDocument(new QName("x"), url.openStream(), null, null); String xqueryString = "declare variable $x external; $x//p"; XQResultSequence rs = xqe.executeQuery(xqueryString); int c = 0; while(rs.next()) ++c; System.out.println(c + " results."); // Closing connection to the Database. close(conn); } }