[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Sorting list of XML data into multiple columns
Hi, I have come across a problem which I am sure will have been solved before. In the XML I have a list of countries which I would like displayed in columns in html in the form wirth check boxes... <table> <tr> <td>country A</td> <td>country B</td> <td>country C</td> </tr> <tr> <td>country D</td> <td>country E</td> <td>country F</td> </tr> .... </table> or (but more difficultly) in the form <table> <tr> <td>country A</td> <td>country D</td> <td>country G</td> </tr> <tr> <td>country B</td> <td>country E</td> <td>country H</td> </tr> <tr> <td>country C</td> <td>country F</td> <td>country I</td> </tr> </table> (with the list running down the page) The data is already sorted in the XML to save complexity there, How can I go about this? Tests of position are not going to work with the countires to detemine when the <tr> closes and the next one begins, because the templates need to complete the <tr> I've tried something like this... <xsl:template name="paymentsystemcurrency"> <xsl:for-each select="document('../currency.xml')/select/option"> <xsl:choose> <xsl:when test="position() mod 3 = 1"> <![CDATA[ <tr> ]]> <td colspan="2"> <xsl:choose> <xsl:when test="option[@iso]/selected=yes"> <input type="checkbox" name="payment/currency[@iso]/selected" value="yes" checked="checked" /> </xsl:when> <xsl:otherwise> <input type="checkbox" name="payment/currency[@iso]/selected" value="yes" /> </xsl:otherwise> </xsl:choose> <xsl:value-of select="@iso"/> </td> </xsl:when> <xsl:when test="position() mod 3 = 2"> <td colspan="2"> <xsl:choose> <xsl:when test="option[@iso]/selected=yes"> <input type="checkbox" name="payment/currency[@iso]/selected" value="yes" checked="checked" /> </xsl:when> <xsl:otherwise> <input type="checkbox" name="payment/currency[@iso]/selected" value="yes" /> </xsl:otherwise> </xsl:choose> <xsl:value-of select="@iso"/> </td> </xsl:when> <xsl:otherwise> <td colspan="2"> <xsl:choose> <xsl:when test="option[@iso]/selected=yes"> <input type="checkbox" name="payment/currency[@iso]/selected" value="yes" checked="checked" /> </xsl:when> <xsl:otherwise> <input type="checkbox" name="payment/currency[@iso]/selected" value="yes" /> </xsl:otherwise> </xsl:choose> <xsl:value-of select="@iso"/> </td> <![CDATA[ </tr> ]]> </xsl:otherwise> </xsl:choose> </xsl:for-each> </xsl:template> But this method is full of problems and I shouldn't need to use CDATA stuff, and this doesn't account for a number of countires/currencies which isn't divisable by three. Thanks for all help and advice Tim XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
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
|