Почему моя дата XML не принимает даты в формате ГГГГ-ММ-ДД?

Я не понимаю, почему правило xsd, которое я создал для даты, не работает. Правило: <xs:element name="scan_date" type="xs:date" /> которое, в соответствии с датой схемы XML в W3Schools, указано в следующем форма "ГГГГ-ММ-ДД", но когда синтаксический анализатор XML в SQL встречает <scan_date>2006-12-15</scan_date>, он терпит неудачу, потому что он не принимает дату как действительную, но если я поменяю местами 12 и 15 раунд, это произойдет.


person Simon Martin    schedule 05.09.2011    source источник
comment
Не могли бы вы составить и опубликовать короткий, но полный сценарий, демонстрирующий проблему?   -  person Damien_The_Unbeliever    schedule 05.09.2011
comment
Мне кажется, что ваша проблема скорее связана с настройкой локали SQL-сервера, ожидающей формат даты YYYY-DD-MM.   -  person Filburt    schedule 11.09.2011
comment
@Filburt - я думаю, что ты, вероятно, прав. Учетная запись пользователя для SQL использует английский язык, а не британский английский язык по умолчанию. К сожалению, я не могу изменить локаль (ее изменение нарушит существующую функциональность) и не могу изменить данные (предоставленные третьей стороной). Все, что я могу сделать, это работать с xsd, вы не знаете, есть ли способ предоставить информацию о формате даты?   -  person Simon Martin    schedule 12.09.2011
comment
@Simon Единственный способ, который я могу придумать, - это изменить тип данных с xs:date на эквивалент регулярного выражения.   -  person Filburt    schedule 13.09.2011
comment
@Filburt - альтернатива xs:string, я думаю?   -  person Simon Martin    schedule 14.09.2011


Ответы (1)


Возможное решение с использованием xs:string и ограничения регулярного выражения:

<xs:element name="scan_date" type="dateType"/>

<xs:simpleType name="dateType">
    <xs:restriction base="xs:string">
        <xs:pattern value="\d{4}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])"/>
    </xs:restriction>
</xs:simpleType>

... заимствовано из переопределения формата даты XSD

person Filburt    schedule 14.09.2011