xsl-list
[Top] [All Lists]

Re: [xsl] How to split an RegEx into several lines for readability?

2007-04-29 13:48:54
Wow...

 Thanks a lot David, Colin and Rashmi.


Cheers,
Dimitre

On 4/29/07, David Carlisle <davidc(_at_)nag(_dot_)co(_dot_)uk> wrote:


Colin has mentioned the x flag (which allows you to add ignored white
space, also, since you are using xsl:analyze-string, the regex is an
attribute value template so you can define the regexp parts separately
and drop them in using {}.

For example this monster regex that matches tags in hmlparse


    
regex="&lt;(/?){$d:elem}\s*(({$d:attr})*)(/?)>|{$d:comment}|{$d:pi}|{$d:doctype}|{$d:cdata}|({$d:msif})">

the regex that match each type of markup are in separate variables for
readability, they are only used once, in this expression.

<xsl:variable name="d:attr"
  select="'(\i\c*)\s*(=\s*(&quot;[^&quot;]*&quot;|''[^'']*''|\c+))?\s*'"/>

<xsl:variable name="d:elem"
  select="'(\i\c*)'"/>

<xsl:variable name="d:comment"
  select="'&lt;!\-\-[^\-]*(\-[^\-]+)*\-\->'"/>

<xsl:variable name="d:pi"
  select="'&lt;\?\i\c*[^>]*>'"/>

<xsl:variable name="d:doctype"
  select="'&lt;!D[^\[&lt;>]*(\[[^\]]*\])?>'"/>


<xsl:variable name="d:msif"
  select="'&lt;!\[(end)?if.*?\]>'"/>

<xsl:variable name="d:cdata"
  select="'&lt;!\[CDATA(.|\s)*\]\]>'"/>



David

________________________________________________________________________
The Numerical Algorithms Group Ltd is a company registered in England and Wales 
with company number 1249803. The registered office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.

This e-mail has been scanned for all viruses by Star. The service is powered by 
MessageLabs. 
________________________________________________________________________

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




--
Cheers,
Dimitre Novatchev
---------------------------------------
Truly great madness cannot be achieved without significant intelligence.
---------------------------------------
To invent, you need a good imagination and a pile of junk
-------------------------------------
You've achieved success in your field when you don't know whether what
you're doing is work or play

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--