Ограничения/Facets XSD
- Предыдущая страница Атрибуты XSD
- Следующая страница Комплексные элементы XSD
Ограничение (restriction) используется для определения приемлемых значений для XML-элемента или атрибута. Ограничение XML-элемента называется аспектом.
Ограничение значений
Пример, определяющий элемент с ограничением и именем "age". Значение age не может быть меньше 0 или больше 120:
<xs:element name="age"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minInclusive value="0"/> <xs:maxInclusive value="120"/> </xs:restriction> </xs:simpleType> </xs:element>
Ограничение группы значений
Чтобы ограничить содержимое XML элемента группой приемлемых значений, мы используем ограничение перечня (enumeration constraint).
Следующий пример определяет элемент с ограниченным именем "car". Принимаемые значения включают в себя только: Audi, Golf, BMW:
<xs:element name="car"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="Audi"/> <xs:enumeration value="Golf"/> <xs:enumeration value="BMW"/> </xs:restriction> </xs:simpleType> </xs:element>
Предыдущий пример также можно записать следующим образом:
<xs:element name="car" type="carType"/> <xs:simpleType name="carType"> <xs:restriction base="xs:string"> <xs:enumeration value="Audi"/> <xs:enumeration value="Golf"/> <xs:enumeration value="BMW"/> </xs:restriction> </xs:simpleType>
Комментарий:В этом случае тип "carType" может быть использован другими элементами, так как он не является частью элемента "car".
Ограничение ряда значений
Чтобы ограничить содержимое XML элемента последовательностью используемых чисел или букв, мы используем ограничение шаблона (pattern constraint).
Следующий пример определяет элемент с ограниченным именем "letter". Принимаемые значения представляют собой одну из маленьких букв a - z:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-z]"/> </xs:restriction> </xs:simpleType> </xs:element>
Следующий пример определяет элемент с ограниченным именем "initials". Принимаемые значения представляют собой три больших буквы A - Z:
<xs:element name="initials"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[A-Z][A-Z][A-Z]"/> </xs:restriction> </xs:simpleType> </xs:element>
Следующий пример также определяет элемент с ограниченным именем "initials". Принимаемые значения представляют собой три больших или маленьких буквы a - z:
<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>
Следующий пример определяет элемент с ограниченным именем "choice". Принимаемые значения включают в себя одну из букв x, y или z:
<xs:element name="choice"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[xyz]"/> </xs:restriction> </xs:simpleType> </xs:element>
Следующий пример определяет элемент с ограниченным именем "prodid". Принимаемые значения представляют собой последовательность из пяти арабских цифр, и каждая цифра находится в диапазоне от 0 до 9:
<xs:element name="prodid"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/> </xs:restriction> </xs:simpleType> </xs:element>
Другие ограничения для набора значений
Ниже приведен пример определения элемента с ограничением, называемым "letter". Принимаемые значения - это ноль или несколько букв a - z:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z])*"/> </xs:restriction> </xs:simpleType> </xs:element>
Ниже приведен пример определения элемента с ограничением, называемым "letter". Принимаемые значения - это одно или несколько пар букв, каждая пара состоит из маленькой буквы, за которой следует большая буква. Например, "sToP" пройдет проверку по этому шаблону, но "Stop", "STOP" или "stop" не пройдут проверку:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z][A-Z])+"/> </xs:restriction> </xs:simpleType> </xs:element>
Ниже приведен пример определения элемента с ограничением, называемым "gender". Принимаемые значения - это male или female:
<xs:element name="gender"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="male|female"/> </xs:restriction> </xs:simpleType> </xs:element>
Ниже приведен пример определения элемента с ограничением, называемым "password". Принимаемые значения представляют собой строку из 8 символов, которые должны быть большими или малыми буквами a - z или цифрами 0 - 9:
<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-zA-Z0-9]{8}"/> </xs:restriction> </xs:simpleType> </xs:element>
Ограничение пробельных символов
Чтобы определить способ обработки пробельных символов (пробельных символов), необходимо использовать ограничение whiteSpace.
Ниже приведен пример определения элемента с ограничением, называемым "address". Ограничение whiteSpace установлено в "preserve", что означает, что процессор XML не будет удалять никакие пробельные символы:
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="preserve"/> </xs:restriction> </xs:simpleType> </xs:element>
Этот пример также определяет элемент с ограничением, называемым "address". Ограничение whiteSpace установлено в "replace", что означает, что процессор XML будет удалять все пробельные символы (переносы строк, возврат каретки, пробелы и табуляторы):
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="replace"/> </xs:restriction> </xs:simpleType> </xs:element>
Этот пример также определяет элемент с ограничением,名为 "address". Этот ограничитель whiteSpace установлен в "collapse", что означает, что процессор XML удалит все пробельные символы (переносы строк, возврат каретки, пробелы и табуляции будут заменены пробелом, а начальные и конечные пробелы будут удалены, а несколько последовательных пробелов будут сокращены до одного):
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="collapse"/> </xs:restriction> </xs:simpleType> </xs:element>
Ограничение длины
Чтобы ограничить длину значения элемента, необходимо использовать ограничения length, maxLength и minLength.
Этот пример определяет элемент с ограничением и именем "password". Его значение должно быть точным до 8 символов:
<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:length value="8"/> </xs:restriction> </xs:simpleType> </xs:element>
Этот пример также определяет элемент с ограничением,名为 "password". Его значение должно быть от 5 до 8 символов:
<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>
Ограничение типа данных
Ограничение | Описание |
---|---|
enumeration | Определяет список приемлемых значений. |
fractionDigits | Определяет максимальное количество знаков после запятой. Оно должно быть больше или равно 0. |
length | Определяет точное количество разрешенных символов или элементов списка. Оно должно быть больше или равно 0. |
maxExclusive | Определяет верхний предел числового значения. Допустимые значения должны быть меньше этого значения. |
maxInclusive | Определяет верхний предел числового значения. Допустимые значения должны быть меньше или равны этому значению. |
maxLength | Определяет максимальное количество разрешенных символов или элементов списка. Оно должно быть больше или равно 0. |
minExclusive | Определяет нижний предел числового значения. Допустимые значения должны быть больше этого значения. |
minInclusive | Определение минимального значения числа. Разрешенные значения должны быть больше или равно этому значению. |
minLength | Определение минимального числа разрешенных символов или элементов списка. Значение должно быть больше или равно 0. |
pattern | Определение точной последовательности разрешенных символов. |
totalDigits | Определение точного числа разрешенных арабских цифр. Значение должно быть больше 0. |
whiteSpace | Определение способа обработки пробельных символов (новая строка, возврат каретки, пробел и табуляция). |
- Предыдущая страница Атрибуты XSD
- Следующая страница Комплексные элементы XSD