Subject: RE: most efficient flat file listing to hierarchical
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 11 Jan 2007 10:05:56 -0000
|
An outline design for XSLT 2.0: write a recursive template that does
<xsl:for-each-group select="$in" group-by="tokenize(.,'/')[$n]">
Initially call this with $in := the sequence of item elements, $n := 1.
On subsequent calls, $in := current-group(), $n := $n+1.
for-each-group does nothing if the population is empty, so the recursion
will terminate naturally.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: James Fuller [mailto:jim.fuller@xxxxxxxxxxxxxx]
> Sent: 11 January 2007 08:53
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: most efficient flat file listing to hierarchical
>
> Hello All,
>
> Can anyone propose a pure xslt (1 or 2) solution to
> transforming the following flat xml structure of directory
> paths into a hierarchical
> (nested) xml.
>
> <?xml version='1.0'?>
> <listing>
> <item>cn/test.xml</item>
> <item>en</item>
> <item>en/test.html</item>
> <item>en/test1.html</item>
> <item>en/resource</item>
> <item>en/resource/style</item>
> <item>en/resource/style/test.css</item>
> <item>favicon.ico</item>
> <item>cn</item>
> </listing>
>
> to
>
>
> <dir>
> <file name="favicon.ico"/>
> <dir name="cn">
> <file name="test.xml"/>
> </dir>
> <dir name="en">
> <file name="test.html"/>
> <file name="test1.html"/>
> <dir name="resource">
> <dir name="style">
> <file name="test.css"/>
> </dir>
> </dir>
> </dir>
> </dir>
>
> thx in advance.
>
> cheers, Jim Fuller
|