RE: [xsl] Count leading spaces using xpath expression

Subject: RE: [xsl] 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: [xsl] 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


Current Thread