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
prasad ramaSubject: Do ...when
Author: prasad rama
Date: 23 Jan 2009 06:15 PM
Can anyone give solution for this?

I have the data like this..

<product code="pen">
<pen rate="1.23" points="0"/>
<pen rate="1.15" points="0"/>
<pen rate="1.68" points="6"/>
<pen rate="1.94" points="2"/>
<pen rate="1.23" points="0"/>
<pen rate="1.00" points="0"/>
</product>
<product code="Book">
<pen rate="1.23" points="0"/>
<pen rate="1.15" points="0"/>
<pen rate="1.68" points="0"/>
<pen rate="1.94" points="0"/>
<pen rate="1.23" points="0"/>
<pen rate="1.00" points="0"/>
</product>


My output should come like this..

Pen
rate points
1.23 0
1.15 0
1.68 6
1.94 2
1.23 0
1.00 0

Book
rate points
1.23 0
1.15 0
1.68 0
1.94 0
1.23 0
1.00 0

In the product - Book, all the points values are "0". So we dont want to show the Points column in the output when points=0.

We need to display point column when any of the points != "0"

Posttop
John BamptonSubject: Do ...when
Author: John Bampton
Date: 06 Feb 2009 07:37 AM
For quality XSL consulting contact jbampton@gmail.com with XSL as the subject.

The solution based on html is:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:template match="/">
<html>
<head></head>
<body>
<xsl:for-each select="products/product">
<table>
<tr>
<td>
<xsl:value-of select="@code"></xsl:value-of>
</td>
<xsl:if test="sum(pen/@points) != 0 ">
<td></td>
</xsl:if>
</tr>
<tr>
<td>
rate
</td>
<td>
<xsl:if test="sum(pen/@points) != 0 ">
points
</xsl:if>
</td>
</tr>
<xsl:for-each select="pen">
<tr>
<td>
<xsl:value-of select="@rate"></xsl:value-of>
</td>
<xsl:if test="sum(@points + sum(preceding-sibling::pen/attribute::points) + sum(following-sibling::pen/attribute::points)) != 0 ">
<td>
<xsl:value-of select="@points"></xsl:value-of>
</td>
</xsl:if>
</tr>
</xsl:for-each>
</table>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>


There probably is an easier way but this is what I hacked together in 5 minutes. Let me know if you want that in XSL-FO format

 
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.