Scripting with XslTransform

Creating and manipulating stylesheets is all well and good if all you need to do is use XSLT’s built-in abilities. But .NET’s XSLT tools can do a lot more. They allow you to execute arbitrary C#, Visual Basic, or JScript code embedded in the stylesheet, pass arguments to the XSLT processor, and call back to methods in your own C# code from expressions in the XSLT code.

Embedded scripts

.NET has the ability to interpret script code embedded within the XSLT stylesheet. Example 7-9 shows the same catalog.xsl stylesheet shown previously, but with a few minor changes. I’ll explain the highlighted changes.

Example 7-9. Catalog stylesheet with embedded scripting
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:msxsl="urn:schemas-microsoft-com:xslt"
  xmlns:angus="http://angushardware.com/"
  version="1.0">

  <msxsl:script implements-prefix="angus" language="C#">
    <![CDATA[
      decimal CalculateInventoryValue(int number, decimal unitCost) {
          return number * unitCost;
      }
    ]]>
  </msxsl:script> <xsl:output method="html"/> <xsl:template match="/"> <html> <head> <title>Angus Hardware | Online Catalog</title> </head> <xsl:apply-templates/> </html> </xsl:template> <xsl:template match="inventory"> <body bgcolor="#FFFFFF"> <h1>Angus Hardware</h1> <h2>Online Catalog</h2> <xsl:apply-templates/> </body> </xsl:template> <xsl:template match="date"> <p>Current as of <xsl:value-of select="@month" />/<xsl: value-of select="@day" ...

Get .NET & XML now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.