| Subject: Re: [xsl] Summing Time Durations Help From: Colin Paul Adams <colin@xxxxxxxxxxxxxxxxxx> Date: 05 Oct 2005 08:26:22 +0100 | 
>>>>> "Kent" == Kent Seegmiller <hookjaw20@xxxxxxxxxxx> writes:
    Kent> I have some duration elements like <alltimes>
    Kent> <tduration>PT1H23M</tduration> <tduration>PT5M</tduration>
    Kent> <tduration>PT44M12S</tduration>
    Kent> <tduration>PT57M23S</tduration> ...  </alltimes>
    Kent> What is the most efficient way to sum the durations?  Is
    Kent> there an xpath = expression for this?
Yes. If you are using XPath 2.0.
You should use the sum() function.
But first you need some duration values - at present, all you have are
string literals - untyped text nodes.
So if you have a prefix, say xdt, bound to the XPath dataypes namespace,
you can convert the text node to a dayTimeDuration with the expression:
xdt:dayTimeDuration(text())
if the context node is a tduration.
So:
 sum (tduration/xdt:dayTimeDuration (text()))
looks suitable.
The following stylesheet (tested with gexslt):
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"
   xmlns:xdt="http://www.w3.org/2005/xpath-datatypes">
  <xsl:output method="text" />
  <xsl:template match="/alltimes">
    <xsl:value-of select="sum (tduration/xdt:dayTimeDuration (text()))" />
  </xsl:template>
</xsl:transform>
produces the result:
PT3H9M35S
which is the correct result according to my mental arithmetic.
With Saxon 8.5.1 I get the error:
Error at xsl:value-of on line 7 of file:/home/colin/test.xsl:
  XPST0003: XPath syntax error at char 43 on line 7 in {.../xdt:dayTimeDuration (text(...}:
    Cannot find a matching 1-argument function named
  {http://www.w3.org/2005/xpath-datatypes}dayTimeDuration()
Failed to compile stylesheet. 1 error detected.
I guess this means that Saxon 8.5.1 does not use the latest namespace,
so you would have to edit the xmlns line accordingly.
-- 
Colin Adams
Preston Lancashire
| Current Thread | 
|---|
| 
 | 
| <- Previous | Index | Next -> | 
|---|---|---|
| [xsl] Summing Time Durations Help, Kent Seegmiller | Thread | RE: [xsl] Summing Time Durations He, Michael Kay | 
| [xsl] Summing Time Durations Help, Kent Seegmiller | Date | RE: [xsl] comparisons between strin, Michael Kay | 
| Month |