Subject: Re: XPath expression that generates false plus a message?
From: Michael Kay <mike@xxxxxxxxxxxx>
Date: Mon, 25 Apr 2011 21:51:49 +0100
|
I used the XPath expression within the new XML Schema 1.1<assert> element:
<xs:element name="meeting">
<xs:complexType>
<xs:sequence>
<xs:element name="start" type="xs:time" />
<xs:element name="end" type="xs:time" />
</xs:sequence>
<xs:assert test="if (xs:time(start) gt xs:time(end)) then
true()
else
trace(false(), 'Hey, the meeting ends before it begins!')" />
</xs:complexType>
</xs:element>
Here is a<meeting> with bad data:
<meeting>
<start>10:00:00</start>
<end>09:00:00</end>
</meeting>
Your assertion is true if the start time is greater than the end time.
Which is the case for your "bad" data.
(Note also that comparing times is an error-prone business: what happens
if you have a meeting that starts at 23:00 and finishes at 01:00?)
Michael Kay
Saxonica
|