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
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
hardik mehtaSubject: looping to generate 2 columnar table !
Author: hardik mehta
Date: 23 Nov 2005 07:51 AM
Hi all,
First greetings to all. I am a new member of this forum and also relatively new to XSLT.

I am trying to generate an xsl:fo file using xml document and xslt.
now, I requre 2 columnar table looping through node in xml.
To be precise it looks like following..
xml file:
<some-node>
<node-of-interest>
<sub-node1> val1 </sub-node1>
</node-of-interest>
<node-of-interest>
<sub-node1> val2 </sub-node1>
</node-of-interest>
<node-of-interest>
<sub-node1> val3 </sub-node1>
</node-of-interest> ........
</some-nodes>

output required:
|-------|----------|
|_col1_|__col2_|
|val1 | val2 |
_____________
|val3 | val4 |

|valN | |
_______ ____|

and i wanted to select row according to the fn:position() is even or the final node ....
xsl logic (not written in std syntax to save time and space )
<table>
<xsl:for-each select="some-nodes/node-of-interest" >
<if test="position() odd">
<row>
</if>
<cell>
<xsl:value-of select="sub-node1" />
</cel>
<cell>
<xsl:value-of select="sub-node1" />
</cel>

<if test="position() even or last()">
</row>
</if>
</xsl:for-each>
</table>

this implementation fails because of incomplte <row> element !!!

is there any other way to loop through ... may be with the step of 2 nodes ??


....................... any help ???

thanks,
Hardik

Postnext
(Deleted User) Subject: looping to generate 2 columnar table !
Author: (Deleted User)
Date: 23 Nov 2005 08:30 AM
Hardik,
I would try something like this:
<xsl:for-each>
<xsl:if (odd)>
<row>
- generate cell for position()
- generate cell for position()+1 if it exists
</row>
</xsl:if>

Good luck,
- clyde

Postnext
hardik mehtaSubject: looping to generate 2 columnar table !
Author: hardik mehta
Date: 23 Nov 2005 08:45 AM
Hi,

thanks,

but how to select the next item inside for-each with position ?

acutally I am not selecting all the nodes I have also applied condition

like..

<xsl:for-each select="node-of-interest[suvalue = test]">
.....


Hardik

Postnext
(Deleted User) Subject: looping to generate 2 columnar table !
Author: (Deleted User)
Date: 23 Nov 2005 09:09 AM
Hardik,

First, I think FO has facilities for automatically generating 2 column output. I suggest you investigate that.

But, in your example, you can do something like this:
<xsl:variable name="nodes" select="node-of-interest[suvalue = test]"/>
<xsl:for-each select="$nodes">
<xsl:if odd>
<row>
- generate cell for position()
- generate cell for position()+1 if it exists
</row>
</xsl:if>
</xsl:for-each>

- clyde

Postnext
hardik mehtaSubject: looping to generate 2 columnar table !
Author: hardik mehta
Date: 23 Nov 2005 09:37 AM
Hi,

thanks ..

it seems to be working..

but the only problem left is when I try to access the second cell inside for-each loop and it is in both the cases with variable $nodes and without it


self::node()[position="nextIndex"] it gives me blank values

Postnext
(Deleted User) Subject: looping to generate 2 columnar table !
Author: (Deleted User)
Date: 23 Nov 2005 10:35 AM
Hardik, we are almost there...

<xsl:variable name="nodes" select="/root/data[substring(.,1,1)='a']"/>
<xsl:for-each select="$nodes">
<xsl:if test="(position() mod 2)=1">
<xsl:variable name="nextIndex" select="position()+1"/>
<row>
- generate cell for select="."
- generate cell for select="$nodes[$nextIndex]"
</row>
</xsl:if>
</xsl:for-each>

- clyde

Posttop
hardik mehtaSubject: looping to generate 2 columnar table !
Author: hardik mehta
Date: 24 Nov 2005 03:25 AM
Hi clyde,

thank u verymuch for ur help !

everything is working now...


Hardik

 
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
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.