DTD - Atributo

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 元素名称 属性名称 属性类型 默认值>

Exemplo de DTD:

<!ATTLIST payment type CDATA "check">

Exemplo de XML:

<payment type="check" />

A seguir estãoTipo de atributoopções:

Tipo Descrição
CDATA O valor é dados de caracteres (character data)
(en1|en2|..) Este valor é um valor da lista de enumeração
ID O valor é um id único
IDREF O valor é o id de outro elemento
IDREFS O valor é uma lista de outros ids
NMTOKEN O valor é um nome legal de XML
NMTOKENS O valor é uma lista de nomes legais de XML
ENTITY O valor é uma entidade
ENTITIES O valor é uma lista de entidades
NOTATION Este valor é o nome do símbolo
xml: O valor é um valor pré-definido do XML

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

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

Especificar um valor padrão para o atributo

DTD:

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

XML válido:

<square width="100" />

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

#IMPLIED

Sintaxe

<!ATTLIST 元素名称 属性名称 属性类型 #IMPLIED>

Exemplo

DTD:

<!ATTLIST contact fax CDATA #IMPLIED>

XML válido:

<contact fax="555-667788" />

XML válido:

<contact />

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

#REQUIRED

Sintaxe

<ATTLIST 元素名称 属性名称 属性类型 #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 deseja forçar o autor a fornecer o atributo, use a palavra-chave #REQUIRED.

#FIXED

Sintaxe

<!ATTLIST nome_do_elemento nome_do_atributo tipo_do_atributo #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.

Valor de Atributo Enumerado

Sintaxe:

<!ATTLIST nome_do_elemento nome_do_atributo (en1|en2|..) valor_padrao>

Exemplo de DTD:

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

Exemplo de XML:

<payment type="check" />

Ou

<payment type="cash" />

Se você deseja que o valor do atributo seja um dos valores legais fixos, use o valor de atributo enumerado.