Elemento do XML Schema

Definição e uso

O elemento element define um elemento.

Informações do elemento

Frequência de ocorrência Número de elementos definidos na arquitetura.
Elemento pai schema, choice, all, sequence
Conteúdo simpleType, complexType, key, keyref, unique

Sintaxe

<element
id=ID 
name=NCName
ref=QName
type=QName
substitutionGroup=QName
default=string
fixed=string
form=qualified|unqualified
maxOccurs=nonNegativeInteger|unbounded
minOccurs=nonNegativeInteger
nillable=true|false
abstract=true|false 
block=(#all|lista de (extension|restriction))
final=(#all|lista de (extension|restriction))
qualquer atributos
>
annotation?,((simpleType|complexType)?,(unique|key|keyref)*))
</element>

(O símbolo ? declara no elemento element, que pode aparecer zero ou uma vez, o símbolo * declara que o elemento pode aparecer zero ou várias vezes.).

Atributo

id

Opcional. Define um ID único para o elemento.

name

Opcional. Define o nome do elemento. Se o elemento pai for do tipo schema, essa propriedade é necessária.

ref

Opcional. Referência para outro elemento. A propriedade ref pode conter um prefixo de espaço de nomes. Se o elemento pai for do tipo schema, não é usado essa propriedade.

type

Opcional. Define o nome do tipo de dados embutido, ou define o nome do elemento simpleType ou complexType.

substitutionGroup

Opcional. Define o nome do elemento que pode ser usado para substituir esse elemento. O elemento deve ter o mesmo tipo ou ser derivado do tipo especificado.

Não é permitido usar essa propriedade se o elemento pai não for do tipo schema.

default

Opcional. Define um valor padrão para o elemento (apenas quando o conteúdo do elemento é do tipo simples ou textOnly).

fixed

Opcional. Define um valor fixo para o elemento (apenas quando o conteúdo do elemento é do tipo simples ou textOnly).

form

opcional. a forma do elemento. O valor padrão é o valor da propriedade elementFormDefault do elemento schema que contém essa propriedade. Este valor deve ser uma das seguintes strings: "qualified" ou "unqualified".

Se o elemento pai é o elemento schema, essa propriedade não pode ser usada.

  • Se o valor for "unqualified", o elemento não precisa ser qualificado por prefixo de espaço de nomes.
  • Se o valor for "qualified", o elemento deve ser qualificado por prefixo de espaço de nomes.

maxOccurs

opcional. define a maior vez que o elemento element pode aparecer no elemento pai. Este valor pode ser um inteiro maior ou igual a zero. Se não desejar estabelecer nenhum limite para o número máximo, use a string "unbounded". O valor padrão é 1.

Se o elemento pai é o elemento schema, essa propriedade não pode ser usada.

minOccurs

opcional. define a menor vez que o elemento element pode aparecer no elemento pai. Este valor pode ser um inteiro maior ou igual a zero. O valor padrão é 1.

Se o elemento pai é o elemento schema, essa propriedade não pode ser usada.

nillable

opcional. indica se pode ser atribuído um valor zero explícito a esse elemento. Esta opção se aplica ao conteúdo do elemento e não é uma propriedade do elemento. O valor padrão é false.

Se nillable for true, permitirá que a instância do elemento possa configurar a propriedade nil como true. A propriedade nil é definida como parte do espaço de nomes de esquema da instância.

Por exemplo, o próximo trecho define um único elemento e define nillable como true.

<xs:element name="myDate" type="xs:date" nillable="true"/>

O próximo trecho usa esse elemento e tem valor zero explícito (a propriedade nil configurada como true).

<myDate xsi:nil="true"></myDate>

abstract

opcional. indica se o elemento pode ser usado no documento de instância. Se o valor for true, o elemento não pode aparecer no documento de instância. Em vez disso, os elementos que contêm o QName da propriedade substitutionGroup dessa elemento devem aparecer no local do elemento. Múltiplos elementos podem referenciar esse elemento em suas propriedades substitutionGroup. O valor padrão é false.

block

opcional. tipo derivado. A propriedade block impede que elementos com tipo derivado especificado sejam usados para substituir esse elemento. Este valor pode conter #all ou uma lista, que é um subconjunto de extensão, restrição ou substituição:

  • extensão - evitar que elementos derivados por extensão sejam usados para substituir esse elemento.
  • restrição - impede que elementos derivados por restrição sejam usados para substituir este elemento.
  • substituição - impede que elementos derivados por substituição sejam usados para substituir este elemento.
  • #all - impede que todos os elementos derivados sejam usados para substituir este elemento.

final

Opcional. Define o valor padrão do atributo final do elemento. Se o elemento pai não for o elemento schema, não pode usar essa propriedade. O valor pode conter #all ou uma lista, que é um subconjunto de extensão ou restrição:

  • extensão - impede que elementos derivados por extensão sejam usados para substituir este elemento
  • restrição - impede que elementos derivados por restrição sejam usados para substituir este elemento
  • #all - impede que todos os elementos derivados sejam usados para substituir este elemento

qualquer atributos

Opcional. Especifica qualquer outro atributo com namespace não-esquema.

Exemplo

Exemplo 1

O exemplo a seguir é um schema que contém quatro elementos simples: "fname", "lname", "age" e "dateborn", os tipos são string, nonNegativeInteger e date:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="fname" type="xs:string"/>
<xs:element name="lname" type="xs:string"/>
<xs:element name="age" type="xs:nonNegativeInteger"/>
<xs:element name="dateborn" type="xs:date"/>
</xs:schema>

Exemplo 2

O exemplo a seguir é um schema com um elemento de tipo complexo "note". O elemento "note" contém quatro elementos simples: "to", "from", "heading" e "body":

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<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>
</xs:schema>

Exemplo 3

Este exemplo é o mesmo que o exemplo 2, mas neste exemplo, escolhemos usar o atributo ref para referenciar o nome do elemento:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="note">
  <xs:complexType>
    <xs:sequence>
      <xs:element ref="to"/>
      <xs:element ref="from"/>
      <xs:element ref="heading"/>
      <xs:element ref="body"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>
<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:schema>