| 
 
Subject: RE: Generate Hierarchical Tree from non-hierarchical XML From: Jeni Tennison <mail@xxxxxxxxxxxxxxxx> Date: Thu, 17 Aug 2000 21:31:20 +0100  | 
At 18:42 17/08/00 +0100, Ben Robb wrote:
>Try:
>
><xsl:template match="employees">
>	<table><xsl:apply-templates select="employee[manager = '']
>"/></table>
></xsl:template>
>
><xsl:template match="employee">
>	<tr><td width="150"></td><td>
>		<xsl:value-of select="name" />
>		<xsl:if test="../employee[manager != current()/id]">
>			<table>
>				<xsl:apply-templates
>select="../employee[manager = current()/id] ">
>					<xsl:sort select="id"/>
>				</xsl:apply-templates>
>			</table>
>		</xsl:if>
>	</td></tr>
></xsl:template>
If you are using an XSLT Processor that supports keys, you could also use
keys to quickly access the employees that you're interested in.  Define a
key that indexes the employees by their manager:
  <xsl:key name="employees" match="employee" use="manager" />
and you can then use key('employees', $id) to get the employee with the
relevant id.  Once this key is defined, the above template becomes:
<xsl:template match="employee">
  <tr><td width="150"></td><td>
    <xsl:value-of select="name" />
    <xsl:if test="key('employees', id)">
      <table>
        <xsl:apply-templates select="key('employees', id)">
          <xsl:sort select="id"/>
        </xsl:apply-templates>
      </table>
    </xsl:if>
  </td></tr>
</xsl:template>
Using key() is more efficient if you have a large dataset because it stops
the XSLT Processor from having to search through all the nodes to find the
relevant employees: they're already collected together for easy access.
Cheers,
Jeni
Jeni Tennison
http://www.jenitennison.com/
 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
| Current Thread | 
|---|
  | 
| <- Previous | Index | Next -> | 
|---|---|---|
| RE: Generate Hierarchical Tree from, Ben Robb | Thread | Re: Generate Hierarchical Tree from, Michal_Mart | 
| RE: Write to XML file using XSL, Chris Bayes | Date | Re: Selecting case insensitively, Jeni Tennison | 
| Month |