XmlDataSource.TransformArgumentList Property


Provides a list of XSLT arguments that are used with the style sheet defined by the Transform or TransformFile properties to perform a transformation on the XML data.

Namespace:   System.Web.UI.WebControls
Assembly:  System.Web (in System.Web.dll)

Public Overridable Property TransformArgumentList As XsltArgumentList

Property Value

Type: System.Xml.Xsl.XsltArgumentList

An XsltArgumentList object that contains XSLT parameters and objects to be applied to XML data when it is loaded by the XmlDataSource control. The default value is null.

Set the TransformArgumentList property when the Transforming event is raised to ensure the XSLT parameters are available at the time that the XSLT transformation is applied to the XML data.

If the EnableCaching property is set to true and the TransformArgumentList property is set, the cache entries are not automatically invalidated when the parameters change in the transforms argument list. In that case, you must write code to invalidate the cache by setting the CacheKeyDependency property.

The following code example demonstrates how to use an XmlDataSource with a TreeView control to display transformed XML data. The XML transformation is performed using the style sheet indicated by the TransformFile property. Additionally, the style sheet uses transform arguments that are passed to the data source control in an XsltArgumentList object at run time. The code example demonstrates how to pass the XsltArgumentList to the data source control by handling the Transforming event with a custom event handler.

<%@ Page Language="VB" %>
<%@ Import Namespace="System.Xml.Xsl" %>

<script runat="server">
Private Sub TransformEventHandler(sender As Object, e as EventArgs)

  ' Add a dynamic transformation argument.
  Dim d As New DateTime
  d = DateTime.Now.AddDays(20)

  'Create an XsltArgumentList.
  Dim xslArg As XsltArgumentList = New XsltArgumentList
  xslArg.AddParam("purchdate", "", d.ToShortDateString())

  Dim aXmlDataSource as XmlDataSource = CType(sender, XmlDataSource)
  aXmlDataSource.TransformArgumentList = xslArg

End Sub ' TransformEventHandler

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
    <form id="form1" runat="server">

        ontransforming="TransformEventHandler" />

        <!- TreeView uses hierachical data, so the
            XmlDataSource uses an XmlHierarchicalDataSourceView
            when a TreeView is bound to it. -->

          <asp:treenodebinding depth="1" datamember="genre"
            textfield="name" valuefield="name"/>
          <asp:treenodebinding depth="2" datamember="book"
            textfield="title" valuefield="title"/>
          <asp:treenodebinding depth="3" datamember="chapter"
            textfield="name" valuefield="num"/>


The XML file in the code example has the following data:

   <genre name="fiction">
     <book ISBN="0000000000">
       <title>Secrets of Silicon Valley</title>
         <chapter num="1" name="Introduction" />           
         <chapter num="2" name="Body" />          
         <chapter num="3" name="Conclusion" />
   <genre name="novel">
     <book genre="novel" ISBN="1111111111">
       <title>Straight Talk About Computers</title>
         <chapter num="1" name="Introduction" /> 
         <chapter num="2" name="Body" />
         <chapter num="3" name="Conclusion" />

The transformation of the XML data is performed with the following style sheet.

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:param name="purchdate"/>
 <xsl:template match="bookstore">
     <xsl:apply-templates select="genre"/>
 <xsl:template match="genre">
     <xsl:attribute name="name">
       <xsl:value-of select="@name"/>
     <xsl:apply-templates select="book"/>
 <xsl:template match="book">
     <xsl:attribute name="ISBN">
       <xsl:value-of select="@ISBN"/>
     <xsl:attribute name="title">
       <xsl:value-of select="title"/>
       Price: <xsl:value-of select="price"/>
           15% discount if purchased by: <xsl:value-of select="$purchdate"/>      
     <xsl:apply-templates select="chapters/chapter" />
 <xsl:template match="chapter">
     <xsl:attribute name="num">
       <xsl:value-of select="@num"/>
     <xsl:attribute name="name">
       <xsl:value-of select="@name"/>

.NET Framework
Available since 2.0
Return to top