XQuery Extension Modules Documentation

eXist-db provides a pluggable module interface that allows extension modules to be easily developed in Java. These extension modules can provide additional XQuery functions through a custom namespace. The extension modules have full access to the eXist-db database, its internal API, the context of the executing XQuery and the HTTP Session (if appropriate).

The source code for extension modules should be placed in their own folder inside $EXIST_HOME/extensions/modules/src/org/exist/xquery/modules. They may then be compiled in place using either $EXIST_HOME/build.sh extension-modules or %EXIST_HOME%\build.bat extension-modules depending on the platform.

Modules associated to modularized indexes should be placed in the $EXIST_HOME/extensions/indexes/*/xquery/modules/* hierarchy. They will be compiled automatically by the standard build targets or as indicated above.

eXist-db must also be told which modules to load, this is done in conf.xml and the Class name and Namespace for each module is listed below. Note - eXist-db will require a restart to load any new modules added. Once a Module is configured and loaded eXist-db will display the module and its function definitions as part of the function library page or through util:decribe-function().

1. Example Module

Demonstrates the simplest example of an Extension module with a single function. A good place to start if you wish to develop your own Extension Module.

Creator: Wolfgang Meier Licence: LGPL Status: production

Class: org.exist.xquery.modules.example.ExampleModule Namespace: http://exist-db.org/xquery/examples

2. Compression Module

Provides additional operations for compression

Creator: Adam Retter Licence: LGPL Status: production

Class: org.exist.xquery.modules.compression.CompressionModule Namespace: http://exist-db.org/xquery/compression

3. Date Time Module

Provides additional operations on date and time types

Creator: Adam Retter Licence: LGPL Status: production

Class: org.exist.xquery.modules.datetime.DateTimeModule Namespace: http://exist-db.org/xquery/datetime

4. File Module

Provides additional operations on files and directories. WARNING: Enabling this extension module could result in possible security issues, since it allows writing to the filesystem by xqueries!

Creator: Andrzej Taramina, Chaeron Corporation Licence: LGPL Status: production

Class: org.exist.xquery.modules.file.FileModule Namespace: http://exist-db.org/xquery/file

5. HTTP Client Module

Functions for performing HTTP requests

Creator: Adam Retter and Andrzej Taramina Licence: LGPL Features Used: NekoHTML Status: production

Class: org.exist.xquery.modules.http.HTTPClientModule Namespace: http://exist-db.org/xquery/httpclient

6. Image Module

This modules provides operations on images stored in the db, including: Retreiving Image Dimensions, Creating Thumbnails and Resizing Images.

Creator: Adam Retter Contributors: Wolfgang MeierRafael Troilo Licence: LGPL Status: production

Class: org.exist.xquery.modules.image.ImageModule Namespace: http://exist-db.org/xquery/image

7. JNDI Directory Module

This extension module allows you to access and manipulate JNDI-based directories, such as LDAP, using XQuery functions. It can be very useful if you want to integration and LDAP directory into an eXist-db/XQuery based application.

To compile it, set the parameter include.module.jndi = true in $EXIST_HOME/extensions/local.build.properties file (create it if missing).

Then, to enable it, edit the appropriate module entry in conf.xml

Creator: Andrzej Taramina, Chaeron Corporation Licence: LGPL Status: production

Class: org.exist.xquery.modules.jndi.JNDIModule Namespace: http://exist-db.org/xquery/jndi

8. Mail Module

This modules provides facilities for sending text and/or HTML emails from XQuery using either SMTP or a local Sendmail binary.

Creator: Adam Retter Contributors: Robert Walpole Licence: LGPL Status: production

Class: org.exist.xquery.modules.mail.MailModule Namespace: http://exist-db.org/xquery/mail

9. Math Module

This module provides mathematical functions from the java Math class.

Creator: Dannes Wessels Licence: LGPL Status: production

Class: org.exist.xquery.modules.math.MathModule Namespace: http://exist-db.org/xquery/math

10. Scheduler Module

Provides access to eXist-db's Scheduler for the purposes of scheduling job's and manipulating existing job's.

Creator: Adam Retter Licence: LGPL Status: production

Class: org.exist.xquery.modules.scheduler.SchedulerModule Namespace: http://exist-db.org/xquery/scheduler

11. Simple Query Language Module

This modules implements a Simple custom Query Language which is then converted to XPath and executed against the db.

Creator: Wolfgang Meier Licence: LGPL Status: production

Class: org.exist.xquery.modules.simpleql.SimpleQLModule Namespace: http://exist-db.org/xquery/simple-ql

12. Spatial module

Various functions for GML geometries, whether indexed or not. More information about the design is available here.

Creator: Pierrick Brihaye Licence: LGPL Status: experimental

Class: org.exist.xquery.modules.spatial.SpatialModule Namespace: http://exist-db.org/xquery/spatial

13. SQL Module

This module provides facilities for performing SQL operations against traditional databases from XQuery and returning the results as XML nodes.

Creator: Adam Retter Licence: LGPL Features Used: JDBC Status: production

Class: org.exist.xquery.modules.sql.SQLModule Namespace: http://exist-db.org/xquery/sql

14. XML Differencing Module

This module provides facilities for determining the differences between XML nodes.

Creator: Dannes Wessels Contributors: Pierrick Brihaye Licence: LGPL Status: production

Class: org.exist.xquery.modules.xmldiff.XmlDiffModule Namespace: http://exist-db.org/xquery/xmldiff

15. XSL-FO Module

This module provides XSL-FO rendering facilities.

Creator:  University of the West of England Licence: LGPL Features Used: Apache FOP Status: production

Class: org.exist.xquery.modules.xslfo.XSLFOModule Namespace: http://exist-db.org/xquery/xslfo

16. XProcxq Module

This module provides XProc functionality to eXist-db.

Creator:  James R. Fuller Licence: MPL v1.1 Features Used: expath http library Status: in development at time for version 1.4.1 release

Class: static xquery module via extensions/xprocxq.jar Namespace: http://xproc.net/xproc

August 2011
Leif-J├Âran Olsson
ljo at exist-db.org