ASP.NET WebForms + XSLT による変換
処理フロー
- C#バックエンドがデータベースからXML文字列(生徒データ)を取得
- XML文字列を
MemoryStreamに読み込み、XPathDocumentを作成 - プロジェクト内の物理パスから
student.xslスタイルシートを読み込む XslCompiledTransformでXSLT変換を実行し、HTML文字列を出力- 生成したHTMLをフロント側ページへ渡し描画(自身で実装可能。XSLはWeb以外でもテンプレートエンジンとして利用できます)
完全な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層からデータベース出力の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