Regular expressions aren't pretty or readable at the best of time, IMHO.
Your idea of using concat combined with XPath comments seems to me to be as
good as you might
hope for.
But you could always write an xsl:function with zero arguments returning an
xs:string.
That way you can name your regular expression, and use commenting
techiniques within the body of the function.
You could then group a set of named regular expressions in a module to be
xsl:include/imprted.
From: Abel Braaksma Online <abel(_dot_)online(_at_)xs4all(_dot_)nl>
The regular expression syntax used in XSLT and XPath is largely based on
Perl's regular expression syntax. Perl added a very useful construct to
their regular expression dialect: the /x modifier. It gives "whitespace
freedom" and allows for comments inside regular expressions. It was a great
enhancement at the time, especially for moderate to difficult regexes.
I've been reading through the regex chapter of the XPath 2.0 Programmer's
Reference, hoping for something similar, but it wasn't mentioned. I know
there's the smiley-comment syntax for XPath, but it does not work inside a
regex. Unfortunately, the old, pre-/x time, way seems the only way:
dissecting the regex in strings and concatenating it back again. I don't
think this is right, or even adds to readability though. Does anybody know
of a way to add comments and whitespace to regular expressions? Much like
the /x modifier? Or should I add some preparser van normalize-space? That
won't be trivial, I think.
This is the best I could think of for the moment (example takes a filepath
and gets the filename part out and adds .xml, there are flaws in the reqex,
I know ;)
select="replace(., concat('^.*?', (: non-greedy: grab everything :)
'([^/\\]+)', (: the last part of the path: does
not contain (back)slashes. Grab it to $1 :)
'\.', (: the dot separating the
extension from the filename :)
'[^\.]*$' (: not-a-dot until end of string,
this is the extension :)
), '$1.xml')" />
But it ain't very pretty with all them quotes and comma's, ain't it? ;)
Anyone any ideas?
_________________________________________________________________
Windows Live? Messenger has arrived. Click here to download it for free!
http://imagine-msn.com/messenger/launch80/?locale=en-gb
--~------------------------------------------------------------------
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>
--~--