Я получаю 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 и не желает что-либо менять для меня.