[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Summing Time Durations Help

Subject: Re: Summing Time Durations Help
From: Colin Paul Adams <colin@xxxxxxxxxxxxxxxxxx>
Date: 05 Oct 2005 08:26:22 +0100
xdt daytimeduration
>>>>> "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

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.