elemento complexType do XML Schema
definição e uso
complexType elemento define um tipo complexo. O elemento do tipo complexo contém outros elementos e/ou atributos de XML.
informações do elemento
número de ocorrências | dentro do esquema é ilimitado; dentro do elemento é uma vez. |
elemento pai | element、redefine、schema |
conteúdo | annotation、simpleContent、complexContent、group、all、choice、sequence、attribute、attributeGroup、anyAttribute |
Sintaxe
<complexType id=ID name=NCName abstract=true|false mixed=true|false block=(#all|lista de (extension|restriction)) final=(#all|lista de (extension|restriction)) qualquer atributos > (anotação?,(simpleContent|complexContent|((grupo|all| choice|sequence)?,((atributo|grupo de atributos)*,atributoQualquer?)))) </complexType>
(? Símbolo declarado no elemento complexType, o elemento pode aparecer zero ou uma vez, * símbolo declarado o elemento pode aparecer zero ou várias vezes.)
Atributos
id
Opcional. Determina o ID único do elemento.
name
Opcional. Determina o nome do elemento.
abstract
Opcional. Determina se o tipo complexo pode ser usado na instância do documento. Se o valor for true, o elemento não pode usar diretamente esse tipo complexo, mas deve usar um tipo complexo derivado. O valor padrão é false.
mixed
Opcional. Determina se dados de caractere podem aparecer entre os subelementos desse tipo complexo. O valor padrão é false.
- Se o elemento simpleContent for um subelemento, o atributo mixed não é permitido.
- Se o elemento complexContent for um subelemento, o atributo mixed pode ser anulado pelo atributo mixed do elemento complexContent.
block
Opcional. Impede que tipos complexos com o tipo de derivação especificado sejam usados para substituir esse tipo complexo. Este valor pode conter #all ou uma lista, que é um subconjunto de extension ou restriction:
- extension - Impede que tipos complexos derivados por extensão sejam usados para substituir esse tipo complexo.
- restriction - Impede que tipos complexos derivados por restrição sejam usados para substituir esse tipo complexo.
- #all - Impede que todos os tipos complexos derivados sejam usados para substituir esse tipo complexo.
final
Opcional. Impede que tipos derivados do elemento complexType sejam usados para substituir esse tipo complexo. Este valor pode conter #all ou uma lista, que é um subconjunto de extension ou restriction.
- extensão - Previne derivadas por extensão.
- restrição - Previne derivadas por restrição.
- #all - Previne todas as derivadas (extensões e restrições).
qualquer atributos
Opcional. Especifica qualquer outra propriedade com espaço de nomes não esquema.
Exemplo
Exemplo 1
No exemplo a seguir, há um elemento complexo chamado "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>
Exemplo 2
No exemplo a seguir, há um tipo complexo "fullpersoninfo", que estende o tipo herdado usando três elementos complementares (address, city e country) e é derivado de outro tipo complexo "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>
No exemplo acima, o elemento "employee" deve conter em ordem os seguintes elementos: "firstname", "lastname", "address", "city" e "country".