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 idioma en el que están escritas las plantillas se conoce como lenguaje de plantilla 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 la generación de código fuente ), ya sea en su totalidad o en fragmentos. Un motor de plantillas normalmente se incluye como parte de un sistema de plantillas web o marco de aplicación , y también puede usarse como preprocesador o filtro .
Los motores de plantillas suelen incluir características comunes a la mayoría de los lenguajes de programación de alto nivel , con énfasis en características para procesar texto sin formato .
Tales características incluyen:
Si bien los procesadores de plantillas suelen ser una pieza de software separada, utilizada como parte de un sistema o marco, los lenguajes de plantillas simples se incluyen comúnmente 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 sólo sustitución, en contraste con las funciones más sofisticadas de los procesadores de plantillas completos, pero pueden contener algo de lógica.
Los ejemplos simples incluyen cadenas de formato de impresión 'printf' , que se encuentran en muchos lenguajes de programación, y fragmentos , 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 a menudo se denomina combinación de correspondencia .
Un ejemplo ilustrativo de la naturaleza complementaria del análisis y la creación de plantillas es el s
comando (sustituto) en el procesador de texto sed , que se origina en la búsqueda y reemplazo en el 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 "coincidencia completa" o las secuencias de escape&
especiales para n ª subexpresión. Por ejemplo, reemplaza todas las apariciones de "gato" o "perro" con "gatos" o "perros", sin duplicar una "s" existente: es la primera (y única) subexpresión en la expresión regular y en la cadena de formato. sustituye esto en la salida. \1
\9
s/(cat|dog)s?/\1s/g
(cat|dog)
\1
Todos los sistemas de procesamiento de plantillas constan de al menos estos elementos principales:
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 cualquiera de otras fuentes de datos preformateados. Algunos sistemas de procesamiento de plantillas están limitados en los tipos de datos que se pueden utilizar. Otros están diseñados para ofrecer la máxima flexibilidad y permiten muchos tipos diferentes de datos.
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 varios contextos para diferentes propósitos. El propósito específico normalmente depende de la aplicación de software o del motor de plantilla que se utilice. Sin embargo, la flexibilidad de los sistemas de procesamiento de plantillas a menudo permite usos no convencionales para fines no 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 utilizando un sistema de plantillas web y también se aplica a otros contextos. [4]
Los marcos de generación de documentos suelen utilizar 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 resultantes) a partir de modelos de datos abstractos (por ejemplo, UML, datos relacionales, almacenes de datos empresariales de dominios específicos) para dominios de aplicaciones particulares, organizaciones particulares o para simplificar el proceso de producción para computadoras. programadores .
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 plantilla web o marco de aplicación . Actualmente, el software de procesamiento de plantillas se utiliza con mayor frecuencia en el contexto del desarrollo 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 resultados).
Los lenguajes de programación como Perl , Python , PHP , Ruby , C# , Java y Go admiten el procesamiento de plantillas de forma nativa o mediante 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 subcaracterística de paquetes de software como editores de texto , IDE y sistemas de gestión de bases de datos relacionales .