Почему моя XML-схема не улавливает ошибки?

0
задан Shuks 17 March 2019 в 20:02
поделиться

1 ответ

Попытка проверить ваш образец XML с помощью XSD вызвала некоторые ошибки, поэтому я не смог воспроизвести вашу проблему, а только исправить ошибки вашего XSD. Я использовал команду

xmlstarlet val --err --xsd source.xsd input.xml

для проверки вашего XSD. XSD-1.0, по-видимому, было достаточно для его проверки, поэтому процессор XSD-1.1 не был необходим.


Одной из проблем вашего исходного XML, по-видимому, являются начальные и конечные пробелы значения ResidenceStatus.

Применение вашего XSD к XML приводило к ошибкам, пока я не исправил определение ResidenceStatus. Пока я не могу сказать, происходит ли это из-за вашего процессора XSD.

Но вы можете попытаться исправить определение на

<xs:element name="ResidenceStatus">
  <xs:simpleType>
    <xs:restriction base="normalized">
        <xs:enumeration value="In-state"/>
        <xs:enumeration value="Out-of-state"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

и добавить определение типа normalized в конце корневого уровня вашего xs:schema:

<xs:simpleType name="normalized">
  <xs:restriction base="xs:string">
    <xs:whiteSpace value="collapse"/>
  </xs:restriction>
</xs:simpleType>
[ 1119] Этот simpleType с именем normalized удалит начальные и конечные пробелы значения элемента, так что перечисление будет совпадать.

П.С.: ваш XSD имел опечатку:
<xs:simpletype> из ResidenceStatus должно было быть <xs:simpleType>.

0
ответ дан zx485 17 March 2019 в 20:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: