2016-02-24 2 views
0

Есть ли способ обеспечить, чтобы поле xsd: date или xsd: datetime включало часовой пояс в полезной нагрузке xml?Как обеспечить, чтобы поля XSD Validation of Date и DateTime включали часовой пояс

Все валидаторы, затмение, верблюд и т. Д., Которые я пробовал, принимают поля независимо от того, прикреплен ли часовой пояс или нет.

Я хотел бы обеспечить соблюдение требования о том, что часовой пояс всегда присутствует в XML.

EDIT:

Я надеялся, что там был стандартный способ решения этой ситуации.

В конце концов, как я использую 1.0 XSD пошел следующим раствором:

<xs:simpleType name="dateNoTz"> 
    <xs:restriction base="xs:date"> 
     <xs:pattern value="\d{4}-[01]\d-[0-3]\d"/> 
    </xs:restriction> 
</xs:simpleType> 
<xs:simpleType name="dateTimeNoTz"> 
    <xs:restriction base="xs:dateTime"> 
     <xs:pattern value="\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d(.\d?\d?\d?)"/> 
    </xs:restriction> 
</xs:simpleType> 
<xs:simpleType name="dateTimeTz"> 
    <xs:restriction base="xs:dateTime"> 
     <xs:pattern value="\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d(.\d?\d?\d?)?((\+[01]\d:[0-5]\d)|Z)"/> 
    </xs:restriction> 
</xs:simpleType> 
<xs:simpleType name="dateTz"> 
    <xs:restriction base="xs:date"> 
     <xs:pattern value="\d{4}-[01]\d-[0-3]\d((\+[01]\d:[0-6]\d)|Z)"/> 
    </xs:restriction> 
</xs:simpleType> 

ответ

2

Да, это может быть сделано путем добавления XSD pattern facet к простому типу. Если вы добавите фасет шаблона, который лексически требует, чтобы значение содержало информацию о часовом поясе, тогда каждое значение этого типа будет необходимо для удовлетворения этого фасетного объекта и, следовательно, оно должно содержать информацию о часовом поясе.

2

В XSD 1.0 вы можете сделать это только с помощью шаблона (регулярное выражение).

В XSD 1.1 есть новый аспект explicitTimeZone.

+0

хорошо один! Я не знал об этом полезном дополнении в XSD 1.1. – dret