[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

xsl:analyze-string and multiple matching groups

Subject: xsl:analyze-string and multiple matching groups
From: Florent Georges <lists@xxxxxxxxxxxx>
Date: Wed, 1 Feb 2012 14:42:39 +0000 (GMT)
 xsl:analyze-string and multiple matching groups
  Hi,

  Let's say I have a string of the form "a:b;c:d;" where there
can be
any number of sub-parts of the form "x:y;", that I'd like
to parse using
xsl:analyze-string.  With the following regex:

    ^(([a-z]):([a-z]);)+$
which matches indeed, I cannot use the regex-groups to retrieve
all values.
 For instance the following:

    <xsl:analyze-string select="'a:b;c:d;'"
   
                    regex="^(([a-z]):([a-z]);)+$">
     
 <xsl:matching-substring>
          <group num="0" value="{ regex-group(0)
}"/>
          <group num="1" value="{ regex-group(1) }"/>
          <group
num="2" value="{ regex-group(2) }"/>
          <group num="3" value="{
regex-group(3) }"/>
          <group num="4" value="{ regex-group(4) }"/>
   
      <group num="5" value="{ regex-group(5) }"/>
          <group num="6"
value="{ regex-group(6) }"/>
          <group num="7" value="{ regex-group(7)
}"/>
       </xsl:matching-substring>
    </xsl:analyze-string>

returns the
following:

    <group num="0" value="a:b;c:d;"/>
    <group num="1"
value="c:d;"/>
    <group num="2" value="c"/>
    <group num="3" value="d"/>
 
  <group num="4" value=""/>
    <group num="5" value=""/>
    <group num="6"
value=""/>
    <group num="7" value=""/>

when I would have expected the
following instead:

    <group num="0" value="a:b;c:d;"/>
    <group num="1"
value="a:b;"/>
    <group num="2" value="a"/>
    <group num="3" value="b"/>
 
  <group num="4" value="c:d;"/>
    <group num="5" value="c"/>
    <group
num="6" value="d"/>
    <group num="7" value=""/>

  That is, I expected the
regex-groups to match the "dynamic"
number of groups, instead of the strict
"static" or "lexical"
group numbering from the regex string.  I thought that
was what
I was used to in Perl and other tools, by I can't recall for
sure,
and I didn't find a definitive answer in the spec.

  Are my expectations
wrong?  If yes why?  And if yes, is there
any general solution to this
problem? (by "general", I mean not
recursing on the string and using substring
on ';' because here
this is a simple delimiter)

  BTW, tested with Saxon HE
9.3.0.5 and 9.4.0.2.

  Regards,

-- 
Florent Georges
http://fgeorges.org/
http://h2oconsulting.be/

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.