Элемент <xsd:complexType>
Объявляет сложный тип, определяющий набор атрибутов и содержимое элемента.
<complexType
abstract = Boolean : false
block = (#all | List of (extension | restriction))
final = (#all | List of (extension | restriction))
id = ID
mixed = Boolean : false
name = NCName
{any attributes with non-schema Namespace...}>
Content: (annotation?, (simpleContent | complexContent | ((group | all |
choice | sequence)?, ((attribute | attributeGroup)*, anyAttribute?))))
</complexType>
Атрибуты
abstract
Индикатор, указывающий, может ли в экземпляре документа использоваться сложный тип. Если значение равно true, элемент не может использовать сложный тип напрямую, но должен использовать сложный тип, являющийся производным от данного сложного типа. Значение по умолчанию — false.Необязательно.
block
Тип наследования. Атрибут block не позволяет использовать сложный тип с указанным типом наследования вместо данного сложного типа. Значение может содержать строку #all или подмножество, состоящее из расширения или ограничения. Атрибут block используется только в ходе проверки, если экземпляр документа переопределяет нормальный тип элемента с помощью атрибута schema-instance:type. Атрибут block отвечает за предотвращение выбора элементами таких сложных типов, которые определены в расширении или ограничении для замены исходного типа, указанного для элемента.расширение
Предотвращает использование вместо этого сложного типа сложных типов, унаследованных по расширению.
ограничение
Предотвращает использование вместо этого сложного типа сложных типов, унаследованных по ограничению.
#all
Предотвращает использование вместо этого сложного типа всех унаследованных сложных типов.
Необязательно.
final
Тип наследования. Атрибут final предотвращает наследование заданного типа для данного элемента complexType. Значение может содержать строку #all или список, состоящий из строк extension и restriction.расширение
Предотвращает наследование расширением.
ограничение
Предотвращает наследование ограничением.
#all
Предотвращает все наследования (как расширением, так и ограничением).
Необязательно.
id
Идентификатор данного элемента. Значение id должно иметь тип ID и быть уникальным в пределах документа, содержащего этот элемент.Необязательно.
смешанный
Индикатор, указывающий, допускается ли появление символьных данных между дочерними элементами этого типа. Значение по умолчанию — false.Если элемент simpleContent является дочерним, использование атрибута mixed недопустимо.
Если элемент complexContent является дочерним, этот атрибут mixed можно переопределить с помощью атрибута mixed, содержащегося в элементе complexContent.
Необязательно.
имя
Имя типа. Имя не должно содержать двоеточий (NCName), как определено в спецификации пространств имен XML.Обязательный атрибут, если содержащим является элемент schema. В противном случае запрещен.
Если указано, имя должно быть уникальным по всем элементам simpleType и complexType.
Необязательно.
Сведения об элементе
Количество вхождений |
Неограниченное в пределах схемы, один раз в каждом элементе. |
Родительские элементы |
|
Content |
annotation, simpleContent, complexContent, group, all, choice, sequence, attribute, attributeGroup, anyAttribute |
Заметки
Сложный тип является основным определением типа для элементов, которые могут содержать атрибуты и другие элементы. Элемент можно объявить с атрибутом type, который ссылается на элемент complexType, определяющий структуру, содержимое и атрибуты этого элемента (в своем атрибуте type элемент может также ссылаться на элемент simpleType).
Сложный тип может содержать один и только один из следующих элементов, определяющих допустимый тип содержимого в сложном типе.
Элемент |
Описание |
---|---|
simpleContent |
Этот сложный тип содержит символьные данные либо элемент simpleType в качестве содержимого и не содержит элементов, но может содержать атрибуты. |
complexContent |
Сложный тип, содержащий только элементы либо не содержащий содержимое элементов (пустой). |
группа |
Сложный тип, содержащий элементы, определенные в ссылочной группе. |
sequence |
Сложный тип, содержащий элементы, определенные в указанной последовательности. |
choice |
Сложный тип, допускающий использование одного из элементов, указанных элементом choice. |
все |
Сложный тип, допускающий однократное отображение любых или всех элементов, указанных в элементе all. |
Если элемент group, sequence, choice или all указан как дочерний элемент, можно дополнительно объявить атрибуты элемента complexType с помощью следующих элементов.
Элемент |
Описание |
---|---|
Атрибут |
Сложный тип, содержащий указанный атрибут. |
attributeGroup |
Сложный тип, содержащий атрибуты, определенные в ссылочной группе attributeGroup. |
anyAttribute |
Сложный тип, содержащий любой атрибут из указанных пространств имен. |
Можно использовать любое числовое значение элементов attribute или attributeGroup. Также можно использовать один экземпляр элемента anyAttribute.
Если указаны элементы group, sequence, choice или all, то элементы отобразятся в следующем порядке.
группа | sequence | choice | все
Атрибут | attributeGroup
anyAttribute
Примеры
В следующем примере показан сложный тип, содержащий простой тип (decimal) с атрибутом и объявлением элемента, которое использует сложный тип.
<xs:complexType name='internationalShoeSize'>
<xs:simpleContent>
<xs:extension base='xs:decimal'>
<xs:attribute name='sizing' type='xs:string' />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:element name='myShoeSize' type='internationalShoeSize'/>
В следующем примере показан экземпляр элемента myShoeSize в XML-документе.
<myShoeSize sizing='UK'>10.5</myShoeSize>
В следующем примере показан элемент myShoeSize, в пределах которого анонимно определен элемент complexType (обратите внимание на отсутствие атрибута name).
<xs:element name='myShoeSize'>
<xs:complexType>
<xs:simpleContent>
<xs:extension base='xs:decimal'>
<xs:attribute name='sizing' type='xs:string' />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>