Thomas Darimont
Erfahrenes Mitglied
Hallo,
hier mal ein kleines Beispiel für eine XSL-Transformation eines XML Dokuments über ein XSL Stylesheet in ein HTML Dokument:
Unser Eingangsdokument:
Euro im XML durch & #8364; ersetzen
Unser Stylesheet:
Unser Transformator
Hier das Ergebnis:
Gruß Tom
hier mal ein kleines Beispiel für eine XSL-Transformation eines XML Dokuments über ein XSL Stylesheet in ein HTML Dokument:
Unser Eingangsdokument:
Code:
<?xml version="1.0" encoding="ISO-8859-15"?>
<speiseplan>
<Montag>
<Suppen>
<suppe>
<beschreibung>Hühnersuppe</beschreibung>
<preis>1,00 €</preis>
</suppe>
<suppe>
<beschreibung>Kartoffelsuppe</beschreibung>
<preis>1,40 €</preis>
</suppe>
</Suppen>
<Vorspeisen>
<vorspeise>
<beschreibung>Vorspeise 1</beschreibung>
<preis>1,20 €</preis>
</vorspeise>
</Vorspeisen>
<Hauptgerichte>
<hauptgericht>
<beschreibung>Seelachsfilet mit Soße</beschreibung>
<preis>2,50 €</preis>
</hauptgericht>
<hauptgericht>
<beschreibung>Thüringer Rostbratwürste</beschreibung>
<preis>2,00 €</preis>
</hauptgericht>
</Hauptgerichte>
</Montag>
<Dienstag>
<Suppen>
<suppe>
<beschreibung>Spargelcremesuppe</beschreibung>
<preis>1,00 €</preis>
</suppe>
<suppe>
<beschreibung>Tomatesuppe</beschreibung>
<preis>1,10 €</preis>
</suppe>
</Suppen>
<Vorspeisen>
<vorspeise>
<beschreibung>kleiner Salatteller</beschreibung>
<preis>1,20 €</preis>
</vorspeise>
</Vorspeisen>
<Hauptgerichte>
<hauptgericht>
<beschreibung>Chili con Carne</beschreibung>
<preis>2,50 €</preis>
</hauptgericht>
<hauptgericht>
<beschreibung>Lasagne</beschreibung>
<preis>2,00 €</preis>
</hauptgericht>
</Hauptgerichte>
</Dienstag>
</speiseplan>
Euro im XML durch & #8364; ersetzen
Unser Stylesheet:
XML:
<?xml version="1.0" encoding="ISO-8859-15"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="4.0" indent="yes"/>
<xsl:param name="tag"/>
<xsl:template match="speiseplan">
<html>
<body>
<h1><xsl:value-of select="$tag"/></h1>
Suppen:<br/>
<xsl:for-each select="./*[name() = $tag]/Suppen/suppe">
<xsl:value-of select="beschreibung" />
<xsl:text disable-output-escaping="yes"> </xsl:text>
<xsl:value-of select="preis" />
<br/>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Unser Transformator
C#:
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Xml.XPath;
using System.Xml.Xsl;
using System.IO;
namespace De.Tutorials.Training
{
public class XsltTransformationExample
{
public static void Main(string[] args)
{
XPathDocument src = new XPathDocument(File.OpenRead(@"c:\input.xml"));
XslCompiledTransform transform = new XslCompiledTransform();
transform.Load(new XPathDocument(File.OpenRead(@"c:\stylesheet.xsl")));
XsltArgumentList arguments = new XsltArgumentList();
arguments.AddParam("tag", "", "Dienstag");
transform.Transform(src,arguments,File.OpenWrite(@"c:\output.html"));
}
}
}
Hier das Ergebnis:
HTML:
<html>
<body>
<h1>Dienstag</h1>
Suppen:<br>Spargelcremesuppe 1,00 €<br>Tomatesuppe 1,10 €<br></body>
</html>
Gruß Tom
Zuletzt bearbeitet von einem Moderator: