Un procesador de plantillas (también conocido como motor de plantillas o analizador de plantillas ) es un software diseñado para combinar plantillas con datos (definidos por un modelo de datos ) para producir documentos o programas resultantes . [1] [2] [3] El lenguaje en el que se escriben las plantillas se conoce como lenguaje de plantillas o lenguaje de plantillas . Para los fines de este artículo, un documento resultante es cualquier tipo de salida formateada, incluidos documentos , páginas web o código fuente (en generación de código fuente ), ya sea en su totalidad o en fragmentos. Un motor de plantillas se incluye normalmente como parte de un sistema de plantillas web o un marco de aplicación , y también se puede utilizar como preprocesador o filtro .
Los motores de plantillas generalmente incluyen características comunes a la mayoría de los lenguajes de programación de alto nivel , con énfasis en las características para procesar texto simple .
Estas características incluyen:
Si bien los procesadores de plantillas suelen ser una pieza de software independiente, que se utiliza como parte de un sistema o marco de trabajo, los lenguajes de plantillas simples suelen incluirse en las funciones de procesamiento de cadenas de los lenguajes de programación de propósito general y en los programas de procesamiento de texto, en particular los editores de texto o los procesadores de texto . Los lenguajes de plantillas son generalmente lenguajes simples de solo sustitución, en contraste con las funciones más sofisticadas de los procesadores de plantillas completos, pero pueden contener algo de lógica.
Algunos ejemplos sencillos son las cadenas de formato de impresión 'printf' , que se encuentran en muchos lenguajes de programación, y los fragmentos de código , que se encuentran en varios editores de texto y editores de código fuente . En los procesadores de texto, las plantillas son una característica común, mientras que el llenado automático de las plantillas se suele denominar combinación de correspondencia .
Un ejemplo ilustrativo de la naturaleza complementaria del análisis y la creación de plantillas es el s
comando (substitute) del procesador de texto sed , que se origina a partir de la función de búsqueda y reemplazo del editor de texto ed . Los comandos de sustitución tienen la forma s/regexp/replacement/
, donde regexp
es una expresión regular , para analizar la entrada, y replacement
es una plantilla simple para la salida, ya sea texto literal o una cadena de formato que contiene los caracteres &
para la "coincidencia completa" o las secuencias de escape \1
especiales hasta \9
para la n ésima subexpresión. Por ejemplo, s/(cat|dog)s?/\1s/g
reemplaza todas las apariciones de "cat" o "dog" con "cats" o "dogs", sin duplicar una "s" existente: (cat|dog)
es la primera (y única) subexpresión en la expresión regular, y \1
en la cadena de formato la sustituye en la salida.
Todos los sistemas de procesamiento de plantillas constan al menos de estos elementos primarios:
Puede ser una base de datos relacional , un archivo fuente como XML , un formato alternativo de base de datos de archivo plano , una hoja de cálculo o cualquier otra fuente de datos preformateados. Algunos sistemas de procesamiento de plantillas están limitados en cuanto a los tipos de datos que se pueden utilizar. Otros están diseñados para una máxima flexibilidad y permiten muchos tipos de datos diferentes.
Las plantillas de origen se especifican tradicionalmente:
El motor de plantillas es responsable de:
Además, algunos motores de plantillas permiten opciones de configuración adicionales.
Estos pueden consistir en un documento completo o en un fragmento de documento.
El procesamiento de plantillas se utiliza en diversos contextos y con distintos fines. El fin específico suele depender de la aplicación de software o del motor de plantillas que se utilice. Sin embargo, la flexibilidad de los sistemas de procesamiento de plantillas suele permitir usos no convencionales para fines que no habían sido previstos originalmente por los diseñadores originales.
Un motor de plantillas es un tipo específico de módulo de procesamiento de plantillas que exhibe todas las características principales de un lenguaje de programación moderno . El término motor de plantillas evolucionó como una descripción generalizada de los lenguajes de programación cuyo propósito principal o exclusivo era procesar plantillas y datos para generar texto. El uso de este término se aplica principalmente al desarrollo web mediante un sistema de plantillas web , y también se aplica a otros contextos. [4]
Los marcos de generación de documentos normalmente utilizan el procesamiento de plantillas como modelo central para generar documentos.
Las herramientas de generación de código fuente admiten la generación de código fuente (como documentos de resultado) a partir de modelos de datos abstractos (por ejemplo, UML, datos relacionales, almacenes de datos empresariales específicos del dominio) para dominios de aplicación particulares, organizaciones particulares o para simplificar el proceso de producción para programadores de computadoras .
Un motor de plantillas web procesa plantillas web y datos de origen (normalmente de una base de datos relacional ) para producir una o más páginas web de salida o fragmentos de página. Normalmente se incluye como parte de un sistema de plantillas web o un marco de aplicación . Actualmente, el software de procesamiento de plantillas se utiliza con mayor frecuencia en el contexto del desarrollo para la web .
XSLT es un modelo de procesamiento de plantillas diseñado por W3C . Está diseñado principalmente para transformaciones de datos XML (en documentos web u otros formatos de salida).
Los lenguajes de programación como Perl , Python , PHP , Ruby , C# , Java y Go admiten el procesamiento de plantillas de forma nativa o a través de bibliotecas y módulos complementarios. JavaServer Pages , [5] Active Server Pages , [6] Genshi (para Python) y eRuby son ejemplos de motores de plantillas diseñados específicamente para el desarrollo de aplicaciones web.
Además, el procesamiento de plantillas a veces se incluye como una subfunción de paquetes de software como editores de texto , IDE y sistemas de gestión de bases de datos relacionales .