Изменить 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 не смогут это понять. Лучше всего использовать строку с правильным рисунком.