Documentation
Welcome to eXist-db. This article serves as an index to the eXist-db documentation articles, which will help you get to know, install, and use eXist-db.
Getting Started
The following articles and resources will help you get started using eXist-db.
- Basic Installation
 - 
                                        
How to install eXist-db and fire it up for the first time.
 - Screencasts
 - 
                                        
For the first steps with your freshly installed eXist-db, watch the screencasts available on the eXist-db homepage.
 - eXist-db Book
 - 
                                        
There is a whole book about eXist-db, written for both the novice and the more experienced user.
 - Getting Help
 - 
                                        
How to get in touch with the eXist-db community for help and advice.
 - Dashboard
 - 
                                        
How to use and populate eXist-db's main user interface, the dashboard.
 - Uploading files
 - 
                                        
How to get files in and populate your database.
 - WebDAV
 - 
                                        
How to upload and manage files in the database with a WebDAV client.
 - Using Collections in eXist-db
 - 
                                        
How to set up a collection structure in eXist-db.
 - Learning XQuery
 - 
                                        
Tips and resources for newcomers to XQuery and eXist-db.
 - How to use oXygen together with eXist-db
 - 
                                        
If you're using oXygen, this article describes how to make the most of it in combination with eXist-db.
 - How to report an issue
 - 
                                        
If you think you've found a bug, this article will tell you how to report it.
 
XQuery
eXist-db's main programming language is XQuery. This documentation set does not contain a full introduction to XQuery. For this read the excellent book about XQuery by Priscilla Walmsley. The XQuery related articles below discuss specific eXist-db related details or shed light on some of the lesser known features of the language.
- Learning XQuery
 - 
                                        
Tips and resources for newcomers to XQuery and eXist-db.
 - XQuery in eXist-db
 - 
                                        
This discusses the XQuery implementation of eXist-db for the somewhat more experienced user.
 - KWIC (Keywords In Context)
 - 
                                        
How to display search results in context (parts of the document surrounding the search match).
 - XQuery Update Extensions
 - 
                                        
How to update XML stored in the database using eXist-db's XQuery Update extension.
 - xqDoc
 - 
                                        
Describes eXist-db's support for the xqDoc, a standard for documenting your XQuery functions and libraries with specially-formatted comments.
 - XQSuite
 - 
                                        
How to add tests to your XQuery functions with XQSuite, an annotation-based framework.
 
Application development
eXist-db is not only a database but also an excellent application development platform. The following articles will help you find your way in this:
- Getting Started with Web Application Development
 - 
                                        
How to build a basic web application using the built-in HTML templating framework.
 - Using Collections in eXist-db
 - 
                                        
How to set up your application's collection structure in eXist-db.
 - xmldb module
 - 
                                        
An overview of the xmldb XQuery function module for querying and manipulating database contents.
 - Containerization via Docker
 - 
                                        
How to use eXist-db's official docker images for development and production.
 - URL Rewriting
 - 
                                        
How to control the mapping of URL's to code in eXist-db. This is one the most important mechanisms in eXist-db to base applications on.
 - XSL Transformations
 - 
                                        
How to perform XSL Transformation with XQuery.
 - FO Rendering
 - 
                                        
How to perform FO (Formatting Objects) Rendering with XQuery.
 - Indexing
 - 
                                        
An overview of eXist-db's indexes and how to configure them. More about indexing in:
- Full Text indexing
 - 
                                                
How to use eXist-db's Lucene based full-text indexing.
 - N-Gram Index
 - 
                                                
How to configure the
ngramindex. - Range Index
 - 
                                                
How to use eXist-db's super fast modularized range index based on Apache Lucene.
There is also an older version of the range index, kept for compatibility reasons. Usage of this range index is discouraged.
 
 - Testing and Validation
 - 
                                        
This will provide you with an overview of testing eXist-db and its applications. More about testing in:
- XML Validation
 - 
                                                
How to validate XML in eXist-db.
 - XQSuite
 - 
                                                
XQSuite is an annotation-based framework that allows you to add unit tests to XQuery functions and execute them.
 - Integration testing
 - 
                                                
How to configure automated test pipelines, and recommends minimal test configurations.
 
 - XInclude Support
 - 
                                        
How XML inclusion (XInclude) processing works in eXist-db.
 - The beginners guide to XRX
 - 
                                        
How to create a simple application using XRX (XForms, REST, and XQuery).
 - Package Repository
 - 
                                        
How to work with EXPath packages in eXist-db.
 - Content extraction
 - 
                                        
How to extract and index non-XML contents, like PDF or Word documents.
 - REST-Style Web API
 - 
                                        
How to use eXist-db's REST interface, a useful tool in building applications.
 - HTTP Request/Session
 - 
                                        
An overview of functions for working with HTTP requests and sessions.
 - Scheduler Module
 - 
                                        
How to use eXist-db job scheduling system to regularly execute tasks.
 - Security
 - 
                                        
When you get serious writing applications, you need to be aware of the security model of eXist-db.
 - XForms Introduction
 - 
                                        
Introduces the bright shiny world of XForms inside eXist-db.
 - Tuning the Database
 - 
                                        
How to optimize your queries and indexes.
 - Configuring Database Triggers
 - 
                                        
How to use and configure triggers in your database that fire when things get created, updated or deleted.
 - Versioning Extension
 - 
                                        
How to use the built-in versioning system of eXist-db.
 
Interfaces
eXist-db provides many ways of interfacing with the database.
- REST-Style Web API
 - 
                                        
How to use eXist-db's REST interface.
 - SOAP Interface Developer's Guide
 - 
                                        
How to add a SOAP interface to eXist-db using Java code.
 - XML-RPC API Developer's Guide
 - 
                                        
How to interface with eXist-db using the XML-RPC API.
 - WebDAV
 - 
                                        
How to use eXist-db's WebDAV interface.
 
Operations
Operations is the art of installing eXist-db and keeping it up-and-running professionally. This includes things like more advanced installation types, doing backups and restores, automate data transfers, etc.
- Java Admin Client
 - 
                                        
This is a utility for performing basic administrative tasks. It has both a GUI and a command line interface.
 - Configuration
 - 
                                        
How to configure eXist-db using its main configuration file
conf.xml. - Backups
 - 
                                        
How to backup and restore an eXist-db database.
 - Advanced Installation
 - 
                                        
How to install eXist-db on a headless (no GUI) system and run it as a service.
 - Ant tasks
 - 
                                        
How to use the specific eXist-db
Anttasks to automate common system administration and operation tasks. - Database Deployment
 - 
                                        
How to install eXist-db as a stand-alone or embedded server.
 - Building eXist-db
 - 
                                        
How to build Java
.jarfiles from an eXist-db distribution. - Performance FAQ
 - 
                                        
A short FAQ about eXist-db's performance.
 - Production Use - Good Practice
 - 
                                        
How to configure eXist-db for use on a production system.
 - Production use - Proxying eXist-db behind a Web Server
 - 
                                        
How to proxy eXist-db behind a web server like Nginx or Apache.
 - JMX
 - 
                                        
eXist-db has a JMX interface for access to internal statistics about memory, caching, etc.
 - Scheduler Module
 - 
                                        
How to schedule jobs (like backups).
 - Security
 - 
                                        
The security model of eXist-db. Also, how to connect eXist-db to other authentication realms like LDAP or OAuth.
 - Tuning the Database
 - 
                                        
How to optimize the database's performance.
 - Performance FAQ
 - 
                                        
A short FAQ about eXist-db's performance.
 - Upgrade Guide
 - 
                                        
How to upgrade from an older version of eXist-db.
 - Incompatibilities
 - 
                                        
Consult this article when you upgrade from an older version of eXist-db.
 
Java development
eXist-db is based on Java. Besides using eXist-db as a stand-alone application platform, you can also use it from within Java code. The following articles will help you with this.
- Database Deployment
 - 
                                        
How to install eXist-db as a stand-alone or embedded server. An embedded server can be accessed directly from Java code.
 - Writing Java Applications with the XML:DB API
 - 
                                        
How to work with eXist-db from Java code using the XML:DB API. This API provides a common interface to native or XML-enabled databases and supports the development of portable, reusable applications.
 - Building eXist-db
 - 
                                        
How to build Java
.jarfiles from an eXist-db distribution. - Developer's Guide to Modularized Indexes
 - 
                                        
How the internal indexing mechanism works and how to add your own indexes to it.
 - Log4j Logging Guide
 - 
                                        
How to add logging to your Java code using Log4J.
 - SOAP Interface Developer's Guide
 - 
                                        
How to add a SOAP interface to eXist-db using Java code.
 - XML-RPC API Developer's Guide
 - 
                                        
How to interface with eXist-db using the XML-RPC API.
 - Extension Modules
 - 
                                        
How to create eXist-db extension modules (in Java); contains a list of available extension modules.
 - JMX
 - 
                                        
eXist-db provides access to various management interfaces using JMX.
 - Developer's Guide to Modularized Indexes
 - 
                                        
How the internal indexing mechanism works and how to add your own indexes to it.
 - Log4j Logging Guide
 - 
                                        
How to add logging to your Java code using Log4J.
 - SOAP Interface Developer's Guide
 - 
                                        
How to add a SOAP interface to eXist-db using Java code.
 - XML-RPC API Developer's Guide
 - 
                                        
How to interface with eXist-db using the XML-RPC API.
 - Extension Modules
 - 
                                        
How to create eXist-db extension modules (in Java) and contains a list of available extension modules.
 
Developing eXist-db
The following articles provide information on how to work on eXist-db itself, either by enhancing its code or providing documentation.
- eXist-db Developer Manifesto
 - 
                                        
Guidelines for developers who wish to contribute to eXist-db's code base.
 - Code Review Guide
 - 
                                        
How to review somebody else's (or your own of course) code.
 - Author Reference
 - 
                                        
How to write a documentation article for eXist-db (like the ones you are looking at now).
 - Legal Statement
 - 
                                        
The legal status of eXist-db as an open source product.
 
Alphabetical index
This section lists all available articles in title alphabetical order.
A B C D E F G H I J K L N P R S T U V W X
- Advanced Installation Methods
 - Ant Tasks
 - Application properties
 - Application Server Configuration
 - Author Reference
 
- Code Review Guide
 - Configuring Database Indexes
 - Configuring Database Triggers
 - Containerization via Docker
 - Creating CRUDS applications with XRX in eXist
 
- Dashboard
 - Database Backup and Restore
 - Database Deployment
 - Developer's Guide to Modularized Indexes
 - Documentation
 
- How to report issues
 - HTML Templating Module
 - HTTP-Related Functions in the Request and Session Modules
 
Subject index
This section lists all available articles by subject.
- Configuring Database Indexes
 - Configuring Database Triggers
 - Containerization via Docker
 - Creating CRUDS applications with XRX in eXist
 - Extracting Content from Binary Files
 - FO Rendering
 - Getting Started with Web Application Development
 - HTML Templating Module
 - HTTP-Related Functions in the Request and Session Modules
 - Integration Testing
 - Package Repository
 - REST-Style Web API
 - Scheduler Module
 - Security
 - Testing
 - The xmldb module
 - Tuning the Database
 - URL Rewriting
 - Using collections in eXist-db
 - Versioning Extensions
 - XForms Introduction
 - XInclude Support
 - XML Validation
 - XQSuite - Annotation-based Test Framework for XQuery
 - XSL transformations
 
- Basic Installation
 - Creating CRUDS applications with XRX in eXist
 - Dashboard
 - Documentation
 - Getting Data into eXist-db
 - Getting Help
 - Getting Started with Web Application Development
 - How to report issues
 - Learning XQuery and eXist-db
 - Using collections in eXist-db
 - Using oXygen with eXist-db
 - WebDAV
 
- Building eXist-db
 - Database Deployment
 - Developer's Guide to Modularized Indexes
 - Extension Modules
 - Java Management Extensions (JMX)
 - Log4j Logging Guide
 - SOAP Interface Developer's Guide
 - Writing Java Applications with the XML:DB API
 - XML-RPC API Developer's Guide
 
- Advanced Installation Methods
 - Ant Tasks
 - Application Server Configuration
 - Building eXist-db
 - Containerization via Docker
 - Database Backup and Restore
 - Database Deployment
 - Java Admin Client
 - Java Management Extensions (JMX)
 - Known Issues when upgrading
 - Performance FAQ
 - Production Use - Good Practice
 - Production use - Proxying eXist-db behind a Web Server
 - Scheduler Module
 - Security
 - Troubleshooting
 - Tuning the Database
 - Upgrade Guide