FullMoon - An XML Processing framework
FullMoon is an Open Source software framework for processing or transforming XML documents into various
output formats.
Although it is not limited to any particular XML input format it was originally
designed for processing large UML models serialized in XMI (XML Metadata Interchange) format.
The processing implementations that are packaged with FullMoon include:
- GML Application Schema pre-encoding conformance testing rules
- GML Application Schema encoding rules (based on ISO 19118 and ISO 19136 Annex E)
- GML Application Schema HTML documentation generator rules
- FullMoon Framework regression test suite
FullMoon Architecture
The FullMoon framework implements a Java wrapper around suites of executable XQuery scripts and modules. Each set of XQuery scripts implements a particular task and represents one logical unit - a FullMoon module. The primary input document is stored as a "collection" in a local XML-database, using the eXist implementation. Various other collections can be added to the eXist database, which allows the XQueries to resolve or query additional structured information, external to the primary input document.
The FullMoon Architecture is composed of two main logical units:
- FullMoon Processing Framework that performs all XMI processing tasks;
-
eXist XML database that is running underneath a servlet container:
- Apache Tomcat 6.0
- Embedded Jetty (eXist v1.2.x and later)
The eXist database engine is responsible for storing XML documents, indexing them and providing quick and convenient access to the large amounts of XML encoded data.
The XQuery Suite Execution Engine is a Java application that provides access to FullMoon modules in a convenient manner, loads XQuery modules to the database, and executes XQuery scripts against the model that is currently being processed, collecting results and generating reports where applicable. In general, every XQuery script executed by FullMoon framework returns an XML encoded result set, that is either printed out or saved to output XML report file.
FullMoon also provides a Regression Test Suite that tests the integrity of the framework by running all modules against sample models (provided in FullMoon distribution) and checking the generated results with expected ones (also provided).
Since both FullMoon processing framework and eXist database are developed as Java applications they depend on the Java Runtime Environment that must be installed first.