Oppidum is an XML-oriented MVC framework written in XQuery / XSLT / Javascript. It allows to develop applications on top of the eXist-db native XML database. It is designed to create custom content management solutions (CMS) involving lighweight XML authoring chains.
Oppidum is developped and maintained by Stéphane Sire at Oppidoc.
Oppidum takes a declarative approach to web application development :
- all the application REST mappings are declared in a special
mapping.xml
file - each mapping entry define a rendering pipeline to render the page
- the first pipeline step generates a model with an XQuery script
- the second pipeline step generates a view with an XSLT transformation
- the last pipeline step integrates the result of the previous step into a mesh
- all the steps above can be optional and the mesh can trigger further actions
Besides the steps above, Oppidum provides support to skin applications (a skin is a set of CSS and JavaScript files), to implement access control rules with form-based identification and to manage a multi-phases development cycle (dev, test and prod).
Oppidum is designed to support the creation of reusable modules that can be aggregated together through the mapping mechanism to create complete web applications. Each module is a set of conventions (usually associated with XML vocabularies) and XQuery, XSLT, JavaScript, CSS files.
The Oppidum documentation contained in the docs
folder is also published on the Oppidum site thanks to the Git Hub project pages mechanism. This is still a work in progress.
You can also visit the Oppidum wiki to get more documentation and to learn about the roadmap.
There is a tutorial repository that contains a simple web application written with Oppidum to get started.
We have also setup an oppidum-dev Google group to share assistance and discuss new features.
You need to install eXist-db on your system first.
Then clone Oppidum from this repository directly inside the webapp
folder of your eXist installation. We strongly advise to create a projets
folder inside the webapp
folder and to checkout oppidum within that folder (actually you MUST name this folder projets
in french for the automatic installation scripts to work - this will be corrected) :
cd {eXist-Home}/webapp
mkdir projets
cd projects
git clone git://github.com/ssire/oppidum.git
For convenience Oppidum distribution contains a script/start.sh
shell script that you can use to start eXist-db. Then you can point your browser to http://localhost:8080/exist/projets/oppidum
to see a version screen. You can use the script/stop.sh
to stop it (edit the file to set your database password within it).
You should then develop your application in a sibling folder of the oppidum
folder inside the projets
folder.
Oppidum is compatible with exist 1.4.x versions out of the box. We are actually doing efforts to fully integrate it with the new eXist 2.0 release integrated development environment.
Oppidum has been developped to take benefits of AXEL (Adaptable XML Editing Library). This is a JavaScript client-side library for generating document editors into web pages. It works by transforming XTiger XML document templates into editable documents. The templates are XHTML files enriched with instrutions to control editing. It can be used together with the AXEL-FORMS extensions to create form-oriented user interfaces with dynamic constraints checking.
Some Oppidum modules are available in different editions to speed up application development (e.g. image or file upload, etc.). You are encouraged to develop and share your own modules.
Oppidum comes in three editions:
- Public Edition (PE)
- Academic Edition (AE)
- Enterprise Edition (EE)
The public edition is available to everyone free of charge and does not involve any support. This is the edition publicly available on GitHub in this repository.
The academic and the enterprise editions offer special support and development packages targeted at academic institutions or enterprises. Please [contact us](mailto:[email protected]?subject=Oppidum editions) for further inquiries.
The source code of Oppidum is released as free software, under the terms of the LGPL, please make sure that you read the license file at http://www.gnu.org/copyleft/lesser.html.
Oppidum is standalone software written in XQuery, XSLT and JavaScript. The current version is tailored to run inside eXist-db environment.
For convenience the repository includes the following pre-built libraries which are often used in web development :
- AXEL (http://ssire.github.com/axel/)
- AXEL-FORMS (http://ssire.github.com/axel-forms/)
- 960 grid system (http://960.gs/)
- JQuery (http://jquery.com/)
- JQuery UI subset (http://jqueryui.com/)
- Modernizr subset (http://modernizr.com/)
however you are totally free to use or not these libraries.