[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] xsl string comparison fails why?


Subject: Re: [xsl] xsl string comparison fails why?
From: Mike Brown <mike@xxxxxxxx>
Date: Wed, 25 Sep 2002 09:50:09 -0600 (MDT)

Andrew Welch wrote:
> The simplest solution that fits your stylesheet is to translate() out
> any whitespace from the text() content of the <state> element before it
> gets compared to the parameter:
> 
> <xsl:for-each select="admissions/state/text()">
>   <xsl:if test="translate(.,'&#x9;&#xA;&#xD;&#x20;','')=$state">
>     <xsl:value-of select="."/>
>   </xsl:if>
> </xsl:for-each>

No, the simplest solution is to use normalize-space(), which will remove
leading and trailing spaces, but won't take the space out of "Rhode Island".

And the for-each is not strictly needed.

<xsl:value-of select="admissions/state[normalize-space(text())=$state]"/>

will give him what he asked for, although I suspect that what he *wants*
is something like

<xsl:for-each select="admissions/state[normalize-space(text())=$state]"/>
  <a href="{statelink/@href}">
    <xsl:value-of select="statelink"/>
  </a>
</xsl:for-each>

where the for-each is just shifting the context to make the subsequent
statelink references easier (you could use xsl:variable and $foo/statelink if
you wanted)

   - Mike
____________________________________________________________________________
  mike j. brown                   |  xml/xslt: http://skew.org/xml/
  denver/boulder, colorado, usa   |  resume: http://skew.org/~mike/resume/

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



Current Thread