Re: [xsl] Challenge: create xPath 2.0 regular expressions for each XML Schema datatype

Subject: Re: [xsl] Challenge: create xPath 2.0 regular expressions for each XML Schema datatype
From: Abel Braaksma <abel.online@xxxxxxxxx>
Date: Wed, 18 Oct 2006 13:45:31 +0200
Costello, Roger L. wrote:
Hi Folks,

I would like to submit a challenge:

Create xPath 2.0 regular expressions for each of the XML Schema
datatypes.

Examples:

  - the xPath expression which corresponds to integer is:
^\s*[+-]?\d+\s*$

  - the xPath expression which corresponds to float is:
^\s*[+-]?\d+([eE]+?\d+)?\s*$

haha, that was mine. But it is not correct. It supports *only* float/doubles with positive E-notation. For a reason: it was meant to be a float/double that could be parsed as an integer without a loss (remember your flights-altitude?)


For a float, it could be the following:
^\s*[+-]?(\d*\.\d+|\d+\.\d*)([eE][+-]?\d+)?\s*$|^\s*([+-]INF|NaN)\s*$

Note this part: (\d*\.\d+|\d+\.\d*)
It makes sure both ".1" and "1." (which are valid xs:floats) but not "." are allowed.


Note this branch: ^\s*([+-]INF|NaN)\s*$
It is valid to have this in xslt: xs:float('NaN') or xs:float('+INF').

PS: i did not test the regex above, it may contain errors or omissions.
PS2: this regex also applies to xs:double.

-- Abel Braaksma
  http://www.nuntia.com

Current Thread