Subject: Re: 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
|