Re: [xsl] analyze-string regex

Subject: Re: [xsl] analyze-string regex
From: John Lumley <john@xxxxxxxxxxxx>
Date: Fri, 28 Mar 2014 10:29:36 +0000
On 28/03/2014 10:15, Michael Kay wrote:
However, another approach I have seen is to build the regular expression methodically, for example with a sequence of variables:

<xsl:variable name="number">\d+</xsl:variable>
<xsl:variable name="string">"[^"]*"</xsl:variable>
<xsl:vairable name="number-or-string" select="{$number}|{$string}"/>
another advantage of this technique, when using <xsl:analyze-string> is that you can reuse the definitions within a choose inside matching-substring, e.g.

<xsl:analyze-string select="." regex="{$number-or-string}">
    <xsl:matching-substring>
        <xsl:choose>
           <xsl:when test="matches(.,$number)">......
           <xsl:when test="matches(.,$string)">......

and of course the cases are only defined once - and usually in 'plain text' situations. However group numbering can still be an issue. If you're doing a lot of that then some simple preprocessing could assist - collecting the sub-regexes from the tests and forming up the variables etc....

--
*John Lumley* MA PhD CEng FIEE
john@xxxxxxxxxxxx <mailto:john@xxxxxxxxxxxx>
on behalf of Saxonica Ltd

Current Thread