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: Abel Braaksma <abel.online@xxxxxxxxx>
Date: Mon, 16 Apr 2007 11:41:48 +0200
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

Current Thread