Home >>XQuery Tutorial >XQuery Sequences
Sequences represent an organized collection of items where things may be of various styles or equivalent.
The XQuery series is generated using quotes or double quotes or numbers in parentheses with strings inside. XML elements may be used as series objects too.
There are two methods to construct series items which are iterated one by one.
let $items := ('orange', <apple/>, <fruit type="juicy"/>, <vehicle type="car">sentro</vehicle>, 1,2,3,'a','b',"abc")
let $count := count($items)
return
<result>
<count>{$count}</count>
<items>
{
for $item in $items
return <item>{$item}</item>
}
</items>
</result>
<result> <count>10</count> <items> <item>orange</item> <item> <apple/> </item> <item> <fruit type="juicy"/> </item> <item> <vehicle type="car">Sentro</vehicle> </item> <item>1</item> <item>2</item> <item>3</item> <item>a</item> <item>b</item> <item>abc</item> </items> </result>
Sequence items can be iterated one by one, using index or by meaning. The illustration above iterated the series items, one by one. Let's put into practice the other two ways.
XQuery Expression (Index)
let $items := (1,2,3,4,5,6,7,8)
let $count := count($items)
return
<result>
<count>{$count}</count>
<items>
{
for $item in $items[2]
return <item>{$item}</item>
}
</items>
</result>
<result> <count>8</count> <items> <item>2</item> </items> </result>
XQuery Expression (Value)
let $items := (1,2,3,4,5,6,7,8)
let $count := count($items)
return
<result>
<count>{$count}</count>
<items>
{
for $item in $items[. = (1,2,3,4,5)]
return <item>{$item}</item>
}
</items>
</result>
<result> <count>8</count> <items> <item>1</item> <item>2</item> <item>3</item> <item>4</item> <item>5</item> </items> </result>
To read the items.xqy, build a Java-based XQuery executor application, transfer it to the XQuery Expression Processor, and execute the expression. After that it shows the output.
XQueryTester.java
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import javax.xml.xquery.XQConnection;
import javax.xml.xquery.XQDataSource;
import javax.xml.xquery.XQException;
import javax.xml.xquery.XQPreparedExpression;
import javax.xml.xquery.XQResultSequence;
import com.saxonica.xqj.SaxonXQDataSource;
public class XQueryTester {
public static void main(String[] args){
try {
execute();
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (XQException e) {
e.printStackTrace();
}
}
private static void execute() throws FileNotFoundException, XQException{
InputStream inputStream = new FileInputStream(new File("items.xqy"));
XQDataSource ds = new SaxonXQDataSource();
XQConnection conn = ds.getConnection();
XQPreparedExpression exp = conn.prepareExpression(inputStream);
XQResultSequence result = exp.executeQuery();
while (result.next()) {
System.out.println(result.getItemAsString(null));
}
}
}
Put the three files above to the same location. We put them in a folder called XQuery7 on your desktop. Use terminal compile XQueryTester.java. You require JDK 1.5 or later to be enabled on your computer, and optimized classpaths.
Compile:
javac XQueryTester.java
Execute:
java XQueryTester