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