The un-queried life is not worth living
— Socrates (Plato, The Apology, 38a)
XQuery is a standardized language for combining documents, databases, Web pages and almost anything else. It is very widely implemented. It is powerful and easy to learn.
XQuery is replacing proprietary middleware languages and Web Application development languages. XQuery is replacing complex Java or C++ programs with a few lines of code. XQuery is simpler to work with and easier to maintain than many other alternatives.
The W3C XML Query Working Group worked with the W3C XML Schema Working Group and the W3C XSL Working Group to make a set of specifications that all work together.
Use XQuery to take data from multiple databases, from XML files, from remote Web documents, even from CGI scripts, and to produce XML results that you can process with XSLT.
Use XQuery on the back-end of a Web server, or to generate Enterprise-wide executive reports.
The Dolley Madison Digital Edition by the University of Virginia Press.
Alberta learning Center for education in the Canadian province of Alberta; e.g. see the Search link, which does not require registration.
The New England Journal of Medicine uses XQuery, perhaps for the Search facility.
MarkMail is an XQuery-based application for searching and visualising mailing lists.
O'Reilly Labs use XQuery to power code search, image search, statistics and more.
CQ Legislative Impact is a tool to explore how pending US legislation might affect existing laws.
Oxford African American Studies Center is a site published by Oxford University Press using an XQuery system. See the Site Credits link there for more details.
fromoldbooks.org has an image search engine powered by XML Query; you can see the text of the queries (follow the About link on the Search page). This is also used by Liam Quin's Photograph search page.
Have you got a Web site that's powered by XML Query? A success story to share? Contact liam at w3.org.
There are over 40 different software packages that support XML Query in some way. Things to look for include availability of support, platforms, price, performance, all the usual issues, but you should also ask whether the software supports the final syntax from the W3C Recommendation or implements an earlier draft. Another XML Query specific feature is support for XML files, for fetching documents via HTTP, and for connecting to relational (or other) data sources: that is, whether the package lives up to the XML Query promise of unifying access to many different forms of information.
List of XQuery Implementations
There are some books listed; there are also people offering training and tutorials. If there is anything you found particular helpful, let us know!
There are also some mailing lists devoted to XML and to XML Query. You should look at the archives of each list before posting; you'll also need to subscribe to the list before you can post to it in most cases.
This is the W3C public mailing list on query languages, including (but not limited to) discussion on the XML Query project. Do not use this to send comments on the specification, such as errata or feature requests; see the Status section in each specification for instructions on how to send comments to the Working Group.
A mailing list hosted at x-query.com, especially for discussing XQuery.
Probably the most widely-known list for discussing XML.
W3C Specifications are aimed first and foremost at programmers writing implementations of them. We also try to make them readable for people trying to learn the language—but given a choice between making a standard precise and making it easy to read, we have to make it precise.
If you are fairly technical, you could start by reading the XML Query specification, and the XQuery Use Cases document has some examples. Many people would rather look for a book or tutorial.
Implementers: what would you most like to see here? What would have helped you the most?
The XQuery Test Suite was developed primarily to help the XML Query Working Group show that the specification could be implemented in such a way that queries would work on multiple systems - that is, interoperably. We are not currently doing active work on the test suite, but implementers continue to find it useful. It is not a conformance test suite: implementers are responsible for producing their own statements of conformance, and W3C does not have the resources to test or verify those statements.
This new work item is a development starting with work published as XQueryP: An XML Application Development Language. The goal is to investigate whether adding imperative (procedural) features such as variable assigment and sequence points to XQuery makes the language significantly more powerful or easier to use.
XPath 2 has typed values; that is, the language associates a value type with each expression, variable or function. The set of possible types is that defined by W3C XML Schema, augmented by user-defined types derived from those basic Schema types using an external schema. The way in which an XPath or XQuery system derives and checks the type of an expression is defined formally, using a mathematical notation, in the XQuery 1.0 and XPath 2.0 Formal Semantics Recommendation.
Note that both external W3C Schema support and static typing are optional features, so not all implementations support them.
You will often see things in the specifications marked as being implementation defined. You must document what your implementation does for each of these.
The W3C XML Query Working Group has published a lot of documents. Many of these were done together with the XSL Working Group and are marked Joint.
Both of these Working Groups also met with the W3C XML Schema Working Group, to make sure our specifications all work together.
First, the main XML Query documents:
XQuery 1.0: An XML Query Language (W3C Recommendation)
XML Syntax for XQuery 1.0 (XQueryX) (W3C Recommendation)
XML Query (XQuery) 1.0 Requirements (W3C Working Group Note)
XML Query 1.0 Use Cases (W3C Working Group Note)
Building a Tokenizer for XPath or XQuery (Joint Note)
XSLT 2.0 shares a lot of the same functionality:
XSL Transformations (XSLT) Version 2.0 (by the XSL Working Group)
XQuery 1.0 and XSLT 2.0 both use XPath 2.0:
XML Path Language (XPath) 2.0 (W3C Recommendation; Joint)
XPath Requirements Version 2.0 (Joint)
XPath in turn is built on a number of Joint specifications :
XQuery 1.0 and XPath 2.0 Data Model (W3C Recommendation; Joint)
XSLT 2.0 and XQuery 1.0 Serialization (W3C Recommendation; Joint)
XQuery 1.0 and XPath 2.0 Formal Semantics (W3C Recommendation; Joint)
XQuery 1.0 and XPath 2.0 Functions and Operators (W3C Recommendation; Joint)
The XML Query and XSL Working Groups are developing Full-Text Search for XPath 2.0; this will then be available for future versions of XQuery and XSLT:
The XML Query Working Group is developing an update facility for XQuery; this lets you write Query expressions that change documents and perhaps save the result.
The XML Query Working Group is starting work on the next verion of XML Query, XQuery 1.1, and also on scripting extensions for XQuery.
Send your XQuery-related news item to liam@w3.org, with [XQuery] in the Subject.
XQuery Update Facility 1.0 is now a W3C Candidate Recommendation; this means that the XML Query Working Group is asking for feedback, especially from implementors.
GCX, a streaming in-memory open source XQuery engine with static and dynamic buffer minimzation, added to list of implementations
XMLmind has released Qizx/db 2.0, an embeddable, high-speed, Java-based native XML database engine with XQuery support, including full-text; there is a commercial product and also a free engine, limited to "small" databases of under a gigabyte.
BaseX 4.0 has been released. New features include indexes, partial Full-Text support, GUI support for XML Updates, and more user interface items.
DataDirect XQuery 3.1 has been released. New features include performance enhancements, database support for database support for DB2 v9.1 for z/OS, MySQL Enterprise and Community servers, Oracle 11g, Informix, PostgreSQ, ODF support, EDI and flat file generation support, an Eclipse plugin, and more.
The list of example Web sites using XQuery has been expanded.
oXygen Editor 9.0 now includes an outline view for XQuery, improved support for using W3C XML Schema and XSL, drag-and-drop XML editing and many other features.
W3C Java Applets updated for the January Recommendations, also for the latest Update and Full Text drafts.
XQilla version 1.1.0 released; this includes support for the Last Call Working Draft of XQuery Update.
The XML Query Working Group has published a Last Call Working Draft of the XQuery Update Facility 1.0. Comments are welcome through 31 October. The corresponding XQuery Update Facility 1.0 Requirements and XQuery Update Facility 1.0 Use Cases were also updated.
Communicating Query by Liam Quin, with a paper at Extreme Markup.
baseX submitted test results for their large-file implementation of XML Query.
DataDirect DataDirect XQuery 3.0. The new version includes support for the W3C XQuery Update draft, and also adds Web Services support.
oXygen Editor 8.2 includes an XQuery debugger for MarkLogic users, and has support for XQuery modules. You can also edit, run, debug and profile both XSLT and XQuery using Saxon. Multiple platforms supported.
XQuery Scripting Extension 1.0 Requirements were published, a new work item for the XML Query Working Group, defining procedural extensions to XQuery.
XML Query (XQuery) 1.1 Requirements were published as the XML Query Working Group begins a new phase of work.
Ipedo Launches Enhanced XQuery Views, a new version of their XQuery implementation that brings them up right to date with the W3C Recommendation.
W3C Recommendation Status for XQuery 1.0: An XML Query Language, XML Syntax for XQuery 1.0 (XQueryX) and XML Path Language (XPath) 2.0, as well as the supporting specifications, XQuery 1.0 and XPath 2.0 Functions and Operators, XQuery 1.0 and XPath 2.0 Data Model (XDM), XSLT 2.0 and XQuery 1.0 Serialization and of course XQuery 1.0 and XPath 2.0 Formal Semantics. In addition, XSL Transformations (XSLT) Version 2.0 by the XSL Working Group is also a W3C Recommendation.
oXygen editor 8.0 includes debugging support for both XML Query and XSLT, with support for Berkeley XML DB, IBM DB2 Pure XML, eXist XML Database, MarkLogic, Microsoft SQLServer 2005, Oracle 10g R2, RainingData TigerLogic XDMS, SoftwareAG Tamino and XHive XML Database.
The XML Query Working Group operates under the Royalty Free terms of the W3C Patent policy. Patent disclosures relevant to the specifications produced by the XML Query working group can be found in the Implementation of the W3C Patent Policy (IPP) XML Query IPP status page and, for XSL and joint specifications the XSL WG IPP status page. Older disclosures are on the XML Query Working Group's patent disclosure page at http://www.w3.org/2002/08/xmlquery-IPR-statements.
Specifications that are joint work with the XSL working group have also the additional patent disclosures provided by the XSL wg at http://www.w3.org/Style/XSL/Disclosures.
Note: before posting to this mailing list, be sure to read the Status section in the document on which you are commenting. Most of our documents now ask you to send comments using bugzilla.
This public mailing list is used to submit comments on the publications of the XML Query and XSL working groups. This is not a discussion list (use www-ql@w3.org instead), and so you shouldn't subscribe: this list is just a way for people to provide their comments to the XML Query and XSL WGs, and for the WGs to reply. The list is publicly archived at http://lists.w3.org/Archives/Public/public-qt-comments/.
If your implementation is not here, or if you know of an implementation that is not listed, send liam@w3.org the details!
There are also products implementing XPath 2 and XPath 2 Full Text Implementations in separate lists.
Please send liam@w3.org any information about these; I have tried to contact people where possible.
Software that implements XPath 2.0, but not XML Query or XSLT 2
The following is a (non-comprehensive) list of announcements of products that will include some support for XQuery, or that are of related nature:
I have tried to indicate where authors participated in the XML Query Working Group, sent comments on the specifications, or have written implementations themselves. This does not necessarily make them good writers, but it may help you to understand their point of view and their connection with XML Query.
Books that I have received more recently are at the top of the list.
An XQuery Wikibook by Chris Wallace, Dan Mcreary and Kurt Cagle
Querying XML : XQuery, XPath, and SQL/XML in context by Jim Melton and Stephen Buxton; The Morgan Kaufmann Series in Data Management Systems, 2006. The book also has its own Querying XML Web page. [Both authors have participated heavily in the development of XML Query; Jim Melton is currently the co-chair of the W3C XML Query Working Group. - Liam]
XQuery: The XML Query Language by Michael Brundage; Addison-Wesley Professional, February 2004. With a foreword by Michael Rys. Book web site at www.qbrundage.com/xquery/. [The first half of the book is an introduction to XQuery, including an interesting chapter on Idioms. The second half is a reference. - Liam]
XQuery from the Experts edited by Howard Katz, with chapters by Don Chamberlin, Denise Draper, Mary Fernandez, Michael Kay, Jonathan Robie, Michael Rys, Jerome Simeon, Jim Tivy and Philip Wadler. Addison-Wesley Professional, September 2003. There are two chapters online at www.fatdog.com. [Although this book is older, the text is a very happy mix of tutorials, design rationale and eaxamples. The authors have been heavily involved in the design of XML Query, and most have been active memebers of the W3C XML Query Working Group; the editor, Howard Katz, has also made his own open-source implementation. - Liam]
I have not seen the following books:
XQuery Kick Start by James McGovern, Per Bothner, Kurt Cagle, James Linn and Vaidyanathan Nagarajan; Sams, September 2003. [I have not seen this book. Per Bothner made many helpful public comments on the specifications - Liam]
Early Adopter XQuery by Dan Maharry, Rogerio Saran, Kurt Cagle, Mark Fussell and Nalleli Lopez. Wrox Press; January, 2002. [This book was probably too early to be of use today, although I have not seen it to be sure. I am listing it for completeness. Michael Brundage has written that it is out of date, but that it reviewed some XQuery APIs - Liam]
Querying XML with XQuery (Advances in Database Systems) by Yannis Papakonstantinou and Ioana Manolescu. Springer; March 2006 [forthcoming, I assume. Ioana participates in the XML Query Working Group. - Liam]
XQuery - Grundlagen und fortgeschrittene Methoden by Wolfgang Lehner. dpunkt.verlag, January 2004; this book is downloadable from Amazon for US$30.
A Google search for "XQuery tutorial"|"XML Query tutorial") produced over 150 matches (Google actually said about 30,500 but this turned out to mean exactly 153).
To suggest a new pointer, send an email to member-query-feedback@w3.org.
To contact the XML Query and XSL Working Groups, you can send email to public-qt-comments at w3.org
To report errors in the specification please use bugzilla, as described in the Status section at the start of each specification.
To comment on this page, send mail to liam at w3 dot org