Перечисление XSD в диапазоне значений - PullRequest
3 голосов
/ 06 октября 2010

Мне нужно как обычно создать XSD-файл для проверки структуры XML.

После генерации XSD (с XMLSpy) я обнаружил одну часть файла, которая доставляет мне проблемы,У меня есть такое перечисление:

    <xs:enumeration value="1"/>
    <xs:enumeration value="1011"/>
    <xs:enumeration value="1032"/>

и так далее.Проблема в том, что любое данное целое число в этом перечислении должно считаться допустимым, и я не могу написать теги перечисления от 1 до, скажем, 65635.

И я также не знаю, сколько из этих элементов перечисления будетбыть необходимым, потому что число этих тегов перечисления в файле XML не является фиксированным!

Как я могу сказать XSD, что любое целочисленное значение в порядке, и что в файле XML нет минимальных или максимальных совпаденийдля этого перечисления?

Заранее спасибо (и простите за мой английский!)

Ответы [ 2 ]

6 голосов
/ 06 октября 2010

Ваш вопрос не показывает достаточно информации, чтобы сказать точно правильный ответ, но это, вероятно, решит вашу проблему.

Возможно, у вас есть такой код:

<xs:element name="foobar" type="enumType"/>

<xs:simpleType name="enumType">
  <xs:restriction base="xs:integer">
    <xs:enumeration value="1"/>
    <xs:enumeration value="1011"/>
    <xs:enumeration value="1032"/>
  </xs:restriction>
</xs:simpleType>

Этот фрагмент схемы определяет элемент <foobar> и простой тип enumType, который является типом содержимого <foobar>элемент.Итак, вы спросили:

Как я могу сказать XSD, что любое целочисленное значение в порядке, и что в файле XML нет минимальных или максимальных совпадений для этого перечисления?

Вам не нужно отдельно перечислять все действительные значения для <foobar>, как вы должны делать с DTD.Вместо этого вы можете просто использовать предопределенные типы XML-схемы в атрибуте type.

Вот пример кода, который определяет элемент <foobar> и позволяет ему содержать любое целое число.

<xs:element name="foobar" type="xs:integer"/>

Если я неверно истолковал ваш вопрос, оставьте комментарий и определите свою проблему подробнеетесно.Также было бы полезно раскрыть больше вашей схемы.

4 голосов
/ 06 октября 2010

Почему вы должны использовать перечисление, а не простой целочисленный тип?

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