RE: [xsl] Dive routine

Subject: RE: [xsl] Dive routine
From: <Jarno.Elovirta@xxxxxxxxx>
Date: Wed, 16 Feb 2005 08:25:11 +0200
Hi,

> It's been a while since I've used XSL and now I've got to
> pull something
> together in short order.
> I need to go from this:
>
>     <model rootview="1721678891107373384457">
>         <views>
>             <view viewref="1721678891107373384457"
>     noderef="1721678891107376948629"/>
>             <view viewref="1721678891107373384457"
>     noderef="1721679701107199037296"/>
>             <view viewref="1721678891107373384457"
>     noderef="1721679701107365990562"/>
>             <view viewref="1721679701107365990562"
>     noderef="1721679701107366055468"/>
>             <view viewref="1721679701107365990562"
>     noderef="1721679701107366004593"/>
>         </views>
>         <nodes>
>             <node id="1721678891107373384457" type="2" label="Sales :
>     New Hire Agenda" state="-1"/>
>             <node id="1721678891107376948629" type="9"
>     label="http://www.whatever.com/filename.pdf"; state="-1"/>
>             <node id="1721679701107199037296" type="10" label="No
>     objectives" state="-1"/>
>             <node id="1721679701107365990562" type="2" label="ITSEC"
>     state="-1"/>
>             <node id="1721679701107366055468" type="9"
>     label="https://pivot.earthlink.net/DesktopDefault.aspx?tabid=1291";
>     state="-1"/>
>             <node id="1721679701107366004593" type="9"
>     label="Information Technology Security Document. " state="-1"/>
>         </nodes>
>     </model>
>
> to this:
>
>     <node data="1721678891107373384457" label="Sales : New
> Hire Agenda">
>         <node data="1721678891107376948629"
>     label="http://www.whatever.com/filename.pdf";></node>
>         <node data="1721679701107199037296" label="No
> objectives"></node>
>         <node data="1721679701107365990562" label="ITSEC">
>             <node data="1721679701107366055468"
>
> label="https://pivot.earthlink.net/DesktopDefault.aspx?tabid=1
> 291"></node>
>             <node data="1721679701107366004593" label="Information
>     Technology Security Document.">
>         </node>
>     </node>

  <xsl:key name="view" match="view" use="@viewref"/>
  <xsl:key name="node" match="node" use="@id"/>
  <xsl:template match="model">
    <xsl:apply-templates select="key('node', @rootview)"/>
  </xsl:template>
  <xsl:template match="node">
    <xsl:copy>
      <xsl:copy-of select="@label"/>
      <xsl:attribute name="data">
        <xsl:value-of select="@id"/>
      </xsl:attribute>
      <xsl:for-each select="key('view', @id)">
        <xsl:apply-templates select="key('node', @noderef)"/>
      </xsl:for-each>
    </xsl:copy>
  </xsl:template>

Cheers,

Jarno - Nick Sentience: March 2003 Mix

Current Thread
  • [xsl] Dive routine
    • Erick Emde - Tue, 15 Feb 2005 18:44:33 -0500
      • <Possible follow-ups>
      • Jarno.Elovirta - Wed, 16 Feb 2005 08:25:11 +0200 <=