Re: [xsl] check the type of the $pattern argument to a regular expression?

Subject: Re: [xsl] check the type of the $pattern argument to a regular expression?
From: Ronan Klyne <ronan.klyne@xxxxxxxxxxx>
Date: Mon, 16 Apr 2007 10:50:54 +0100
Abel Braaksma wrote:
> Andrew Welch wrote:
>>
>> This is one way to way check if a pattern is valid:
>>
>> <xsl:stylesheet version="2.0"
>>     xmlns:regex="java.util.regex.Pattern"
>>     xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
>>     xmlns:saxon="http://saxon.sf.net/";>
>>
>> <xsl:template match="/">
>>     <xsl:value-of select="saxon:try(regex:compile(']['), 'false')"/>
>> </xsl:template>
>>
>> </xsl:stylesheet>
>>
>> This attempts to compile the regex using Java, and catches the
>> PatternSyntaxException using Saxon SA's saxon:try() function.  In this
>> case it returns "false" because "][" is invalid.
> 
> Nice one! But note that there are quite some differences between Java
> regexes and XSLT regexes. You may be able to compile regexes that are
> valid in Java (i.e., matching emptiness, but there are also some
> syntactic differences), but not valid in XSLT.
> 
> Cheers,
> -- Abel Braaksma
> 
> 

So a similar thing using 'net.sf.saxon.regex.RegularExpression' as the
regex class and calling 'compileRegularExpression("][", true, '')'
should do the trick, methinks...
(BTW, nice solution Andrew :-)

-- 
Ronan Klyne
Business Collaborator Developer
Tel: +44 (0)870 163 2555
ronan.klyne@xxxxxxxxxxx
www.groupbc.com

Current Thread