|
[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Application Design
On Mon, 13 Aug 2001, Frank Richards wrote:
> Well, I've hit one thing I couldn't see how to do in XSLT:
>
> I had a situation where the RDBMS guys had taken a perfectly good tree and
> turned it into a
> table with an extra column identifying the parent record. In order to
> convert it back, I needed
> a stack to push the parents on to. A list would have worked, but I couldn't
> figure out any way
> to get dynamic temporary storage in XSLT.
Assuming the XML format out is something like:
<database>
<table name="treething">
<row id="1" column1="foo" column2="bar"/>
<row id="2" parent_id="1" column1="a" column2="b"/>
...
</table>
</database>
Couldn't you just do:
<xsl:template match="row">
<xsl:variable name="current_id" select="@id"/>
<element>
<column1><xsl:value-of select="@column1"/></column1>
<column2><xsl:value-of select="@column2"/></column2>
<children>
<xsl:apply-templates
select="/database/table/row[@parent_id=$current_id]"/>
</children>
</element>
</xsl:template>
<xsl:template match="/">
<elements>
<xsl:apply-templates select="/database/table/row[not @parent_id]"/>
</elements>
</xsl:template>
In XSLT, the call stack is your temporary storage.
Now I'm probably going to find out why the above XSLT wouldn't work :-)
--
<Matt/>
/|| ** Founder and CTO ** ** http://axkit.com/ **
//|| ** AxKit.com Ltd ** ** XML Application Serving **
// || ** http://axkit.org ** ** XSLT, XPathScript, XSP **
// \\| // ** mod_perl news and resources: http://take23.org **
\\//
//\\
// \\
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|
|||||||||

Cart








