Web template system
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages)
|
Data transformation |
---|
Concepts |
Transformation languages |
|
Techniques and transforms |
|
Applications |
Related |
A web template system in
Overview
A web template system is composed of the following:
- A processing element of the system;[1]
- networkeddata;
- template language;
The template and content resources are processed and combined by the template engine to mass-produce web documents. For purposes of this article, web documents include any of various output formats for transmission over the web via
Template engine
Example
With the model typically held in a relational database, the remaining components of the MVC architecture are the control and view. In the simplest of systems these two are not separated. However, adapting the separation of concerns principle one can completely decouple the relationships.
For example, the view template may look like this:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>Sites</title></head>
<body><h1 data-xp="title"><!-- placeholder --></h1></body>
</html>
Then, the control template loads the view, and then uses XPath addressing[original research?] to insert components from a database, for instance:
<?php
$doc = new DOMDocument;
$doc->preserveWhiteSpace = false;
$doc->Load('view.html');
$titlenode = $doc->createTextNode("Like this");
$xpath = new DOMXPath($doc);
$xpath->registerNamespace("h", "http://www.w3.org/1999/xhtml");
$query = "//h:*[@data-xp='title']/comment()";
$entries = $xpath->query($query);
foreach ($entries as $entry) {
$entry->parentNode->replaceChild($titlenode, $entry);
}
echo $doc->saveXML();
?>
Kinds of template systems
A web browser and web server are a
- Server-side – run-time substitution happens on the web server
- Client-side – run-time substitution happens in the web browser
- Edge-side – run-time substitution happens on a proxy between web server and browser
- Outside server – static web pages are produced offline and uploaded to the web server; no run-time substitution
- Distributed – run-time substitution happens on multiple servers
Template languages may be:
- Embedded or event-driven.
- Simple, iterable, programmable, or complex.
- Defined by a consortium, privately defined, or de facto defined by an open implementation. Ownership influences the stability and credibility of a specification. However, in most jurisdictions, language specification cannot be copyrighted, so control is seldom absolute.
The source code of the
Many template systems are a component of a larger programming platform or framework. They are referred to as the "platform's template system". Some template systems have the option of substituting a different template language or engine.[citation needed]
Language support
or other languages) are examples, themselves, of web template engines. These technologies are typically used in server-side templating systems, but could be adapted for use on an "edge-side" proxy or for static page generation.Static site generators
Static site generators are engines that use flat text input files like
Static HTML Editors
Many server-side template systems have an option to publish output pages on the server, where the published pages are
Server-side systems
People began to use server-side dynamic pages generated from templates with pre-existent software adapted for this task. This early software was the preprocessors and macro languages, adapted for the web use, running on CGI. Next, a simple but relevant technology was the direct execution made on extension modules, started with SSI.
Many template systems are typically used as server-side template systems:
System label/name | Platform/framework | Notes |
---|---|---|
Blade | PHP | Public. Part of Laravel |
CheetahTemplate | Python | Public. Embedded complex language .
|
Django
|
Python | Use the "Django template language". |
FreeMarker | Java
|
Public. |
Facelets | Jakarta EE | Public. Part of Jakarta Faces |
Genshi
|
Python | Public |
Haml | Ruby or Other | Public. |
Hamlets | Java | Public. |
Jinja2 | Python | Public. Embedded complex language .
|
Kid
|
Python | |
Lasso
|
LassoSoft, LLC | Proprietary. Interpreted Programming Language and Server |
Mustache | Public. | |
Basic Server Side Includes (SSI) | The basic directives fix a "standard". | Embedded simple language , if exclude exec directive.
|
Smarty | PHP | Public. Embedded complex language .
|
Template Toolkit | Perl | Public. Embedded complex language .
|
Template Attribute Language (TAL) | Zope, Python, Java, Perl, PHP, XSLT | Public; a.k.a. Macro Expansion TAL (METAL)
|
Tiles | Java
|
Public. Supports multiple template languages (JSP, Velocity, Freemarker, Mustache) from various frameworks (servlet, portlets, struts, spring). |
Thymeleaf | Java
|
Public. |
Topsite | Python | Public. "As of 2008-02-20, this project is no longer under active development."[7] |
Twig | PHP | |
PHPlib
|
PHPlib
|
Public. Embedded iterable language .
|
WebMacro | Java
|
Public. Embedded iterable language .
|
WebObjects | Java
|
Use the WebObjects Builder as engine. |
Velocity | Java
|
Public. Use VTL - Velocity Template Language. |
Vignette
|
Proprietary. | Commercial solution. Embedded complex language .
|
XSLT (standard language) | Any with an XSLT parser | Standard. Event-driven programmable language .
|
XQuery (standard language) | Any with an XQuery parser | Standard. Embedded programmable language .
|
Technically, the methodology of embedding programming languages within HTML (or XML, etc.), used in many "server-side included script languages" are also templates. All of them are
System label/name | Notes |
---|---|
Active Server Pages (ASP) | Proprietary ( PerlScript , etc. extensions for ASP.
|
eRuby | Public (Ruby). |
ColdFusion Markup Language (CFM) | Public ( OpenBD). Proprietary (Adobe ColdFusion ).
|
Jakarta Server Pages (JSP) | Public, Jakarta EE. |
Active Perl | Public. |
PHP | Public. |
OpenACS
|
Public (Tcl). |
There are also
Preprocessor | Notes |
---|---|
C preprocessor | Public. Embedded iterable language .
|
M4 | Public. Embedded complex language .
|
Edge-side systems
Edge-Side template and inclusion systems. "Edge-side" refers to web servers that reside in the space between the client (browser) and the originating server. They are often referred to as "reverse-proxy" servers. These servers are generally tasked with reducing the load and traffic on originating servers by caching content such as images and page fragments, and delivering this to the browser in an efficient manner.
Basic Edge Side Includes (ESI) is an SSI-like language. ESI has been implemented for content delivery networks. The ESI template language may also be implemented in web browsers using JavaScript and Ajax, or via a browser "plug-in".
Client-side systems
Many web browsers can apply an XSLT stylesheet to XML data that transforms the data into an XHTML document, thereby providing template functionality in the browser itself.
Other systems implement template functionality in the browser using
Distributed systems
The most simple form is transclusions (HTML frames). In other cases dynamic web pages are needed.
Examples:
- Ajax
- Rich Internet application
See also
Concepts: | Standards: | Software: |
References
- ^ "Template engine". phpwact.org wiki. Archived from the original on December 4, 2012. Retrieved 7 January 2013.
- ISBN 0-596-00285-8.
- ISBN 0-321-32194-4.
- ISBN 0-321-12742-0.
- )
- ^ "{{mustache}}". Retrieved 15 October 2013.
- ^ jodyburns. "Topsite Templating System". Retrieved 15 October 2013.
9. Free ecommerce website themes MG Technologies Blogs and Information Portal of Website Themes.
External links
- JavaScript template libraries comparison from 2009
- Enforcing Strict Model–View Separation in Template Engines
- A Double-Model Approach to Achieve Effective Model–View Separation in Template Based Web Applications
- A PHP template engine comparison with graphic charts
- Comparisons/benchmarks of some Python template-engines and some generic thoughts about template-engines
- web-mode.el is an emacs major for editing web templates