Em uma DTD, atributos são declarados com uma declaração ATTLIST.
declarando Atributos
Uma declaração de atributo tem a seguinte sintaxe:
<!ATTLIST element-name attribute-name attribute-type attribute-value>
DTD example:
<!ATTLIST payment type CDATA "check">
XML example:
<payment type="check" />
O attribute-type pode ser um dos seguintes:
Digitar | Descrição |
---|---|
CDATA | O valor é dados de caracteres |
( en1 | en2 |..) | O valor deve ser um de uma lista enumerada |
ID | O valor é uma identificação única |
IDREF | O valor é o ID de um outro elemento |
IDREFS | O valor é uma lista de outros ids |
NMTOKEN | O valor é 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 | O valor é um nome de uma notação |
xml: | O valor é um valor pré-definido xml |
O attribute-value pode ser um dos seguintes:
Valor | Explicação |
---|---|
value | O valor padrão do atributo |
#REQUIRED | O atributo é obrigatório |
#IMPLIED | O atributo é opcional |
#FIXED value | O valor do atributo é fixa |
Um valor de atributo padrão
DTD:
<!ELEMENT square EMPTY>
<!ATTLIST square width CDATA "0">
Valid XML:
<square width="100" />
No exemplo acima, o "square" elemento é definido como sendo um elemento vazio com uma "width" atributo do tipo CDATA. Se não houver largura for especificado, ele tem um valor padrão de 0.
#REQUERIDOS
Sintaxe
<!ATTLIST element-name attribute-name attribute-type #REQUIRED>
Exemplo
DTD:
<!ATTLIST person number CDATA #REQUIRED>
Valid XML:
<person number="5677" />
Invalid XML:
<person />
Utilizar a palavra-chave #REQUIRED se você não tem uma opção para um valor padrão, mas ainda querem forçar o atributo de estar presente.
#IMPLÍCITA
Sintaxe
<!ATTLIST element-name attribute-name attribute-type #IMPLIED>
Exemplo
DTD:
<!ATTLIST contact fax CDATA #IMPLIED>
Valid XML:
<contact fax="555-667788" />
Valid XML:
<contact />
Utilizar a palavra-chave #IMPLIED se você não quer forçar o autor para incluir um atributo, e você não tem uma opção para um valor padrão.
#FIXO
Sintaxe
<!ATTLIST element-name attribute-name attribute-type #FIXED "value">
Exemplo
DTD:
<!ATTLIST sender company CDATA #FIXED "Microsoft">
Valid XML:
<sender company="Microsoft" />
Invalid XML:
<sender company="w3ii" />
Utilizar a palavra-chave #FIXED quando você quer um atributo para ter um valor fixo, sem permitir que o autor a alterá-lo. Se um autor inclui um outro valor, o analisador XML retornará um erro.
Valores de Atributo enumeradas
Sintaxe
<!ATTLIST element-name attribute-name (en1|en2|..) default-value>
Exemplo
DTD:
<!ATTLIST payment type (check|cash) "cash">
XML example:
<payment type="check" />
or
<payment type="cash" />
Use valores de atributos enumerados quando quiser que o valor do atributo para ser um de um conjunto fixo de valores legais.