Изменить xsd: dateTime простой тип, чтобы использовать другой разделитель даты и времени
у меня есть устаревшая система, которая производит XML с метками времени, подобными ISO 8601, но с пространством, используемым для разделения даты и времени. Е. Г. 2009-12-31 00:00:00. Я хотел бы определить схему, которая определяет возможный диапазон для этих временных меток. xsd:dateTime
будет хорошо подходит для этой цели, однако, он использует T как разделитель между датой и временем. Я не могу изменить устаревшую систему для возврата временных меток, используя T в качестве разделителя.
есть ли способ иметь simpleType
определение, производное от xsd:dateTime
, но изменяет разделитель или мне нужно полагаться на строку с соответствующим шаблоном и удобочитаемыми комментариями?
обновление: как я понимаю, я могу использовать шаблон для dateTime для ограничения диапазона объектов dateTime для ввода, но это не изменяет символ разделителя.
пример:
<xs:restriction base="xs:dateTime">
<xs:pattern value="[2].*:[0-9]{2}"/>
</xs:restriction>
это позволит использовать только dateTime с годами, начинающимися с 2000 и без дробных секунд и информации о часовом поясе.
резюме ответов:
невозможно использовать xs:dateTime
как базовый тип для этого. Однако можно использовать xs:string
Определить узор.
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{4}-[01][0-9]-[0-3][0-9] [0-2][0-9]:[0-5][0-9]:[0-6][0-9]"/>
</xs:restriction>
используя строку, конечно, любые автоматические инструменты, которые используют схему для создания языковых Привязок, также получат строку, преобразование в соответствующий тип языка для даты / времени должно быть сделано вручную.
2 ответов
вы можете сделать ограничение шаблона регулярного выражения на xs:string
тип данных.
например:
<xs:element name="specialDateTime">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[0-9][0-9]/[0-9][0-9]/[0-9][0-9] [0-9][0-9]:[0-9][9-9]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
редактировать
Я нашел этот пример в http://www.cs.wisc.edu/condor/classad/refman/node9.html. Похоже на тебя!--15-- > can поставить ограничение шаблона на dateTime
:
<xsd:simpleType>
<xsd:restriction base="xsd:dateTime">
<xsd:pattern value="\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d[+\-]\d\d:\d\d" />
</xsd:restriction>
</xsd:simpleType>
надеюсь, что это поможет.
Я не думаю, что вы можете получить что-то еще из xsd:dateTime, так как процессоры XML не смогут это понять. Лучше всего использовать строку с правильным рисунком.