---------- Forwarded message ---------- From: marco fregonese marcofregonese@gmail.com Date: 2013/1/21 Subject: Re: [basex-talk] dynamic web application, XQJ, BaseX To: Christian Grün christian.gruen@gmail.com
There is a class in my Java web application that has a method that, after connecting to my BaseX database, execute a query on it. This query (associated to the "xquerystring" variable), after importing a library module and pointing the processor to the file containing the library module("library_module.xq"), uses the function "lib:getparts()". Now, after executing this method, I noticed that: with BaseX 7.3 the Xquery processor (o whatever it is, I don't know) looks for "library_module.xq" in the filesystem $HOME/basex/bin, while with BaseX 7.5 the processor looks for "library_module.xq" in $HOME. My question basically is: what is that makes the processor (or whatever it is) look for the file "library_module.xq" in $HOME/basex/bin (with BaseX 7.3) and in $HOME (with BaseX 7.5)?
Hope I've been clear.
Thanks
PS: in BaseX GUI everything works fine: the XQuery processor looks for the file containing the library module in the same folder where the main module is. Example of main module:
import module namespace lib="http://www.example.com/my_library_module" at "library_module.xq";
lib:getparts()
The following is the code of the class I've talked about:
package xqu;
import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.PrintStream;
import javax.xml.namespace.QName; import javax.xml.xquery.XQConnection; import javax.xml.xquery.XQException; import javax.xml.xquery.XQExpression; import javax.xml.xquery.XQResultSequence;
import con.Connection;
public class Query {
public static void getAllParts(String a, String sc) throws XQException, FileNotFoundException { File file = new File(sc); FileOutputStream fos = new FileOutputStream(file); PrintStream ps = new PrintStream(fos); System.setOut(ps);
XQConnection con = Connection.getConnection(); XQExpression xqe = con.createExpression();
xqe.bindString(new QName("b"), a, null);
String xqueryString = // using backslash for escaping " "import module namespace lib=" http://www.example.com/library_module%5C"" + "at "library_module.xq";" + "declare variable $b external; " + "lib:getparts($b)";
XQResultSequence rs = xqe.executeQuery(xqueryString);
String b = rs.getSequenceAsString(null);
con.close();
System.out.println(b);
} }
2013/1/20 Christian Grün christian.gruen@gmail.com
Hi Marco,
sorry for the late feedback. Can you reproduce the issues in the BaseX GUI or on command line?
Best, Christian ___________________________________