Re: [xsl] Different Behavior for Regex in XSD and XSLT/XQuery

Subject: Re: [xsl] Different Behavior for Regex in XSD and XSLT/XQuery
From: "◘DstarProductions◘ ◘OficialPage◘ freedatabase@xxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Thu, 11 Jan 2018 16:30:26 -0000
wat is dit allesb


________________________________
Van: Eliot Kimber ekimber@xxxxxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Verzonden: donderdag 11 januari 2018 08:24:41
Aan: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Onderwerp: Re: [xsl] Different Behavior for Regex in XSD and XSLT/XQuery


So that 05:60 is valid and 05:61 is not. Thus [0-5]\d|60.



For my application I donbt think leap seconds are a concern.



The use case is users entering the shortest possible value that can be
reliably interpreted as an xs:time value, e.g. b5b (for 05:00:00), 5:1
(for 05:01:00), etc.



Since an invalid string passed to xs:time() throws an exception, important to
validate the value before trying to make a good time string out of it.



This is in the context of a configuration document where the user is
specifying time values that are interpreted dynamically by a long-running
process with little or no opportunity to report failure to the user who
created the configuration file.



Cheers,



E.

--

Eliot Kimber

http://contrext.com





From: "Peter West lists@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Reply-To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Date: Wednesday, January 10, 2018 at 8:20 PM
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Subject: Re: [xsl] Different Behavior for Regex in XSD and XSLT/XQuery



Eliot,



I havenbt played with REs for a long time, so forgive my naivety, but why
the b60bs?



--

Peter West

pbw@xxxxxxxxx<mailto:pbw@xxxxxxxxx>

bBut you have made it a den of robbers.b



On 11 Jan 2018, at 2:53 am, Eliot Kimber
ekimber@xxxxxxxxxxxx<mailto:ekimber@xxxxxxxxxxxx>
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx<mailto:xsl-list-service@xxxxxxxxxxxx
rytech.com>> wrote:



Doh! A subtle but should-be-obvious syntax detail.

Thanks,

Eliot

--
Eliot Kimber
http://contrext.com


o;?On 1/10/18, 10:39 AM, "David Carlisle d.p.carlisle@xxxxxxxxx"
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:

   On 10 January 2018 at 16:15, Eliot Kimber ekimber@xxxxxxxxxxxx
   <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:


I have this simple type in an XSD, which is my attempt to validate strings
that are subsets of the string representation of xs:time values:

 <xs:simpleType name="timestr">
   <xs:restriction base="xs:string">
     <xs:pattern
value="(\d|0\d|1\d|2[0123])(:([0-5]\d|60)(:([0-5]\d|60))?)?|24(:00(:00)?)?"/>
   </xs:restriction>
 </xs:simpleType>

And it correctly rejects "05:96" as invalid.

However, using the same regex with start/end anchors added in matches() it
does not reject "05:96".

This transform:

 <xsl:template match="/">
   <xsl:variable name="timestr" as="xs:string"
     select="'05:96'"
   />
   <xsl:variable name="is-valid" as="xs:boolean"
     select="matches($timestr,
'^(\d|0\d|1\d|2[0123])(:([0-5]\d|60)(:([0-5]\d|60))?)?|24(:00(:00)?)?$')"
   />
   <result>
     <is-valid><xsl:value-of select="$timestr"/>, <xsl:value-of
select="$is-valid"/></is-valid>
   </result>
 </xsl:template>o;?

Produces:

<result><is-valid>05:96, true</is-valid></result>

Current Thread