Re: [xsl] Escaping Curly Braces in Regex

Subject: Re: [xsl] Escaping Curly Braces in Regex
From: Martin Honnen <Martin.Honnen@xxxxxx>
Date: Thu, 01 Oct 2009 14:01:17 +0200
rowan@xxxxxxxxxxxxxxxxxxxxx wrote:

I found it very confusing that one requires the {} to be doubled and the
other doesn't. Where is it documented which attributes require braces to be
doubled up and which do not?

If you look at then it has the following definition:

select = expression
regex = { string }
flags? = { string }>
<!-- Content: (xsl:matching-substring?, xsl:non-matching-substring?, xsl:fallback*) -->

so the attribute definition in the form of
  regex = { string }
shows you that an attribute value template is expected while
  select = expression
only takes an XPath expression.

There is even a prose warning note in there:

Because the regex attribute is an attribute value template, curly brackets within the regular expression must be doubled. For example, to match a sequence of one to five characters, write regex=".{{1,5}}". For regular expressions containing many curly brackets it may be more convenient to use a notation such as regex="{'[0-9]{1,5}[a-z]{3}[0-9]{1,2}'}", or to use a variable.


	Martin Honnen

Current Thread