2012-04-18 48 views
1

在我的模式中,我想接受包含格式为datedateTime的数据的元素。XSD:我如何接受匹配任何一组类型的数据?

例如,这些元素应该验证:

<event_ts>2012-04-18</event_ts> 
<event_ts>2012-04-18T12:00:00</event_ts> 
<event_ts>2012-04-18T12:00:00Z</event_ts> 
<event_ts>2012-04-18T12:00:00-05:00</event_ts> 

如果我只是用dateTime类型此元素,我的第一个例子不能通过验证,作为dateTime规范决定了一天的时间部分必须存在。

在XML模式中是否存在类似类型的枚举,而不是显式字符串?

我真的宁愿避免在这里重新发明带有大正则表达式的ISO 8601车轮。

回答

3

我会为你的event_ts使用一个新类型,它被定义为xs:date和xs:dateTime的联合。

<?xml version="1.0" encoding="utf-8" ?> 
<xsd:schema elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:element name="event_ts"> 
     <xsd:simpleType> 
      <xsd:union memberTypes="xsd:date xsd:dateTime"/> 
     </xsd:simpleType> 
    </xsd:element> 
</xsd:schema> 

然后你个XML是有效的...

+0

你太棒了!谢谢! – glomad 2012-04-18 17:29:03