XML проверка пустого тега - PullRequest
       10

XML проверка пустого тега

0 голосов
/ 03 октября 2011

У меня есть xml-файл с типом даты элемента:

...
<startDate />
...

в xsd-файле описывается этот тип:

<xs:element name="startDate " type="xs:date" nillable="true" />

Когда я проверяю xml с помощью SchemaValidator, у меня возникает исключение

org.xml.sax.SAXParseException: cvc-datatype-valid.1.2.1: '' является недопустимым значением для 'date'.

когда тег startDate не пуст, все в порядке.Но когда оно пустое, возможны исключения.Я могу изменить только файл xsd-схемы, но не xml, потому что я получаю его из другой системы.

1 Ответ

4 голосов
/ 03 октября 2011

Поскольку вы не можете изменить документ XML, вы можете попытаться создать тип объединения xs: date с пустой строкой:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:simpleType name="empty-string">
    <xs:restriction base="xs:string">
      <xs:maxLength value="0"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="startDate">
    <xs:simpleType>
      <xs:union memberTypes="xs:date empty-string"/>
    </xs:simpleType>
  </xs:element>
</xs:schema>

против которых

<startDate/>

должен подтвердить.

Примечание. Если бы вы могли изменить свой XML-документ, это, вероятно, успешно подтвердит исходную схему (из-за атрибута nillable):

<startDate
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:nil="true"/>
...