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
--~------------------------------------------------------------------
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>
--~--