Re: [xsl] comparing strings

Subject: Re: [xsl] comparing strings
From: Miloslav Nic <nicmila@xxxxxxxxx>
Date: Tue, 02 Jan 2001 13:18:36 +0100
You are right.

There is the second, improved version:


<xsl:output method="xml" indent="yes"/>

<xsl:param name="start">paca</xsl:param>
<xsl:param name="count">5</xsl:param>

<xsl:template match="/">
  <xsl:call-template name="select">
    <xsl:with-param name="str" select="$start"/>

<xsl:template name="select">
  <xsl:param name="str"/>
  <xsl:variable name="term" select="//term[starts-with(.,$str)][1]"/>
    <xsl:when test="$term">
      <xsl:apply-templates select="$term"/>
    <xsl:when test="string-length($str)=1">
      <xsl:call-template name="select">
	<xsl:with-param name="str"
    <xsl:when test="$str">
      <xsl:call-template name="select">
	<xsl:with-param name="str" select="substring($str,1,string-length($str)
- 1)"/>

<xsl:template match="term">
  <xsl:param name="pos" select="1"/>
  <t><xsl:value-of select="."/></t>

  <xsl:if test="$pos &lt; $count">
    <xsl:apply-templates select="following-sibling::term[1]">
      <xsl:with-param name="pos" select="$pos + 1"/>



Jeni Tennison wrote:
> Hi Miloslav,
> > <xsl:template match="/">
> >   <xsl:apply-templates select="//term[starts-with(.,$start)][1]"/>
> > </xsl:template>
> The trouble with this approach is that when the input term is
> something like 'pabulum' (means 'food', apparently), none of the terms
> in the list start with that term.  With the above solution, you'll get
> the beginning of the list, but Oliver stated he wanted the terms that
> follow the input term alphabetically (i.e. wants 'pace' etc. to
> show).
> Cheers,
> Jeni
> ---
> Jeni Tennison
>  XSL-List info and archive:

<firstName> Miloslav </firstName>    
<surname>   Nic      </surname>     

<mail>    nicmila@xxxxxxxxx    </mail>   
<support>  </support>

 XSL-List info and archive:

Current Thread