XSD Ограничения / Фасеты
- Предыдущая страница Атрибуты XSD
- Следующая страница Элементы XSD
Ограничение (restriction) используется для определения допустимых значений для XML элемента или атрибута. Ограничение XML элемента называется facet.
Ограничение значений
Следующий пример определяет элемент с ограниченным именем "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