Шаблон схемы XML, который вообще не допускает никаких данных - PullRequest
2 голосов
/ 13 сентября 2011

Я получаю XML-данные в этих двух формах от внешней компании

<currencydate>20110910</currencydate>
<currencydate/>

Я хочу проверить с помощью шаблона, что эта дата действительно имеет формат ГГГГММДД, например,

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

<xs:simpleType name="dateType">
    <xs:restriction base="xs:string">
        <xs:pattern value="[0-2][0-9]{3}[0-1][0-9][0-3][0-9]"/>
    </xs:restriction>
</xs:simpleType>

Это отлично работает.Но проверка прерывается на пустом элементе

Так что я добавил minOccurs вот так

<xs:element name="currencydate" type="dateType" minOccurs="0"/>

Безуспешно, поэтому я добавил nillable

<xs:element name="currencydate" nillable="true" type="dateType" minOccurs="0"/>

Нет успеха, наверноеэлемент там, так что он проверяет шаблон.Поэтому я изменил шаблон

        <xs:pattern value="[0-2][0-9]{3}[0-1][0-9][0-3][0-9]|"/>

Я только добавил трубу, указывая, что значение может быть пустым.Но все равно безуспешно.

Итак, мой вопрос: как я могу проверить шаблон данных, но также разрешить значение

    <currencydate/>

Обратите внимание, что я получаю эти данные от внешней компании, котораяне предоставляет xsd и не желает что-либо менять для меня.

1 Ответ

1 голос
/ 13 сентября 2011

Вы уже пробовали

<xs:pattern value="|([0-2][0-9]{3}[0-1][0-9][0-3][0-9])" />

как предложено в как проверить пустой тег строкового значения в xsd ?

Я пробовал это только в VS 2010 Express, но, похоже, это работает, даже если комментарий в связанном посте говорит об обратном.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...