Subject: RE: Count leading spaces using xpath expression
From: "Michael Kay" <michael.h.kay@xxxxxxxxxxxx>
Date: Wed, 4 Dec 2002 09:46:11 -0000
|
First translate the first non-space to "x":
translate($str, translate($str, ' ', ''), 'x')
then it's easy:
string-length(substring-before(
translate($str, translate($str, ' ', ''), 'x'),
'x'))
If you need to handle strings containing all spaces, you may need to
concat() an 'x' at the end before you start.
Not tested.
Michael Kay
Software AG
home: Michael.H.Kay@xxxxxxxxxxxx
work: Michael.Kay@xxxxxxxxxxxxxx
> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of
> Grainne Reilly
> Sent: 04 December 2002 03:58
> To: XSL-List@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Count leading spaces using xpath expression
>
>
> Hi,
> I am looking for a way to count the number of leading spaces
> in the text of
> an element. I have written the following template which does this:
>
> <xsl:template name="countIndent">
> <xsl:param name="str" />
> <xsl:param name="leadingSpaces" select="0"/>
> <xsl:choose>
> <xsl:when test="(string-length($str) != 0) and
> (normalize-space(substring($str, 1, 1)) = '' )" >
> <xsl:call-template
> name="countIndent">
> <xsl:with-param
> name="str" select="substring($str, 2)" />
> <xsl:with-param
> name="leadingSpaces" select="$leadingSpaces + 1"/>
> </xsl:call-template>
> </xsl:when>
> <xsl:otherwise>
> <xsl:value-of select="$leadingSpaces" />
> </xsl:otherwise>
> </xsl:choose>
> </xsl:template>
>
> However, I'd like to get this information as an xpath
> expression (so I can
> use it in a predicate e.g. /myElement[(indent expression) >
> 3]). Is this
> possible (it would only have to work for spaces, not all
> whitespace)? Thanks for any advice. Grainne.
>
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|