XML Schema element 元素
定义和用法
element 元素定义一个元素。
元素信息
出现次数 | 在架构中定义的元素的数目。 |
父元素 | schema、choice、all、sequence |
内容 | simpleType、complexType、key、keyref、unique |
语法
<element id=ID name=NCName ref=QName type=QName substitutionGroup=QName default=string fixed=string form=qualified|unqualified maxOccurs=nonNegativeInteger|unbounded minOccurs=inteiroNãoNegativo nillable=true|false abstract=true|false block=(#all|lista de (extension|restriction)) final=(#all|lista de (extension|restriction)) qualquer atributo > annotation?,((simpleType|complexType)?,(unique|key|keyref)*)) </element>
(O símbolo ? declara que o elemento 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 um elemento schema, essa propriedade é necessária.
ref
Opcional. Referência a outro elemento. A propriedade ref pode conter um prefixo de namespace. Se o elemento pai for um elemento schema, não é necessário usar essa propriedade.
type
Opcional. Define o nome do tipo de dados interno ou o nome do elemento simpleType ou complexType.
substitutionGroup
Opcional. Define o nome do elemento que pode substituir esse elemento. Este elemento deve ter o mesmo tipo ou um tipo derivado do tipo especificado.
Não é possível usar essa propriedade se o elemento pai não for um elemento schema.
default
Opcional. Determina um valor padrão para o elemento (apenas quando o conteúdo do elemento é do tipo simples ou textOnly).
fixed
Opcional. Determina 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 for o elemento schema, não pode usar essa propriedade.
- Se este valor for "unqualified", não é necessário usar um prefixo de namespace para limitar o elemento.
- Se este valor for "qualified", deve-se usar um prefixo de namespace para limitar o elemento.
maxOccurs
Opcional. Define o número máximo de vezes 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 for o elemento schema, não pode usar essa propriedade.
minOccurs
Opcional. Define a menor ocorrência que o elemento element pode ter no elemento pai. O valor pode ser um inteiro maior ou igual a zero. O valor padrão é 1.
Se o elemento pai for o elemento schema, não pode usar essa propriedade.
nillable
Opcional. Indica se pode ser atribuído um zero valor explícito a esse elemento. Esta opção se aplica ao conteúdo do elemento e não ao atributo do elemento. O valor padrão é false.
Se nillable for true, permitirá que a instância do elemento possa definir o atributo nil como true. O atributo nil é definido como parte do espaço de nomes XML 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 zero valor explícito (o atributo nil definido 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 outros elementos que contêm o QName da propriedade substitutionGroup dessa elemento devem aparecer na posição 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 o tipo derivado especificado sejam usados para substituir esse elemento. O valor pode conter #all ou uma lista, essa lista é um subconjunto de extension, restriction ou substitution:
- extension - Evita que elementos derivados por extensão sejam usados para substituir esse elemento.
- restriction - Evita que elementos derivados por restrição sejam usados para substituir esse elemento.
- substitution - Evita que elementos derivados por substituição sejam usados para substituir esse elemento.
- #all - Evita que todos os elementos derivados sejam usados para substituir esse elemento.
final
Opcional. Define o valor padrão da propriedade final do elemento element. Se o elemento pai não for o elemento schema, não pode usar essa propriedade. O valor pode conter #all ou uma lista, essa lista é um subconjunto de extension ou restriction:
- extensão - impede 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 esse elemento
- #all - impede que todos os elementos derivados sejam usados para substituir esse elemento
qualquer atributo
Opcional. Especifica qualquer outro atributo com espaço de nomes não do schema.
Exemplo
Exemplo 1
O exemplo a seguir é um schema que contém quatro elementos simples: "fname", "lname", "age" e "dateborn", cujos 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 é idêntico ao exemplo 2, mas neste exemplo, optamos por usar a propriedade 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>