Plantilla HTML – HTML Template – Convertir plantilla a HTML
Este artículo describe cómo utilizar Aspose.HTML for Java para crear un documento HTML basado en una plantilla (HTML template) y completarlo con datos de varias fuentes, como XML o JSON. Al utilizar la sintaxis de expresiones en línea, puede hacer coincidir de manera eficiente las fuentes de datos con su plantilla HTML y generar contenido dinámicamente.
Aspose.HTML for Java ofrece un conjunto de métodos convertTemplate() que se utilizan para convertir una plantilla HTML en un documento HTML. Los métodos toman varios parámetros (por ejemplo, rutas a la plantilla y fuente de datos, un objeto de TemplateLoadOptions y una ruta al resultado HTML) y devuelven el documento HTML completo.
Comprensión del marcado de plantilla
Una plantilla HTML (HTML template) es un archivo HTML estándar que contiene algunas expresiones en línea especiales. Estas expresiones utilizan llaves dobles {{ }} para asignar datos de la fuente de datos de entrada a partes específicas del documento HTML. Cuando se procesan, estos marcadores de plantilla se reemplazan con los valores de datos correspondientes siguiendo las reglas que se mencionan a continuación.
Sintaxis de expresiones en línea
A continuación se muestra la lista de sintaxis de expresiones en línea admitidas.
{{ … }} – expresión de enlace de datos
La expresión de enlace de datos (data-binding expression) se utiliza para establecer valores del elemento de control en función de la información contenida en la fuente de datos.
La siguiente es la sintaxis básica de la expresión de enlace de datos:
{{ expresión de enlace de datos }}
La siguiente demostración muestra cómo utilizar la expresión de enlace de datos para obtener información de la fuente de datos XML.
XML Data Source
1<Data>
2<FirstName>John</FirstName>
3<LastName>Doe</LastName>
4<Address>
5 <City>Chicago</City>
6 <Street>Oakmound Drive</Street>
7 <Number>100</Number>
8</Address>
9</Data>
La expresión de enlace de datos en la plantilla de página HTML:
HTML Template
Esta plantilla HTML demuestra el uso de expresiones en línea para la vinculación de datos. Incluye una tabla con dos columnas: “Person” y “Address”. La columna “Person” muestra dinámicamente los datos de {{FirstName}} y {{LastName}} de la fuente de datos, mientras que la columna “Address” muestra {{Address.Street}}, {{Address.Number}} y {{Address.City}}. Las expresiones en línea se definen mediante sintaxis de llaves.
1<table border=1>
2 <tr>
3 <th>Person</th>
4 <th>Address</th>
5 </tr>
6 <tr>
7 <td>{{FirstName}} {{LastName}}</td>
8 <td>{{Address.Street}} {{Address.Number}}, {{Address.City}}</td>
9 </tr>
10</table>
{{#foreach… }} – expresión directiva foreach
La expresión directiva foreach (foreach directive expression) se utiliza para iterar a través de la lista de elementos en combinación con la expresión de enlace de datos.
La siguiente demostración muestra cómo obtener todas las personas de la fuente de datos y completar una plantilla:
XML Data Source
1<Data>
2 <Persons>
3 <Person>
4 <FirstName>John</FirstName>
5 <LastName>Doe</LastName>
6 <Address>
7 <Number>100</Number>
8 <Street>Oakmound Drive</Street>
9 <City>Chicago</City>
10 </Address>
11 <Phone1>773-349-7747</Phone1>
12 <Phone2>708-252-9790</Phone2>
13 </Person>
14 <Person>
15 <FirstName>Jack</FirstName>
16 <LastName>Fox</LastName>
17 <Address>
18 <Number>355</Number>
19 <Street>Haul Road</Street>
20 <City>San Francisco</City>
21 </Address>
22 <Phone1>650-942-7641</Phone1>
23 </Person>
24 <Person>
25 <FirstName>Sherlock</FirstName>
26 <LastName>Holmes</LastName>
27 <Address>
28 <Number>45</Number>
29 <Street>Baker str.</Street>
30 <City>London</City>
31 </Address>
32 <Phone1>012-5146-564</Phone1>
33 </Person>
34 </Persons>
35</Data>
La expresión de directiva foreach en la plantilla de página HTML:
HTML Template
El atributo data_merge
especifica que la fuente de datos es una lista de objetos y la tabla debe repetirse para cada objeto de la lista. Las expresiones dentro de la plantilla, como {{FirstName}}, {{LastName}}, {{Address.Street}} y {{Address.Number}}, indican los campos de la fuente de datos que deben insertarse en la plantilla. celdas correspondientes de la tabla.
1<table border=1 data_merge='{{#foreach Persons.Person}}'>
2 <tr>
3 <th>Person</th>
4 <th>Address</th>
5 </tr>
6 <tr>
7 <td>{{FirstName}} {{LastName}}</td>
8 <td>{{Address.Street}} {{Address.Number}}, {{Address.City}}</td>
9 </tr>
10</table>
Tenga en cuenta que la implementación actual admite expresión directiva foreach solo para la siguiente lista de elementos HTML: DIV, OL, UL y TABLE.
Fuente de datos
Como se mencionó anteriormente, la fuente de datos se puede representar en formatos XML y JSON. Los siguientes son ejemplos de ambas fuentes de datos:
XML Data Source
1 <Data>
2 <FirstName>John</FirstName>
3 <LastName>Doe</LastName>
4 <Address>
5 <City>Chicago</City>
6 <Street>Oakmound Drive</Street>
7 <Number>100</Number>
8 </Address>
9</Data>
JSON Data Source
1{
2 "FirstName": "John",
3 "LastName": "Doe",
4 "Address": {
5 "City": "Chicago",
6 "Street": "Oakmound Drive",
7 "Number": "100"
8 }
9 }
Convertir plantilla a HTML
Si tu caso implica crear una plantilla y especificar datos sobre la marcha, debes seguir algunos pasos:
- Prepare una fuente de datos JSON o XML y guárdela en un archivo. El constructor
TemplateData() toma la ruta a este archivo de datos y crea un objeto de datos (
data
) para el métodoconvertTemplate(sourcePath, data, options, outputPath)
. - Prepare una plantilla HTML y guárdela en un archivo. El método convertTemplate() tomará la ruta del archivo de plantilla como parámetro (
sourcePath
). - Inicialice una instancia de la clase
TemplateLoadOptions para determinar si los nombres de la plantilla y del elemento de datos coinciden, independientemente de si son mayúsculas o no (
options
). - Invoque el método
convertTemplate(
sourcePath
,data
,options
,outputPath
) y pasesourcePath
,data
,options
youtputPath
para ello.outputPath
es una ruta para guardar archivos de plantilla llenos de datos. El método convertTemplate() sustituye las expresiones de la plantilla con valores de la fuente de datos, generando un documento HTML completo.
1// Prepare a JSON data-source and save it to the file.
2String data =
3 " {\n" +
4 " 'FirstName': 'John',\n" +
5 " 'LastName': 'Smith',\n" +
6 " 'Address': {\n" +
7 " 'City': 'Dallas',\n" +
8 " 'Street': 'Austin rd.',\n" +
9 " 'Number': '200'\n" +
10 " }\n" +
11 " }\n";
12try (java.io.FileWriter fileWriter = new java.io.FileWriter("data-source.json")) {
13 fileWriter.write(data);
14}
15
16// Prepare an HTML Template and save it to the file.
17String template =
18 "<table border=1>\n" +
19 " <tr>\n" +
20 " <th>Person</th>\n" +
21 " <th>Address</th>\n" +
22 " </tr>\n" +
23 " <tr>\n" +
24 " <td>{{FirstName}} {{LastName}}</td>\n" +
25 " <td>{{Address.Street}} {{Address.Number}}, {{Address.City}}</td>\n" +
26 " </tr>\n" +
27 "</table>\n";
28try (java.io.FileWriter fileWriter = new java.io.FileWriter("template.html")) {
29 fileWriter.write(template);
30}
31
32// Invoke Converter.ConvertTemplate in order to populate 'template.html' with the data-source from 'data-source.json' file
33com.aspose.html.converters.Converter.convertTemplate(
34 "template.html",
35 new com.aspose.html.converters.TemplateData("data-source.json"),
36 new com.aspose.html.loading.TemplateLoadOptions(), "document.html"
37);
Recomendaciones técnicas
Valide siempre el formato de la fuente de datos (XML/JSON) y garantice la coherencia con los marcadores de la plantilla para evitar discrepancias.
Utilice TemplateLoadOptions.NamesAreCaseSensitive para controlar la distinción entre mayúsculas y minúsculas durante el enlace de datos. Si el valor es
true
, la coincidencia distingue entre mayúsculas y minúsculas; si esfalse
, se ignorará el carácter entre mayúsculas y minúsculas. El valor predeterminado estrue
. Establecerlo enfalse
simplifica el manejo de nombres inconsistentes.