Open Power Template
Open Power Template is a web template engine written in PHP 5. A common strategy in designing web application is separation of the application logic (i.e. data processing) from the presentation (displaying the data). OPT is a tool for implementing such separation. The presentation layer is represented by templates, text files with HTML code and extra instructions controlling the data substitution. OPT uses a dedicated XML template language for writing templates. It is not a general-purpose, but a domain-specific language. It was primarily designed to support and simplify template-specific problems with a set of  declarative instructions. Instead of implementing the rendering algorithms and statements, like in imperative programming, the template designer specifies the expected result and features. This aims to ease the costs and efforts associated with the software development and further maintenance. The library provides an object-oriented API based on the solutions from popular frameworks. As it is the first member of a bigger project, "Open Power Libs", it is built upon a small OPL core library which provides the basic features. History. The project started in November 2004, as a template engine for a discussion board project inspired by Smarty. While  it later failed, the library became independent. In July 2006, the version 1.0.0 was released. It offered a template language with Smarty-like syntax and a small set of declarative instructions. In January 2007, the developers release the version 1.1.0 which brings some notable improvements, such as pagination support and tree rendering. In January 2008, the developers form an open-source programming team, "Invenzzia" to develop OPT and other PHP projects. At the same time, the development of Open Power Template 2.0 began. The last version of the 1.1 branch was released in May 2008 and the group focused on  the OPT 2.0 development. The new library went into the beta-stage in December and the first stable version was released in July 2009. Features. The OPT 2.0 template language is an XML application and allows to manipulate the XHTML document structure. The other features are: The built-in XML parser can be reconfigured to parse certain HTML documents or plain text content. Sample application. Since the templates are separated from the application logic, you need at least two files. The first one contains the presentation code as an XML template: <?xml version="1.0" ?> <opt:root escaping="yes">  </opt:root> The second one generates the data and configures the library: require('./libs/Opl/Base.php'); Opl_Loader::setDirectory('./libs/'); Opl_Loader::register(); $tpl = new Opt_Class; $tpl->sourceDir = './templates/'; $tpl->compileDir = './templates_c/'; $tpl->setup(); $view = new Opt_View('template.tpl'); // Assigning the script data to the template $view->pageTitle = 'Sample OPT page'; $view->introduction = 'Sample text'; $view->list = array(0 => $view->setFormat('list', 'Array'); $output = new Opt_Output_Http; $output->render($view);