Transformação no lado do servidor

ASP.NET WebForms + Transformação XSLT

Fluxo

  1. O backend C# obtém umacadeia XML (dados dos alunos) do banco de dados
  2. Carregar a cadeia XML no MemoryStream e construir um XPathDocument
  3. Ler a folha de estilo student.xsl no caminho físico do projeto
  4. Executar a transformação XSLT com XslCompiledTransform para gerar uma cadeia HTML
  5. Passar o HTML gerado para renderização na página frontend (você pode implementar. O XSL não serve apenas para web, também funciona como mecanismo de modelo)

Prepare o seu XML completo

Arquivo student.xsl

Coloque esse arquivo dentro do projeto

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <!-- Define saída HTML com codificação UTF‑8 para evitar caracteres com defeito -->
    <xsl:output method="html" encoding="UTF-8" indent="yes"/>

    <xsl:template match="/">
        <html>
            <head>
                <meta charset="UTF-8"/>
                <title>Lista de alunos</title>
            </head>
            <body>
                <ul>
                    <!-- Caminho correspondente ao XML: raiz → StudentDB → aluno -->
                    <xsl:for-each select="StudentDB/aluno">
                        <li>
                            Nº:<xsl:value-of select="position()"/>
                            Nome:<xsl:value-of select="nome"/>
                        </li>
                    </xsl:for-each>
                </ul>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>Code language: HTML, XML (xml)

Código de transformação 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. Obter cadeia XML retornada pelo banco de dados pela camada 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");

                    // Verificar se arquivo XSL existe
                    if (!File.Exists(xslPath))
                    {
                        studentHtml = "Arquivo de estilo XSL não encontrado!";
                        return;
                    }

                    XslCompiledTransform tran = new XslCompiledTransform();
                    tran.Load(xslPath);

                    StringBuilder sb = new StringBuilder();
                    tran.Transform(xpd, null, new StringWriter(sb));

                    // 【Importante】Atribuir para variável da página
                    studentHtml = sb.ToString();
                }
            }
        }
    }
}Code language: C# (cs)

Use um marcador de posição para exibir o resultado em uma página aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="XslDemo.Web.Default" %>
<!DOCTYPE html>
<html>
<body>
    <%--Exibir HTML gerado pela transformação XSLT--%>
    <%=studentHtml %>
</body>
</html>Code language: HTML, XML (xml)

Transformação no lado do servidor

Previous:

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *