2012-04-18 46 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