About

Xtempore is a lightweight, modular and powerful XML-based domain independent templating language. It is essentially a programming library providing flexible tools for transforming an object (model) and an XML document (template) into another XML document. Xtempore is implemented in Java and requires JVM 1.5 or later version and slf4j for logging.

Xtempore was originally developed by Timo Santasalo, founder of Teknokala Ky and is now developed and supported by that company.

Features

  • The language is defined as an XML schema and is thus supported in all XML-enabled development environments.
  • There is no specific evaluation strategy - any number of evaluation languages or strategies can be used simultaneously.
  • The core provides facilities for sharing function libraries (similar to taglibs) as well as converting values between types.
  • The language and it's implementation are extensible and all extensions are bound into XML namespaces.
  • Xtempore is open source, licensed as LGPL.

Common use cases

  • A generic view description language, integrated in an mvc-framework.
  • An effecient way of producing large XML documents from arbitrary data.

Contributing

The most obvious way of helping Xtempore development is to use it and give feedback. All feedback is welcome, whether it is about bug, documentation (or lack of), a patch to fix a bug you found or your wishlist of features.

  • Report bugs to issue tracker at SourceForge. It's advisable to read these bug writing guidelines written by Mozilla developers before posting. The best way to get your bug fixed quickly is to write a test case which fails because of the bug, and post it with your bug report.
  • Any other feedback can be sent by email to

History

The first version of Xtempore was a quick and dirty template engine for PHP4, written somewhere in 2006. After realizing the potential of the core ideas of the language, I reimplemented it in Java. The release was held back due to various reasons, including development of new and polishment of existing features as well as my commitment to document it well before releasing it.

Finally, in december 2010, the implementation and the documentation had finally reached a sufficiently mature stage, and so I released it to the world.

-- Timo Santasalo, original author and main developer