【发布时间】:2015-02-09 13:20:24
【问题描述】:
我必须验证格式为 09.02.2015 (DD.MM.YYYY) 和时间 14:05 (HH:MM) 的日期,但找不到执行此操作的方法。
这是一个例子:
XML:
<?xml version="1.0"?>
<root>
<testdate>09.02.2015</testdate>
<testtime>14:05</testtime>
</root>
XSD:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<!-- Root element -->
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="testdate" type="zsdate"/>
<xs:element name="testtime" type="zstime"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- Date format used to validate dates formatted like 01.01.2015 -->
<xs:simpleType name="zsdate">
<xs:restriction base="xs:date">
<xs:pattern value="^(0[1-9]|[12][0-9]|3[01]).(0[1-9]|1[012]).(19|20)\d\d$"/>
</xs:restriction>
</xs:simpleType>
<!-- Time format used to validate times formatted like 11:55, 23:59 etc. -->
<xs:simpleType name="zstime">
<xs:restriction base="xs:time">
<xs:pattern value="^(0[0-9]|[1][0-9]|2[1-3]):([0-5][1-9])$"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
我尝试使用 notepad++ XML 插件和 XML validator 验证 XML。
记事本++输出:
使用 XML 模式验证当前文件:
错误:元素“testdate”:“09.02.2015”不是原子类型“zsdate”的有效值。
错误:元素“testtime”:“14:05”不是 原子类型“zstime”的有效值。
使用Regular Expression Tester 测试正则表达式时,它匹配正确。
我尝试将类型从xs:date和xs:time更改为xs:string,但验证结果是一样的。
知道我做错了什么吗?
【问题讨论】:
-
以上时间模式不包括20小时00分。
标签: xml validation xsd