dcsimg
Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX

By submitting your information, you agree that devx.com may send you DevX offers via email, phone and text message, as well as email offers about other products and services that DevX believes may be of interest to you. DevX will process your information in accordance with the Quinstreet Privacy Policy.


Tip of the Day
Language: Java
Expertise: Advanced
Nov 22, 2006

WEBINAR:

On-Demand

Building the Right Environment to Support AI, Machine Learning and Deep Learning


Evaluate XQuery Expressions with Java and SAXON 8

The following tip shows you how to combine Java and SAXON 8 in order to evaluate XQuery expressions. This application presumes that the XQuery expression is in an external file, called Q.xquery, and the XML file used for interrogation is called XML.xml:

//Java
import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.FileInputStream;
import java.util.Properties;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.sax.SAXSource;
import javax.xml.transform.stream.StreamResult;
import org.xml.sax.InputSource;

//SAXON
import net.sf.saxon.om.DocumentInfo;
import net.sf.saxon.Configuration;
import net.sf.saxon.om.NodeInfo;
import net.sf.saxon.query.DynamicQueryContext;
import net.sf.saxon.query.StaticQueryContext;
import net.sf.saxon.query.XQueryExpression;
import net.sf.saxon.trans.XPathException;

public class XQueryExample {

    public static void main(String[] args) {
        
       //the Q.xquery file
       InputStream queryStream=null;
       String queryFileName="C://Data_Local//XML//XQuery//Q.xquery";
         
       //documentul XML ce va fi interogat este reprezentat de
       //fisierul AircraftDealer.xml  
       File XMLStream=null;
       String xmlFileName="C://Data_Local//XML//XQuery//XML.xml";

       //print the result to the console
       OutputStream destStream=System.out;
                          
       //compile the XQuery expression
       XQueryExpression exp=null;
       
       //create a Configuration object
       Configuration C=new Configuration();
        
       //static and dynamic context
       StaticQueryContext SQC=new StaticQueryContext(C);
       DynamicQueryContext DQC=new DynamicQueryContext(C);      
        
       //indentation
       Properties props=new Properties();
       props.setProperty(OutputKeys.METHOD,"xml");
       props.setProperty(OutputKeys.INDENT,"yes");

        try{
           queryStream=new FileInputStream(queryFileName);
           SQC.setBaseURI(new File(queryFileName).toURI().toString());
           
           //compilation
           exp=SQC.compileQuery(queryStream,null);
           SQC=exp.getStaticContext(); 
           }catch(net.sf.saxon.trans.XPathException e)
             {System.err.println(e.getMessage());
           }catch(java.io.IOException e)
             {System.err.println(e.getMessage());}
          
          //get the XML ready
          try{   
             XMLStream=new File(xmlFileName);
             InputSource XMLSource=new InputSource(XMLStream.toURI().toString());
             SAXSource SAXs=new SAXSource(XMLSource); 
             DocumentInfo DI=SQC.buildDocument(SAXs);
             DQC.setContextNode(DI);

             //evaluating
             exp.run(DQC,new StreamResult(destStream),props);
             destStream.close();
             }catch(net.sf.saxon.trans.XPathException e)
                  {System.err.println(e.getMessage());
             }catch (java.io.IOException e)
                  {System.err.println(e.getMessage());}
                          
    }   
}
Leonard Anghel
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date