<?xml version="1.0" encoding="utf-8"?>
<news>
	<eligbleviewers id="eligbl1" newstosee="3">
		<newsitem id="2862224685" hide="0">
			<date>January  23, 2008</date>
			<title>An XQJ Introduction</title>
			<abstract>The XQuery API for Java (XQJ), currently in development under the Java Community Process as JSR 225, lets programmers use XQuery for XML processing and data integration applications, with full support for the Java Standard Edition (Java SE) and Java Enterprise Edition (Java EE) platforms. XQJ allows a Java program to connect to XML data sources, prepare and issue XQueries, and process the results as XML. This functionality is similar to that of JDBC, but the query language for XQJ is XQuery.</abstract>
			<aff_link>
			<![CDATA[
				<a target="_blank" href="http://www.shareasale.com/r.cfm?b=84375&u=275911&m=12653&urllink=&afftrack="><img src="http://www.shareasale.com/image/banner463.gif"  border="0"></a>
			]]>
			</aff_link>
			<description>&lt;p&gt;The XQuery language is designed specifically for XML programming and data 
	integration, and programmers are more productive using XQuery for these tasks. 
	However, many enterprise applications are built on the Java platform, and often 
	require functionality not found in XQuery; for instance, many XML programs need 
	to use the Web Services functionality of J2EE. On the Java platform, XML is 
	accessed and manipulated as a DOM tree, a SAX stream, or as a StAX stream.&lt;/p&gt;
&lt;p&gt;The XQuery API for Java, currently under development as JSR 225, lets 
	programmers have the best of both worlds, using XQuery for XML programming and 
	data integration, with full access to the J2SE and J2EE platforms. XQJ allows a 
	Java program to connect to XML data sources, prepare and issue XQueries, and 
	process the results as XML. This functionality is similar to that of JDBC® Java 
	API for SQL, but the query language for XQJ is XQuery.&lt;/p&gt;
&lt;p&gt;This article shows how XQJ is used to issue XQueries and obtain results. Next, 
	it shows how XQJ can be used to query DOM trees, perform joins between XML and 
	relational sources, obtain results using StAX, and issue prepared XQueries 
	(similar to JDBC's prepared statements). Finally, we show four complete, 
	working XQJ programs, including one that uses StAX to handle output. These 
	programs are based on the Early Draft Review of JSR-225, released in May 2004. 
	Code examples were tested with DataDirect XQuery™ 1.0, which implements XQuery 
	and XQJ.&lt;/p&gt;
&lt;h2&gt;Querying Relational Data to Create XML&lt;/h2&gt;
&lt;p&gt;Although XQuery is a native XML query language, it is often used to query XML 
	views of relational data to create XML results. Most Java programmers are 
	familiar with the JDBC API. This example shows the similarities between JDBC 
	and XQJ, using an XQJ connection to query a relational database and print out 
	the results to the standard output.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;SQL/XML Views of the Tables&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The examples in this article are based on financial stock data, with a set of 
	users and stock holdings for each user. DataDirect XQuery relational data using 
	the SQL/XML mappings defined by SQL:2003. Here's the SQL/XML description of the 
	USERS table (only a few rows are shown).&lt;/p&gt;
&lt;table bgcolor="#e6e6e6" ID="Table1"&gt;
	&lt;tbody&gt;
		&lt;tr&gt;
			&lt;td&gt;
				&lt;pre&gt;&lt;span class="xml-tag"&gt;&amp;lt;USERS&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="xml-tag"&gt;&amp;lt;row&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;USERID&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;Minollo&lt;span class="xml-tag"&gt;&amp;lt;/USERID&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;FIRSTNAME&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;Carlo&lt;span class="xml-tag"&gt;&amp;lt;/FIRSTNAME&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;LASTNAME&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;Innocenti&lt;span class="xml-tag"&gt;&amp;lt;/LASTNAME&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;OTHERNAME&lt;/span&gt;&lt;span class="xml-tag"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;MEMBERSINCE&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;2004-07-16T00:00:00&lt;span class="xml-tag"&gt;&amp;lt;/MEMBERSINCE&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="xml-tag"&gt;&amp;lt;/row&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="xml-tag"&gt;&amp;lt;row&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;USERID&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;Jonathan&lt;span class="xml-tag"&gt;&amp;lt;/USERID&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;FIRSTNAME&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;Jonathan&lt;span class="xml-tag"&gt;&amp;lt;/FIRSTNAME&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;LASTNAME&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;Robie&lt;span class="xml-tag"&gt;&amp;lt;/LASTNAME&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;OTHERNAME&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;William&lt;span class="xml-tag"&gt;&amp;lt;/OTHERNAME&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;MEMBERSINCE&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;2004-04-03T00:00:00&lt;span class="xml-tag"&gt;&amp;lt;/MEMBERSINCE&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="xml-tag"&gt;&amp;lt;/row&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="xml-tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="xml-tag"&gt;/USERS&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Here's the XML mapping of the HOLDINGS table, which contains the (fictional!) 
	stock holdings for each user. Again, only a few rows are shown.&lt;/p&gt;
&lt;table bgcolor="#e6e6e6" ID="Table2"&gt;
	&lt;tbody&gt;
		&lt;tr&gt;
			&lt;td&gt;
				&lt;pre&gt;&lt;span class="xml-tag"&gt;&amp;lt;HOLDINGS&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="xml-tag"&gt;&amp;lt;row&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;USERID&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;Jonathan&lt;span class="xml-tag"&gt;&amp;lt;/USERID&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;STOCKTICKER&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;AMZN&lt;span class="xml-tag"&gt;&amp;lt;/STOCKTICKER&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;SHARES&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;3000.0000&lt;span class="xml-tag"&gt;&amp;lt;/SHARES&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="xml-tag"&gt;&amp;lt;/row&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="xml-tag"&gt;&amp;lt;row&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;USERID&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;Minollo&lt;span class="xml-tag"&gt;&amp;lt;/USERID&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;STOCKTICKER&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;EBAY&lt;span class="xml-tag"&gt;&amp;lt;/STOCKTICKER&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;SHARES&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;4000.0000&lt;span class="xml-tag"&gt;&amp;lt;/SHARES&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="xml-tag"&gt;&amp;lt;/row&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="xml-tag"&gt;&amp;lt;row&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;USERID&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;Jonathan&lt;span class="xml-tag"&gt;&amp;lt;/USERID&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;STOCKTICKER&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;IBM&lt;span class="xml-tag"&gt;&amp;lt;/STOCKTICKER&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;SHARES&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;2500.0000&lt;span class="xml-tag"&gt;&amp;lt;/SHARES&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="xml-tag"&gt;&amp;lt;/row&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="xml-tag"&gt;&amp;lt;row&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;USERID&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;Minollo&lt;span class="xml-tag"&gt;&amp;lt;/USERID&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;STOCKTICKER&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;LU&lt;span class="xml-tag"&gt;&amp;lt;/STOCKTICKER&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;SHARES&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;40000.0000&lt;span class="xml-tag"&gt;&amp;lt;/SHARES&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="xml-tag"&gt;&amp;lt;/row&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="xml-comment"&gt;&amp;lt;&lt;/span&gt;&lt;span class="xml-comment"&gt;!-- !!! SNIP !!! --&amp;gt;&lt;/span&gt;
&lt;span class="xml-tag"&gt;&amp;lt;/HOLDINGS&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;b&gt;Querying SQL/XML Views&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;For relational data, XQuery often is used as a reporting language, combining 
	data to display on a web page or for use in a web message. Here's an XQuery 
	that returns results that show the stocks held by each user.&lt;/p&gt;
&lt;table bgcolor="#e6e6e6" ID="Table3"&gt;
	&lt;tbody&gt;
		&lt;tr&gt;
			&lt;td&gt;
				&lt;pre&gt;for $u in collection("USERS")/USERS/row
return
  &lt;span class="xml-tag"&gt;&amp;lt;user&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="xml-tag"&gt;&amp;lt;name&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
    {
        $u/FIRSTNAME,
        $u/LASTNAME
    }
   &lt;span class="xml-tag"&gt;&amp;lt;/name&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
   { 
    for $h in collection("HOLDINGS")/HOLDINGS/row
    where $h/USERID = $u/USERID
    return      
      &lt;span class="xml-tag"&gt;&amp;lt;stock&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
       {
        $h/STOCKTICKER,
        $h/SHARES
       }
      &lt;span class="xml-tag"&gt;&amp;lt;/stock&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
    }
&lt;span class="xml-tag"&gt;&amp;lt;/user&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;

&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;This query uses an XQuery function named collection() to address tables-the 
	collection() function accepts a string and returns a sequence of nodes. In this 
	sample query, we bind the variables $u and $h to the SQL/XML view of rows in 
	the USERS and HOLDINGS tables.&lt;/p&gt;</description>
		</newsitem>
		<newsitem id="1597174412" hide="0">
			<date>January  23, 2008</date>
			<title>Configuring XQJ Connections</title>
			<description>&lt;p&gt;The XQuery in the previous section uses the collection() function to access 
	relational data, but XQuery has no notion of a relational database or a 
	connection. To make this work, we use XQJ to specify the required database 
	connections and associate these names with the tables.&lt;/p&gt;
&lt;p&gt;A connection is created from a &amp;lt;code&amp;gt;XQDataSource&amp;lt;/code&amp;gt;. Each 
	vendor must provide some way of creating and parameterizing their own 
	XQDataSource objects - the following two lines do this for DataDirect XQuery™, 
	which uses a JDBC URL to describe connections.&lt;/p&gt;
&lt;table bgcolor="#e6e6e6" ID="Table1"&gt;
	&lt;tbody&gt;
		&lt;tr&gt;
			&lt;td&gt;
				&lt;pre&gt;DDXQDataSource dataSource = &lt;span class="java-keywords"&gt;new&lt;/span&gt; &lt;span class="java-layer-method"&gt;DDXQDataSource&lt;/span&gt;();    
dataSource.&lt;span class="java-layer-method"&gt;setJdbcUrl&lt;/span&gt;("jdbc:xquery:sqlserver://server1:1433;
databaseName=stocks"); 
&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The getConnection() method can now be invoked to return a connection to the data 
	source:&lt;/p&gt;
&lt;table bgcolor="#e6e6e6" ID="Table2"&gt;
	&lt;tbody&gt;
		&lt;tr&gt;
			&lt;td&gt;
				&lt;pre&gt;XQConnection connection = dataSource.&lt;span class="java-layer-method"&gt;getConnection&lt;/span&gt;();    
&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The next step is to create an XQExpression object, which can execute an XQuery 
	expression and return a sequence of results. An XQConnection can create an 
	XQExpression.&lt;/p&gt;
&lt;table bgcolor="#e6e6e6" ID="Table3"&gt;
	&lt;tbody&gt;
		&lt;tr&gt;
			&lt;td&gt;
				&lt;pre&gt;      
XQExpression xqExpression = connection.&lt;span class="java-layer-method"&gt;createExpression&lt;/span&gt;();
        
FileReader fileReader = &lt;span class="java-keywords"&gt;new&lt;/span&gt; &lt;span class="java-layer-method"&gt;FileReader&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"xquerySourceF&lt;/span&gt;&lt;span class="java-string-literal"&gt;ile.xq"&lt;/span&gt;);
XQSequence xqSequence =
        xqExpression.&lt;span class="java-layer-method"&gt;executeQuery&lt;/span&gt;(fileReader);  
&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;For this example, we place the query in a separate file named 
	xquerySourceFile.xq (another reasonable way would be to put the query in a 
	String object).&lt;/p&gt;
&lt;p&gt;Now that the query results are in a sequence, we can serialize this sequence 
	using the getSequenceAsString() method.&lt;/p&gt;
&lt;table bgcolor="#e6e6e6" ID="Table4"&gt;
	&lt;tbody&gt;
		&lt;tr&gt;
			&lt;td&gt;
				&lt;pre&gt;System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(xqSequence.&lt;span class="java-layer-method"&gt;getSequenceAsString&lt;/span&gt;());
&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Here's an excerpt from the result of this query.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;NB: This is formatted for readability- whitespace has been modified&lt;/i&gt;&lt;/p&gt;
&lt;table bgcolor="#e6e6e6" ID="Table5"&gt;
	&lt;tbody&gt;
		&lt;tr&gt;
			&lt;td&gt;
				&lt;pre&gt;&lt;span class="xml-tag"&gt;&amp;lt;user&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="xml-tag"&gt;&amp;lt;name&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;FIRSTNAME&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;Jonathan&lt;span class="xml-tag"&gt;&amp;lt;/FIRSTNAME&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;LASTNAME&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;Robie&lt;span class="xml-tag"&gt;&amp;lt;/LASTNAME&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="xml-tag"&gt;&amp;lt;/name&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="xml-tag"&gt;&amp;lt;stock&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;STOCKTICKER&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;AMZN&lt;span class="xml-tag"&gt;&amp;lt;/STOCKTICKER&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;SHARES&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;3000.0000&lt;span class="xml-tag"&gt;&amp;lt;/SHARES&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="xml-tag"&gt;&amp;lt;/stock&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="xml-tag"&gt;&amp;lt;stock&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;STOCKTICKER&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;EBAY&lt;span class="xml-tag"&gt;&amp;lt;/STOCKTICKER&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;SHARES&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;4000.0000&lt;span class="xml-tag"&gt;&amp;lt;/SHARES&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="xml-tag"&gt;&amp;lt;/stock&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="xml-tag"&gt;&amp;lt;stock&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;STOCKTICKER&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;IBM&lt;span class="xml-tag"&gt;&amp;lt;/STOCKTICKER&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;SHARES&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;2500.0000&lt;span class="xml-tag"&gt;&amp;lt;/SHARES&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="xml-tag"&gt;&amp;lt;/stock&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="xml-comment"&gt;&amp;lt;!-- !!! SNIP !!! --&amp;gt;&lt;/span&gt;
&lt;span class="xml-tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="xml-tag"&gt;/user&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;</description>
		</newsitem>
		<newsitem id="13479781032" hide="0">
			<date>January  23, 2008</date>
			<title>Querying Data from XML Files or Java XML API's</title>
			<description>&lt;p&gt;In the previous query, our data was in a relational database. Now let's query an XML file.&lt;/p&gt;

&lt;p&gt;Suppose we want to query the users from a file named 'holdings.xml', which looks like this.&lt;/p&gt;



&lt;table bgcolor="#e6e6e6" ID="Table1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;pre&gt;&lt;span class="xml-tag"&gt;&amp;lt;HOLDINGS&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="xml-tag"&gt;&amp;lt;row&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;USERID&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;Jonathan&lt;span class="xml-tag"&gt;&amp;lt;/USERID&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;STOCKTICKER&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;AMZN&lt;span class="xml-tag"&gt;&amp;lt;/STOCKTICKER&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;SHARES&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;3000.0000&lt;span class="xml-tag"&gt;&amp;lt;/SHARES&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="xml-tag"&gt;&amp;lt;/row&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="xml-tag"&gt;&amp;lt;row&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;USERID&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;Minollo&lt;span class="xml-tag"&gt;&amp;lt;/USERID&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;STOCKTICKER&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;EBAY&lt;span class="xml-tag"&gt;&amp;lt;/STOCKTICKER&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="xml-tag"&gt;&amp;lt;SHARES&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;4000.0000&lt;span class="xml-tag"&gt;&amp;lt;/SHARES&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="xml-tag"&gt;&amp;lt;/row&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;   
&lt;span class="xml-tag"&gt;&amp;lt;/HOLDINGS&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;Here's an XQuery expression that returns the holdings for Jonathan.&lt;/p&gt;

&lt;table bgcolor="#e6e6e6" ID="Table2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;pre&gt;doc("holdings.xml")//holding[USERID="Jonathan"]
&lt;/pre&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;Obviously, Jonathan is not the only person whose holdings might
interest us. If we write our XQuery with an external variable, the Java
program can specify the name of the user before it executes the query.
If we also use an external variable to represent the document, the Java
program can pass any document to the query at runtime:&lt;/p&gt;


&lt;table bgcolor="#e6e6e6" ID="Table3"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;pre&gt;declare variable $u as xs:string external; 
declare variable $d as document-node(element(*,xdt:untyped)) external; 
$d//holding[USERID=$u] &lt;/pre&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;


&lt;p&gt;Now let's write the Java code to create a DOM tree and bind it to the variable $d. We start by creating a DOM tree.&lt;/p&gt;


&lt;table bgcolor="#e4e4e4" ID="Table4"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;pre&gt;DocumentBuilderFactory factory =  
        DocumentBuilderFactory.&lt;span class="java-layer-method"&gt;newInstance&lt;/span&gt;();            
factory.&lt;span class="java-layer-method"&gt;setNamespaceAware&lt;/span&gt;(&lt;span class="java-keywords"&gt;true&lt;/span&gt;);            

FileReader fileReader = &lt;span class="java-keywords"&gt;new&lt;/span&gt; &lt;span class="java-layer-method"&gt;FileReader&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"holdings.xml"&lt;/span&gt;);

Document document = parser.&lt;span class="java-layer-method"&gt;parse&lt;/span&gt;(fileReader);
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;


	
&lt;p&gt;Once we create a DOM tree, we can use XQJ to bind it to a variable
and query it. First, let's create an expression object, and then bind
the document to the variable $d for this expression.&lt;/p&gt;

&lt;table bgcolor="#e4e4e4" ID="Table5"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;pre&gt;    XQConnection connection = dataSource.&lt;span class="java-layer-method"&gt;getConnection&lt;/span&gt;();
    XQExpression xqExpression = connection.&lt;span class="java-layer-method"&gt;createExpression&lt;/span&gt;();

    xqExpression.&lt;span class="java-layer-method"&gt;bindNode&lt;/span&gt;(&lt;span class="java-keywords"&gt;new&lt;/span&gt; &lt;span class="java-layer-method"&gt;QName&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"d"&lt;/span&gt;), document);
    xqExpression.&lt;span class="java-layer-method"&gt;b&lt;/span&gt;&lt;span class="java-layer-method"&gt;indVariable&lt;/span&gt;(&lt;span class="java-keywords"&gt;new&lt;/span&gt; &lt;span class="java-layer-method"&gt;QName&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"u"&lt;/span&gt;), &lt;span class="java-string-literal"&gt;"Jonathan"&lt;/span&gt;));
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;Now we can execute the expression and output the result.&lt;/p&gt;

&lt;table bgcolor="#e4e4e4" ID="Table6"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;pre&gt;FileReader fileReader = &lt;span class="java-keywords"&gt;new&lt;/span&gt; &lt;span class="java-layer-method"&gt;FileReader&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"xquerySourceFile.xq"&lt;/span&gt;);

XQSequence xqSequence = 
        xqExpression.&lt;span class="java-layer-method"&gt;executeQuery&lt;/span&gt;(fileReader);
System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(xqSequence.&lt;span class="java-layer-method"&gt;getSequenceAsString&lt;/span&gt;());
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;</description>
		</newsitem>
		<newsitem id="16785995828" hide="0">
			<date>January  23, 2008</date>
			<title>Joining XML and Relational Sources</title>
			<description>&lt;p&gt;We have already explored how XQJ enables XQuery to operate on
relational and XML file data stores. Now let's leverage that
functionality to query both at the same time. We will use an incoming
Web Service request that provides parameters for a query, and then
query a database to create the Web Service response.&lt;/p&gt;

&lt;p&gt;Consider the following Web Service request:&lt;/p&gt;



&lt;table bgcolor="#e6e6e6" ID="Table1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;pre&gt;&lt;span class="xml-tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="xml-tag"&gt;request&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="xml-tag"&gt;&amp;lt;performance&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="xml-tag"&gt;&amp;lt;UserId&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;Jonathan&lt;span class="xml-tag"&gt;&amp;lt;/UserId&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="xml-tag"&gt;&amp;lt;start&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;2003-01-01&lt;span class="xml-tag"&gt;&amp;lt;/start&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="xml-tag"&gt;&amp;lt;end&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;2003-01-01&lt;span class="xml-tag"&gt;&amp;lt;/end&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="xml-tag"&gt;&amp;lt;/performance&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="xml-tag"&gt;&amp;lt;/request&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;The above example contains only the SOAP message payload - we left
out the envelope to simplify the example, but the XQuery would be
changed only slightly if it were in an envelope. This request asks for
performance data on a user's portfolio within a specific date range.&lt;/p&gt;

&lt;p&gt;Let's compose an XQuery that uses the parameters from the request to
create a performance report, which will report the performance of each
stock held by each user during the given range.&lt;/p&gt;


&lt;table bgcolor="#e6e6e6" ID="Table2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;pre&gt;let $request := doc("request.xml")/request
for $user in $request/performance
return
 &lt;span class="xml-tag"&gt;&amp;lt;portfolio&lt;/span&gt; &lt;span class="xml-attribute"&gt;UserID&lt;/span&gt;&lt;span class="xml-attribute"&gt;=&lt;/span&gt;&lt;span class="xml-value"&gt;"{$user/UserId}"&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
  { $request }
  { 
    for $h in collection("HOLDINGS")/row
    where $h/USERID = $user
    return      
      &lt;span class="xml-tag"&gt;&amp;lt;stock&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
       {
        $h/STOCKTICKER,
        $h/SHARES       
       }
      &lt;span class="xml-tag"&gt;&amp;lt;/stock&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
  }
 &lt;span class="xml-tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="xml-tag"&gt;/portfolio&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;In keeping with our previous examples, we instantiate a XQDataSource instance and establish a connection to the data source.&lt;/p&gt;



&lt;table bgcolor="#e4e4e4" ID="Table3"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;pre&gt;XQConnection connection = dataSource.&lt;span class="java-layer-method"&gt;getConnection&lt;/span&gt;();
&lt;/pre&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
	
&lt;p&gt;Again, we create an  XQExpression object, which can execute the XQuery expression and return a sequence of results. &lt;/p&gt;

&lt;table bgcolor="#e4e4e4" ID="Table4"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;pre&gt;FileReader fileReader = &lt;span class="java-keywords"&gt;new&lt;/span&gt; &lt;span class="java-layer-method"&gt;FileReader&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"xquerySourceFile.xq"&lt;/span&gt;);          
XQExpression xqExpression = connection.&lt;span class="java-layer-method"&gt;createExpression&lt;/span&gt;();
XQSequence xqSequence = 
        xqExpression.&lt;span class="java-layer-method"&gt;executeQuery&lt;/span&gt;(fileReader);
&lt;/pre&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;


&lt;p&gt;With our query results in a sequence, we can again serialize this sequence using the getSequenceAsString() method.&lt;/p&gt;

&lt;table bgcolor="#e4e4e4" ID="Table5"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;pre&gt;System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(xqSequence.&lt;span class="java-layer-method"&gt;getSequenceAsString&lt;/span&gt;());
&lt;/pre&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;The result looks like this (whitespace has been modified for readability):&lt;/p&gt;



&lt;table bgcolor="#e4e4e4" ID="Table6"&gt;
&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;pre&gt;&lt;span class="xml-tag"&gt;&amp;lt;portfolio&lt;/span&gt; &lt;span class="xml-attribute"&gt;UserID&lt;/span&gt;&lt;span class="xml-attribute"&gt;=&lt;/span&gt;&lt;span class="xml-value"&gt;"Jonathan"&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="xml-tag"&gt;&amp;lt;request&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="xml-tag"&gt;&amp;lt;performance&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="xml-tag"&gt;&amp;lt;UserId&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;Jonathan&lt;span class="xml-tag"&gt;&amp;lt;/UserId&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="xml-tag"&gt;&amp;lt;start&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;2003-01-01&lt;span class="xml-tag"&gt;&amp;lt;/start&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="xml-tag"&gt;&amp;lt;end&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;2004-06-01&lt;span class="xml-tag"&gt;&amp;lt;/end&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="xml-tag"&gt;&amp;lt;/performance&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="xml-tag"&gt;&amp;lt;/request&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="xml-tag"&gt;&amp;lt;stock&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="xml-tag"&gt;&amp;lt;STOCKTICKER&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;PRGS&lt;span class="xml-tag"&gt;&amp;lt;/STOCKTICKER&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="xml-tag"&gt;&amp;lt;SHARES&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;23.0000&lt;span class="xml-tag"&gt;&amp;lt;/SHARES&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="xml-tag"&gt;&amp;lt;/stock&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="xml-tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="xml-tag"&gt;stock&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="xml-tag"&gt;&amp;lt;STOCKTICKER&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;AMZN&lt;span class="xml-tag"&gt;&amp;lt;/STOCKTICKER&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="xml-tag"&gt;&amp;lt;SHARES&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;3000.0000&lt;span class="xml-tag"&gt;&amp;lt;/SHARES&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="xml-tag"&gt;&amp;lt;/stock&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="xml-tag"&gt;&amp;lt;stock&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="xml-tag"&gt;&amp;lt;STOCKTICKER&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;EBAY&lt;span class="xml-tag"&gt;&amp;lt;/STOCKTICKER&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="xml-tag"&gt;&amp;lt;SHARES&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;4000.0000&lt;span class="xml-tag"&gt;&amp;lt;/SHARES&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="xml-tag"&gt;&amp;lt;/stock&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="xml-tag"&gt;&amp;lt;stock&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="xml-tag"&gt;&amp;lt;STOCKTICKER&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;IBM&lt;span class="xml-tag"&gt;&amp;lt;/STOCKTICKER&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="xml-tag"&gt;&amp;lt;SHARES&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;2500.0000&lt;span class="xml-tag"&gt;&amp;lt;/SHARES&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="xml-tag"&gt;&amp;lt;SHARES&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;2500.0000&lt;span class="xml-tag"&gt;&amp;lt;/SHARES&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="xml-tag"&gt;&amp;lt;/stock&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="xml-tag"&gt;&amp;lt;/portfolio&lt;/span&gt;&lt;span class="xml-tag"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;</description>
		</newsitem>
		<newsitem id="878627672" hide="0">
			<date>January  23, 2008</date>
			<title>Retrieving Results with Java XML API's</title>
			<description>&lt;p&gt;Often, applications need to retrieve XQuery results as DOM, SAX, or
StAX. The XQSequence interface has methods to support each of these
APIs.&lt;/p&gt;
 
&lt;p&gt;XQJ provides two ways by which the result of an XQuery can be
processed. We have already used the XQSequence level access, which
permits the result as a direct mapping of the XQuery sequence. Within a
XQSequence, zero or more XQItem objects represent each component in an
XQuery sequence. Note that instantiating each item in a XQItem object
is expensive because it requires the creation of multiple objects and
should be used judiciously.&lt;/p&gt;

&lt;p&gt;The XQItemAccessor interface allows an XQuery result sequence to be
divided and processed item by item. This is particularly useful when
processing large result sequences.&lt;/p&gt;

&lt;p&gt;Importantly, both the XQSequence and XQItemAccessor result accessors interfaces allow processing using the SAX and StAX APIs.&lt;/p&gt;

&lt;p&gt;For example, if you want to retrieve your results as a StAX stream
rather than a string, you simply replace the last line from the
previous section with this:&lt;/p&gt;





&lt;table bgcolor="#e4e4e4" ID="Table1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;pre&gt;XMLStreamReader reader = xqSequence.&lt;span class="java-layer-method"&gt;getSequenceAsStream&lt;/span&gt;();
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;You can use this like any other StAX stream reader. For example, the
following function reads one event at a time and prints the type of the
event together with the associated names. Only a small excerpt is shown
below-the complete program is here.&lt;/p&gt;

&lt;table bgcolor="#e4e4e4" ID="Table2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;pre&gt;&lt;span class="java-keywords"&gt;pr&lt;/span&gt;&lt;span class="java-keywords"&gt;ivate&lt;/span&gt; &lt;span class="java-keywords"&gt;static&lt;/span&gt; &lt;span class="java-keywords"&gt;void&lt;/span&gt; &lt;span class="java-layer-method"&gt;formatOutput&lt;/span&gt;(XMLStreamReader reader) &lt;span class="java-keywords"&gt;throws&lt;/span&gt;
XMLStreamException {

&lt;span class="java-keywords"&gt;for&lt;/span&gt; (&lt;span class="java-keywords"&gt;int&lt;/span&gt; event = reader.&lt;span class="java-layer-method"&gt;next&lt;/span&gt;();
    even != XMLStreamConstants.END_DOCUMENT;
    event = reader.&lt;span class="java-layer-method"&gt;next&lt;/span&gt;()) {
    
    &lt;span class="java-keywords"&gt;switch&lt;/span&gt; (event) {
        &lt;span class="java-keywords"&gt;case&lt;/span&gt; XMLStreamConstants.START_ELEMENT:
            System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"Start tag: "&lt;/span&gt;);
            &lt;span class="java-layer-method"&gt;printNames&lt;/span&gt;(reader);
            &lt;span class="java-keywords"&gt;break&lt;/span&gt;;
    }
}

&lt;span class="java-block-comment"&gt;/* !!! SNIP !!! */&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;</description>
		</newsitem>
		<newsitem id="3529601986" hide="0">
			<date>January  24, 2008</date>
			<title>Preparing XQuery statements</title>
			<description>&lt;p&gt;When an XQuery is executed, the query generally is parsed and
optimized before it is run. To avoid incurring this overhead each time
the XQuery is used, XQJ allows queries to be prepared once and executed
multiple times. Here's the code to create a prepared query-only the
last line differs from the code used to create a query in our first
example.&lt;/p&gt;



&lt;table bgcolor="#e6e6e6" ID="Table1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;pre&gt;dataSource = &lt;span class="java-keywords"&gt;new&lt;/span&gt; &lt;span class="java-layer-method"&gt;DDXQDataSource&lt;/span&gt;(new FileInputStream(configFile));    
connection = dataSource.&lt;span class="java-layer-method"&gt;getConnection&lt;/span&gt;();

FileReader fileReader = &lt;span class="java-keywords"&gt;new&lt;/span&gt; 
        &lt;span class="java-layer-method"&gt;FileReader&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"xquerySourceFile.xq"&lt;/span&gt;);
            
preparedExpression = connection.&lt;span class="java-layer-method"&gt;prepareExpression&lt;/span&gt;(
        fileReader);
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;



	
&lt;p&gt;Once the query is prepared, it is executed using the executeQuery() call.&lt;/p&gt;

&lt;table bgcolor="#e6e6e6" ID="Table2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;pre&gt;XQSequence xqSequence = preparedExpression.&lt;span class="java-layer-method"&gt;executeQuery&lt;/span&gt;();
System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(xqSequence.&lt;span class="java-layer-method"&gt;getSequenceAsString&lt;/span&gt;());
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

	   
&lt;p&gt;Of course, queries often take parameters, and these parameters may
need to be changed between executions. For example, we might want to
prepare a query that selects items that match a particular value and
change that value each time the query is executed. Suppose we want to
use a query that returns the stock holdings for a given user. The user
changes each time this XQuery is run.&lt;/p&gt;



&lt;table bgcolor="#e6e6e6" ID="Table3"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;pre&gt;declare variable $l as xs:string external;
       
collection("HOLDINGS")/HOLDINGS[USERID=$l]
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   
&lt;p&gt;The value of $l is set using XQJ. Let's run this twice, each time for different users.&lt;/p&gt;





&lt;table bgcolor="#e6e6e6" ID="Table4"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;pre&gt;preparedExpression.&lt;span class="java-layer-method"&gt;bindString&lt;/span&gt;(&lt;span class="java-keywords"&gt;new&lt;/span&gt; &lt;span class="java-layer-method"&gt;QName&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"l"&lt;/span&gt;), &lt;span class="java-string-literal"&gt;"Jonathan"&lt;/span&gt;);

xqSequence = preparedExpression.&lt;span class="java-layer-method"&gt;executeQuery&lt;/span&gt;();

System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"\n\nHoldings for Jonathan:\n\n"&lt;/span&gt;);

System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(xqSequence.&lt;span class="java-layer-method"&gt;getSequenceAsString&lt;/span&gt;());

preparedExpression.&lt;span class="java-layer-method"&gt;bindString&lt;/span&gt;(&lt;span class="java-keywords"&gt;new&lt;/span&gt; &lt;span class="java-layer-method"&gt;QName&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"l"&lt;/span&gt;), &lt;span class="java-string-literal"&gt;"Minollo"&lt;/span&gt;);

xqSequence = preparedExpression.&lt;span class="java-layer-method"&gt;executeQuery&lt;/span&gt;();

System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"\n\nHoldings for Minollo:\n\n"&lt;/span&gt;);

System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(xqSequence.&lt;span class="java-layer-method"&gt;getSequenceAsString&lt;/span&gt;());
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;</description>
		</newsitem>
		<newsitem id="24004234340" hide="0">
			<date>January  24, 2008</date>
			<title>XQJ Code Listing - Executing XQJ</title>
			<description>&lt;p&gt;This example shows how to execute an XQuery contained in a file. It
is called with two parameters: : the name of the file that specifies
the connections for the query and the name of the file that contains
the query An optional, third parameter specifies the name of the file
to which the output is written.&lt;/p&gt;






&lt;table bgcolor="#e4e4e4" ID="Table1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;pre&gt;&lt;span class="java-block-comment"&gt;
/*
 * DataDirect Technologies Corp 2005
*/
 &lt;/span&gt;
&lt;span class="java-keywords"&gt;package&lt;/span&gt; com.ddtek.xqj.examples;

&lt;span class="java-keywords"&gt;import&lt;/span&gt; java.io.FileInputStream;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; java.io.FileReader;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; java.io.FileWriter;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; java.util.Properties;

&lt;span class="java-keywords"&gt;import&lt;/span&gt; com.ddtek.xquery.XQConnection;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; com.ddtek.xquery.XQException;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; com.ddtek.xquery.XQExpression;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; com.ddtek.xquery.XQSequence;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; com.ddtek.xquery.xqj.mediator.DDXQDataSource;

&lt;span class="java-block-comment"&gt;
/**
 * The purpose of this class is to serve as an example of using the XQJ
 * API to execute an XQuery query contained in a file.
 
 * This application is intended to be run as command-line Java, 
 * the useage is:
 
 * java XQJExecute  
 
 * There is an optional third argument that allows you
 * to specify an output file for the resulting XML:
 * java XQJExecute 
 *  where the final argument will write
 * XQuery results to the file specified.
 * (c)Copyright 2004-2005 DataDirect Technologies Corp.
 * @version 1.2 8.23.2005
 */
 &lt;/span&gt;
&lt;span class="java-keywords"&gt;public class&lt;/span&gt; XQJExecute extends Object {
	 
	
    &lt;span class="java-block-comment"&gt;
	 /**
	 * Execute XQJExecute as a java console application.
	  See the 'args' param
	 * for startup arguments. 
	 * @param args - a list of three strings that represent the path to
	 * the config file, the path to an XQuery source file, and the path
	 * to a well-formed XML data file. The third argument is optional - if 
	 * left off, no file will be created and written, and the output will go
	 * to the current System.out.
	 */
	 &lt;/span&gt;
	 &lt;span class="java-keywords"&gt;public static void&lt;/span&gt; &lt;span class="java-layer-method"&gt;main&lt;/span&gt;(String[] args) &lt;span class="java-keywords"&gt;throws&lt;/span&gt; Exception {
	   	DDXQDataSource dataSource = &lt;span class="java-keywords"&gt;null&lt;/span&gt;;
		XQConnection connection = &lt;span class="java-keywords"&gt;null&lt;/span&gt;;
		XQExpression xqExpression = &lt;span class="java-keywords"&gt;null&lt;/span&gt;;
		XQSequence xqSequence = &lt;span class="java-keywords"&gt;null&lt;/span&gt;;
		String configFile = &lt;span class="java-string-literal"&gt;""&lt;/span&gt;;
		String xquerySourceFile = &lt;span class="java-string-literal"&gt;""&lt;/span&gt;;
				
		&lt;span class="java-keywords"&gt;if&lt;/span&gt; (args.length &amp;lt; &lt;span class="java-numeric-literals"&gt;2&lt;/span&gt; || args.length &amp;gt; &lt;span class="java-numeric-literals"&gt;3&lt;/span&gt;) {
			String usage = 
		&lt;span class="java-string-literal"&gt;
		"Usage:\n\n java XQJExecute [configfile] [queryfile]\n\n"
		"           + [configfile]    Source Configuration File\n"
		"           + [queryfile]     XQuery file" + "\n\n" +
		"or:\n" +
		"java XQJExecute [configfile] [queryfile]\n\n" +
		"            [configfile]    Source Configuration File\n"
		"           + [queryfile]     XQuery file" +
		"            [resultoutputfile]     result output file";
		&lt;/span&gt;
						
			System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(usage);
			System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;("Exiting XQJExecute...");
			System.&lt;span class="java-layer-method"&gt;exit&lt;/span&gt;(&lt;span class="java-numeric-literals"&gt;1&lt;/span&gt;);
	}
	
		configFile = args[&lt;span class="java-numeric-literals"&gt;0&lt;/span&gt;];
		xquerySourceFile = args[&lt;span class="java-numeric-literals"&gt;1&lt;/span&gt;];
				
		&lt;span class="java-keywords"&gt;try&lt;/span&gt; {
			&lt;span class="java-block-comment"&gt;
			//this property will be used with the results to
			//help the output be nice to read
			&lt;/span&gt;
			Properties indentationProperty = new Properties();
			indentationProperty.setProperty("indent", "yes");
							
			&lt;span class="java-block-comment"&gt;
			//get a connection, prepare the query
			&lt;/span&gt;
	dataSource = &lt;span class="java-keywords"&gt;new&lt;/span&gt; &lt;span class="java-layer-method"&gt;DDXQDataSource&lt;/span&gt;(new FileInputStream(configFile));
			&lt;span class="java-block-comment"&gt;
			//get a connection as configured by the XQDataSource
			&lt;/span&gt;
			connection = dataSource.&lt;span class="java-layer-method"&gt;getConnection&lt;/span&gt;();
					
			&lt;span class="java-block-comment"&gt;
			//make an XQuery expression based on the new
			//connection
			&lt;/span&gt;
			xqExpression = connection.&lt;span class="java-layer-method"&gt;createExpression&lt;/span&gt;();
						
			&lt;span class="java-block-comment"&gt;
			/* Get an XQuery sequence as a result of
			* the expression run of the query in the specified
			* file.
			*/
			&lt;/span&gt;
			xqSequence = xqExpression.&lt;span class="java-layer-method"&gt;executeQuery&lt;/span&gt;(
			&lt;span class="java-keywords"&gt;new&lt;/span&gt; &lt;span class="java-layer-method"&gt;FileReader&lt;/span&gt;(xquerySourceFile));
						
			&lt;span class="java-block-comment"&gt;
			/* If a third arg is supplied, attempt to write the
			* sequence as a string to a file by the given name.
			* Otherwise, print the sequence to the System's out
			* stream.
			*/
			&lt;/span&gt;
			&lt;span class="java-keywords"&gt;if&lt;/span&gt; (args.length == &lt;span class="java-numeric-literals"&gt;3&lt;/span&gt;) {
			FileWriter fileWriter = &lt;span class="java-keywords"&gt;new&lt;/span&gt; &lt;span class="java-layer-method"&gt;FileWriter&lt;/span&gt;(args[&lt;span class="java-numeric-literals"&gt;2&lt;/span&gt;]);
		xqSequence.&lt;span class="java-layer-method"&gt;writeSequence&lt;/span&gt;(fileWriter, indentationProperty);
			fileWriter.&lt;span class="java-layer-method"&gt;close&lt;/span&gt;();
			} &lt;span class="java-keywords"&gt;else&lt;/span&gt; {	
				&lt;span class="java-block-comment"&gt;
				//now use the indentation properties to get
				//the sequence to look nice when we ask the 
				//sequence for a String representation drop 
				//the output onto the System.out so we can
				//see what came back
				&lt;/span&gt;
				System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(
			xqSequence.&lt;span class="java-layer-method"&gt;getSequenceAsString&lt;/span&gt;(indentationProperty));
			}
						
			&lt;span class="java-keywords"&gt;if&lt;/span&gt; (connection != &lt;span class="java-keywords"&gt;null&lt;/span&gt;){
				&lt;span class="java-keywords"&gt;try&lt;/span&gt; {
					&lt;span class="java-block-comment"&gt;
					//close/free up resources
					&lt;/span&gt;
					connection.&lt;span class="java-layer-method"&gt;close&lt;/span&gt;();
				} &lt;span class="java-keywords"&gt;catch&lt;/span&gt; (XQException e) {
					e.&lt;span class="java-layer-method"&gt;printStackTrace&lt;/span&gt;();
				}
			}
						
		} &lt;span class="java-keywords"&gt;catch&lt;/span&gt; (Exception ex) {
			ex.&lt;span class="java-layer-method"&gt;printStackTrace&lt;/span&gt;();
		}
	}
}

&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;</description>
		</newsitem>
		<newsitem id="32612322179" hide="0">
			<date>January  24, 2008</date>
			<title>XQJ Code Listing - Execute XQuery and Output result w/ StAX</title>
			<description>&lt;p&gt;This example shows how to execute an XQuery and output the result
using StAX. It is called with two parameters: the name of the file that
specifies the connections for the query and the name of the file that
contains the query.&lt;/p&gt;



&lt;table bgcolor="#e4e4e4" ID="Table1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;pre&gt;&lt;span class="java-keywords"&gt;package&lt;/span&gt; com.ddtek.xqj.examples;

&lt;span class="java-keywords"&gt;import&lt;/span&gt; java.io.*;

&lt;span class="java-keywords"&gt;import&lt;/span&gt; javax.xml.stream.XMLStreamConstants;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; javax.xml.stream.XMLStreamException;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; javax.xml.stream.XMLStreamReader;

&lt;span class="java-block-comment"&gt;/* Import XQJ classes &lt;/span&gt;
&lt;span class="java-block-comment"&gt; */&lt;/span&gt;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; com.ddtek.xquery.XQConnection;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; com.ddtek.xquery.XQException;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; com.ddtek.xquery.XQExpression;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; com.ddtek.xquery.XQItem;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; com.ddtek.xquery.XQSequence;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; com.ddtek.xquery.xqj.mediator.DDXQDataSource;

&lt;span class="java-block-comment"&gt;/**&lt;/span&gt;
&lt;span class="java-block-comment"&gt; * The purpose of this class is to serve as an example of using the XQJ API to&lt;/span&gt;
&lt;span class="java-block-comment"&gt; * query a stream from StAX (Streaming API for XML).&lt;/span&gt;
&lt;span class="java-block-comment"&gt; *&lt;/span&gt;
&lt;span class="java-block-comment"&gt; * This application is intended to be run as command-line Java, &lt;/span&gt;
&lt;span class="java-block-comment"&gt; * the usage is:&lt;/span&gt;
&lt;span class="java-block-comment"&gt; *&lt;/span&gt;
&lt;span class="java-block-comment"&gt; * java StAXExample  &lt;/span&gt;
&lt;span class="java-block-comment"&gt; */&lt;/span&gt;
&lt;span class="java-keywords"&gt;public&lt;/span&gt; &lt;span class="java-keywords"&gt;class&lt;/span&gt; StAXExample {
    
    &lt;span class="java-keywords"&gt;public&lt;/span&gt; &lt;span class="java-keywords"&gt;static&lt;/span&gt; &lt;span class="java-keywords"&gt;void&lt;/span&gt; &lt;span class="java-layer-method"&gt;main&lt;/span&gt;(String[] args) {
        
        DDXQDataSource dataSource = &lt;span class="java-keywords"&gt;null&lt;/span&gt;;
        XQConnection connection = &lt;span class="java-keywords"&gt;null&lt;/span&gt;;
        XQExpression xqExpression = &lt;span class="java-keywords"&gt;null&lt;/span&gt;;
        XQSequence xqSequence = &lt;span class="java-keywords"&gt;null&lt;/span&gt;;
        XMLStreamReader reader = &lt;span class="java-keywords"&gt;null&lt;/span&gt;;
        String configFile = &lt;span class="java-string-literal"&gt;""&lt;/span&gt;;
        String xquerySourceFile = &lt;span class="java-string-literal"&gt;""&lt;/span&gt;;
        
        &lt;span class="java-keywords"&gt;if&lt;/span&gt; (args.length != &lt;span class="java-numeric-literals"&gt;2&lt;/span&gt;) {
        String usage = 
		&lt;span class="java-string-literal"&gt;"Usage:\n\n java StAXExample [configfile] [queryfile]\n\n"&lt;/span&gt; +
        &lt;span class="java-string-literal"&gt;"            [configfile]    Source Configuration File\n"&lt;/span&gt; +
        &lt;span class="java-string-literal"&gt;"            [queryfile]     XQuery file"&lt;/span&gt;;
            
            System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(usage);
            System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"Exiting StAXExample..."&lt;/span&gt;);
            System.&lt;span class="java-layer-method"&gt;exit&lt;/span&gt;(&lt;span class="java-numeric-literals"&gt;1&lt;/span&gt;);
        }
        configFile = args[&lt;span class="java-numeric-literals"&gt;0&lt;/span&gt;];
        xquerySourceFile = args[&lt;span class="java-numeric-literals"&gt;1&lt;/span&gt;];
        
        &lt;span class="java-keywords"&gt;try&lt;/span&gt; {
            dataSource = &lt;span class="java-keywords"&gt;new&lt;/span&gt; &lt;span class="java-layer-method"&gt;DDXQDataSource&lt;/span&gt;();
            dataSource.&lt;span class="java-layer-method"&gt;setConfigFile&lt;/span&gt;(configFile);
            connection = dataSource.&lt;span class="java-layer-method"&gt;getConnection&lt;/span&gt;();
            
            xqExpression = connection.&lt;span class="java-layer-method"&gt;createExpression&lt;/span&gt;();

            FileReader fileReader = &lt;span class="java-keywords"&gt;new&lt;/span&gt;
                &lt;span class="java-layer-method"&gt;FileReader&lt;/span&gt;(xquerySourceFile);

            xqSequence =
                 xqExpression.&lt;span class="java-layer-method"&gt;executeQuery&lt;/span&gt;(fileReader);
            
            reader = xqSequence.&lt;span class="java-layer-method"&gt;getSequenceAsStream&lt;/span&gt;();
            &lt;span class="java-layer-method"&gt;formatOutput&lt;/span&gt;(reader);
            
        }
        &lt;span class="java-keywords"&gt;catch&lt;/span&gt; (Exception ex) {
            ex.&lt;span class="java-layer-method"&gt;printStackTrace&lt;/span&gt;();
        } &lt;span class="java-keywords"&gt;finally&lt;/span&gt; {
            &lt;span class="java-keywords"&gt;try&lt;/span&gt; {
                &lt;span class="java-keywords"&gt;if&lt;/span&gt; (connection != &lt;span class="java-keywords"&gt;null&lt;/span&gt;){
                    reader.&lt;span class="java-layer-method"&gt;close&lt;/span&gt;();
                    connection.&lt;span class="java-layer-method"&gt;close&lt;/span&gt;();
                }
            }
            &lt;span class="java-keywords"&gt;catch&lt;/span&gt; (XQException xqEx) {
                xqEx.&lt;span class="java-layer-method"&gt;printStackTrace&lt;/span&gt;();
            }
            
            &lt;span class="java-keywords"&gt;catch&lt;/span&gt; (XMLStreamException e) {
                e.&lt;span class="java-layer-method"&gt;printStackTrace&lt;/span&gt;();
            }
            
        }
        
    }
    
    
    &lt;span class="java-keywords"&gt;private&lt;/span&gt; &lt;span class="java-keywords"&gt;static&lt;/span&gt; &lt;span class="java-keywords"&gt;void&lt;/span&gt; &lt;span class="java-layer-method"&gt;formatOutput&lt;/span&gt;(XMLStreamReader reader) &lt;span class="java-keywords"&gt;throws&lt;/span&gt;
    XMLStreamException {
        
        &lt;span class="java-keywords"&gt;for&lt;/span&gt; (&lt;span class="java-keywords"&gt;int&lt;/span&gt; event = reader.&lt;span class="java-layer-method"&gt;next&lt;/span&gt;();
        event != XMLStreamConstants.END_DOCUMENT;
        event = reader.&lt;span class="java-layer-method"&gt;next&lt;/span&gt;()) {
            
            &lt;span class="java-keywords"&gt;switch&lt;/span&gt; (event) {
            &lt;span class="java-keywords"&gt;case&lt;/span&gt; XMLStreamConstants.START_ELEMENT:
                System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"Start tag: "&lt;/span&gt;);
                &lt;span class="java-layer-method"&gt;printNames&lt;/span&gt;(reader);
            &lt;span class="java-keywords"&gt;break&lt;/span&gt;;
            
            &lt;span class="java-keywords"&gt;case&lt;/span&gt; XMLStreamConstants.END_ELEMENT:
                System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"End tag"&lt;/span&gt;);
                &lt;span class="java-layer-method"&gt;printNames&lt;/span&gt;(reader);
            &lt;span class="java-keywords"&gt;break&lt;/span&gt;;
                        
            &lt;span class="java-keywords"&gt;case&lt;/span&gt; XMLStreamConstants.CHARACTERS:
                System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"Text"&lt;/span&gt;);
                &lt;span class="java-layer-method"&gt;printChars&lt;/span&gt;(reader);
            &lt;span class="java-keywords"&gt;break&lt;/span&gt;;
            
            &lt;span class="java-keywords"&gt;case&lt;/span&gt; XMLStreamConstants.CDATA:
                System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"CDATA Section\n"&lt;/span&gt;);
            &lt;span class="java-keywords"&gt;break&lt;/span&gt;;
            
            &lt;span class="java-keywords"&gt;case&lt;/span&gt; XMLStreamConstants.COMMENT:
                System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"Comment"&lt;/span&gt;);
            &lt;span class="java-keywords"&gt;break&lt;/span&gt;;
            
            &lt;span class="java-keywords"&gt;case&lt;/span&gt; XMLStreamConstants.DTD:
                System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"Document type declaration\n"&lt;/span&gt;);
            &lt;span class="java-keywords"&gt;break&lt;/span&gt;;
            
            &lt;span class="java-keywords"&gt;case&lt;/span&gt; XMLStreamConstants.ENTITY_REFERENCE:
                System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"Entity Reference\n"&lt;/span&gt;);
            &lt;span class="java-keywords"&gt;break&lt;/span&gt;;
            
            &lt;span class="java-keywords"&gt;case&lt;/span&gt; XMLStreamConstants.SPACE:
                System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"Ignorable white space\n"&lt;/span&gt;);
            &lt;span class="java-keywords"&gt;break&lt;/span&gt;;
            
            &lt;span class="java-keywords"&gt;case&lt;/span&gt; XMLStreamConstants.PROCESSING_INSTRUCTION:
                System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"Processing Instruction\n"&lt;/span&gt;);
            &lt;span class="java-keywords"&gt;break&lt;/span&gt;;
                        
            &lt;span class="java-keywords"&gt;default&lt;/span&gt;:
                System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"This can not happen."&lt;/span&gt;);
            }
        }
    }
    
    &lt;span class="java-keywords"&gt;private&lt;/span&gt; &lt;span class="java-keywords"&gt;static&lt;/span&gt; &lt;span class="java-keywords"&gt;void&lt;/span&gt; &lt;span class="java-layer-method"&gt;printChars&lt;/span&gt;(XMLStreamReader aReader){
        String textString = aReader.&lt;span class="java-layer-method"&gt;getText&lt;/span&gt;();
        &lt;span class="java-keywords"&gt;if&lt;/span&gt;(textString != &lt;span class="java-keywords"&gt;null&lt;/span&gt;){
            System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"\tValue:"&lt;/span&gt; + textString);
        }
    }
    
    &lt;span class="java-keywords"&gt;private&lt;/span&gt; &lt;span class="java-keywords"&gt;static&lt;/span&gt; &lt;span class="java-keywords"&gt;void&lt;/span&gt; &lt;span class="java-layer-method"&gt;printNames&lt;/span&gt;(XMLStreamReader reader) {
        String localName = reader.&lt;span class="java-layer-method"&gt;getLocalName&lt;/span&gt;();
        String prefix = reader.&lt;span class="java-layer-method"&gt;getPrefix&lt;/span&gt;();
        String uri = reader.&lt;span class="java-layer-method"&gt;getNamespaceURI&lt;/span&gt;();
        
        &lt;span class="java-keywords"&gt;if&lt;/span&gt; (localName != &lt;span class="java-keywords"&gt;null&lt;/span&gt;){
            System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"\tLocal name: "&lt;/span&gt; + localName);
        }       
        &lt;span class="java-keywords"&gt;if&lt;/span&gt; (prefix != &lt;span class="java-keywords"&gt;null&lt;/span&gt;) {
            System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"\tPrefix: "&lt;/span&gt; + prefix);
        }
        &lt;span class="java-keywords"&gt;if&lt;/span&gt; (uri != &lt;span class="java-keywords"&gt;null&lt;/span&gt;) {
            System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"\tNamespace URI: "&lt;/span&gt; + uri);
        }
        System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;();
    }    
}
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;</description>
		</newsitem>
		<newsitem id="25146119571" hide="0">
			<date>January  24, 2008</date>
			<title>XQJ Code Listing - Prepare XQuery and execute w/ with variable bindings</title>
			<description>&lt;p&gt;This example shows how to prepare a query and execute it with
different variable bindings. It is called with two parameters: the name
of the file that specifies the connections for the query and the name
of the file that contains the query.&lt;/p&gt;



&lt;table bgcolor="#e4e4e4" ID="Table1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;pre&gt;&lt;span class="java-keywords"&gt;package&lt;/span&gt; com.ddtek.xqj.examples;
 
&lt;span class="java-keywords"&gt;import&lt;/span&gt; java.io.*;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; javax.xml.namespace.QName;

&lt;span class="java-block-comment"&gt;/* Import XQJ classes &lt;/span&gt;
&lt;span class="java-block-comment"&gt; */&lt;/span&gt;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; com.ddtek.xquery.XQConnection;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; com.ddtek.xquery.XQException;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; com.ddtek.xquery.XQPreparedExpression;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; com.ddtek.xquery.XQResultSequence;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; com.ddtek.xquery.XQSequence;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; com.ddtek.xquery.xqj.mediator.DDXQDataSource;


&lt;span class="java-block-comment"&gt;/**&lt;/span&gt;
&lt;span class="java-block-comment"&gt; * The purpose of this class is to serve as an example of using the XQJ API to&lt;/span&gt;
&lt;span class="java-block-comment"&gt; * execute a prepared query.&lt;/span&gt;
&lt;span class="java-block-comment"&gt; *&lt;/span&gt;
&lt;span class="java-block-comment"&gt; * This application is intended to be run as command-line Java, &lt;/span&gt;
&lt;span class="java-block-comment"&gt; * the usage is:&lt;/span&gt;
&lt;span class="java-block-comment"&gt; *&lt;/span&gt;
&lt;span class="java-block-comment"&gt; * java PreparedQuery  &lt;/span&gt;
&lt;span class="java-block-comment"&gt; */&lt;/span&gt;
&lt;span class="java-keywords"&gt;public&lt;/span&gt; &lt;span class="java-keywords"&gt;class&lt;/span&gt; PreparedQuery {
    
    
    &lt;span class="java-keywords"&gt;public&lt;/span&gt; &lt;span class="java-keywords"&gt;static&lt;/span&gt; &lt;span class="java-keywords"&gt;void&lt;/span&gt; &lt;span class="java-layer-method"&gt;main&lt;/span&gt;(String[] args) &lt;span class="java-keywords"&gt;throws&lt;/span&gt; Exception {
        DDXQDataSource dataSource = &lt;span class="java-keywords"&gt;null&lt;/span&gt;;
        XQConnection connection = &lt;span class="java-keywords"&gt;null&lt;/span&gt;;
        XQPreparedExpression preparedExpression = &lt;span class="java-keywords"&gt;null&lt;/span&gt;;
        XQSequence xqSequence = &lt;span class="java-keywords"&gt;null&lt;/span&gt;;
        String configFile = &lt;span class="java-string-literal"&gt;""&lt;/span&gt;;
        String xquerySourceFile = &lt;span class="java-string-literal"&gt;""&lt;/span&gt;;
        
        &lt;span class="java-keywords"&gt;if&lt;/span&gt; (args.length != &lt;span class="java-numeric-literals"&gt;2&lt;/span&gt;) {
            String usage = &lt;span class="java-string-literal"&gt;"Usage:\n\n java PreparedQuery &lt;/span&gt;&lt;span class="java-string-literal"&gt;[&lt;/span&gt;&lt;span class="java-string-literal"&gt;configfile]"&lt;/span&gt; +
            &lt;span class="java-string-literal"&gt;"            [queryfile]\n\n"&lt;/span&gt; +
            &lt;span class="java-string-literal"&gt;"            [configfile]    Source Configuration File\n"&lt;/span&gt; +
            &lt;span class="java-string-literal"&gt;"            [queryfile]     XQuery file"&lt;/span&gt;;
            
            System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(usage);
            System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"Exiting PreparedQuery..."&lt;/span&gt;);
            &lt;span class="java-keywords"&gt;return&lt;/span&gt;;
        }
        configFile = args[&lt;span class="java-numeric-literals"&gt;0&lt;/span&gt;];
        xquerySourceFile = args[&lt;span class="java-numeric-literals"&gt;1&lt;/span&gt;];
        &lt;span class="java-keywords"&gt;try&lt;/span&gt; {
            
            &lt;span class="java-block-comment"&gt;/* Get a connection, prepare the query&lt;/span&gt;
&lt;span class="java-block-comment"&gt;             */&lt;/span&gt;
            dataSource = &lt;span class="java-keywords"&gt;new&lt;/span&gt; &lt;span class="java-layer-method"&gt;DDXQDataSource&lt;/span&gt;();    
            dataSource.&lt;span class="java-layer-method"&gt;setConfigFile&lt;/span&gt;(configFile);
            connection = dataSource.&lt;span class="java-layer-method"&gt;getConnection&lt;/span&gt;(); 

             FileReader fileReader = &lt;span class="java-keywords"&gt;new&lt;/span&gt;
                &lt;span class="java-layer-method"&gt;FileReader&lt;/span&gt;(xquerySourceFile);
           
            preparedExpression =
                connection.&lt;span class="java-layer-method"&gt;prepareExpression&lt;/span&gt;(fileReader);

            &lt;span class="java-block-comment"&gt;/* Bind variable $l to "Jonathan" and execute&lt;/span&gt;
&lt;span class="java-block-comment"&gt;             */&lt;/span&gt;
            preparedExpression.&lt;span class="java-layer-method"&gt;bindString&lt;/span&gt;(&lt;span class="java-keywords"&gt;new&lt;/span&gt; &lt;span class="java-layer-method"&gt;QName&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"l"&lt;/span&gt;), &lt;span class="java-string-literal"&gt;"Jonathan"&lt;/span&gt;);
            xqSequence = preparedExpression.&lt;span class="java-layer-method"&gt;executeQuery&lt;/span&gt;();
            System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"\n\nHoldings for Jonathan:\n\n"&lt;/span&gt;);
            System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(xqSequence.&lt;span class="java-layer-method"&gt;getSequenceAsString&lt;/span&gt;());

            &lt;span class="java-block-comment"&gt;/* Bind variable $l to "Minollo" and execute&lt;/span&gt;
&lt;span class="java-block-comment"&gt;             */&lt;/span&gt;
            preparedExpression.&lt;span class="java-layer-method"&gt;bindString&lt;/span&gt;(&lt;span class="java-keywords"&gt;new&lt;/span&gt; &lt;span class="java-layer-method"&gt;QName&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"l"&lt;/span&gt;), &lt;span class="java-string-literal"&gt;"Minollo"&lt;/span&gt;);
            xqSequence = preparedExpression.&lt;span class="java-layer-method"&gt;executeQuery&lt;/span&gt;();
            System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"\n\nHoldings for Minollo:\n\n"&lt;/span&gt;);
            System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(xqSequence.&lt;span class="java-layer-method"&gt;getSequenceAsString&lt;/span&gt;());

            
                } &lt;span class="java-keywords"&gt;catch&lt;/span&gt; (Exception ex) {
            ex.&lt;span class="java-layer-method"&gt;printStackTrace&lt;/span&gt;();
        } &lt;span class="java-keywords"&gt;finally&lt;/span&gt; {
            &lt;span class="java-keywords"&gt;if&lt;/span&gt; (connection != &lt;span class="java-keywords"&gt;null&lt;/span&gt;){
                &lt;span class="java-keywords"&gt;try&lt;/span&gt; {
                    connection.&lt;span class="java-layer-method"&gt;close&lt;/span&gt;();
                } &lt;span class="java-keywords"&gt;catch&lt;/span&gt; (XQException e) {
                    e.&lt;span class="java-layer-method"&gt;printStackTrace&lt;/span&gt;();
                }
            }
        }
    }    
}
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;</description>
		</newsitem>
		<newsitem id="23982087786" hide="0">
			<date>January  24, 2008</date>
			<title>XQJ Code Listing - Build a DOM tree and query it using XQuery</title>
			<description>&lt;p&gt;This example shows how to build a DOM tree and query it using
XQuery. It is called with two parameters: the name of the file that
specifies the connections for the query and the name of the file that
contains the query. &lt;/p&gt;



&lt;table bgcolor="#e6e6e6" ID="Table1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;pre&gt;&lt;span class="java-keywords"&gt;package&lt;/span&gt; com.ddtek.xqj.examples;

&lt;span class="java-keywords"&gt;import&lt;/span&gt; java.io.*;

&lt;span class="java-keywords"&gt;import&lt;/span&gt; javax.xml.namespace.QName;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; javax.xml.parsers.DocumentBuilder;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; javax.xml.parsers.DocumentBuilderFactory;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; javax.xml.parsers.FactoryConfigurationError;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; javax.xml.parsers.ParserConfigurationException;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; javax.xml.transform.Result;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; javax.xml.transform.Source;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; javax.xml.transform.Transformer;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; javax.xml.transform.TransformerFactory;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; javax.xml.transform.dom.DOMSource;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; javax.xml.transform.stream.StreamResult;

&lt;span class="java-keywords"&gt;import&lt;/span&gt; org.w3c.dom.Document;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; org.xml.sax.SAXException;

&lt;span class="java-block-comment"&gt;/* Import XQJ classes &lt;/span&gt;
&lt;span class="java-block-comment"&gt; */&lt;/span&gt;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; com.ddtek.xquery.XQConnection;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; com.ddtek.xquery.XQException;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; com.ddtek.xquery.XQExpression;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; com.ddtek.xquery.XQSequence;
&lt;span class="java-keywords"&gt;import&lt;/span&gt; com.ddtek.xquery.xqj.mediator.DDXQDataSource;

&lt;span class="java-block-comment"&gt;/**&lt;/span&gt;
&lt;span class="java-block-comment"&gt; * The purpose of this class is to provide an example of how to &lt;/span&gt;
&lt;span class="java-block-comment"&gt; * use the XQJ API to query XML with a variable bound to a DOM.&lt;/span&gt;
&lt;span class="java-block-comment"&gt; * &lt;/span&gt;
&lt;span class="java-block-comment"&gt; * To use this application, execute the following from the command line:&lt;/span&gt;
&lt;span class="java-block-comment"&gt; *&lt;/span&gt;
&lt;span class="java-block-comment"&gt; * java BindDomToVariable    &lt;/span&gt;
&lt;span class="java-block-comment"&gt; *  &lt;/span&gt;
&lt;span class="java-block-comment"&gt; */&lt;/span&gt;
&lt;span class="java-keywords"&gt;public&lt;/span&gt; &lt;span class="java-keywords"&gt;class&lt;/span&gt; BindDomToVariable {
    
    &lt;span class="java-block-comment"&gt;/**&lt;/span&gt;
&lt;span class="java-block-comment"&gt;     * Execute BindDomToVariable as a java console application. See the&lt;/span&gt;
&lt;span class="java-block-comment"&gt;     * "args" param for startup arguments. &lt;/span&gt;
&lt;span class="java-block-comment"&gt;     * @param args - a list of three strings that represent the path to the&lt;/span&gt;
&lt;span class="java-block-comment"&gt;     * config file, the path to an XQuery source file, and the path to a&lt;/span&gt;
&lt;span class="java-block-comment"&gt;     * well-formed XML data file.&lt;/span&gt;
&lt;span class="java-block-comment"&gt;     */&lt;/span&gt;
    &lt;span class="java-keywords"&gt;public&lt;/span&gt; &lt;span class="java-keywords"&gt;static&lt;/span&gt; &lt;span class="java-keywords"&gt;void&lt;/span&gt; &lt;span class="java-layer-method"&gt;main&lt;/span&gt;(String[] args) {
        
        DDXQDataSource dataSource = &lt;span class="java-keywords"&gt;null&lt;/span&gt;;
        XQConnection connection = &lt;span class="java-keywords"&gt;null&lt;/span&gt;;
        XQExpression xqExpression = &lt;span class="java-keywords"&gt;null&lt;/span&gt;;
        XQSequence xqSequence = &lt;span class="java-keywords"&gt;null&lt;/span&gt;;
        String configFile = &lt;span class="java-string-literal"&gt;""&lt;/span&gt;;
        String xquerySourceFile = &lt;span class="java-string-literal"&gt;""&lt;/span&gt;;
        String xmlDataFile = &lt;span class="java-string-literal"&gt;""&lt;/span&gt;;
        
        &lt;span class="java-block-comment"&gt;//we need all three args to run this example...&lt;/span&gt;
        &lt;span class="java-keywords"&gt;if&lt;/span&gt; (args.length != &lt;span class="java-numeric-literals"&gt;3&lt;/span&gt;) {
            System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"Usage: java BindDomToVariable&lt;/span&gt; &lt;span class="java-string-literal"&gt;configfile xquery"&lt;/span&gt;
                &lt;span class="java-string-literal"&gt;+ "xmldatafile"&lt;/span&gt;);
            System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"Exiting BindDomToVariable..."&lt;/span&gt;);
            &lt;span class="java-keywords"&gt;return&lt;/span&gt;;
        }
        configFile = args[&lt;span class="java-numeric-literals"&gt;0&lt;/span&gt;];
        xquerySourceFile = args[&lt;span class="java-numeric-literals"&gt;1&lt;/span&gt;];
        xmlDataFile = args[&lt;span class="java-numeric-literals"&gt;2&lt;/span&gt;];
        
        &lt;span class="java-keywords"&gt;try&lt;/span&gt; {
            &lt;span class="java-block-comment"&gt;/* Ask the DocumentBuilderFactory class for an instance&lt;/span&gt;
&lt;span class="java-block-comment"&gt;             * to help us make a DocumentBuilder parser.&lt;/span&gt;
&lt;span class="java-block-comment"&gt;             */&lt;/span&gt;
            DocumentBuilderFactory factory 
            = DocumentBuilderFactory.&lt;span class="java-layer-method"&gt;newInstance&lt;/span&gt;();
            
            &lt;span class="java-block-comment"&gt;/* Establish the aspect of namespace awareness &lt;/span&gt;
&lt;span class="java-block-comment"&gt;             * before the parser is created.&lt;/span&gt;
&lt;span class="java-block-comment"&gt;             */&lt;/span&gt;
            factory.&lt;span class="java-layer-method"&gt;setNamespaceAware&lt;/span&gt;(&lt;span class="java-keywords"&gt;true&lt;/span&gt;);
            
            &lt;span class="java-block-comment"&gt;/* Ask the DocumentBuilderFactory instance for a new&lt;/span&gt;
&lt;span class="java-block-comment"&gt;             * document builder parser&lt;/span&gt;
&lt;span class="java-block-comment"&gt;             */&lt;/span&gt;
            DocumentBuilder parser = factory.&lt;span class="java-layer-method"&gt;newDocumentBuilder&lt;/span&gt;();
            
            &lt;span class="java-block-comment"&gt;/* Create a DOM tree from the xml data file.&lt;/span&gt;
&lt;span class="java-block-comment"&gt;             */&lt;/span&gt;
            Document document = parser.&lt;span class="java-layer-method"&gt;parse&lt;/span&gt;(xmlDataFile);

            
            &lt;span class="java-block-comment"&gt;/* Create a connection, then an expression&lt;/span&gt;
&lt;span class="java-block-comment"&gt;             */&lt;/span&gt;
            dataSource = &lt;span class="java-keywords"&gt;new&lt;/span&gt; &lt;span class="java-layer-method"&gt;DDXQDataSource&lt;/span&gt;();    
            dataSource.&lt;span class="java-layer-method"&gt;setConfigFile&lt;/span&gt;(configFile);
            connection = dataSource.&lt;span class="java-layer-method"&gt;getConnection&lt;/span&gt;();            
            xqExpression = connection.&lt;span class="java-layer-method"&gt;createExpression&lt;/span&gt;();
            
            &lt;span class="java-block-comment"&gt;/* Bind the document to the external variable $d&lt;/span&gt;
&lt;span class="java-block-comment"&gt;             */&lt;/span&gt;
            xqExpression.&lt;span class="java-layer-method"&gt;bindNode&lt;/span&gt;(&lt;span class="java-keywords"&gt;new&lt;/span&gt; &lt;span class="java-layer-method"&gt;QName&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"d"&lt;/span&gt;), document);
            
            &lt;span class="java-block-comment"&gt;/* Execute the query - print the result&lt;/span&gt;
&lt;span class="java-block-comment"&gt;             */&lt;/span&gt;

             FileReader fileReader = &lt;span class="java-keywords"&gt;new&lt;/span&gt;
                &lt;span class="java-layer-method"&gt;FileReader&lt;/span&gt;(xquerySourceFile);

            xqSequence = 
                xqExpression.&lt;span class="java-layer-method"&gt;executeQuery&lt;/span&gt;( fileReader);                       
            

            System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(xqSequence.&lt;span class="java-layer-method"&gt;getSequenceAsString&lt;/span&gt;());

                        
        }
        &lt;span class="java-keywords"&gt;catch&lt;/span&gt; (SAXException e) {
            System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(xmlDataFile + &lt;span class="java-string-literal"&gt;" is not well-formed."&lt;/span&gt; + e);
        }
        &lt;span class="java-keywords"&gt;catch&lt;/span&gt; (IOException e) { 
            System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(
                    &lt;span class="java-string-literal"&gt;"Due to an IOException, the parser could not read "&lt;/span&gt;
					 + xmlDataFile + &lt;span class="java-string-literal"&gt;". "&lt;/span&gt; + e ); 
        }
        &lt;span class="java-keywords"&gt;catch&lt;/span&gt; (FactoryConfigurationError e) { 
            System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"Could not locate a factory class"&lt;/span&gt; + e); 
        }
        &lt;span class="java-keywords"&gt;catch&lt;/span&gt; (ParserConfigurationException e) { 
            System.out.&lt;span class="java-layer-method"&gt;println&lt;/span&gt;(&lt;span class="java-string-literal"&gt;"Could not locate a JAXP parser"&lt;/span&gt; + e); 

        } &lt;span class="java-keywords"&gt;catch&lt;/span&gt; (XQException e) {
            e.&lt;span class="java-layer-method"&gt;printStackTrace&lt;/span&gt;();

        } &lt;span class="java-keywords"&gt;finally&lt;/span&gt; {
            &lt;span class="java-keywords"&gt;if&lt;/span&gt; (connection != &lt;span class="java-keywords"&gt;null&lt;/span&gt;) {
                &lt;span class="java-keywords"&gt;try&lt;/span&gt; {
                    connection.&lt;span class="java-layer-method"&gt;close&lt;/span&gt;();
               } &lt;span class="java-keywords"&gt;catch&lt;/span&gt; (XQException e) {
                   e.&lt;span class="java-layer-method"&gt;printStackTrace&lt;/span&gt;();
               }
            }
        }
    }    
}
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;</description>
		</newsitem>
		<newsitem id="3254898943" hide="0">
			<date>January  24, 2008</date>
			<title>XQJ References</title>
			<description>&lt;ol class="plain"&gt;

&lt;li&gt;XQuery 1.0: An XML Query Language, Working Draft 11th February 2005
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.w3.org/TR/xquery" target="_blank"&gt;http://www.w3.org/TR/xquery&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;

&lt;li&gt;JSR 225: XQuery API for Java™ (XQJ), Early Draft Review
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.jcp.org/en/jsr/detail?id=225" target="_blank"&gt;http://www.jcp.org/en/jsr/detail?id=225&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;

&lt;li&gt;Document Object Model, DOM Level 3.
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.w3.org/DOM/" target="_blank"&gt;http://www.w3.org/DOM/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;

&lt;li&gt;JDBC API Specification 3.0
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://java.sun.com/products/jdbc" target="_blank"&gt;http://java.sun.com/products/jdbc&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;

&lt;li&gt;StAX - Stream API for XML
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://dev2dev.bea.com/technologies/stax/index.jsp" target="_blank"&gt;http://dev2dev.bea.com/technologies/stax/index.jsp&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
		</newsitem>
	</eligbleviewers>
	<eligbleviewers id="eligbl2" newstosee="5" status1="99" status2="100">
	</eligbleviewers>
	<eligbleviewers id="eligbl3" newstosee="5" status1="199" status2="1200"/>
</news>