private static final String DRIVER = "net.xqj.basex.BaseXXQDataSource";
private static final String SELECT = "xs:long(collection('factbook')//country[name='Albania']/@population[1]/data(.))";
private static final String UPDATE = "for $c in collection('factbook')//country[name='Albania']"
+ "return("
+ " replace value of node $c/@population with xs:integer($c/@population + 1)"
+ ")";
@Test
public void testUpdate() {
try {
XQDataSource xqd = (XQDataSource) Class.forName(DRIVER)
.newInstance();
XQConnection xqc = xqd.getConnection("admin", "admin");
XQExpression xqe = xqc.createExpression();
XQSequence xqs = xqe.executeQuery(SELECT);
xqs.next();
long before = xqs.getLong();
System.out.println("Initial value: " + before);
System.out.println("Updating...");
xqs = xqe.executeQuery(UPDATE);
xqs = xqe.executeQuery(SELECT);
xqs.next();
long after = xqs.getLong();
System.out.println("Resulting value: " + after);
xqc.close();
Assert.assertEquals("Update should have succeeded or failed",
before + 1, after);
} catch (Exception e) {
e.printStackTrace();
}
}