Atributos do XSD

Todos os atributos são declarados como tipos simples.

O que é um atributo?

Os elementos simples não podem ter atributos. Se um elemento tiver atributos, ele será tratado como um tipo composto. No entanto, o atributo em si sempre é declarado como um tipo simples.

Como declarar um atributo?

A sintaxe para definir um atributo é:

<xs:attribute name="xxx" type="yyy"/>

Aqui, xxx representa o nome do atributo, e yyy especifica o tipo de dados do atributo. O XML Schema possui muitos tipos de dados integrados.

Os tipos mais comuns são:

  • xs:string
  • xs:decimal
  • xs:integer
  • xs:boolean
  • xs:date
  • xs:time

Exemplo

Este é um elemento XML com atributo:

<lastname lang="EN">Smith</lastname>

Esta é a definição correspondente do atributo:

<xs:attribute name="lang" type="xs:string"/>

Valores padrão e fixos dos atributos

Os atributos podem ter valores padrão ou fixos especificados.

Quando nenhum outro valor for especificado, o valor padrão será automaticamente atribuído ao elemento.

No exemplo a seguir, o valor padrão é "EN":

<xs:attribute name="lang" type="xs:string" default="EN"/>

O valor fixo também será automaticamente atribuído ao elemento, e você não pode especificar outro valor.

No exemplo a seguir, o valor fixo é "EN":

<xs:attribute name="lang" type="xs:string" fixed="EN"/>

Atributos opcionais e obrigatórios

Por padrão, os atributos são opcionais. Se desejar que os atributos sejam obrigatórios, use o atributo "use":

<xs:attribute name="lang" type="xs:string" use="required"/>

Restrição de Conteúdo

Quando o elemento ou atributo XML possui um tipo de dados definido, restrições são adicionadas ao conteúdo do elemento ou atributo.

Se o tipo do elemento XML for "xs:date" e o conteúdo contido for uma string semelhante a "Hello World", o elemento não passará pela verificação.

Através do XML schema, você também pode adicionar suas próprias facetas aos seus elementos XML e atributos. Essas facetas são chamadas de facet (notação do editor: significa face de poliedro, pode ser traduzida como face). Você aprenderá mais sobre facet na próxima seção.