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 (1192)
- Stylus Studio Technical Forum (14621)
-> - UV Kit (1)
-> - Preview PDF as HTML? (1)
-> + ArrayIndexOutOfBoundsException... (3)
-> + WSCC to KML transform help (5)
-> + Using XSV 3.1-1 as an external... (2)
-> + Cannot debug stylesheet (2)
-> + Error installing Stylus Studio... (3)
-> - Windows XP "not responding" er... (1)
-> - Windows XP "not responding" er... (1)
-> + HTML to XSL (2)
-> + Run Stylus studio from command... (2)
-> + Setting Context for XPath Quer... (5)
-> + Batch process to check well-fo... (9)
-> + WSDL validator? (8)
-> - How to be still using Old Jars (1)
-> - Install Stylus Studio on anoth... (1)
-> + Install Stylus Studio on anoth... (3)
-> + How to validate via catalog lo... (4)
-> + New Installation Upgrade Issue... (4)
-> - Freelance Project - Mapping di... (1)
-> + Converting from Edifact to SQL... (3)
-> + converting data file to xml us... (2)
-> + have serious problem with Styl... (2)
-> + ddtek:sql-delete (3)
-> + Web Service Call with Axis: No... (3)
-> + Entity gets replaced when inde... (2)
-> + EDIFACT import error (3)
-> + (401) forbidden error (8)
-> + Error when data type not speci... (2)
-> - Globally delete duplicates of ... (1)
-> + Validation too slow!!!! (4)
-> + Define a complex type with mul... (2)
-> + XML Playlists (2)
-> - Create SOA Web Service with me... (1)
-> + Spell checking?? (2)
-> - saxon 9 linebreak in text mode (1)
-> + Apache FOP gets NoClassDefFoun... (3)
-> + Nillable Decimal (4)
-> + Transform XML to AS400 Databas... (4)
-> + xs3p vs xsDoc (3)
-> + Update Installation Problem (11)
-> + Java Heap error and -Xmx param (5)
-> + 2007 Pro won't run XSL files c... (3)
-> + access to multiples databases ... (6)
-> + License Authentication Failed (2)
-> + XSLT Mapper: How to aggregate ... (2)
-> + Why my WYSIWYG tab disappeared... (3)
-> + Flat File (From mainframe COBO... (9)
-> + X12 Validation (5)
-> + Schema replacement in Microsof... (2)
-> + [OT] XML fragment - error expl... (3)
-> + Re-using a simple type definit... (2)
-> + What is "Java bult-in" XSLT Pr... (2)
-> + Error when generating .NET cod... (6)
-> + options for sum(function) - to... (2)
-> + [OT] XSD - is this valid XML o... (2)
-> + Multiple page sequences (2)
-> + License disabled (3)
-> + EDIFACT to XML with multiple Q... (5)
-> + Viewing Web Service Call http ... (2)
-> - keyref handling by different p... (1)
-> + Running transform in SS UI com... (9)
-> + Mapping from one schema to ano... (3)
-> - Using document() to lookup fro... (1)
-> + Can not open a xml file in IE ... (2)
-> + Stylus Studio detected a chang... (3)
-> + Customer Support for Stylus St... (2)
-> + WebService Call is not working... (3)
-> + Activation Problem (2)
-> + Activating Stylus Studio 2008 (3)
-> + Cannot use UNC paths, get save... (22)
-> + DB to XML Data Source not avai... (3)
-> + Stylus Studio 2008 Installatio... (16)
-> - SQL Server 2005 xml datatype -... (1)
-> + XML Reporting: linking to sect... (4)
-> + Merge an external xml with inp... (4)
-> + Stylus Closing abruptly (4)
-> + Best approach for generating X... (2)
-> + Problem with Java call (5)
-> + Changing the top margin (2)
-> + Generating a Web Service Call (2)
-> + import xml into excel using V... (2)
-> + FOP producing NoSuchMethodErro... (6)
-> + Reporting Errors (2)
-> + Doc/Literal Wrapped (2)
-> + Need image to render at higher... (3)
-> + HTML to xml wizard on thousand... (2)
-> + Doc/Literal and SOAP Header/Bo... (2)
-> - Help with settping up MS Acces... (1)
-> + WSDL - A Well Defined Service (7)
-> + XML to XML Mapping - Combining... (2)
-> + CData Question (3)
-> + mySQL DB Connection (11)
-> + XPath documentation confusion (2)
-> + Extra block/CR generated (6)
-> + Apache FOP (2)
-> + Inserting Java Script (2)
-> + Convert EDIFACT to X12 or vice... (6)
-> + XSD: Restricting an attribute ... (2)
-> + Creating dynamically named ele... (2)
-- Previous [1201-1220] [1221-1240] [1241-1260] Next
+ Website Feedback (249)
+ XSLT Help and Discussion (7625)
+ XQuery Help and Discussion (2017)
+ 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
(Deleted User) Subject: HTML tables from sorted XSL
Author: (Deleted User)
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.