XQJ API と eXist に問題があります。eXist db 内で自分のファイルをクエリしようとするたびに、
XQJTO013 - org.xml.sax.SAXParseException; lineNumber: 928; columnNumber: 354; The reference to entity "quotDer" must end with the ';' delimiter.
"
が使用されるたびに、ドキュメント全体で他のいくつかの区切り文字の例外が発生します(&
ところで、エラーは発生しません)。
ただし、ドキュメント内では「;」の後ろに設定されており"
、eXist GUI Query Dialog でファイルを照会すると機能します。baseX db内のXQJ APIを介してファイルをクエリしても問題ありません。
SAX パーサーを Saxon から Xerces に変更しようとしましたが、最終的に Oracle に変更すると、これらのそれぞれでエラーが発生します。
私の質問は、XQJ eXist 実装にバグがあるのか、それとも何か不足しているのかということです。助けていただければ幸いです。
クラスパスにexist-xqj-api-1.0.1のlibがあります。
簡単に再現するためのコードを次に示します。
public static void main(String[] args) {
XQDataSource xqs = new ExistXQDataSource();
try {
xqs.setProperty("serverName", "localhost");
xqs.setProperty("port", "8080");
XQConnection conn = xqs.getConnection("admin", "admin");
XQPreparedExpression xqpe = conn.prepareExpression("element test {'"bla"'}");
XQResultSequence rs = xqpe.executeQuery();
rs.writeSequence(System.out, new Properties()); // SAXParseException is raised here
conn.close();
} catch (XQException e) {
e.printStackTrace();
}
}