Configuración de atributos en una plantilla HTML – ejemplos de C#
Plantilla HTML
La plantilla HTML es un archivo HTML estándar que contiene expresiones en línea especiales, indicadas por llaves dobles, que asignan la fuente de datos de entrada al marcado de la página HTML. Durante el procesamiento de la plantilla, estas expresiones en línea se reemplazarán con los valores de datos correspondientes según lo especificado por las reglas descritas en el artículo Plantilla HTML.
La biblioteca Aspose.HTML for .NET le permite establecer atributos en la plantilla HTML y controlar la presencia de atributos al completar las plantillas. El siguiente artículo le muestra cómo utilizar esta característica en ejemplos de C#.
Establecer atributo en plantilla HTML
Los atributos se utilizan para que los elementos HTML proporcionen información adicional sobre un elemento, especifiquen sus características o establezcan propiedades como id, clase, estilo, etc. Estos atributos se especifican en la etiqueta de apertura de un elemento HTML y se pueden configurar usando valores estáticos o datos dinámicos (expresiones en línea):
- Los valores estáticos son el contenido fijo del HTML, como texto, elementos y nombres de atributos, que permanecen sin cambios en la salida HTML final.
- Los datos dinámicos son datos que pueden cambiar y normalmente los proporciona una fuente de datos. Los datos dinámicos se insertan en la plantilla HTML mediante expresiones en línea.
Establecer atributo checked
para la casilla de verificación HTML
Por ejemplo, tomemos la siguiente plantilla HTML:
1<input type="checkbox" {{attr}} disabled />
Es un elemento de formulario de casilla de verificación que tiene un conjunto de atributos deshabilitado que lo hace no editable y una etiqueta {{attr}}
a la que se le puede agregar un atributo basado en la fuente de datos. En esta etiqueta, utilizando la siguiente fuente de datos, estableceremos el atributo checked
que mostrará una marca de verificación en esta casilla HTML cuando se dibuje:
1<Data><attr>checked</attr></Data>
Un ejemplo completo de C# sobre cómo completar la plantilla se ve así:
1// Create a template with a string of HTML code
2var htmlCode = "<input type=\"checkbox\" disabled {{attr}} />";
3
4// Set data for the template in XML format
5var dataSource = "<Data><attr>checked</attr></Data>";
6
7// Convert template to HTML
8using (var htmlDocument = Converter.ConvertTemplate(htmlCode, string.Empty,
9 new TemplateData(new TemplateContentOptions(dataSource, TemplateContent.XML)),
10 new TemplateLoadOptions()))
11{
12 // Request the input checkbox element that we specified in the template
13 var input = (HTMLInputElement)htmlDocument.GetElementsByTagName("input").First();
14
15 // Check if it has a checkmark
16 Console.WriteLine("Checked: " + input.Checked);
17 Console.WriteLine("Attributes.Length: " + input.Attributes.Length);
18 Console.WriteLine("Attributes[0].Name: " + input.Attributes[0].Name);
19 Console.WriteLine("Attributes[1].Name: " + input.Attributes[1].Name);
20 Console.WriteLine("Attributes[2].Name: " + input.Attributes[2].Name);
21
22 /*
23 This example produces the following results:
24
25 Checked: True
26 Attributes.Length: 3
27 Attributes[0].Name: type
28 Attributes[1].Name: disabled
29 Attributes[2].Name: checked
30 */
31
32 // Save the HTML document to a file
33 htmlDocument.Save(Path.Combine(OutputDir, "out-checked.html"));
34
35 // Prepare a path to the output image file
36 string outputPath = Path.Combine(OutputDir, "out-checked.png");
37
38 // Convert HTML to PNG using RenderTo() method
39 htmlDocument.RenderTo(new ImageDevice(new ImageRenderingOptions(), outputPath));
40}
Echemos un vistazo más de cerca a este fragmento de código C#:
- En el ejemplo, creamos una plantilla HTML desde cero, es decir, a partir de la cadena de código. Entonces, primero, preparamos el código HTML.
- Usamos el método
ConvertTemplate(
content
,baseUrl
,data
,options
) para convertir la plantilla. Este método toma cuatro parámetros y convierte una cadena de contenido HTML en un objetohtmlDocument
completamente formado:content
(htmlCode): una cadena con código HTML para usar como plantilla;baseUrl
(string.Empty): una cadena vacía en este ejemplo porque este parámetro no se utiliza;data
(TemplateData): la fuente de datos para completar la plantilla. En este caso, es una cadena XML almacenada en la variabledataSource
;options
(TemplateLoadOptions): opciones de carga para la plantilla. Puedes crearlo usando el constructor TemplateLoadOptions().
- Luego de crear el documento HTML, accedemos a un elemento
<input>
dentro del documento y verificamos que tenga los atributos correctos, como por ejemplochecked
en este caso:- Usamos el método
GetElementsByTagName() para recuperar el primer elemento
<input>
. - Luego, ejecutamos varias afirmaciones para comprobar las propiedades del elemento
<input>
. La primera afirmación,Assert.True(input.Checked)
, verifica si la casilla de verificación está marcada. Las siguientes dos afirmaciones,Assert.Equal(3, input.Attributes.Length)
yAssert.Equal("type", input.Attributes[0].Name)
, verifican el número de atributos y el nombre del primer atributo del elemento de entrada, respectivamente, y así sucesivamente.
- Usamos el método
GetElementsByTagName() para recuperar el primer elemento
- Para representar un documento HTML en un archivo de imagen, utilizamos el método RenderTo().
- Finalmente, llamamos al método
Save(path)
. El documento HTML se guarda en el archivo out-checked.html. El contenido de este archivo se puede ver a continuación:
1<html>
2 <head>
3 </head>
4 <body>
5 <input type="checkbox" disabled="" checked="">
6 </body>
7</html>
Casilla vacía – Empty Checkbox
Si desea crear un documento basado en esta plantilla con un elemento de casilla de verificación vacío, utilice la siguiente fuente de datos:
1<Data><attr></attr></Data>
Como puede ver, para obtener ese resultado, basta con pasar un valor vacío. El ejemplo de conversión completo se ve así:
1// Create a template with a string of HTML code
2var htmlCode = "<input type=\"checkbox\" disabled {{attr}} />";
3
4// Create an empty data source that won't set an attribute
5var dataSource = "<Data><attr></attr></Data>";
6
7// Convert template to HTML
8using (var htmlDocument = Converter.ConvertTemplate(htmlCode, string.Empty,
9 new TemplateData(new TemplateContentOptions(dataSource, TemplateContent.XML)),
10 new TemplateLoadOptions()))
11{
12 // Request the input checkbox element that we specified in the template
13 var input = (HTMLInputElement)htmlDocument.GetElementsByTagName("input").First();
14
15 // Сheck if the checkbox is checked - it should not be there
16 Console.WriteLine("Checked: " + input.Checked);
17 Console.WriteLine("Attributes.Length: " + input.Attributes.Length);
18 Console.WriteLine("Attributes[0].Name: " + input.Attributes[0].Name);
19 Console.WriteLine("Attributes[1].Name: " + input.Attributes[1].Name);
20
21 /*
22 This example produces the following results:
23
24 Checked: False
25 Attributes.Length: 2
26 Attributes[0].Name: type
27 Attributes[1].Name: disabled
28 */
29
30 // Save the HTML document to a file
31 htmlDocument.Save(Path.Combine(OutputDir, "out-unchecked.html"));
32
33 // Prepare a path to the output file
34 string outputPath = Path.Combine(OutputDir, "out-unchecked.png");
35
36 // Convert HTML to PNG
37 htmlDocument.RenderTo(new ImageDevice(new ImageRenderingOptions(), outputPath));
38}
Aspose.HTML ofrece Convertidores en línea gratuitos para convertir archivos HTML, XHTML, MHTML, EPUB, XML y Markdown a una variedad de formatos populares. Puede convertir fácilmente HTML a PDF, HTML a imagen, EPUB a PDF, SVG a PDF, MHTML a PDF, o MD a HTML. Simplemente seleccione un archivo, elija el formato a convertir y listo. ¡Prueba nuestros potentes convertidores gratis ahora!