서버 측 변환

ASP.NET WebForms + XSLT 변환

처리 흐름

  1. C# 백엔드에서 데이터베이스로부터XML 문자열(학생 데이터)을 가져옵니다
  2. XML 문자열을 MemoryStream에 적재하고 XPathDocument를 생성합니다
  3. 프로젝트 물리 경로의 student.xsl 스타일시트를 읽어옵니다
  4. XslCompiledTransform으로 XSLT 변환을 실행하고 HTML 문자열을 출력합니다
  5. 생성된 HTML을 프론트 페이지에 전달해 렌더링합니다(직접 구현 가능. XSL은 웹 외에도 템플릿 엔진으로 활용할 수 있습니다)

전체 XML은 직접 준비하세요

student.xsl 파일

프로젝트 내부에 배치하세요

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <!-- 출력형식 HTML, 인코딩 UTF‑8 지정, 한글 깨짐 해결 -->
    <xsl:output method="html" encoding="UTF-8" indent="yes"/>

    <xsl:template match="/">
        <html>
            <head>
                <meta charset="UTF-8"/>
                <title>학생 목록</title>
            </head>
            <body>
                <ul>
                    <!-- XML 구조와 매칭:루트→StudentDB→학생 -->
                    <xsl:for-each select="StudentDB/학생">
                        <li>
                            번호:<xsl:value-of select="position()"/>
                            이름:<xsl:value-of select="이름"/>
                        </li>
                    </xsl:for-each>
                </ul>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>Code language: HTML, XML (xml)

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. BLL 계층에서 DB의 XML 문자열 가져오기
                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");

                    // XSL 파일 존재 여부 확인
                    if (!File.Exists(xslPath))
                    {
                        studentHtml = "XSL 스타일 파일이 존재하지 않습니다!";
                        return;
                    }

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

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

                    // 【핵심】페이지 변수에 할당
                    studentHtml = sb.ToString();
                }
            }
        }
    }
}Code language: C# (cs)

aspx에 출력하려면 플레이스홀더로 치환하여 사용합니다

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="XslDemo.Web.Default" %>
<!DOCTYPE html>
<html>
<body>
    <%--XSLT 변환 결과 HTML 출력--%>
    <%=studentHtml %>
</body>
</html>Code language: HTML, XML (xml)

서버 측 변환

Previous:

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다