2.3.1 Списковые типы

XML Схема поддерживает концепцию списковых типов, в дополнение к так называемым атомным типам, которые составляют большинство типов, перечисленных в Таблице 2. (Атомные типы, списковые типы и типы объединения, описанные в следующем разделе, называются простыми типами.) Значение атомного типа неделимо в XML Schema. Например, значение NMTOKEN равное US является неделимым в том смысле, что никакая часть US, например символ «S» не может рассматриваться отдельно. В противоположенность этому, списковые типы состоят из последовательностей атомных типов, и, следовательно, части последовательности («атомы») самостоятельно значимы. Например, NMTOKENS является списковым типом. Элемент этого типа должен быть отделен пробелом в списке, как здесь показано «US UK FR».  XML Schema имеет три встроенных типа списков: NMTOKENS, IDREFS, и ОБЪЕКТЫ.

Кроме использования встроенных списковых типов, Вы можете создать новые  списковые типы из существующих атомных типов. (Нельзя создавать списковые типы от существующих списковых типов и от сложных типов.) Например, создадим список myInteger:

Создание списка myInteger

<xsd:simpleType name=”listOfMyIntType”> <xsd:list itemType=”myInteger”/> </xsd:simpleType>

Элемент в документе примера, чье содержание соответствует listOfMyIntType это:

Ряд ограничений может применяться для списковых типов: length, minLength, maxLength и enumeration. Например, для того, чтобы задать точный список из шести штатов США (SixUSStates), мы, во-первых, должны определить новый списковый тип с именем USStateList от USState, и затем вывести SixUSStates, ограничивая USStateList только шестью значениями:

Списковый тип для 6 штатов США

<xsd:simpleType name=”USStateList”>

<xsd:list itemType=”USState”/> </xsd:simpleType> <xsd:simpleType name=”SixUSStates”> <xsd:restriction base=”USStateList”> <xsd:length value=”6”/> </xsd:restriction> </xsd:simpleType>

Элементы, чей тип SixUSStates должны иметь шесть значений, и каждое из этих шести значений должно быть единичным (атомным) значением перечисляемого типа USState, например:

<sixStates>PA NY CA NY LA AK</sixStates>

Отметим, что можно получить списковый тип из атомного типа string. Однако, string может содержать пробелы, а пробелы разделяют  элементы в списковом типе. Таким образом, необходимо быть внимательным, применяя списковые типы, основанные на string. Например, предположим, что мы определили списковый тип с ограничением length, равным 3, от исходного типа string. Тогда следующий список из  3 элементов правильный:

Asie Europe Afrique

Однако следующий список из 3 элементов не корректный:

Asie Europe Amérique Latine

Даже притом, что "Amérique Latine" может существовать как единый строковый элемент вне списка, когда такая строка включается в список, пробел между Amérique и Latine фактически создает четвертый элемент. Поэтому последний пример не будет соответствовать списковому типу с 3 элементами.

Используются технологии uCoz