Проверка схемы для xs:date | Шаблоны дат

Я пытаюсь создать схему, которая содержит поле даты. Это поле даты имеет формат ДД-ММ-ГГГГ. BizTalk по умолчанию принимает дату в формате ГГГГ-ММ-ДД.

Я попытался использовать регулярное выражение и ниже приведен фрагмент xsd соответствующего поля

<xs:element name="FieldName">
    <xs:simpleType>
        <xs:restriction base="xs:date">
            <xs:pattern value="[0-3]{1}[0-9]{1}-[0,1]{1}[0-9]{1}-[0-9]{4}" /> 
        </xs:restriction>
    </xs:simpleType>
</xs:element>

Затем я попытался проверить файл с помощью этого, но он не смог с ошибкой ограничения шаблона.

Что не так с выражением регулярного выражения?

Заранее спасибо

2 ответа

Я считаю, что проблема в том, что ваше поле имеет тип xs:date, Тот факт, что BizTalk принимает формат YYYY-MM-DD, что не является предметом BizTalk, проистекает из самой спецификации XSD. Смотрите здесь: http://www.w3schools.com/schema/schema_dtypes_date.asp

Вы заметите, что ваше регулярное выражение добавляется в схему как xs:restriction, Это используется для дальнейшего ограничения данных, содержащихся в этом узле, но все равно должно быть действительным xs:date, Поэтому я считаю, что единственный способ справиться с этим - изменить тип вашего поля на xs:string и иметь дело с датой другим способом (возможно, преобразовать ее в карту).

Я вряд ли рекомендую не использовать это регулярное выражение, потому что оно допускает недопустимые даты, такие как 39-19-9999.

Если вы хотите разрешить такую ​​недействительную дату, это зависит от вас, но если нет, я нашел это регулярное выражение здесь:

^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d$

которые также допускают некоторые недействительные даты, такие как 31-06-2014 (нет 31. дня в месяце июнь), но в этом регулярном выражении допускается меньше недействительных дат.

Другие вопросы по тегам