World Library  
Flag as Inappropriate
Email this Article

Template processor

Article Id: WHEBN0007392831
Reproduction Date:

Title: Template processor  
Author: World Heritage Encyclopedia
Language: English
Publisher: World Heritage Encyclopedia

Template processor

A diagram illustrating all of the basic elements and processing flow of a template engine.

A template processor (also known as a template engine or template parser) is software designed to combine one or more templates with a data model to produce one or more result documents.[1][2][3] The language that the templates are written in is known as a template language or templating language. For purposes of this article, a result document is any kind of formatted output, including documents, web pages, or source code (in source code generation), either in whole or in fragments. A template engine is ordinarily included as a part of a web template system or application framework, and may be used also as preprocessor or filter.


  • Typical features 1
  • Embedded template engines 2
  • System elements 3
    • Data model 3.1
    • Source template 3.2
    • Template engine 3.3
    • Result documents 3.4
    • Operating System Templating 3.5
  • Uses 4
    • Template engine 4.1
    • Document generation 4.2
    • Source code generation 4.3
    • Software functionality 4.4
  • Comparison 5
  • Benefits of using template engines 6
  • See also 7
  • References 8
  • External links 9

Typical features

Template engines typically include features common to most high-level programming languages, with an emphasis on features for processing plain text.

Such features include:

Embedded template engines

While template processors are typically a separate piece of software, used as part of a system or framework, simple templating languages are commonly included in the string processing features of general-purpose programming languages, and in text processing programs, notably text editors or word processors. The templating languages are generally simple substitution-only languages, in contrast to the more sophisticated facilities in full-blown template processors, but may contain some logic.

Simple examples include printf format strings, found in many programming languages, and snippets, found in a number of text editors and source code editors. In word processors, templates are a common feature, while automatic filling in of the templates is often referred to as mail merge.

An illustrative example of the complementary nature of parsing and templating is the s (substitute) command in the sed text processor, originating from search-and-replace in the ed text editor. Substitution commands are of the form s/regexp/replacement/, where regexp is a regular expression, for parsing input, and replacement is a simple template for output, either literal text, or a format string containing the characters & for "entire match" or the special escape sequences \1 through \9 for the nth sub-expression. For example, s/(cat|dog)s?/\1s/g replaces all occurrences of "cat" or "dog" with "cats" or "dogs", without duplicating an existing "s": (cat|dog) is the 1st (and only) sub-expression in the regexp, and \1 in the format string substitutes this into the output.

System elements

All template processing systems consist of at least these primary elements:

  • an associated data model;
  • one or more source templates;
  • a processor or template engine;
  • generated output in the form of result documents.

Data model

This may be a relational database, a source file such as XML, an alternate format of flat file database, a spreadsheet or any of other various sources of preformatted data. Some template processing systems are limited in the types of data that can be used. Others are designed for maximum flexibility and allow many different types of data.

Source template

Source templates are traditionally specified:

  • according to a pre-existing programming language;
  • according to a specially-defined template language;
  • according to the features of a hosting software application; or
  • according to a hybrid combination of some or all of the above.

Template engine

The template engine is responsible for:

  • connecting to the data model;
  • processing the code specified in the source templates; and
  • directing the output to a specific pipeline, text file, or stream.

Additionally some template engines allow additional configuration options.

Result documents

These may consist of an entire document or a document fragment.

Operating System Templating

In an o/s context, templating refers to creating a single virtual machine image as a guest operating system, then saving it as a tool for multiple running virtual machines (Gagne, 2012, p. 716). The technique is used both in virtualization and cloud computing management, and is common in large server warehouses. [4]


Template processing is used in various contexts for different purposes. The specific purpose is ordinarily contingent upon the software application or template engine in use. However, the flexibility of template processing systems often enables unconventional uses for purposes not originally intended by the original designers.

Template engine

A template engine is a specific kind of template processing module that exhibits all of the major features of a modern programming language. The term template engine evolved as a generalized description of programming languages whose primary or exclusive purpose was to process templates and data to output text. The use of this term is most notably applied to web development using a web template system, and it is also applied to other contexts as well.[5]

Document generation

Document generation frameworks typically use template processing as the central model for generating documents.

Source code generation

Source code generation tools support generation of computer programmers.

Software functionality

A web template engine processes web templates and source data (typically from a relational database) to produce one or more output web pages or page fragments. It is ordinarily included as a part of a web template system or application framework. Currently, template processing software is most frequently used in the context of development for the web.


XSLT is a template processing model designed by W3C. It is designed primarily for transformations on XML data (into web documents or other output).

Programming languages such as Perl, Python, PHP, Ruby, C#, and Java support template processing either natively, or through add-on libraries and modules. JavaServer Pages,[6] Active Server Pages,[7] Genshi (for Python), and eRuby are examples of template engines designed specifically for web application development.

Moreover, template processing is sometimes included as a sub-feature of software packages like text editors, IDEs and relational database management systems.

Benefits of using template engines

  • encourages organization of source code into operationally-distinct layers (see e.g., MVC)
  • enhances productivity by reducing unnecessary reproduction of effort
  • enhances teamwork by allowing separation of work based on skill-set (e.g., artistic vs. technical)

See also


  1. ^ Niemeyer, Patrick (2002). Learning Java. Sebastopol: O'Reilly.  
  2. ^ Manolescu, Dragos (2006). Pattern Languages of Program Design 5. Reading: Addison-Wesley Professional.  
  3. ^ Fowler, Martin (2003). Patterns of Enterprise Application Architecture. Boston: Addison-Wesley.  
  4. ^ Silberschatz Galvin Gagne (2012). Operating Systems Concepts. New York: Wiley.  
  5. ^ (see e.g., Velocity, TemplateToolkit, Freemarker ).
  6. ^ JavaServer Pages is a technology released by Sun for use with the Java programming language. "JavaServer Pages Technology". 2006-10-10. Retrieved 2006-10-10. 
  7. ^ ASP 1.0 was originally released for use with Microsoft VBScript and JScript. It was an extension to Microsoft IIS.  

External links

  • Enforcing Strict Model-View Separation in Template Engines
This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.

Copyright © World Library Foundation. All rights reserved. eBooks from World Library are sponsored by the World Library Foundation,
a 501c(4) Member's Support Non-Profit Organization, and is NOT affiliated with any governmental agency or department.