Help | Site Map
Connecting Tech Pros Worldwide
 
 
LinkBack Thread Tools
  #1  
Old August 4th, 2006, 02:35 PM
csharp
Guest
 
Posts: n/a
Default Sort XML Into Hierarchy

I am generating an xml file off an employees table from a database to
use to databind a treeview to on a master page rather than call the db
every time the page loads.

I need to take this XML and sort it hierarchially so when the treeview
gets it, it shows all employees sorted with child nodes for employees
who report to them, etc.

I have never worked with XML but found enough online to assume an xsl
file would do the trick, provided it was written correctly.

What I have so far, thats not working, is this.




CODE TO GENERATE XML FILE FROM DB

DataSet SQLDataset = new DataSet("Employees");
SqlDataAdapter DBAdapter = new SqlDataAdapter("Select * FROM
tm2Employee", dbConn);
DBAdapter.Fill(SQLDataset);
SQLDataset.WriteXml(System.AppDomain.CurrentDomain .BaseDirectory +
"xml.xml", XmlWriteMode.WriteSchema);

//sort the XML Hierarchically
XslCompiledTransform xsltransform = new XslCompiledTransform();
xsltransform.Load(System.AppDomain.CurrentDomain.B aseDirectory +
"xsl.xsl");
xsltransform.Transform(System.AppDomain.CurrentDom ain.BaseDirectory +
"xml.xml", System.AppDomain.CurrentDomain.BaseDirectory + "xml2.xml2");


SAMPLE OF XML FILE GENERATED

<Employees>
<Table>
<LoginID>LEGAL\SmithJS</LoginID>
<EmployeeName>Smith, John</EmployeeName>
<EmployeeID>111111</EmployeeID>
<DOB>1980-07-23T00:00:00-04:00</DOB>
<AuthLevel>3</AuthLevel>
<ReportsTo>222222</ReportsTo>
</Table>
</Employees>



XSL FILE

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="ReportsTo" match="Employee" use="@ReportsTo"/>
<xsl:template match="/">
<Employee>
<xsl:for-each select="key('ReportsTo','0')">
<xsl:call-template name="recurse"/>
</xsl:for-each>
</Employee>
</xsl:template>
<xsl:template name="recurse">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:if test="key('ReportsTo',@id)">
<Employee>
<xsl:for-each select="key('ReportsTo',@id)">
<xsl:call-template name="recurse"/>
</xsl:for-each>
</Employee>
</xsl:if>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>




ENVIRONMENT

ASP.net 2.0
MSSQL Server 2000
Windows Server (unsure of version)

  #2  
Old August 6th, 2006, 05:25 AM
Greg Collins [Microsoft MVP]
Guest
 
Posts: n/a
Default Re: Sort XML Into Hierarchy

It looks like you got a reply on this post in the microsoft.public.xml group--did that answer your question?

--
Greg Collins [Microsoft MVP]
Visit Brain Trove ( http://www.BrainTrove.com )


 

Bookmarks


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

What is Bytes?

We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights. Get the best answers to your questions from over network members.
Post your question now . . .
It's fast and it's free

Popular Articles