Элемент 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>