XSD элемент restriction

Элемент restriction определяет ограничения для элементов simpleType, simpleContent и complexContent.

  • Родительские элементы: simpleType, simpleContent, complexContent

Синтаксис


<restriction
 id=идентификатор
 base=QName
 любые атрибуты
 >

 Содержимое для simpleType:
 (annotation?, (simpleType?, (minExclusive | minInclusive |
 maxExclusive | maxInclusive | totalDigits | fractionDigits |
 length | minLength | maxLength | enumeration | whiteSpace|pattern)*))

 Содержимое для simpleContent:
 (annotation?, (simpleType?, (minExclusive | minInclusive |
 maxExclusive | maxInclusive | totalDigits | fractionDigits |
 length | minLength | maxLength | enumeration | whiteSpace|pattern)*)?,
 ((attribute | attributeGroup)*, anyAttribute?))

 Содержимое для complexContent:
 (annotation?, (group | all | choice | sequence)?,
 ((attribute | attributeGroup)*, anyAttribute?))

</restriction>

(Знак ? указывает на то, что элемент может появляться ноль или один раз, знак * указывает на то, что элемент может появляться ноль, один или больше раз внутри элемента restriction.)

Атрибуты

Атрибут Описание
id Не обязательный. Определяет уникальный идентификатор для элемента
base Обязательный. Определяет имя встроенного типа данных, элемента simpleType или элемента complexType, определенных в этой или другой схеме
любые атрибуты Не обязательный. Любые другие атрибуты вне пространства имен схемы

Примеры использования элемента

Пример №1
В следующем примере определяется элемент "age" с ограничением. Значение этого элемента не может быть меньше 0 или больше 100:


 <xs:element name="age">
   <xs:simpleType>
     <xs:restriction base="xs:integer">
       <xs:minInclusive value="0"/>
       <xs:maxInclusive value="100"/>
     </xs:restriction>
   </xs:simpleType>
 </xs:element>

Пример №2
В следующем примере определяется элемент "initials" простого типа с ограничением. В качестве значения этого элемента могут выступать только набор из трех прописных или заглавных букв латинского алфавита:


<xs:element name="initials">
   <xs:simpleType>
     <xs:restriction base="xs:string">
       <xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/>
     </xs:restriction>
   </xs:simpleType>
</xs:element>

Пример №3
В следующем примере определяется элемент "password" простого типа с ограничением. Значением этого элемента может быть только набор из минимум пяти и максимум восьми символов:


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

Пример №4
В следующем примере определяется сложный тип с ограничением. Сложный тип "Norwegian_customer" производится от сложного типа, определяющего параметры покупателя в общих чертах. В новом сложном типе элемент country зафиксирован на значении "Norway":


<xs:complexType name="customer">
   <xs:sequence>
     <xs:element name="firstname" type="xs:string"/>
     <xs:element name="lastname" type="xs:string"/>
     <xs:element name="country" type="xs:string"/>
   </xs:sequence>
</xs:complexType>

<xs:complexType name="Norwegian_customer">
   <xs:complexContent>
     <xs:restriction base="customer">
       <xs:sequence>
         <xs:element name="firstname" type="xs:string"/>
         <xs:element name="lastname" type="xs:string"/>
         <xs:element name="country" type="xs:string" fixed="Norway"/>
       </xs:sequence>
     </xs:restriction>
   </xs:complexContent>
</xs:complexType>