Subject: Re: [xsl] Could not use matches in Regular Expression (XSLT 2.0) From: Wolfgang Laun <wolfgang.laun@xxxxxxxxx> Date: Mon, 3 May 2010 09:10:54 +0200 |
On Mon, May 3, 2010 at 5:47 AM, Jack Bush <netbeansfan@xxxxxxxxxxxx> wrote: > > Gentlemen, > > Thank you very much for your suggestion that has worked perfectly. > > I did left out the single quotes in the following line: > > <xsl:when test="$TELEPHONE_AREA_CODE = 'FAIRYLAND'"> > > It was a midnight cut-and-paste minor blunder. > > Btw, so if I want a combination of 2 pattern matching then it would be along the line of the following: > > matches( ., '^4\d{6}$ | ^6\d{5}$' ) or <xsl:if test="matches(.,'^4\d{6}$') | matches(.,'^6\d{5}$')"> This could be a single pattern: '^(4\d{6}|6\d{5})$' > matches(., '^4[0-9]{6} | ^6[0-9]{5}') or <xsl:if test="matches(.,'^4[0-9]{6}') | matches(.,'^6[0-9]{5}"> > > At the sametime, is it possible to setup dependencies between multiple pattern matches such as the following: > > matches( ., '^4\d{6}$ & ^6\d{5}$' ) or <xsl:if test="matches(.,'^4\d{6}$') & matches(.,'^6\d{5}$')"> There is no '&' (in this sense) in patterns, and it doesn't make sense: A string cannot match both distinct, full range (i.e., from ^/start to $/end) at the same time. What is the spec, verbally? -W > matches(., '^4[0-9]{6} & ^6[0-9]{5}') or <xsl:if test="matches(.,'^4[0-9]{6}') & matches(.,'^6[0-9]{5}"> > > ^6\d{5}$' won't be matched unless '^4\d{6} is matched? Likewise, the same thing applies to '^4[0-9]{6} followed by ^6[0-9]{5}'? > > Many thanks again, > > Jack > > > ----- Original Message ---- > From: Wolfgang Laun <wolfgang.laun@xxxxxxxxx> > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Sent: Sun, 2 May, 2010 12:18:21 AM > Subject: Re: [xsl] Could not use matches in Regular Expression (XSLT 2.0) > > The pattern must be a string, so enclose it in apostrophes. (Also, > there is one opening bracket missing.) To have an exact match, use '^' > and '$' to anchor at the beginning and the end. You may simplify using > a repeat count (and \d for digit). All together now: > > matches( ., '^4\d{6}$' ) > > -W > > > On Sat, May 1, 2010 at 3:56 PM, Jack Bush <netbeansfan@xxxxxxxxxxxx> wrote: > >> > >> Hi Forum members, > >> > >> I > >> am new to XSLT 2.0 and would like to do the following basic numeric string pattern > >> matching using regular expression: > >> > >> <xsl:template match="ns:p[ns:strong='Telephones:']"> > >> <xsl:choose> > >> < -- If global parameter $TELEPHONE_AREA_CODE equals to FAIRYLAND --> > >> <xsl:when test="$TELEPHONE_AREA_CODE = ''FAIRYLAND"> > >> <xsl:for-each select="ns:a"> > >> <-- Only accept the phone number that starts with 4 follow by six digits.... ---> > >> <xsl:if test="matches(.,4[0-9][0-9][0-9]0-9][0-9][0-9])"> > >> <phone_number><xsl:value-of select='.'/></phone_number> > >> </xsl:if> > >> </xsl:for-each>/> > >> ...... > >> > >> However, it is picking up phone numbers starting with 1 instead. Also tried the starts-with() with the same outcomes. > >> > >> I am using JDK1.6.19, Netbeans 6.7, JDOM 1.1, Saxon 9.1 on Windows XP. > >> > >> Your assistance would be much appreciated. > >> > >> Thanks in advance, > >> > >> Jack
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Could not use matches in , Jack Bush | Thread | Re: [xsl] Could not use matches in , Jack Bush |
Re: [xsl] Could not use matches in , Jack Bush | Date | [xsl] "1" cast as xs:boolean, Christian Roth |
Month |