xsl-list
[Top] [All Lists]

RE: Re: [xsl] xsl:analyze-string explanation needed

2006-07-20 07:36:56
OK, I got it. Here's the new version of the template for the thousands of 
readers who have been holding your collective breath.

<xsl:template name="extract-minutes-as-seconds">
  <xsl:param name="time" />
        <xsl:analyze-string select="$time" regex="([0-9]+) minute(s)?.*$">
                <xsl:matching-substring>
                        <xsl:value-of select="60 * xs:integer(regex-group(1))" 
/>
                </xsl:matching-substring>
                <xsl:non-matching-substring>0</xsl:non-matching-substring>
        </xsl:analyze-string>
</xsl:template>
-- 
Charles Knell
cknell(_at_)onebox(_dot_)com - email



-----Original Message-----
From:     David Carlisle <davidc(_at_)nag(_dot_)co(_dot_)uk>
Sent:     Thu, 20 Jul 2006 14:58:41 +0100
To:       xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject:  Re: [xsl] xsl:analyze-string explanation needed


are you saying that I should change the regex so that it matches the
entire input string rather than the part I'm interested in, 

yes
then there will only be one substring aafter the regex analysis, either
1 matching substring (the whole string) or one none matching substring.


<xsl:stylesheet version="2.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema";
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>


<xsl:template name="main">
  <xsl:for-each select="(
                        '3 minutes 57 seconds',
                        '3 minutes',
                        '5 seconds',
                        'rubbish')">

:<xsl:value-of select="."/>
:::    <xsl:analyze-string select="." regex="([0-9]+) minutes.*$">
      <xsl:matching-substring>
        <xsl:value-of select="60 * xs:integer(regex-group(1))" />
      </xsl:matching-substring>
      <xsl:non-matching-substring>0</xsl:non-matching-substring>
    </xsl:analyze-string>
    
  </xsl:for-each>
  
</xsl:template>

</xsl:stylesheet>




$ saxon8 -it main regex.xsl 
<?xml version="1.0" encoding="UTF-8"?>

:3 minutes 57 seconds
:::    180

:3 minutes
:::    180

:5 seconds
:::    0

:rubbish
:::    0

--~------------------------------------------------------------------
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>
--~--