ASP.NET WebForms + XSLT‑Umwandlung
Ablauf
- Das C#‑Backend liest eineXML‑Zeichenkette (Schülerdaten) aus der Datenbank aus
- Laden der XML‑Zeichenkette in einen
MemoryStreamund Erstellen einesXPathDocument - Einlesen des Stylesheets
student.xslvom physischen Pfad im Projekt - Ausführen der XSLT‑Umwandlung mit
XslCompiledTransformzur Ausgabe einer HTML‑Zeichenkette - Übergeben des erzeugten HTML an die Frontend‑Seite zum Rendern (selbst implementierbar. XSL eignet sich nicht nur für Web‑Anwendungen, sondern auch als Template‑Engine)
Bereiten Sie das vollständige XML‑Dokument selbst vor
Datei student.xsl
Legen Sie diese Datei im Projekt ab
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- Ausgabeformat HTML mit UTF‑8‑Kodierung zur Vermeidung von Zeichenfehlern -->
<xsl:output method="html" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<html>
<head>
<meta charset="UTF-8"/>
<title>Schülerliste</title>
</head>
<body>
<ul>
<!-- Pfad passend zur XML‑Struktur: Wurzel → StudentDB → Schüler -->
<xsl:for-each select="StudentDB/Schüler">
<li>
Nr.:<xsl:value-of select="position()"/>
Name:<xsl:value-of select="Name"/>
</li>
</xsl:for-each>
</ul>
</body>
</html>
</xsl:template>
</xsl:stylesheet>Code-Sprache: HTML, XML (xml)
C#‑Umwandlungscode
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. XML‑Zeichenkette aus Datenbank über BLL‑Schicht beziehen
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");
// Prüfen ob XSL‑Datei vorhanden ist
if (!File.Exists(xslPath))
{
studentHtml = "XSL‑Stylesheet‑Datei nicht gefunden!";
return;
}
XslCompiledTransform tran = new XslCompiledTransform();
tran.Load(xslPath);
StringBuilder sb = new StringBuilder();
tran.Transform(xpd, null, new StringWriter(sb));
// 【Wichtig】Zuweisung zur Seitenvariable
studentHtml = sb.ToString();
}
}
}
}
}Code-Sprache: C# (cs)
Verwenden Sie Platzhalter, um das Ergebnis in einer aspx‑Seite auszugeben
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="XslDemo.Web.Default" %>
<!DOCTYPE html>
<html>
<body>
<%--Ausgabe des durch XSLT erzeugten HTML--%>
<%=studentHtml %>
</body>
</html>Code-Sprache: HTML, XML (xml)
Serverseitige Umwandlung
Previous: XPath