Ограничения используются для определения допустимых значений для элементов или атрибутов XML. Ограничения на элементы XML называются фасетки.
Ограничения на ценности
Следующий пример определяет элемент , называемый "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 к набору допустимых значений, мы будем использовать перечисления ограничений.
В приведенном ниже примере определяет элемент под названием "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>
Note: В этом случае тип "carType" может быть использован другими элементами , так как он не является частью "car" элемента.
Ограничения на ряд значений
Для того, чтобы ограничить содержимое элемента XML, чтобы определить ряд цифр или букв, которые могут быть использованы, мы будем использовать шаблон ограничения.
В приведенном ниже примере определяет элемент под названием "letter" с ограничением. Единственным допустимым значением является одним из строчных букв от А до Я:
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Следующий пример определяет элемент под названием "initials" с ограничением. Единственное приемлемое значение три из заглавных букв, от А до Я:
<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" с ограничением. Единственным допустимым значением является три из строчных букв или заглавными буквами от А до Я:
<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" с ограничением. Единственным допустимым значением является одним из следующих букв: х, у, г ИЛИ:
<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" с ограничением. Допустимое значение ноль или более вхождений строчных букв от А до Я:
<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" с ограничением. Единственное приемлемое значение мужского или женского пола:
<xs:element name="gender">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="male|female"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Следующий пример определяет элемент с именем "password" с ограничением. Там должно быть ровно восемь символов в строке, и эти символы должны быть строчными или прописными буквами от А до Я, или число от 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>
Ограничения на пробельных символов
Чтобы указать, как пробельные символы должны быть обработаны, мы будем использовать пробельные ограничение.
Этот пример определяет элемент под названием "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>
Ограничения по длине
Для того, чтобы ограничить длину значения в элементе, мы будем использовать длину, MAXLENGTH и MINLENGTH ограничений.
Этот пример определяет элемент , называемый "password" с ограничением. Значение должно быть ровно восемь символов:
<xs:element name="password">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Этот пример определяет еще один элемент , называемый "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>
Ограничения для Datatypes
скованность | Описание |
---|---|
enumeration | Определяет список допустимых значений |
fractionDigits | Задает максимальное количество знаков после запятой допускается. Должно быть равно или больше нуля |
length | Определяет точное число символов или элементов списка разрешенных. Должно быть равно или больше нуля |
maxExclusive | Определяет верхние границы для числовых значений (значение должно быть меньше этого значения) |
maxInclusive | Определяет верхние границы для числовых значений (значение должно быть меньше или равно этому значению) |
maxLength | Задает максимальное число символов или элементов списка разрешенных. Должно быть равно или больше нуля |
minExclusive | Задает нижние границы для числовых значений (значение должно быть больше, чем это значение) |
minInclusive | Задает нижние границы для числовых значений (значение должно быть больше или равно этому значению) |
minLength | Задает минимальное количество символов или элементов списка разрешенных. Должно быть равно или больше нуля |
pattern | Определяет точную последовательность символов, которые являются приемлемыми |
totalDigits | Определяет точное число цифр, разрешенных. Должно быть больше нуля |
whiteSpace | Определяет, как белое пространство (каналы линии, вкладки, пробелы и возврат каретки) обрабатывается |