EXQuery Function Library

Standardising additional functions for XQuery
Sapling

EXQuery functions are extension functions for XQuery, these extension functions cannot be entirely implemented in XQuery itself, they require additional capabilities that are not available from the XQuery 1.0 specification.

Many XQuery implementations are already providing extension functions however these vary wildly in availability, semantics and syntax. The EXQuery function library attempts to unify, standardise and extend from this base.

Many of these proprietary extension functions whilst provided as functions for use in XQuery, are actually simple enough that they could be made applicable to XPath. Whilst identifying these proprietary functions, we should consider whether they could be implemented at the lower level as extension functions for XPath; If this is the case then such functions should be filtered down into the EXPath project. The reasoninging for this is simple, XQuery, XSLT, XProc, XForms, etc. all include XPath and any such langauge that supports XPath can potentially benefit, whilst we are simultaneously broadening the scope of our standardisation efforts and enabling even some cross language portability.

Identified tasks -

  • Step 1 - Gather details of all existing XQuery Extension Functions from all existing XQuery implementations. In progress - Kurt Cagle
  • Step 2 - Gather details of any XQuery Extension Functions submitted to us as use cases.
  • Step 3 - Identify overlap and commonality in known XQuery Extension Functions.
  • Step 4 - Identify distinct areas of functionality.
  • Step 5 - Pass off functions to the EXPath project as appropriate.
  • Step 6 - Identify documentation approaches (EXQuery function signatures, code, examples, user guide, implementers guide).
  • Step 7 – Identify testing methodologies (Implementers conformance test suite).
  • Step 8 – Identify exception/error handling approach for EXQuery functions.

Further details about the scope, aims and progress of the Function Library project will reside here soon...