XQJ Part I - Introduction

XQJ Part I - Introduction

Posted on August 07, 2007 0 Comments

This is the first post in a series about XQJ (JSR 225). The XQJ initiative aims to provide the standard Java API to access XQuery implementations. Eventually XQJ will be for XQuery what JDBC means for SQL. XQJ is currently in public review, the specification can be downloaded here.

I hope this series will give a good overview of the major interfaces and functionality offered by XQJ, mostly through example code. The majority of the code should be implementation independent, but I have to admit, it will be tested using DataDirect XQuery 3.0, which supports the XQJ Public Draft.

We have today the following essays in the XQJ series (the list is updated as more posts become available),

  • XQJ Part I - Introduction
  • XQJ Part II - Setting up a session
  • XQJ Part III - Executing queries
  • XQJ Part IV - Processing query results
  • XQJ Part V - Serializing query results
  • XQJ Part VI - Manipulating the static context
  • XQJ Part VII - Typing
  • XQJ Part VIII - Binding external variables
  • XQJ Part IX - Creating XDM instances
  • XQJ Part X - XML Pipelines
  • XQJ Part XI - Processing large inputs

Let's start with our first simple XQJ application; the XQuery/XQJ version of "Hello World!".

[cc lang="java"]XQDataSource xqjd = new DDXQDataSource(); XQConnection xqjc = xqjd.getConnection(); XQExpression xqje = xqjc.createExpression(); XQSequence xqjs = xqje.executeQuery("'Hello World!'"); xqjs.writeSequence(System.out, null); xqjc.close(); [/cc]I assume most of it speaks for itself. But don't worry if you have some questions, things will become clear in the upcoming posts.

Some of you might recognize some of the JDBC concepts in the code example above. Indeed, the XQJ expert group decided to make XQJ stylistic consistent with JDBC. Similar to JDBC is has concepts like,

  • datasources
  • connections
  • expressions and prepared expressions

But at the same time, XQuery is not SQL, as such XQJ differs from JDBC,

  • data model
  • typing
  • static context
  • error handling

The next post in this series will introduce data sources and setting up connections.

digg_skin = 'compact';


Marc Van Cappellen

View all posts from Marc Van Cappellen on the Progress blog. Connect with us about all things application development and deployment, data integration and digital business.


Comments are disabled in preview mode.

Sitefinity Training and Certification Now Available.

Let our experts teach you how to use Sitefinity's best-in-class features to deliver compelling digital experiences.

Learn More
Latest Stories
in Your Inbox

Subscribe to get all the news, info and tutorials you need to build better business apps and sites

Loading animation