Web template system
|This article is part of a series on|
|Web template systems|
||It has been suggested that this article be merged with Template engine (web). (Discuss) Proposed since January 2013.|
|This article does not cite any references or sources. (June 2012)|
A Web template system describes the software and methodologies used to produce web pages and for deployment on websites and delivery over the Internet. Such systems process web templates, using a template engine. It is a web publishing tool present in content management systems, software frameworks, HTML editors, and many other contexts.
A web template system is composed of:
- A template engine: the primary processing element of the system;
- Content resource: any of various kinds of input data streams, such as from a relational database, XML files, LDAP directory, and other kinds of local or networked data;
- Template resource: web templates specified according to a 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 HTTP, or another internet protocol.
Motivations and typical uses 
Various agencies and organizations use web template systems for mass-production of content when slower production alternatives prove unfeasible.
For an introductory overview, a news website is used as example. Consider a "static website", where all web pages are static, built by a web designer, and that needs to add and update pages every day. A typical strategy to automate the web-designer's "repetitive work" is:
- choose a web template system to maintain the website;
- group news items with different presentation needs;
- specify the "presentation standards" through web templates, for each group of news;
- specify a content resource to generate or update the content of each news item.
Style standardization 
|This section requires expansion. (March 2012)|
Separation of concerns 
For the web designer, when each web page comes from a web template, they can think about a modular web page structured with components that can be modified independently of each other. These components may include a header, footer, global navigation bar (GNB), local navigation bar, and content well.
For other members of the "site team", a template system frees webmasters to focus on technical maintenance, content suppliers to focus on content, and for all of them more reliability.
Moreover, it has the following advantages to its use:
- Ease of design change: presentation variations on templates are "content invariant", meaning a web designer can update the presentation without wider infrastructural preoccupations.
- Ease of interface localization: menus and other presentation standards are easy to make uniform, for users browsing on the site.
- Possibility to work separately on design and code by different people at the same time.
Formal characterization 
|This section requires expansion. (May 2008)|
Kinds of template systems 
There are many public software and commercial packages promoted as being web templates and template engines, but there is a great diversity of solutions. To select and group them in a systematic way, the first step is to characterize them as template systems.
A second step is to group and identify main properties of each characterized system:
- The architecture of these systems, into a client–server reference model, is the main division criteria for group then—although the use of diverse modern web cache strategies, architectures can be characterized. There are, as illustrated, three groups: outside server systems, server-side systems, and distributed systems.
- Main attributes:
- Template languages may be:
- Embedded or event-driven.
- Simple, iterable, programmable, or complex.
- Specification possession: the standards of the language are controlled by a public or not-public. The possession strategy and the ownership indicate the stability and credibility of the specification. Note that in most jurisdictions language specification cannot be copyrighted, so the possession is not absolute.
- Template engine possession: it is public or not (ownership rights), indicating if source codes of the template engine are open, or not.
- Template languages may be:
Many template systems are a component of a platform or framework. They are referred to as the "platform's template system".
Outside server systems 
HTML editors are the typical systems using outside server subsystems. They also commonly include themes in place of CSS styles. In general the template language is to be used only with the editor's software.
|Dreamweaver||Macromedia||HTML authoring. Embedded iterable language.|
|FrontPage||Microsoft||HTML authoring. Embedded iterable language.|
Many server-side template systems have the option to publish the output pages on the server, where the published pages will be static. It is a common feature on content management systems, like Vignette. But this does not have to be considered an out-server generation.
In the majority of the cases, this "publish option" doesn't interferes with the template system, and it can be made by external software, as Wget.
Server-side systems 
Server-side dynamic pages began to be generated by 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:
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 Embedded complex languages.
|ColdFusion Markup Language (CFM)||Public (Railo, OpenBD). Proprietary (Adobe ColdFusion).|
|JavaServer Pages (JSP)||Public, Java platform.|
|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.
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.
- Closure Templates
- Tempo JSON templates
- Yeast templates
- Merge On Browse
Distributed systems 
See also 
- Dynamic web page
- TBBS[disambiguation needed]
- Template system
- UIML (User Interface Markup Language)
- Web template
- Web template engine
- XML Sapiens