package org.basex.examples.local; import org.basex.core.*; import org.basex.core.cmd.*; /** * This class demonstrates collection relevant queries. * It shows how to find and query specific documents. * * @author BaseX Team 2005-17, BSD License */ public final class QueryCollection { /** * Runs the example code. * @param args (ignored) command-line arguments * @throws BaseXException if a database command fails */ public static void main(final String... args) throws BaseXException { // Database context. Context context = new Context(); System.out.println("=== QueryCollection ==="); // Create a collection from all XML documents in the specified directory System.out.println("\n* Create a collection."); new CreateDB("Collection", "src/main/resources/").execute(context); // List all documents in the database System.out.println("\n* List all documents in the database:"); // The XQuery base-uri() function returns a file path System.out.println(new XQuery( "for $doc in collection('Collection')" + "return <doc path='{ base-uri($doc) }'/>" ).execute(context)); // Evaluate a query on a single document System.out.println("\n* Evaluate a query on a single document:"); // If the name of the database is omitted in the collection() function, // the currently opened database will be referenced System.out.println(new XQuery( "for $doc in collection()" + "let $file-path := base-uri($doc)" + "where ends-with($file-path, 'factbook.xml')" + "return concat($file-path, ' has ', count($doc//*), ' elements')" ).execute(context)); // Drop the database System.out.println("\n* Drop the database."); new DropDB("Collection").execute(context); // Close the database context context.close(); } }