/*
Mastering Visual C# .NET
by Jason Price, Mike Gunderloy
Publisher: Sybex;
ISBN: 0782129110
*/
/*
Example20_3.cs illustrates the XslTransform class
*/
using System;
using System.Xml;
using System.Xml.Xsl;
using System.IO;
public class Example20_3
{
public static void Main()
{
// use an XmlTextReader to open an XML document
XmlTextReader xtr = new XmlTextReader("Cust3.xml");
xtr.WhitespaceHandling = WhitespaceHandling.None;
// load the file into an XmlDocuent
XmlDocument xd = new XmlDocument();
xd.Load(xtr);
// load an XSLT file
XslTransform xslt = new XslTransform();
xslt.Load("Cust.xsl");
// perform the transformation in memory
MemoryStream stm = new MemoryStream();
xslt.Transform(xd, null, stm);
// and dump the results
stm.Position = 1;
StreamReader sr = new StreamReader(stm);
Console.Write(sr.ReadToEnd());
// close the reader
xtr.Close();
}
}
//File:Cust3.xml
/*
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="Cust.xsl"?>
<NewDataSet>
<Customers>
<CustomerID>ALFKI</CustomerID>
<CompanyName>Alfreds Futterkiste</CompanyName>
<ContactName>Maria Anders</ContactName>
<ContactTitle>Sales Representative</ContactTitle>
<Address>Obere Str. 57</Address>
<City>Berlin</City>
<PostalCode>12209</PostalCode>
<Country>Germany</Country>
<Phone>030-0074321</Phone>
<Fax>030-0076545</Fax>
</Customers>
<Customers>
<CustomerID>BONAP</CustomerID>
<CompanyName>A Company</CompanyName>
<ContactName>Laurence Lebihan</ContactName>
<ContactTitle>Owner</ContactTitle>
<Address>12, rue des Bouchers</Address>
<City>Marseille</City>
<PostalCode>13008</PostalCode>
<Country>France</Country>
<Phone>91.24.45.40</Phone>
<Fax>91.24.45.41</Fax>
</Customers>
</NewDataSet>
*/
//File:Cust.xsl
/*
<?xml version="1.0" encoding="UTF-8"?>
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<body>
<xsl:for-each select="/NewDataSet/Customers">
<p><h2>Customer</h2>
<br><b><xsl:value-of select="CustomerID"/></b></br>
<br><xsl:value-of select="CompanyName"/></br>
<br><xsl:value-of select="ContactName"/></br></p>
</xsl:for-each>
</body>
</html>
*/