XML transformation with extension
<%--
Code Revised from
Professional ASP.NET 2.0 XML (Programmer to Programmer) (Paperback)
by Thiru Thangarathinam
# Publisher: Wrox (January 18, 2006)
# Language: English
# ISBN: 0764596772
--%>
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Xml.Xsl" %>
<%@ Import Namespace="System.Xml.XPath" %>
<script runat="server">
public class Discount
{
public Discount()
{
}
public string ReturnDiscount(string price)
{
decimal priceValue = Convert.ToDecimal(price);
return (priceValue * 15 / 100).ToString();
}
}
void Page_Load(object sender, System.EventArgs e)
{
string xmlPath = MapPath("BooksWithStyle.xml");
string xslPath = MapPath("Books_with_extensions.xsl");
XPathDocument xpathDoc = new XPathDocument(xmlPath);
XslCompiledTransform transform = new XslCompiledTransform();
XsltArgumentList argsList = new XsltArgumentList();
Discount obj = new Discount();
argsList.AddExtensionObject("urn:myDiscount", obj);
//Load the XSL stylsheet into the XslCompiledTransform object
transform.Load(xslPath);
transform.Transform(xpathDoc, argsList, Response.Output);
}
</script>
<%--
<?xml version='1.0'?>
<bookstore>
<book genre="A">
<title>title 1</title>
<author>
<first-name>A</first-name>
<last-name>B</last-name>
</author>
<price>99.99</price>
</book>
<book genre="B">
<title>title 2</title>
<author>
<first-name>B</first-name>
<last-name>C</last-name>
</author>
<price>11.99</price>
</book>
</bookstore>
--%>
<%--
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:myDiscount="urn:myDiscount">
<xsl:output method="html" />
<xsl:template match="/">
<html>
<title>XSL Transformation</title>
<body>
<h2>My Book Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th align="left">Title</th>
<th align="left">Price</th>
<th align="left">Calculated Discount</th>
</tr>
<xsl:for-each select="bookstore/book">
<tr>
<td>
<xsl:value-of select="title"/>
</td>
<td>
<xsl:value-of select="price"/>
</td>
<td>
<xsl:value-of select="myDiscount:ReturnDiscount(price)" />
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
--%>
Related examples in the same category