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
Alexander AhammerSubject: Finding the maximum value
Author: Alexander Ahammer
Date: 09 Feb 2006 06:32 PM
I am trying to figure out how i can find a maximum value in a certain structure:

<athens>
<temperature>17</temperature>
<humidity>200</humidity>
</athens>
<berlin>
<temperature>17</temperature>
<humidity>200</humidity>
</berlin>
<london>
<temperature>17</temperature>
<humidity>200</humidity>
</london>

What i am trying to find is for maximum temperature value of the three cities and the maximum value of humidity.

Is there an easy way to do this?

Postnext
Minollo I.Subject: Finding the maximum value
Author: Minollo I.
Date: 09 Feb 2006 09:37 PM
In XSLT/XPath 2.0 you can use the max() function, and that makes it trivial.

In XSLT 1.0 you can use saxon:max() if you are using Saxon (see http://www.exslt.org/math/functions/max/ for similar extensions in other processors), or you can do that manually:

<xsl:for-each select="//temperature">
<xsl:sort data-type="number" order="descending"/>
<xsl:if test="position()=1">Warmest temperature: <xsl:value-of select="."/></xsl:if>
</xsl:for-each>

<xsl:for-each select="//humidity">
<xsl:sort data-type="number" order="descending"/>
<xsl:if test="position()=1">Highest humidity: <xsl:value-of select="."/></xsl:if>
</xsl:for-each>

Hope this helps,
Minollo

Postnext
Alexander AhammerSubject: Finding the maximum value
Author: Alexander Ahammer
Date: 10 Feb 2006 02:07 AM
Yes thank you this did it.

Since i have not worked with the max function, could you elaborate in how i could use it. Would it be like this:

<xsl:max select="temperature"/>

?

Postnext
Alexander AhammerSubject: Finding the maximum value
Author: Alexander Ahammer
Date: 10 Feb 2006 03:50 AM
I am trying to do the following thing (i'll write the code to make it obvious:

<xsl:for-each select="//temperature">
<xsl:sort data-type="number" order="descending"/>

<xsl:if test="position()=1">
<xsl:variable name="The_highest" select="."/>
</xsl:if>

<Temperature degree="$The_highest">
<xsl:if test="$The_highest=.">
<td bgcolor="something">
<xsl:value-of select="."/>
</td>
</xsl:if>
</Temperature>

</xsl:for-each>


This code doesn't work. What i am trying to do is to write the highest Temperature in a variable and then go through each node and compare the value of the node with the variable i have created. If the two have the same value i want to print it out in a certain way.

Is there a way to do this.

Posttop
Minollo I.Subject: Finding the maximum value
Author: Minollo I.
Date: 10 Feb 2006 08:49 AM
You would have to do that in two steps; first a step to assign the variable, then the loop using the variable value...

<xsl:variable name="The_highest">
<xsl:for-each select="//temperature">
<xsl:sort data-type="number" order="descending"/>
<xsl:if test="position()=1">
<xsl:value-of select="."/>
</xsl:if>
</xsl:for-each>
</xsl:variable>

<xsl:for-each....>
<!-- use $The_highest to do something -->
</xsl:for-each>

About using the max() function, max() will work on a nodeset or a sequence; so you would do max(//temperature).

Minollo

 
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-2011 All Rights Reserved.