Subject: [xsl] (xsl) processing siblings based on sorted order, not document order From: Stephen Cunliffe <scunliffe@xxxxxxxxxxxxxxxxxx> Date: Fri, 25 May 2001 15:03:23 -0400 |
Problem: I have an xml node-set that resembles the following; <foo> <bar id="Red"/> <bar id="Orange"/> <bar id="Blue"/> <bar id="Green"/> <bar id="Yellow"/> <bar id="Purple"/> <bar id="Magenta"/> <bar id="Indigo"/> <bar id="Cyan"/> <bar id="Teal"/> ... </foo> I need to do (2) things. First, I need to sort by id. (not a problem) <table> <xsl:apply-templates select="foo/bar"> <xsl:sort select="@id" data-type="text" order="ascending"/> </xsl:apply-templates> </table> Second, place the (sorted) bar id's, in a table, 3 per row. E.g. <tr> <td>Blue</td><td>Cyan</td><td>Green</td> </tr> <tr> <td>Indigo</td><td>Magenta</td><td>Orange</td> </tr> <tr> <td>Purple</td><td>Red</td><td>Teal</td> </tr> <tr> <td>Yellow</td> </tr> So, the logic as I see it, would be to process through each "bar" (the siblings), and find the first item in every row,... <xsl:template match="bar"> <xsl:if test="position() mod 3 = 1"> <tr> <!-- apply a template here, where select=".|following-sibling::bar[position() < 3]" --> </tr> </xsl:if> </xsl:template> ::::: The issue, is that "position()" and "following-sibling" are in the xml document order [XPath] and thus the results are not sorted in the output. ====================================== Q.) Is there a way in XSLT / XPath to apply-templates / do a for-each, that will "select" based on sorted order vs. document order... or a way to create a new (sorted) node-set, without limiting myself to a specific Xalan / Saxon / XSLT Processor. Q2). If I *have* to use a specific XSLT Processor, anyone have a solution for Xalan? Cheers and TIA, Steve XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Cascading Attributes?, William Bagby | Thread | RE: [xsl] (xsl) processing siblings, Diamond, Jason |
Re: [xsl] transform mixing up names, Michael Beddow | Date | RE: [xsl] (xsl) processing siblings, Diamond, Jason |
Month |