Esta lección sigue examinando el modelo de entrada JET, cómo utilizar expresiones XPath para atravesar el modelo de entrada y cómo las acciones JET se relacionan con el modelo de entrada.
Por qué y cuándo se efectúa esta tarea
Modelo de entrada JET Los modelos de entrada generados al crear transformaciones JET tienen las características siguientes:
- El modelo es jerárquico y tiene un único elemento raíz
- Cada tipo de elemento del modelo podría contener atributos que tengan valores de serie
- La contención de elementos siempre especifica una cardinalidad de cero o mayor que cero
Las funciones del modelo son deliberadamente restrictivas para facilitar la creación rápida de transformaciones de modelo a texto sin que el usuario tenga que tener un gran conocimiento de diseño de metamodelos.
Procesado de modelos por transformaciones JET e invocación de acciones
El editor de creación JET genera código que procesa el modelo de entrada. Este código se encuentra en la plantilla main.jet y tiene las características siguientes:
- El código generado efectúa una primera travesía del modelo.
- El código procesa el modelo dos veces: la primera iteración evalúa las expresiones de atributos derivados. La segunda iteración invoca acciones JET que crean proyectos, carpetas y archivos. Las acciones JET que crean archivos se denominan acciones de archivo JET e invocan plantillas JET.
- Durante el proceso, se asigna un elemento de modelo a una variable XPath.
El nombre de esta variable está definido en la vista Propiedades para el tipo de elemento que es visible en el área del editor. De manera predeterminada, el nombre de la variable es el mismo que el del elemento de modelo. Puede distinguir la variable del nombre de elemento porque las variables XPath siempre tienen el signo de dólar ($) como prefijo en una expresión XPath.
- Durante el proceso de un elemento, la primera iteración calcula los atributos derivados; la segunda iteración ejecuta las acciones JET y procesa los elementos de modelo hijo.
- Las variables XPath asociadas con el elemento actual y todos sus elementos padre están disponibles durante el cálculo de atributos derivados y la invocación de acciones JET. Por tanto, el cálculo de cualquier atributo derivado, acción JET o plantilla JET que invoca una acción de archivo JET podría hacer referencia al elemento procesado actualmente o a cualquiera de sus elementos padre mediante una variable XPath.
Como ejemplo, fíjese en el modelo de este módulo. La imagen siguiente muestra el contenido del panel "esquema de entrada y acciones de salida".
La acción denominada Crear archivo: letter.html y la plantilla JET asociada (templates/letter.html.jet) se invocan cada vez que un elemento de correo se encuentra en el elemento raíz. Tanto la acción como la plantilla tienen acceso a dos variables XPath: $mailing y $root. Los parámetros de la acción y las sustituciones de texto pueden utilizar los atributos que pertenezcan a los tipos de elemento llamados mailing y raíz.
Expresiones XPath y redenominación de elementos de modelo
Las expresiones XPath creadas con la funcionalidad de creación de transformaciones JET siempre tienen la forma $variable/@attribute. La funcionalidad de creación JET refactoriza expresiones como el nombre de variable o el tipo de elemento si se redenomina. Sin embargo, esta refactorización no se amplía a plantillas JET.
Es decir, la redenominación de una variable o tipo de elemento en el editor de creación JET rompe cualquier expresión XPath en las plantillas JET que utilicen el antiguo nombre de variable.