This discussion helps much, thanks.
And of course, you could combine the two variables:
<xsl:variable name="slen" as="xs:integer" select="string-length(answers)"/>
I got an error when I tried that ???
XPTY0004: A sequence of more than one item is not allowed as the first
argument of string-length()
Should it work?
I am using Saxon from the command line. java -jar "C:\saxon\saxon.jar .....
But when I used a combined version from Martin's suggestion with
string-join.
<xsl:variable name="slen" as="xs:integer"
select="string-length(string-join(answers, ''))"/>
It works great.
Interestingly, when I put a copy of your example in, but with an unused
@name. I don't get an error. I guess it only hits the error when the
variable is evaluated.
Michael Kay
http://www.saxonica.com/
-----Original Message-----
From: Fred Christian [mailto:fredc(_at_)kbooks(_dot_)com]
Sent: 27 March 2009 17:46
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] length of string from a set of nodes.
I was able to get this to work, but while reading about it, I
see all these little tips and recommendations regarding being
efficient and not creating nodes when you only need strings.
In this code my goal was meet of deciding if the length of
all the text concatenated together is greater than 30.
<xsl:variable name="strings" as="xs:string"><xsl:value-of
select="answers"/></xsl:variable>
<xsl:variable name="slen" as="xs:integer"><xsl:sequence
select="string-length($strings)"/></xsl:variable>
<xsl:for-each select="answers">
<xsl:choose>
<xsl:when test="$slen gt 30"> etc...
I tried various combinations of using the <<concat()>>
function, <<xsl:sequence>>, and <<xsl:value-of>>. This is
what ended up working.
Is there a "better" way to do this?
Thanks
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--