# XQJ: Beispiel fuer ein XQDataSource Objekt



## Saxer (17. März 2008)

Hi,

ich arbeite zur Zeit an XQuery API. Nun habe ich die Frage wie so eine Datenquelle (XQDataSource) aussehen soll?
Arbeite mit XML Datenbanken und weiss jetzt nicht so recht wie eine XQDataSource zu einer XML Datenbank aussehen soll.

Dankeschoen.


----------



## Thomas Darimont (17. März 2008)

Hallo,

schau dir mal die freie XQuery Implementierung  von Saxon an:
http://saxon.sourceforge.net/


```
/**
 * 
 */
package de.tutorials;

import net.sf.saxon.javax.xml.xquery.XQConnection;
import net.sf.saxon.javax.xml.xquery.XQDataSource;
import net.sf.saxon.javax.xml.xquery.XQPreparedExpression;
import net.sf.saxon.javax.xml.xquery.XQResultSequence;
import net.sf.saxon.xqj.SaxonXQDataSource;

/**
 * @author Thomas.Darimont
 * 
 */
public class XQueryExample {

    /**
     * @param args
     */
    public static void main(String[] args) throws Exception {
        XQDataSource dataSource = new SaxonXQDataSource();
        XQConnection connection = dataSource.getConnection();
        XQPreparedExpression expression = connection
                .prepareExpression("for $n in 1 to 10 return <value>{$n*$n}</value>");
        XQResultSequence resultSequence = expression.executeQuery();
        while (resultSequence.next()) {
            System.out.println(resultSequence.getItemAsString(null));
        }

    }

}
```

Ausgabe:

```
<value>1</value>
<value>4</value>
<value>9</value>
<value>16</value>
<value>25</value>
<value>36</value>
<value>49</value>
<value>64</value>
<value>81</value>
<value>100</value>
```

Gruß Tom


----------



## Saxer (18. März 2008)

Danke dir, hatte das von Saxon noch nicht gesehen.

Kannst du mir jetzt noch erklaeren was in dem SaxonXQDataSource implementiert wurde?
Kann ich meine XML Datei in ein DataSource Objekt stecken oder meine abgespeicherten Tables zur XML Datei?

Dankeschoen!


----------



## Saxer (22. März 2008)

Habe jetzt einiges dazu rausgefunden..!

Haenge jetzt nur noch an folgender Stelle:


```
// obtain an XQDataSource instance
   XQDataSource xqds = (XQDataSource) 
      Class.forName("com.jsr225.xqj").newInstance();
```

die Klasse com.jsr225.xqj ist aber nirgends zu finden Kann mir da jemand einen Tipp geben..?

XML Dokumenten muss man danach mit bind an die Expression packen.


```
XQConnection conn = xqds.getConnection();

    XQStaticContext sc = conn.getStaticContext(); 
    XQPreparedExpression copy = conn.prepareExpression(query, sc); 
    
    copy.bindDocument(XQConstants.CONTEXT_ITEM,
        new FileInputStream(str),
        "Test",
        conn.createDocumentType());
```

Danke!


----------

