ASP.NET WebForms + Transformación XSLT
Flujo de trabajo
- El backend C# obtiene unacadena XML (datos de alumnos) desde la base de datos
- Cargar la cadena XML en
MemoryStreamy crear un objetoXPathDocument - Leer la hoja de estilos
student.xsldesde la ruta física del proyecto - Ejecutar la transformación XSLT mediante
XslCompiledTransformpara generar una cadena HTML - Enviar el HTML generado a la página frontend para renderizarlo (lo puedes implementar tú mismo. XSL no solo sirve para web, también funciona como motor de plantillas)
Prepara tu propio documento XML completo
Archivo student.xsl
Coloca este archivo dentro del proyecto
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- Definir salida HTML con codificación UTF‑8 para evitar caracteres corruptos -->
<xsl:output method="html" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<html>
<head>
<meta charset="UTF-8"/>
<title>Lista de alumnos</title>
</head>
<body>
<ul>
<!-- Ruta que coincide con la estructura XML: raíz → StudentDB → alumno -->
<xsl:for-each select="StudentDB/alumno">
<li>
N.º:<xsl:value-of select="position()"/>
Nombre:<xsl:value-of select="nombre"/>
</li>
</xsl:for-each>
</ul>
</body>
</html>
</xsl:template>
</xsl:stylesheet>Lenguaje del código: HTML, XML (xml)
Código de transformación C#
using System;
using System.Text;
using System.IO;
using System.Xml.XPath;
using System.Xml.Xsl;
namespace XslDemo.Web
{
public partial class Default : System.Web.UI.Page
{
protected string studentHtml = string.Empty;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//1. Obtener cadena XML devuelta por la base de datos desde la capa BLL
string xml = new BLL.student().GetAllListXml();
byte[] arr = Encoding.UTF8.GetBytes(xml);
using (MemoryStream stream = new MemoryStream(arr))
{
XPathDocument xpd = new XPathDocument(stream);
string xslPath = Context.Server.MapPath("/student.xsl");
// Comprobar si existe el archivo XSL
if (!File.Exists(xslPath))
{
studentHtml = "No se encuentra el archivo de estilos XSL!";
return;
}
XslCompiledTransform tran = new XslCompiledTransform();
tran.Load(xslPath);
StringBuilder sb = new StringBuilder();
tran.Transform(xpd, null, new StringWriter(sb));
// 【Importante】Asignar a variable de página
studentHtml = sb.ToString();
}
}
}
}
}Lenguaje del código: C# (cs)
Si quieres mostrar el resultado en aspx, usa un marcador de posición
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="XslDemo.Web.Default" %>
<!DOCTYPE html>
<html>
<body>
<%--Mostrar HTML generado por XSLT--%>
<%=studentHtml %>
</body>
</html>Lenguaje del código: HTML, XML (xml)
Transformación en el lado del servidor
Previous: XPath