DTD - Atributos

Neste capítulo, discutiremos sobre Atributos DTD. Atributo fornece mais informações sobre um elemento ou, mais precisamente, define uma propriedade de um elemento. Um atributo XML está sempre na forma de um par nome-valor. Um elemento pode ter qualquer número de atributos exclusivos.

A declaração de atributo é muito semelhante às declarações de elemento de muitas maneiras, exceto uma; em vez de declarar o conteúdo permitido para os elementos, você declara uma lista de atributos permitidos para cada elemento. Essas listas são chamadas de declaração ATTLIST.

Sintaxe

A sintaxe básica da declaração de atributos DTD é a seguinte -

<!ATTLIST element-name attribute-name attribute-type attribute-value>

Na sintaxe acima -

  • Os atributos DTD começam com <! ATTLIST palavra-chave se o elemento contiver o atributo.

  • element-name especifica o nome do elemento ao qual o atributo se aplica.

  • attribute-name especifica o nome do atributo que está incluído com o nome do elemento.

  • attribute-typedefine o tipo de atributos. Discutiremos mais sobre isso nas seções a seguir.

  • attribute-valueassume um valor fixo que os atributos devem definir. Discutiremos mais sobre isso nas seções a seguir.

Exemplo

Abaixo está um exemplo simples para declaração de atributo em DTD -

<?xml version = "1.0"?>

<!DOCTYPE address [
   <!ELEMENT address ( name )>
   <!ELEMENT name ( #PCDATA )>
   <!ATTLIST name id CDATA #REQUIRED>
]>

<address>
   <name id = "123">Tanmay Patil</name>
</address>

Vamos examinar o código acima -

  • Comece com a declaração XML com a seguinte instrução -

<?xml version = "1.0"?>
  • Imediatamente após o cabeçalho XML está a declaração do tipo de documento, comumente referido como DOCTYPE conforme mostrado abaixo -

    O DOCTYPE informa ao analisador que um DTD está associado a este documento XML. A declaração DOCTYPE possui um ponto de exclamação (!) No início do nome do elemento.

<!DOCTYPE address [
  • A seguir está o corpo do DTD. Aqui, declaramos elemento e atributo -

<!ELEMENT address ( name )>
<!ELEMENT name ( #PCDATA )>
  • O id de atributo para o nome do elemento é definido conforme abaixo -

    Aqui, o tipo de atributo é CDATA e seu valor é #REQUIRED .

<!ATTLIST name id CDATA #REQUIRED>

Regras de declaração de atributos

  • Todos os atributos usados ​​em um documento XML devem ser declarados na Definição de Tipo de Documento (DTD) usando uma Declaração de Lista de Atributos

  • Os atributos podem aparecer apenas nas tags iniciais ou vazias.

  • A palavra-chave ATTLIST deve estar em maiúsculas

  • Nenhum nome de atributo duplicado será permitido na lista de atributos de um determinado elemento.

Tipos de Atributo

Ao declarar atributos, você pode especificar como o processador deve tratar os dados que aparecem no valor. Podemos categorizar os tipos de atributos em três categorias principais -

  • Tipo de corda

  • Tipos tokenizados

  • Tipos enumerados

A tabela a seguir fornece um resumo dos diferentes tipos de atributos -

Sr. Não. Tipo e descrição
1

CDATA

CDATA são dados de caractere (texto e não marcação). É um tipo de atributo de string .

2

ID

É um identificador exclusivo do atributo. Não deve aparecer mais de uma vez. É um tipo de atributo tokenizado .

3

IDREF

É usado para fazer referência a um ID de outro elemento. É usado para estabelecer conexões entre os elementos. É um tipo de atributo tokenizado .

4

IDREFS

É usado para fazer referência a vários IDs. É um tipo de atributo tokenizado .

5

ENTITY

Ele representa uma entidade externa no documento. É um tipo de atributo tokenizado .

6

ENTITIES

Ele representa uma lista de entidades externas no documento. É um tipo de atributo tokenizado .

7

NMTOKEN

É semelhante a CDATA e o valor do atributo consiste em um nome XML válido. É um tipo de atributo tokenizado .

8

NMTOKENS

É semelhante a CDATA e o valor do atributo consiste em uma lista de nomes XML válidos. É um tipo de atributo tokenizado .

9

NOTATION

Um elemento será referenciado a uma notação declarada no documento DTD. É um tipo de atributo enumerado .

10

Enumeration

Permite definir uma lista específica de valores onde um dos valores deve corresponder. É um tipo de atributo enumerado .

Declaração de valor de atributo

Em cada declaração de atributo, você deve especificar como o valor aparecerá no documento. Você pode especificar se um atributo -

  • pode ter um valor padrão

  • pode ter um valor fixo

  • É necessário

  • está implícito

Valores padrão

Ele contém o valor padrão. Os valores podem ser colocados entre aspas simples (') ou aspas duplas (").

Syntax

A seguir está a sintaxe do valor -

<!ATTLIST element-name attribute-name attribute-type "default-value">

onde valor-padrão é o valor do atributo definido.

Example

A seguir está um exemplo simples de declaração de atributo com valor padrão -

<?xml version = "1.0"?>

<!DOCTYPE address [
   <!ELEMENT address ( name )>
   <!ELEMENT name ( #PCDATA )>
   <!ATTLIST name id CDATA "0">
]>

<address>
   <name id = "123">
      Tanmay Patil
   </name>
</address>

Neste exemplo, temos o elemento de nome com id de atributo cujo valor padrão é 0 . O valor padrão foi colocado entre aspas duplas.

Valores FIXOS

A palavra-chave #FIXED seguida pelo valor fixo é usada quando você deseja especificar que o valor do atributo é constante e não pode ser alterado. Um uso comum de atributos fixos é especificar números de versão.

Syntax

A seguir está a sintaxe dos valores fixos -

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

onde #FIXED é um valor de atributo definido.

Example

A seguir está um exemplo simples de declaração de atributo com valor FIXED -

<?xml version = "1.0"?>

<!DOCTYPE address [
  <!ELEMENT address (company)*>
  <!ELEMENT company (#PCDATA)>
  <!ATTLIST company name NMTOKEN #FIXED "tutorialspoint">
]>

<address>
  <company name = "tutorialspoint">we are a free online teaching faculty</company>
</address>

Neste exemplo, usamos a palavra-chave #FIXED onde indica que o valor "tutorialspoint" é o único valor para o nome do atributo do elemento <company>. Se tentarmos alterar o valor do atributo, ocorrerá um erro.

A seguir está um DTD inválido -

<?xml version = "1.0"?>

<!DOCTYPE address [
  <!ELEMENT address (company)*>
  <!ELEMENT company (#PCDATA)>
  <!ATTLIST company name NMTOKEN #FIXED "tutorialspoint">
]>

<address>
  <company name = "abc">we are a free online teaching faculty</company>
</address>

Valores REQUIRED

Sempre que você quiser especificar que um atributo é obrigatório, use a palavra-chave #REQUIRED.

Syntax

A seguir está a sintaxe de #REQUIRED -

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

onde #REQUIRED é um tipo de atributo definido.

Example

A seguir está um exemplo simples de declaração de atributo DTD com a palavra-chave #REQUIRED -

<?xml version = "1.0"?>

<!DOCTYPE address [
   <!ELEMENT address ( name )>
   <!ELEMENT name ( #PCDATA )>
   <!ATTLIST name id CDATA #REQUIRED>
]>

<address>
   <name id = "123">
      Tanmay Patil
   </name>
</address>

Neste exemplo temos usado palavra-chave #REQUIRED para especificar que o atributo id deve ser fornecido para o elemento de nome nome

Valores IMPLÍCITOS

Ao declarar atributos, você deve sempre especificar uma declaração de valor. Se o atributo que você está declarando não tem valor padrão, não tem valor fixo e não é obrigatório, você deve declarar que o atributo está implícito . A palavra-chave #IMPLIED é usada para especificar um atributo conforme implícito .

Syntax

A seguir está a sintaxe de #IMPLIED -

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

onde #IMPLIED é um tipo de atributo definido.

Example

A seguir está um exemplo simples de #IMPLIED

<?xml version = "1.0"?>

<!DOCTYPE address [
   <!ELEMENT address ( name )>
   <!ELEMENT name ( #PCDATA )>
   <!ATTLIST name id CDATA #IMPLIED>
]>

<address>
   <name />
</address>

Neste exemplo, usamos a palavra-chave #IMPLIED, pois não queremos especificar nenhum atributo a ser incluído no nome do elemento . Isso é opcional.