элемент XML Schema complexType
определение и использование
элемент complexType определяет сложный тип. Элементы сложного типа - это XML элементы, содержащие другие элементы и/или атрибуты.
информация о элементе
количество出现的次数 | в схеме не ограничен; в элементе один раз. |
родительский элемент | element、redefine、schema |
содержание | annotation、simpleContent、complexContent、group、all、choice、sequence、attribute、attributeGroup、anyAttribute |
Грамматика
<complexType id=ID name=NCName abstract=true|false mixed=true|false block=(#all|список (extension|restriction)) final=(#all|список (extension|restriction)) любые атрибуты > (annotation?,(simpleContent|complexContent|((group|all| (choice|sequence)?,((attribute|attributeGroup)*,anyAttribute?)))) </complexType>
(? Символы указания в элементе complexType могут появляться нуль раз или один раз, * Символы указания могут появляться нуль раз или多次.)
Атрибуты
id
Доступно. Определяет уникальный ID элемента.
name
Доступно. Определяет имя элемента.
abstract
Доступно. Определяет, можно ли использовать сложный тип в документе инстанса. Если значение true, то элемент не может напрямую использовать этот сложный тип, а должен использовать сложный тип,派的生 из этого сложного типа. Значением по умолчанию является false.
mixed
Доступно. Определяет, допускается ли наличие символьных данных между подэлементами этого сложного типа. Значением по умолчанию является false.
- Если элемент simpleContent является подэлементом, то свойство mixed не допускается.
- Если элемент complexContent является подэлементом, то свойство mixed может быть переписано свойством mixed элемента complexContent.
block
Доступно. Предотвращает использование сложных типов с указанным типом派ределения для замены этого сложного типа. Значение может содержать #all или список, который является подмножеством extension или restriction:
- extension - Предотвращает использование сложных типов,派的生是通过扩展, для замены этого сложного типа.
- restriction - Предотвращает использование сложных типов,派的生是通过限制, для замены этого сложного типа.
- #all - Предотвращает использование всех派derivedых сложных типов для замены этого сложного типа.
final
Доступно. Предотвращает использование派生的类型 из элемента complexType. Значение может содержать #all или список, который является подмножеством extension или restriction.
- extension - Предотвращает производные через расширения.
- restriction - Предотвращает производные через ограничения.
- #all - Предотвращает все производные (расширения и ограничения).
любые атрибуты
Опционально. Определяет любые другие атрибуты с non-schema именем пространства имен.
Пример
Пример 1
В данном примере есть сложный тип элемента с именем "note":
<xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>
Пример 2
В данном примере есть сложный тип "fullpersoninfo", который расширяет тип наследования, используя три дополнительных элемента (address, city и country), и происходит от другого сложного типа "personinfo":
<xs:element name="employee" type="fullpersoninfo"/> <xs:complexType name="personinfo"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:complexType name="fullpersoninfo"> <xs:complexContent> <xs:extension base="personinfo"> <xs:sequence> <xs:element name="address" type="xs:string"/> <xs:element name="city" type="xs:string"/> <xs:element name="country" type="xs:string"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType>
В примере выше, элемент "employee" должен последовательно содержать следующие элементы: "firstname", "lastname", "address", "city" и "country".