DTD - Atributos

No DTD, os atributos são declarados através da declaração ATTLIST.

Declarar atributo

A declaração de atributo usa a seguinte sintaxe:

<!ATTLIST nome_do_elemento nome_do_atributo tipo_do_atributo valor_padrao>

Exemplo de DTD:

<!ATTLIST payment type CDATA "check">

Exemplo de instância XML:

<payment type="check" />

A seguir:Tipo de atributoOpções do tipo:

Tipo Descrição
CDATA O valor deve ser dados de caractere (character data)
(en1|en2|..) Este valor é uma das opções da lista enumerada
ID O valor deve ser um id único
IDREF O valor deve ser o id de outro elemento
IDREFS A lista de valores deve ser de outros ids
NMTOKEN O valor deve ser um nome XML válido
NMTOKENS O valor é uma lista de nomes XML válidos
ENTITY O valor é uma entidade
ENTITIES O valor é uma lista de entidades
NOTATION Este valor é o nome simbólico
xml: O valor é um valor XML pré-definido

Os parâmetros de valor padrão podem usar os seguintes valores:

Valor Explicação
Valor Valor padrão do atributo
#REQUIRED O valor do atributo é obrigatório
#IMPLIED O atributo não é obrigatório
#FIXED valor O valor do atributo é fixo

Definir um valor padrão para atributo

DTD:

<!ELEMENT square EMPTY>
<!ATTLIST square width CDATA "0">

XML válido:

<square width="100" />

Neste exemplo, "square" é definido como um elemento vazio com o atributo "width" do tipo CDATA. Se a largura não for configurada, o valor padrão é 0.

#IMPLIED

Sintaxe

<!ATTLIST element-name attribute-name attribute-type #IMPLIED>

Exemplo

DTD:

<!ATTLIST contact fax CDATA #IMPLIED>

XML válido:

<contact fax="555-667788" />

XML válido:

<contact />

Se você não desejar forçar o autor a incluir o atributo e não tiver a opção de valor padrão, use a palavra-chave #IMPLIED.

#REQUIRED

Sintaxe

<!ATTLIST element-name attribute-name attribute-type #REQUIRED>

Exemplo

DTD:

<!ATTLIST person number CDATA #REQUIRED>

XML válido:

<person number="5677" />

XML ilegal:

<person />

Se você não tiver a opção de valor padrão mas ainda assim desejar forçar o autor a submeter o atributo, use a palavra-chave #REQUIRED.

#FIXED

Sintaxe

<!ATTLIST element-name attribute-name attribute-type #FIXED "value">

Exemplo

DTD:

<!ATTLIST sender company CDATA #FIXED "Microsoft">

XML válido:

<sender company="Microsoft" />

XML ilegal:

<sender company="W3School" />

Se você deseja que o atributo tenha um valor fixo e não permita que o autor altere esse valor, use a palavra-chave #FIXED. Se o autor usar um valor diferente, o analisador XML retornará um erro.

Enumerar valores de atributo

Sintaxe:

<!ATTLIST element-name attribute-name (en1|en2|..) default-value>

Exemplo de DTD:

!ATTLIST payment type (check|cash) "cash">

Exemplo de XML:

<payment type="check" />

ou

<payment type="cash" />

Se o valor do atributo for um dos valores legais fixos da série, use o valor de atributo enumerado.