Mega Code Archive

 
Categories / ASP.Net Tutorial / XML
 

Transform XmlDataSource with XSLT

<%@ Page Language="C#" AutoEventWireup="false"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">     <title>Untitled Page</title> </head> <body>     <form id="form1" runat="server">     <div>      <asp:XmlDataSource ID="sourceDVD"                          runat="server"                          DataFile="~/Data.xml"                         TransformFile="Data.xsl"/>      <asp:TreeView ID="TreeView1"                     runat="server"                     DataSourceID="sourceDVD"                    AutoGenerateDataBindings="False">             <DataBindings>                 <asp:TreeNodeBinding DataMember="Movies" Text="Movies" />                 <asp:TreeNodeBinding DataMember="DVD" TextField="Title" />                 <asp:TreeNodeBinding DataMember="Stars" TextField="Name" />             </DataBindings>      </asp:TreeView>     </div>     </form> </body> </html> File: Data.xml <?xml version="1.0"?> <DvdList>    <DVD ID="1" Category="Category 1">       <Title>title 1</Title>       <Director>directory 2</Director>       <Price>1</Price>       <Starring>          <Star>star 1</Star>          <Star>star 2</Star>       </Starring>    </DVD>    <DVD ID="2" Category="Category 2">       <Title>title 2</Title>       <Director>directory 2</Director>       <Price>2</Price>       <Starring>          <Star>star 3</Star>          <Star>star 4</Star>       </Starring>    </DVD> </DvdList> File: Data.xsl <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">   <xsl:output method="xml"/>   <xsl:template match="/">     <xsl:element name="Movies">       <xsl:apply-templates select="//DVD" />     </xsl:element>   </xsl:template>   <xsl:template match="DVD">     <xsl:element name="{name()}">       <xsl:attribute name="ID">         <xsl:value-of select="@ID"/>       </xsl:attribute>       <xsl:attribute name="Title">         <xsl:value-of select="Title/text()"/>       </xsl:attribute>       <xsl:apply-templates select="Starring" />     </xsl:element>   </xsl:template>   <xsl:template match="Starring">     <xsl:element name="Stars">       <xsl:attribute name="Name">         <xsl:value-of select="Star/text()"/>       </xsl:attribute>     </xsl:element>   </xsl:template>    </xsl:stylesheet>