[xsl] Comments in XPath / XSLT regular expressions?

Subject: [xsl] Comments in XPath / XSLT regular expressions?
From: Abel Braaksma Online <abel.online@xxxxxxxxx>
Date: Wed, 26 Jul 2006 10:45:14 +0200
Dear List,

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?

Cheers,
Abel Braaksma
www.nuntia.nl

Current Thread