xsl-list
[Top] [All Lists]

[xsl] difference in regexp matches() and analyze-string

2007-12-31 08:56:04
Hi all,

the more I work with xsl, the less I understand of it.

Who can explain why a regexp works with matches and the same doesnt with analyze-string:

input

<doc>
    <al>1. eerste alinea</al>
    <al>2. tweede alinea</al>
    <al>3. tweede alinea</al>
</doc>

stylesheet


<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="2.0"
            xmlns:xs="http://www.w3.org/2001/XMLSchema";
            xmlns:my='http:/www.ruudgrosmann.nl/func'
            exclude-result-prefixes="xs my">

  <xsl:output indent='yes'/>

  <xsl:template match="/">
    <xsl:apply-templates />
  </xsl:template>

  <xsl:template match="al">
    <xsl:variable name='txt' select="./text()"/>
    <xsl:variable name='re2'
          select="concat('^(', '2\.)',  '\s+(.*)$')"
                      as="xs:string"/>


    <xsl:if test="matches($txt,  $re2)">
      <xsl:text>MATCH</xsl:text>
    </xsl:if>
        <xsl:analyze-string select="$txt" regex="$re2" >
          <xsl:matching-substring>
            <match/>
          </xsl:matching-substring>

          <xsl:non-matching-substring>
            <no-match/>
          </xsl:non-matching-substring>
        </xsl:analyze-string>
  </xsl:template>

</xsl:stylesheet>



output

<?xml version="1.0" encoding="UTF-8"?>
        <no-match/>
        MATCH<no-match/>
        <no-match/>


For the second al element the regexp ( being ^(2\.)\s+(.*)$' ) works for matches, but not for analyse-string (saxon 9B). I would expect a match in both cases. What did I misunderstand?

thanks, Ruud



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

<Prev in Thread] Current Thread [Next in Thread>