Re: [xsl] Calculate the average line length within variable name="lines" as="element()*" not including the last line

Subject: Re: [xsl] Calculate the average line length within variable name="lines" as="element()*" not including the last line
From: David Carlisle <davidc@xxxxxxxxx>
Date: Mon, 12 Apr 2010 11:19:26 +0100
On 12/04/2010 11:00, Alex Muir wrote:
<xsl:variable name="averageLineLength"

select="round(avg($lines[last()]/preceding-sibling::node()/@length))" as="xs:double"/>


you have used an as attribute that says this mmust return one value but if $lines has less than two items
$lines[last()]/preceding-sibling::node()
will be empty, so avg() will get an empty sequence, and so return () so you fail the type check.


perhaps



select="(round(avg($lines[last()]/preceding-sibling::node()/@length)),0)[1]"

woul dbe what you want, returning 0 if there are no lines to average.

David

________________________________________________________________________
The Numerical Algorithms Group Ltd is a company registered in England
and Wales with company number 1249803. The registered office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.

This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs. ________________________________________________________________________


Current Thread