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
Retaw GnirpsSubject: Iterating through value tags
Author: Retaw Gnirps
Date: 05 Aug 2009 02:10 PM
Originally Posted: 05 Aug 2009 02:09 PM
Hello,

I have a page in XML that I would like to format as a table. Right now, all of the "Columns" of the table are grouped together, and I want to split them into the "Rows" of the table.

The general format of the XML document is as follows:

<ASSET>
<ATTRIBUTE name="Column1">
<VALUE>7</VALUE>
<VALUE>3</VALUE>
<VALUE>5</VALUE>
</ATTRIBUTE>

<ATTRIBUTE name="Column2">
<VALUE>10</VALUE>
<VALUE>19</VALUE>
<VALUE>123</VALUE>
</ATTRIBUTE>
</ASSET

and I would like to make a table such as:
Column1 Column2
7 10
3 19
5 123

I am new to XSLT, and have been trying to follow tutorials that I could find online. I found a way to iterate over all of the values at once and display the numbers such as "Column1 7 3 5" and "Column2 10 19 123" but don't know how to "pick-off" a single VALUE item each time.

Any help would be appreciated.

Thanks.

Postnext
Retaw GnirpsSubject: Iterating through value tags
Author: Retaw Gnirps
Date: 05 Aug 2009 03:45 PM
I tried iterating through a column and incrementing a counter, and then going through again to see if position() matches the counter, as follows:

<xsl:param name="numElements">0</xsl:param>

<xsl:for-each select="Attribute[./@name='Column1']/Value">
<xsl:with-param name="numElements" select="$numElements+1"/>
</xsl:for-each>

<xsl:for-each select="Attribute[./@name='Column1']/Value">
<xsl:if test="$numElements= position()">
<td><xsl:value-of select="."/></td>
</xsl:if>
</xsl:for-each>

But numElements only increments by one after I finish an entire column.

Any suggestions?

Posttop
Tony LavinioSubject: Iterating through value tags
Author: Tony Lavinio
Date: 10 Aug 2009 10:36 AM
Instead of
<xsl:param name="numElements">0</xsl:param>
<xsl:for-each select="Attribute[./@name='Column1']/Value">
<xsl:with-param name="numElements" select="$numElements+1"/>
</xsl:for-each>

try something like
<xsl:param name="numElements" select="count(Attribute[./@name='Column1']/Value)"/>

 
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.