ResourceSet result;
String query;
@SuppressWarnings("unused")
XMLResource resu;
try {
XPathQueryService service =
storeXMLStringAndGetQueryService(NUMBERS_XML, numbers);
//Non null context sequence
System.out.println("testLet 1: ========");
query = "/test/item[let $id := ./@id return $id]";
result = service.queryResource(NUMBERS_XML, query);
printResult(result);
assertEquals("XQuery: " + query, 4, result.getSize());
System.out.println("testLet 2: ========");
query = "/test/item[let $id := ./@id return not(/test/set[@id=$id])]";
result = service.queryResource(NUMBERS_XML, query);
printResult(result);
assertEquals("XQuery: " + query, 4, result.getSize());
System.out.println("testLet 3: ========");
query = "let $test := <test><a> a </a><a>a</a></test> " +
"return distinct-values($test/a/normalize-space(.))";
result = service.queryResource(NUMBERS_XML, query);
printResult(result);
assertEquals("XQuery: " + query, 1, result.getSize());
//Ordered value sequence
System.out.println("testLet 4: ========");
query = "let $unordset := (for $val in reverse(1 to 100) return " +
"<value>{$val}</value>)" +
"let $ordset := (for $newval in $unordset " +
"where $newval mod 2 eq 1 " +
"order by $newval " +
"return $newval/text()) " +
"return $ordset/ancestor::node()";
result = service.queryResource(NUMBERS_XML, query);
printResult(result);
assertEquals("XQuery: " + query, 50, result.getSize());
//WARNING : the return order CHANGES !!!!!!!!!!!!!!!!!!