[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: SQL BTree to XML Tree?
Hi
Thanks for your help with this. Unfortunately I'm stuck with XSLT 1.0, and I've been trying to re-write what you've done but with little success. Could you possibly point me in the right direction to getting the desired output using the data I already have? Or would there be a better way to organise the data in SQL to use an already widely-used XSL method? Thanks!
The Celko technique. Illustrating the lengths people will go to to bend their data to make it fit in a relational database! This is being converted to xml, resulting in: ----------^ should be 6, I assume </item> <!-- etc --> </output> May not be very efficient, but what comes to mind is that your data gives you the descendant relationship very easily: <xsl:function name="f:descendants" as="element(item)*"> <xsl:param name="boss" as="element(item)"/> <xsl:sequence select="$boss/../item[lh gt $boss/lh and rh le $boss/rh]"/> </xsl:function> and you can deduce from this the child relationship (as being those descendants who are not descendants of a descendant): <xsl:function name="f:children" as="element(item)*"> <xsl:param name="boss" as="element(item)"/> <xsl:variable name="descendants" select="f:descendants($boss) <xsl:sequence select="$descendants except (for $i in $descendants return f:descendant($i))"/> </xsl:function> and then you can do a recursive descent using the logical child relationship in the usual way: <xsl:template match="item"> <department title="@name"> <xsl:apply-templates select="f:children(.)"/> </department> </xsl:template> Not tested and almost certainly needs a bit of fine tuning. And of course if you're in XSLT 1.0 you'll have to rewrite the algorithm completely.
|
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
|