Subject: Calculate the average line length within variable name="lines" as="element()*" not including the last line
From: Alex Muir <alex.g.muir@xxxxxxxxx>
Date: Mon, 12 Apr 2010 09:42:09 +0000
|
Hi,
I'm trying to calculate the average line length in variable lines ,
not including the last line, where the new line is represented by a
placeholder '
I store each line in an element and capture it's length and text which
works fine.
<xsl:variable name="lines" as="element()*">
<xsl:analyze-string select="text()" regex="'">
<xsl:non-matching-substring>
<xsl:element name="line">
<xsl:attribute name="length"
select="string-length(normalize-space(.))"/>
<xsl:attribute name="text" select="."/>
</xsl:element>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:variable>
I can get the average like so including the last line
<xsl:variable name="averageLineLength"
select="round(avg($lines/@length))" as="xs:double"/>
I can get the last line length without error
<xsl:variable name="averageLineLength"
select="round(avg($lines[last()]/@length))" as="xs:double"/>
However in the case where my number lines is greater than 2 <xsl:when
test="$numberLines ge 2"> I don't want to include the last line as
part of my count and was trying the following
<xsl:variable name="averageLineLength"
select="round(avg($lines[last()]/preceding-sibling::node()/@length)
)"
as="xs:double"/>
Which gives me the error:
Description: An empty sequence is not allowed as the value of variable
$averageSpaceNormalizedLineLength
What am I doing wrong?
Thanks
--
Alex
https://sites.google.com/a/utg.edu.gm/alex
Some Good Music
http://sites.google.com/site/greigconteh/
|