EXist

Synopsis
eXist is a Native XML Database, used for storing and querying XML files. Since the first versions, made available between 2000 and 2001, eXist has considerably evolved, thanks also to an active community of developers and users, and in its latest releases, it has several functions, such as support for XQuery, XInclude and XUpdate. Through an integration with ApacheCocoon, XSLT processing can be added to the whole workflow, using the pipeline concept of the Sitemap. In this way data and documents can be queried and transformed using together, in the same process, XQuery and XSLT. Moreover eXist can be integrated as a block in ApacheCocoon, so to use all the modules of this framework, and not the limited version shipped with this database. Recently, starting from version 1.1, eXist has changed the indexing core, becoming more efficient in being used with complex document-centric files, such as TEI encoded texts.

Features

 * Persistent storing and indexing of the XML documents
 * Database administration functions (data management, backup, recoveries)
 * Management of the stored documents in collections
 * XQuery engine with extentions for full-text search
 * Support for XQuery, XSLT, XInclude and XPointer (partial), XUpdate
 * XMLDB Api
 * Use of network protocols (HTTP/REST, XML-RPC, SOAP, WebDAV)
 * Integration with ApacheCocoon

User commentary
Please sign all comments.

System requirements
eXist is written in Java, and therefore requires a JDK > 1.4. Being a Java application it can be used on most operating systems, from Windows 2000/XP to Linux or MacOs X, and it can be deployed in several ways, as a standalone application, as a web application inside a servlet container (such as Apache Tomcat or Jetty) or as a Java library in a larger application.

Source code and licensing
eXist is open-source, released under the GNU LGPL license.

Support for TEI
Support for TEI is not out of the box, meaning that in the standard distribution there are not ready to use XQuery or XSLT files for TEI documents, even as examples. Notwithstanding implementation with TEI is really straightforward and there are several applications based on this software. In particular the development of the new indexing core, for a better management of complex document-centric file, such as TEI documents, has been supported by the TAPoR node of University of Victoria.

Language(s)
As wrote before, eXist is a Java application. Anyway, whole applications can be created without writing any line of programming code, but using only XQuery, XSLT, (X)HTML, CSS and Javascript. Using the available network interfaces is possible to query eXist not only with Java, and there are already available several modules for other languages (PHP, Perl) and frameworks (Spring, ColdFusion, Zope). The documentation is available only in english.

Documentation
http://exist-db.org/documentation.html

Tech support
Technical support is provived mainly throught the mailing list. Being eXist open-source all kind of support and help is made voluntarily and with no obligations. Anyway the support it is very efficient, and almost all the requests are answered in a complete and qualified way.

User community
The user community is very active and, as for the technical support, the main way of communication is the mailing list. Many participants of this list are also part of the TEI Community. There is also a wiki and an IRC channel: #existdb at irc.freenode.net.

Sample implementations

 * official demo (without TEI related examples)
 * ACH/ALLC 2005: Conference Program and Abstracts
 * Diary of Robert Graves
 * OperaLiber
 * The Anglo-Norman Dictionary
 * Early Americas Digital Archive
 * A Digital Comparative Edition and Translation of the Shorter Chinese Saṃyukta Āgama
 * Foreign Relations of the United States and other publications of the Office of the Historian, U.S. Department of State

Current version number and date of release
New Indexing Core: eXist 1.2 - 2008-01-16

Old Indexing Core: eXist 1.0.2 - 2007-02-25

How to download
http://exist-db.org/index.html#download.