Как мне требовать, чтобы элемент содержал символьные данные с использованием XML-схемы - PullRequest
1 голос
/ 05 августа 2010

Если у меня есть документ XML, например:

<colors>  
    <color1>1452</color1>  
    <color2></color2>  
    <color3></color3>  
</colors>

Я хочу определить в схеме XML, что элемент color1 должен содержать значение типа int, быть ненулевым и не пустым. Таким образом, приведенный выше пример будет действительным, но если color1 будет пустым, как color2 и color3, он потерпит неудачу. Я искал вокруг, но не могу найти чистый способ требовать, чтобы элемент был заполнен значением. Я что-то упускаю действительно очевидное?

Ответы [ 3 ]

1 голос
/ 05 августа 2010

Вам необходимо определить тип элемента в вашей схеме следующим образом:

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

Чтобы ограничить длину элемента, используйте xs:restriction следующим образом.

<xs:element name="color">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:minLength value="5"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

Обратите внимание, что я использовал строку для представления типа.Не уверен, что вы можете использовать minLength с целым числом, но вы можете использовать регулярное выражение с xs:pattern.

0 голосов
/ 05 августа 2010

для атрибутов, схема должна иметь:

<... use="required" type="..."/>

для элементов:

<xs:element minOccurs="1"/>
0 голосов
/ 05 августа 2010

Вот как бы вы делали проверку типов:

<xs:element name="lastname" type="xs:string"/>
<xs:element name="age" type="xs:integer"/>
<xs:element name="dateborn" type="xs:date"/>

Так что в вашем случае вы бы хотели type="xs:integer"

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

Редактировать: И здесь - это немного больше информации о различных числовых типах, которые вы можете указать, а не просто целое число.

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