XQJ: Beispiel fuer ein XQDataSource Objekt

Saxer

Mitglied
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.
 
Hallo,

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

Java:
/**
 * 
 */
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:
Code:
<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
 
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!
 
Habe jetzt einiges dazu rausgefunden..!

Haenge jetzt nur noch an folgender Stelle:

Code:
// 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.

Code:
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!
 
Zurück