XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Conferences Close Tree View
+ Stylus Studio Feature Requests (1172)
- Stylus Studio Technical Forum (14511)
-> + document() function throws unk... (7)
-> + Report indentation (2)
-> + Report editor automatic scroll... (2)
-> + java.lang.ClassNotFoundExcepti... (4)
-> + Strange output (6)
-> + Built-In Processor Handling CD... (5)
-> + Parameter values with multiple... (3)
-> + Schema review (2)
-> + seperating values within one e... (2)
-> + Filtering 1000's of XML files ... (2)
-> + replace fop0.20 by 094 (2)
-> - HTML tables from sorted XSL (3)
-> ->HTML tables from sorted X...
-> ->HTML tables from sorted X...
-> + From dicisionshema to XML (4)
-> + Convert data from SQL database... (2)
-> + Really Really need help - xsl:... (2)
-> + xslt: xsl:include not finding ... (2)
-> + One field in multiple lines (3)
-> + Stylis studio editor slow (2)
-> + Schema Documentation (3)
-> + Convert PCL to XML (7)
-> + crashing when connected via VP... (3)
-> + Repeater err:XPST0003 (3)
-> + rtf to XML (4)
-> + Questions Regarding Existing B... (3)
-> + Bug: Saved Changes Lost Switch... (3)
-> + Adding Simple Types to Attribu... (4)
-> + SQL Table to XML Convert error... (9)
-> + please help me with style shee... (2)
-> + WSDL Misbehaving (4)
-> + Regarding XSLT logic for a sim... (2)
-> + Regarding XSLT logic for a sim... (2)
-> + Integration with VB.Net (5)
-> + License for end user (5)
-> + Error when running xalan sampl... (3)
-> + generate the date time in xslt... (2)
-> + Error When Using XMLConverters... (5)
-> + Viewing the toolbox pane (3)
-> + In Sync (2)
-> + Java EE 5 SDK vs. Java 2 SDK S... (2)
-> - Odd behavior of Begin Field in... (1)
-> + I/O-error while saving style s... (2)
-> + WEB Service Session (2)
-> - XML Report - Horizontal Line (1)
-> + XML feed to a txt file (2)
-> + problem with xml output (2)
-> + XSL Debugging (2)
-> + XML schema validation issue (t... (2)
-> + Problem during saving styleshe... (4)
-> + Slow Redraw (11)
-> + Source XML code updates in map... (2)
-> + converting XML to Excel (2)
-> + Pre-Sales Questions? And Mergi... (2)
-> + How can I download an earlier ... (2)
-> + Create multiple string outputs... (2)
-> + Alternate page masters indepen... (3)
-> + Flat to XML and back with Styl... (2)
-> + BUG: Byte Order Mark inserted ... (2)
-> + Schema Validation using the to... (7)
-> + Flat Text file to XML or XSD (6)
-> + Second time it should not go i... (2)
-> + How to sum Nodes which are at ... (2)
-> + Where has the wysiwyg editor g... (2)
-> + SS says my trial has expired -... (2)
-> + XSD input; SQL Table Output Ne... (2)
-> + Building Schema from XML (2)
-> + conditions on tag values expre... (3)
-> + XML converter "omit fields whe... (3)
-> + Marklogic XQuery support in St... (2)
-> + XSL switching stylesheet from ... (10)
-> + Maximum recursion depth exceed... (3)
-> + How do I develop the server si... (2)
-> + XSD Reuse (2)
-> + what happened to my preview re... (3)
-> + How do I use the Custom XML Co... (4)
-> + WYSIWYG missing in release 2 o... (2)
-> + space between elements (3)
-> + Oracle XML Gateway output CONV... (6)
-> + Someone please help me install... (5)
-> + XML Schema (XSD) to COBOL Data... (2)
-> + Can't compile Java (9)
-> + Trouble using the UDDI Browser (5)
-> + JVM Problem when installing Ar... (2)
-> + Stylus Studio Enterprise 8r2 d... (2)
-> - xml report headers (1)
-> + ddtek:sql-delete and ddtek:sql... (4)
-> + Validation blocked (4)
-> + List from XMl to be displayed ... (2)
-> + reports - changing data source (5)
-> + Disable HTML tags in Sense:X (8)
-> + .NETCompiledTransform Paramete... (3)
-> + Why Is The Saxon Processor So ... (13)
-> + Still can not get "integrated ... (15)
-> + quick xml gen from xsd (2)
-> - new to sylus, issue with if va... (1)
-> + Question about using Data Dire... (5)
-> + Why is the DB to XML Data Sour... (2)
-> + Relational db => XML pipeline (2)
-> + connection to oracle 10g (8)
-> + xsl:function misdemeanor (3)
-> + Records Extraction from XML (2)
-- Previous [1321-1340] [1341-1360] [1361-1380] Next
+ Website Feedback (247)
+ XSLT Help and Discussion (7597)
+ XQuery Help and Discussion (1944)
+ Stylus Studio FAQs (159)
+ Stylus Studio Code Samples & Utilities (364)
+ Stylus Studio Announcements (113)
Topic  
Postnext
Dan WonacottSubject: HTML tables from sorted XSL
Author: Dan Wonacott
Date: 28 Nov 2007 08:41 PM
Hi,
I'm trying to create a two-dimensional table where each cell is filled according to XML node data which are sorted. This is something we commonly require and have yet to find a solution.
The only solution I can come up with cheats by using CDATA sections to open and close the table rows which, although totally effective, I don't believe is using XSL appropriately and I'd like to find a better solution. The XML and XSL should explain the problem more clearly:

The XML:
<document>
<test>
<value>G</value>
</test>
<test>
<value>A</value>
</test>
<test>
<value>D</value>
</test>
<test>
<value>C</value>
</test>
<test>
<value>F</value>
</test>
<test>
<value>B</value>
</test>
<test>
<value>E</value>
</test>
</document>

The XSL:
<xsl:template match="/">
<table>
<xsl:apply-templates select="/document/test" mode="makeCell">
<xsl:sort select="value"/>
</xsl:apply-templates>
</table>
</xsl:template>

<xsl:template match="test" mode="makeCell">
<xsl:if test="position() mod 3 = 1">
<xsl:text disable-output-escaping="yes"><![CDATA[<tr>]]></xsl:text>
</xsl:if>
<td><xsl:value-of select="value"/></td>
<xsl:if test="position() mod 3 = 0 or position() = last()">
<xsl:text disable-output-escaping="yes"><![CDATA[</tr>]]></xsl:text>
</xsl:if>
</xsl:template>

The output:
<table>
<tr>
<td>A</td>
<td>B</td>
<td>C</td>
</tr>
<tr>
<td>D</td>
<td>E</td>
<td>F</td>
</tr>
<tr>
<td>G</td>
</tr>
</table>

If it wasn't for the sort I would use a following-sibling method as Michael Kay suggests in XSLT 2.0.

Any suggestions?

Thanks. Dan Wonacott

Postnext
Alberto MassariSubject: HTML tables from sorted XSL
Author: Alberto Massari
Date: 30 Nov 2007 04:44 AM
Hi dan,
maybe it's not the most efficient way of doing this, but this should work (unless you have duplicate values...):

<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>

<xsl:template match="/">
<table border="1">
<xsl:for-each select="/document/test">
<xsl:sort select="value"/>
<xsl:if test="position() mod 3 = 1">
<tr>
<xsl:call-template name="print3">
<xsl:with-param name="startAt" select="value/text()"/>
</xsl:call-template>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</xsl:template>

<xsl:template name="print3">
<xsl:param name="startAt"/>
<xsl:for-each select="/document/test[value/text() &gt;= string($startAt)]">
<xsl:sort select="value"/>
<xsl:if test="position() &lt;= 3">
<td><xsl:value-of select="."/></td>
</xsl:if>
</xsl:for-each>
</xsl:template>

</xsl:stylesheet>

Hope this helps,
Alberto

Posttop
Dan WonacottSubject: HTML tables from sorted XSL
Author: Dan Wonacott
Date: 02 Dec 2007 03:28 PM
Hi Alberto,

Thanks for your reply, it's an excellent solution. I was hoping there might be a way to do this without repeating the sort; I imagine this to be inefficient with large XML but I can't see there's an XSL alternative. Fortunately, the data I'm working with is pretty small so this will fit the bill perfectly. Thanks again!

Dan

   
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.