[xsl] XPath 2.0 Regex misunderstanding

Subject: [xsl] XPath 2.0 Regex misunderstanding
From: cknell@xxxxxxxxxx
Date: Fri, 19 Jan 2007 11:35:54 -0500
I have a date element:

example 

<DATE>11/01/2006</DATE>

I'm trying to write an XPath 2.0 Regex to winnow some of the more obvious date format errors. I have tried for about a half-hour, and I admit to being stumped.

Here is the relevant part of the template:

<xsl:when test="matches(DATE,'[0-1][0-2]/[0-3][0-9]/2006')"><bad-date /></xsl:when>

These dates passed the test:

<DATE>07/18/2006</DATE>
<DATE>07/12/2006</DATE>
<DATE>09/25/2006</DATE>

While these failed:

<DATE>10/24/2006</DATE>
<DATE>10/18/2006</DATE>
<DATE>10/10/2006</DATE>
<DATE>10/02/2006</DATE>
<DATE>01/19/2006</DATE>

It appears any value with a "1" in either the first or second position is failing.

What I am trying to achieve is:

First character is either a "0" or "1"
Second character is in the range of 0-2
Third character is "/"
Fourth character is in the range of 0-3
Fifth character is in the range of 0-9
Sixth character is "/"
Text ends with the string "2006".

Can someone point out where I'm going wrong?
Thanks.
-- 
Charles Knell
cknell@xxxxxxxxxx - email

Current Thread