在type =“xs:dateTime”中需要时区

时间:2015-04-17 18:47:14

标签: xml xsd xsd-validation

是否有可能以某种方式在XML Schema中dateTime中需要时区?

1 个答案:

答案 0 :(得分:2)

要求xs:dateTime设置时区,请将xs:pattern方面添加到xs:restriction

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:simpleType name="dateTimeWithRequiredTimeZone">
    <xs:restriction base="xs:dateTime">
      <xs:pattern value="\d{4}-\d\d-\d\dT\d\d:\d\d:\d\dZ"/>
      <xs:pattern value="\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d\+\d\d:\d\d"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>

修改: 正如迈克尔凯帮助指出的那样,上述模式过度指定了要求。就像xs:dateTime检查已经限制了每个日期和时间限制的数字一样,它也将限制它们数字。因此,模式只能参与时区划分xs:dateTime

的附加长度
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:simpleType name="dateTimeWithRequiredTimeZone">
    <xs:restriction base="xs:dateTime">
      <xs:pattern value=".{20}.*"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>

同样根据迈克尔:XSD 1.1有explicitTimeZone="required|prohibited|optional"