ASP.NET WebForms + XSLT 변환
처리 흐름
- C# 백엔드에서 데이터베이스로부터XML 문자열(학생 데이터)을 가져옵니다
- XML 문자열을
MemoryStream에 적재하고XPathDocument를 생성합니다 - 프로젝트 물리 경로의
student.xsl스타일시트를 읽어옵니다 XslCompiledTransform으로 XSLT 변환을 실행하고 HTML 문자열을 출력합니다- 생성된 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: XPath