Transformación en el lado del servidor

ASP.NET WebForms + Transformación XSLT

Flujo de trabajo

  1. El backend C# obtiene unacadena XML (datos de alumnos) desde la base de datos
  2. Cargar la cadena XML en MemoryStream y crear un objeto XPathDocument
  3. Leer la hoja de estilos student.xsl desde la ruta física del proyecto
  4. Ejecutar la transformación XSLT mediante XslCompiledTransform para generar una cadena HTML
  5. 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:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *