Paradigm | declarative, functional, modular |
---|---|
Designed by | W3C |
First appeared | 2007 |
Stable release |
3.0/ April 8, 2014
|
Typing discipline | dynamic or static,strong |
OS | Cross-platform |
Filename extensions | .xq, .xqy, .xquery |
Website | www |
Major implementations | |
Many | |
Influenced by | |
XPath, SQL, XSLT | |
|
XQuery (XML Query) is a query and functional programming language that queries and transforms collections of structured and unstructured data, usually in the form of XML, text and with vendor-specific extensions for other data formats (JSON, binary, etc.). The language is developed by the XML Query working group of the W3C. The work is closely coordinated with the development of XSLT by the XSL Working Group; the two groups share responsibility for XPath, which is a subset of XQuery.
XQuery 1.0 became a W3C Recommendation on January 23, 2007.
XQuery 3.0 became a W3C Recommendation on April 8, 2014.
"The mission of the XML Query project is to provide flexible query facilities to extract data from real and virtual documents on the World Wide Web, therefore finally providing the needed interaction between the Web world and the database world. Ultimately, collections of XML files will be accessed like databases".
XQuery is a functional, side effect-free, expression-oriented programming language with a simple type system, summed up by Kilpeläinen:
All XQuery expressions operate on sequences, and evaluate to sequences. Sequences are ordered lists of items. Items can be either nodes, which represent components of XML documents, or atomic values, which are instances of XML Schema base types like xs:integer or xs:string. Sequences can also be empty, or consist of a single item only. No distinction is made between a single item and a singleton sequence. (...) XQuery/XPath sequences differ from lists in languages like Lisp and Prolog by excluding nested sequences. Designers of XQuery may have considered nested sequences unnecessary for the manipulation of document contents. Nesting, or hierarchy of document structures is instead represented by nodes and their child-parent relationships