Sie sind auf Seite 1von 23

1.

Introdução

Em 1960, pesquisadores da IBM enfrentaram o problema de construir um sistema


poderoso e portátil para o intercambio e a manipulação de documentos legais. Os
diferentes tipos de arquivos com que se trabalhava tornava difícil a comunicação
entre os computadores. Percebeu-se, então, que a comunicação seria facilitada pela
existência de um formato comum, independente de sistema.

Decidiu-se, portanto, pela utilização de uma linguagem de marcação, compatível


entre muitas plataformas. A linguagem protótipo baseava-se na marcação dos
elementos estruturais do documento, em vez de formatar e exibir um documento
pronto. A formatação da informação seria mantida em arquivos separados,
chamados folhas de estilo, com os quais os computadores poderiam formatar e
exibir um documento pronto. Desta maneira, o processamento dos documentos
passou a ser diferente, pois percebeu-se que só poderiam ser processados de
maneira confiável aqueles que obedecessem a um padrão, de modo que o sistema
fosse capaz de reconhecer os documentos válidos e rejeitar os inválidos (com falta
de informações ou informações a mais). Assim, a estrutura esperada para cada tipo
de documento era definida em um arquivo separado denominado definição de tipo
de documento (DTD).

Por volta de 1969, a equipe desenvolveu uma linguagem com todas essas
possibilidades e a chamaram de Generalized Markup Language (GML).

Em 1974, provou-se que um analisador sintático (parser) poderia validar um


documento sem efetivamente processa-lo. Continuando-se os desenvolvimentos
adicionais, chegou-se, em 1986, na adoção da Standard Generalized Markup
Language (SGML) como padrão internacional. Esta linguagem tornou-se
rapidamente o padrão de negócios para o armazenamento e intercâmbio de dados
em todo mundo.

Com o advento da Web, em certo momento as limitações da HTML tornaram-se


visíveis, devido à sua falta de extensibilidade. Os fornecedores de navegadores, na
tentativa de ganhar mercado, começaram a criar comandos específicos de
formatação.

Para o W3C, esta atitude poderia vir a ameaçar a interoperabilidade e a


escalabilidade da Web, e buscou-se, então, uma reação. Foram criadas, assim, as
Cascade Style Sheets (CSS), uma tecnologia de folhas de estilo, que poderia ser
usada no lugar da marcação de propriedade dos fornecedores. Esta tecnologia,
entretanto, mostrava-se extensivelmente limitada.

2. World Wide Web Consortium (W3C)

Fundado em 1994, o W3C (http://www.w3c.org) é um consórcio que destina-se ao


desenvolvimento de tecnologias interoperantes, de domínio público, para a World
Wide Web, e uma de suas principais metas é tornar a Web universalmente
acessível.
O W3C é, ainda, uma organização de padronização, e as tecnologias Web por este
padronizadas são chamadas “Recomendações”, e estas não são produtos reais de
software, mas sim documentos que especificam o papel, a sintaxe, as regras de uma
tecnologia. Entre as recomendações atualmente em uso, feitas pelo W3C, pode-se
citar a HyperText Markup Language (HTML), a Cascading Style Sheet (CSS) e a
Extensible Markup Language (XML).

Assim surgiu a Extensible Markup Language (XML), combinando potência e


extensibilidade herdadas da SGML e a simplicidade exigida pela comunidade Web.

Enquanto o HTML é legível apenas pelas pessoas, os documentos XML podem ser
lidos pelas pessoas e manipuláveis pelos computadores.

3. XML

XML é uma linguagem que descreve documentos estruturados e dados e vem se


tornando um novo padrão de troca e publicação de dados e integração entre
aplicações.

O XML torna os documentos estruturados disponíveis para processamento


automático, e é baseado na separação do conteúdo, descrição da estrutura e
apresentação.

Embora tenha muitos recursos avançados, a linguagem XML é acessível a todos os


níveis de programadores por causa de sua inerente simplicidade.

- É baseada em texto, portanto um documento pode ser criado com as ferramentas


de texto mais simples;
- Não se limita, entretanto, a descrever elementos textuais. Pode descrever imagens,
gráficos vetoriais, animações ou qualquer outro tipo de dado para o qual seja
estendida;
- É um padrão aberto, possibilitando ao desenvolvedor a escolha de ferramentas que
melhor se ajustem às suas necessidades, independente da plataforma;

Devido a esta característica de extensibilidade e flexibilidade, diversas são as áreas


em que a linguagem XML está sendo adotada.

XML é recomendação W3C desde 1998 (http://www.w3c.org/XML).

3.1. HTML x XML

Uma breve comparação pode ser feita entre o HTML e o XML.

A linguagem HTML consiste em comandos de formatação para apresentação de


texto e imagens em navegadores Web. Outras mídias podem ser exibidas por
componentes adicionais chamados plug-ins.

XML é um formato de dados auto-descritivos que contém, além dos dados, os


nomes e descrição de estruturas dos campos de dados. A linguagem não contém
marcações (tags) para formatação, mantendo as informações sobre o conteúdo,
descrição estrutural, e apresentação separadas.

As tags em um documento XML são diferentes das tags utilizadas na apresentação


nos navegadores, e por isso a apresentação dos documentos XML em navegadores
é de baixa qualidade.

Figura 1: Arquivo HTML apresentado no navegador e seu código-fonte


Figura 2: Arquivo XML apresentado no navegador e seu código-fonte

Conforme citado anteriormente, pode-se perceber a baixa qualidade de


apresentação do documento XML em um navegador. A não existência de tags de
apresentação, faz com que os dados sejam apresentados conforme sua estrutura.

O XML possui, entretanto, algumas características que o tornam um formato de


dados que pode ser utilizado em todos os tipos de cenários de aplicação:

A criação e processamento dos documentos XML é bastante simples, e estes


podem ser facilmente lidos por humanos e processados pelas máquinas.

Além dos dados, um documento XML contém a descrição destes. A implementação


das aplicações pode ser independente da estrutura específica dos dados. Isto quer
dizer que diferentes tipos de aplicações podem ser implementadas utilizando apenas
os dados que lhes são úteis. Além disso, a extensão na estrutura dos documentos
XML, através da criação de novos elementos, não prejudica em nada as aplicações
já existentes que utilizavam tal documento.

As Aplicações podem responder de maneira diferente aos dados. Não é necessária


a adaptação de uma aplicação quando são inseridos novos elementos de dados, se
os mesmos não forem relevantes para esta. Além disso, a estrutura aberta do XML
permite que novos elementos sejam adicionados a qualquer momento.

Quanto à utilização do XML, pode-se citar algumas aplicações:


Publicação – A separação entre o conteúdo e a apresentação, possibilita que o
mesmo documento XML possa ser apresentado de diferentes formas, através da
utilização de diferentes folhas de estilo.

3.2. Sintaxe do XML

Os documentos XML contêm informações na forma de texto que compreendem as


marcações e o conteúdo.

As marcações descrevem os dados e são caracterizadas pelos sinas “<” e“>”.

Um documento XML pode conter:

– Instruções de processamento <? ... ?>


– Comentários <!- - ... - ->
– Referência a entidades &ref;
– Seções CDATA
– Elementos e atributos (tags)

Os documentos são geralmente armazenados em arquivos de texto que terminam


com a extensão .xml, embora isso não seja um requisito da XML.

Qualquer editor de texto pode ser utilizado para criar um documento XML. Muitos
pacotes de software também permitem que os dados sejam armazenados como
documentos XML.

Figura 3: Documento simples XML contendo uma mensagem

Todos os documentos XML devem conter um elemento raiz (myMessage no


exemplo). O elemento raiz contém outros elementos. As linhas que precedem o
elemento raiz representam o prólogo do documento XML. O elemento message, no
exemplo, é chamado de elemento filho do elemento myMessage porque está
aninhado dentro deste elemento. O elemento filho contém o texto Welcome to
XML!.

É necessário tomar cuidado para que não seja criado mais do que um elemento raiz
em um documento XML.

O aninhamento deve ser feito de forma adequada. Por exemplo,


<x><y>hello</x></y> é um erro, uma vez que o elemento aninhado y deve terminar
antes do elemento x.

3.3. Prólogo e Encoding


O prólogo é a parte introdutória de um documento XML, precedendo o primeiro
elemento, e contém, tipicamente, a versão da XML para a qual o documento foi
criado. O prólogo é representado na forma de instruções de processamento.

<?xml version = “1.0”?>

Embora a declaração de XML seja opcional, ela deve ser usada para identificar a
versão da XML do documento. Caso contrário, no futuro, é possível que seja
assumido que um documento sem uma declaração de versão XML obedece à ultima
versão da XML, o que pode vir a ocasionar problemas.

Uma declaração adicional de encoding pode especificar o conjunto de caracteres


que é utilizado no documento. O conjunto de caracteres consiste nos caracteres que
podem ser representados em um documento. Por exemplo, o conjunto de caracteres
ASCII (American Standard Code for Information Interchange) contém as letras do
alfabeto, os números de 0-9 e os caracteres de pontuação, como !, -, e ?.

<?xml version = “1.0” encoding=“ISO-8859-1”?>

Os documentos XML podem conter os caracteres de retorno de carro (carriage


return), avanços de linha (line feed) e caracteres Unicode. O Unicode é o padrão do
Unicode Consortium. Seu objetivo é possibilitar que os computadores processem os
caracteres das principais línguas do mundo (www.unicode.org).

Os documentos XML contêm dados de caracteres e texto de marcação. O texto de


marcação vem entre os sinais de menor que (<) e maior que (>). Os dados de
caracteres representam o texto entre uma marca de abertura e uma marca de
finalização.

3.4 Elementos e Atributos

O conteúdo de um documento XML está representado na forma de seus elementos


e atributos.

Elementos são a mais comum forma de marcação. Delimitados pelos sinais de


menor e maior (< e >), a maioria dos elementos identificam a natureza do conteúdo
que envolvem, começando com uma marcação de inicio <elemento> e uma de fim
</elemento>, com seu conteúdo entre estes.

Os elementos sem conteúdo, chamados de vazios, são representados por


<elemento></elemento>. Tais elementos ainda podem ser representados através
de uma sintaxe modificada, que utiliza o final /> para isto. Assim, um programa que
processa o documento XML não precisa procurar pela marcação de fim do
elemento.

Desta forma, pode-se representar um elemento vazio por <elemento/>.

Os nomes dos elementos não podem conter caracteres especiais nem espaços, e
devem começar por letras ou “_”.
Atributos são pares de valores nomeados que ocorrem dentro das marcas de início,
após o nome do elemento. Por exemplo:

<elemento classe="prefácio">

A linha acima representa um elemento chamado “elemento” cujo atributo classe


possui o valor prefácio. Em um documento XML, todos os valores de atributos
devem estar entre aspas ou apóstrofes.

Os atributos descrevem elementos. Um elemento pode ter zero, um ou mais


atributos a ele associados.

Os nomes de elementos e atributos em XML podem ter qualquer comprimento e


podem conter letras, dígitos, sublinhados, hífens e pontos, mas devem começar por
uma letra ou um sublinhado e não podem conter espaços.

Figura 4: Documento XML que representa um livro.

A primeira linha do documento XML representado na Figura 4 (<?xml:stylesheet


type = "text/xsl" href = "usage.xsl"?>) é exemplo de uma instrução de
Processamento (PI). A informação contida em uma PI é passada para a aplicação
que está usando o documento XML e fornece informações adicionais específicas da
aplicação sobre o documento. As instruções de processamento são delimitadas por
<? e ?>. Este valor PI faz referência a uma folha de estilo XSL, conforme indicado
pelo alvo PI xml:stylesheet, cujo valor é type=”text/xsl” href=”usage.xsl”.

3.5. Seções CDATA

Uma vez que o caractere “<” denota o início de uma marcação, não poderia ser
utilizado no conteúdo de um elemento. As seções CDATA são seções de um
documento XML que podem conter texto, caracteres reservados (por exemplo, <) e
caracteres espaços em branco. Os caracteres contidos nas seções CDATA são
excluídos da interpretação.
Um uso comum das seções CDATA é o código de criação de scripts (Javascript ou
VBScript), que freqüentemente contêm os caracteres &, <, >, ` e “.

Figura 5: Usando seção CDATA (navegador)

A Figura 5 demonstra a apresentação em um navegador de um documento XML que


contém uma seção CDATA. Conforme pode-se perceber pelo códigofonte na Figura
5, é possível a utilização dos caracteres reservados (como é o caso de < e &), sem
que o processamento do documento seja prejudicado, uma vez que o conteúdo de
uma seção CDATA é ignorado no processamento.

Esta característica faz com que as seções CDATA sejam adequadas para, por
exemplo, o armazenamento de trechos de código em linguagens de programação.

3.6 Documentos XML Bem Formados

Uma vez que a XML, como o próprio nome sugere, é uma linguagem, está sujeita a
certas regras, indicam como escrever um documento bem formado.

Essas regras são chamadas de sintaxe.

A observação dessas regras é fundamental para que um navegador consiga


interpretar o código XML.

Um documento XML é considerado bem-formado se ele estiver sintaticamente


correto. A sintaxe da XML requer um único elemento como nó raiz, uma tag de
abertura e finalização para cada elemento, tags corretamente aninhadas e
valores de atributos entre aspas. Além disso, a XML faz diferença entre
maiúsculas e minúsculas, de modo que as maiúsculas devem ser grafadas
corretamente nos nomes de elementos e atributos. Os documentos que atendem a
estes requisitos de sintaxe são, portanto, documentos bem-formados.

Explicando de forma mais clara as regras que um documento XML deve atender
para ser considerado bem-formado:

a) Possuir um elemento raiz (root) que contém todos os outros:


<books>
<book>
<title>XML Como Programar</nome>
<publisher>Bookman</publisher>
</book>
<book>
<nome>Learning XML</nome>
</book>
<books>

A tag <books> é a raiz do documento.

b) Cada tag de abertura deve ter uma tag de fechamento correspondente:

<books>
<book>
<title>XML Como Programar
<publisher>Bookman</publisher>
</book>
<books>

A tag <title> não possui fechamento (</title>), por isto o documento é mal-formado.

c) Respeitar a hierarquia e o aninhamento das tags:

<books>
<book>
<title>XML Como Programar
<publisher>Bookman</title>
</publisher>
</book>
<books>

A tag <publisher> não pode encerrar-se depois da tag <title>, por isto o documento
é mal-formado.

d) Os valores de atributos devem estar entre aspas ou apóstrofes:

<books>
<book code=10>
<title>XML Como Programar
<publisher>Bookman</title>
</publisher>
</book>
<books>

O valor do atributo code não contém aspas nem apóstrofes, o que torna o
documento mal-formado.
e) Existe diferença entre maiúsculas e minúsculas (case-sensitive):

<books>
<book code=10>
<title>XML Como Programar
<publisher>Bookman</title>
</publisher>
</Book>
<books>

A tag de fechamento </Book> possui um caractere em maiúsculo, e a de abertura


(<book>) não, tornando o documento mal-formado.

Existem softwares que são chamados de analisadores sintáticos (parsers), que lêem
os documentos, verificando sua sintaxe e relatando possíveis erros, permitindo, via
programa, acesso ao conteúdo dos documentos.

3.7 Caracteres Reservados

Existem caracteres que, por serem reservados, não podem ser utilizados em
documentos XML. A linguagem XML oferece substitutos para estes casos. Tais
substitutos começam por “&” e terminam por “;” (referência a entidade).

Os caracteres reservados para a linguagem XML e suas referências são:

< &lt;
> &gt;
& &amp;
‘ &apos;
“ &quot;

3.8. Comentários

Os comentários em um documento XML contêm informações e notas. As marcações


são <!-- para início, e --> para fim de comentário. Caracteres reservados (<, >)
podem estar contidos dentro de comentários.
Figura 6: Exemplo de utilização de comentários

Como se pode perceber na segunda linha de comentário existe um caractere


reservado <, mas a visualização do documento no navegador acontece de maneira
normal.

Assim como acontece nas linguagens de programação, os comentários em


documentos XML podem ser utilizados no sentido de prover maiores informações
para os desenvolvedores que os manipulam.

3.8. Marcação

O elemento de marcação XML, como já citado, consiste em uma marca de abertura,


no conteúdo e em uma marca de finalização. Diferentemente do HTML, todas as
marcas de abertura em XML devem ter uma marca de finalização. Por exemplo,

<img src = “logo.gif”>

está correto em HTML, mas em XML a marca de finalização também deveria ser
fornecida, como em

<img src = “logo.gif”> </img>

Como este elemento não contem conteúdo (dados de caracteres), ele é chamado de
elemento vazio. A marca vazia pode ser escrita de forma mais concisa, como <img
src = “logo.gif”/> que usa a barra ( / ) para indicar o término.

Os elementos definem a estrutura, e podem ou não ter conteúdo (elementos filhos


ouo dados de caracteres). Os atributos descrevem elementos. Um elemento pode
ter zero, um ou mais atributos a ele associados e são colocados dentro da marca de
abertura do elemento.

Os nomes de elementos e atributos em XML podem ter qualquer comprimento e


podem conter letras, dígitos, sublinhados, hífens e pontos, mas devem começar
com uma letra ou um sublinhado. Além disso, não podem conter espaços em
branco.
Assim, a marcação <telefone residencial> </telefone residencial> está errada,
pois contém espaço em branco no nome do elemento, uma alternativa seria, por
exemplo, o uso do sublinhado <telefone_residencial> </telefone_residencial>

3.9. Estrutura Lógica dos Documentos XML

Uma vez que os elementos, em um documento XML, estão organizados


hierarquicamente, um documento pode ser representado na forma de uma árvore
sem que haja a perda de nenhuma informação. Elementos filhos aparecem como
nós filhos de um elemento pai.

Os atributos não são considerados como nós filhos de um elemento, mas como
informações adicionais aos elementos.

Figura 7: Exemplo de estrutura de documento XML

Assim, tendo-se o documento de exemplo apresentado na Figura 7, pode-se


representá-lo na forma de uma árvore, conforme na Figura 8, pode-se visualizar a
sua estrutura lógica.
Figura 8: Estrutura lógica de um documento XML

A representação da estrutura lógica de um documento XML na forma de uma árvore


é apenas uma forma de se obter uma melhor visualização da maneira como estão
dispostos os elementos do documento e sua estrutura.

4. Definição de Tipos de Documentos (DTD)

Os DTDs definem a estrutura de um documento, onde são especificados quais os


elementos e atributos são permitidos no documento.

Embora não seja necessário que um documento XML tenha um DTD


correspondente, recomenda-se a utilização de DTDs para garantir a conformidade
do documento.

O intercâmbio de informações, na forma de documentos XML, entre organizações


(business-to-business) é um exemplo de intercâmbio de documentos XML onde é
necessário que estes estejam em conformidade.

As DTDs especificam a estrutura de um documento, e são definidas através da


gramática EBNF (Extended Backus-Naur Form), e não na sintaxe XML.

4.1 Processamento de Documentos XML

Para processar documentos XML e verificar se são bem-formados e válidos, são


utilizadas aplicações chamadas processadores de XML. Estes processadores são
também chamados Parsers.

Um Parser de validação percorre o documento e verifica se sua estrutura está de


acordo com as regras de um DTD. Se o documento não estiver de acordo com a
DTD, o parser irá acusar um erro.
Um parser que não faz validação apenas verifica se o documento é bemformado. Os
parsers são utilizados para transformar o documento XML em uma estrutura de
árvore para que as aplicações possam acessar seu conteúdo.

4.2. Documentos XML Válidos

Se um documento XML está de acordo com a DTD correspondente, ele é dito


válido.

Se um documento XML não está de acordo com a DTD correspondente, mas estiver
sintaticamente correto, ele é bem-formado, mas não é válido.

Assim, um documento válido é bem-formado.

4.3. Definição de Tipo de Documento

A referência de um documento para uma DTD é feita em uma definição de tipo de


documento. A DTD pode estar contida no documento (subconjunto interno) ou existir
externamente como um arquivo separado (subconjunto externo).

Desta forma, as DTD são introduzidas em um documento XML através da


declaração DOCTYPE. Uma declaração de tipo de documento é colocada no
prólogo de um documento XML, começando por <!DOCTYPE e terminando por >.

A Figura 9 apresenta um exemplo de subconjunto interno.

Figura 9: Subconjunto interno

Os subconjuntos externos estão colocados fisicamente em outro arquivo que, em


geral, termina com a extensão “.dtd”, embora esta extensão não seja necessária.

Os subconjuntos externos são especificados pela palavra-chave SYSTEM ou pela


palavra-chave PUBLIC.

Figura 10: subconjunto externo

A Figura 10 ilustra um subconjunto externo que aponta para o documento


myDTD.dtd.

Os subconjuntos PUBLIC devem ser utilizados quando a DTD é amplamente


utilizada e os analisadores que não têm cópia local da DTD podem utilizar a URL
fornecida para fazer o download da DTD, para fins de validação do documento.

Uma declaração de tipo de documento pode, ainda, conter especificações de


subconjuntos internos e externos ao mesmo tempo (Figura 4).
Figura 11: Exemplo de utilização de subconjunto interno e externo.

É interessante ressaltar que um subconjunto interno é visível somente dentro do


documento onde está definido. Outros documentos externos não podem ser
validados com ele. As DTDs que são usadas por muitos documentos devem,
portanto, ser colocadas no subconjunto externo.

Uma DTD também pode ser utilizada para validar documentos HTML ou XHTML e
neste caso podem ser de três tipos:

a) Transactional: se você tiver tags que não estão sendo fechadas, atributos em
maiúsculos ou os valores sem aspas.

b) Frameset: para arquivos HTML ou XHTML que utilizem frames.

c) Strict: para documentos onde os atributos estão sempre em minúsculo, os valores


de atributos estão sempre entre aspas e todas as tags (inclusive input, br, p) têr
abertura e fechamento.

4.3.1 Doctypes do HTML 4 :

A referência normativa (http://www.w3.org/TR/html4/sgml/dtd.html) do HTML 4 diz


que você pode utilizar 3 tipos de doctype:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"


"http://www.w3.org/TR/html4/strict.dtd">

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"


"http://www.w3.org/TR/html4/transitional.dtd">

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"


"http://www.w3.org/TR/html4/frameset.dtd">

4.3.2. Doctypes do XHTML 1:

A referência normativa do XHTML diz que você pode utilizar 3 tipos de doctype:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

4.4 Declarações de Tipos de Elementos

As declarações de tipos de elementos servem para declarar os elementos em uma


DTD. Esta declaração vem na forma de ELEMENT.

<!ELEMENT myElement (#PCDATA) >

O nome do elemento (myElement) é chamado identificador genérico, e vem depois


da
declaração ELEMENT. O conjunto entre parênteses que segue o identificador
genérico indica o conteúdo permitido para o elemento e é chamado de especificação
de conteúdo.

A palavra-chave PCDATA especifica que o elemento deve conter dados caracteres


sintaticamente analisáveis. Esses dados serão analisados pelo analisador XML,
portanto, qualquer texto de marcação (<, >, &, ‘ e ”) será tratado como marcação.

Para cada elemento, são especificados os tipos permitidos para os nós filhos.

4.5 Seqüências, caracteres e indicadores de ocorrência

É possível que seja definida a ordem e a freqüência dos elementos filhos.

Seqüência – especifica a ordem na qual os elementos devem ocorrer e é


representada por uma virgula (,).

<!ELEMENT classe(professor, estudante)>

O elemento classe deve conter exatamente um elemento professor seguido


exatamente por um elemento estudante. Esta especificação de conteúdo pode
conter qualquer número de itens em seqüência.

Escolha – as escolhas são especificadas pelo caractere barra vertical (|)

<!ELEMENT material(livro, apostila)>

O elemento material deve conter ou um elemento livro ou um elemento apostilal.

Esta especificação de conteúdo pode ter qualquer número de escolhas separadas


por caracteres barra vertical.
Freqüência – o número de ocorrências de um elemento é especificado pelos
caracteres sinal de mais (+), ou o asterisco (*), ou o ponto de interrogação (?).

Sinal de mais (+) - O elemento pode aparecer um número qualquer de vezes, mas
deve aparecer pelo menos uma vez (uma ou mais vezes).

<!ELEMENT album(musica+)>

O elemento álbum contém um ou mais elementos musica.

A freqüência de um grupo de elementos (dois ou mais elementos que ocorrem


segundo alguma combinação) é especificada colocando-se os nomes dos elementos
entre parênteses nas especificações de conteúdo.

Asterisco (*) - O elemento é opcional e, se usado, pode aparecer um número


qualquer de vezes (zero ou mais vezes).

<!ELEMENT livraria(livro*)>

O elemento livraria contém um número qualquer de elementos livro, inclusive a


possibilidade de não ocorrer nenhum.

Ponto de Interrogação (?) - O elemento é opcional e, se usado, pode aparecer


somente uma vez (zero um uma vez).

<!ELEMENT assento(pessoa?)>

O elemento asento contém, no máximo, um elemento pessoa.

Exemplo 1:

<!ELEMENT class (number ( instructor | assistant+ ), ( credit | noCredit ) )>

O exemplo 1 especifica que um elemento class deve conter um elemento number,


ou um elemento instructor ou um número qualquer de elementos assistant, e ou um
elemento credit ou noCredit.

Desta forma os seguintes exemplos de marcação estão de acordo com essa regra:
Exemplo 2:

<!ELEMENT donutBox ( jelly? , lemon* , ( ( creme | sugar)+ | glazed ) )>

O exemplo 2 especifica que o elemento donutBox pode ter zero ou um elemento


jelly, seguidos por zero ou mais elementos lemon, seguido por um ou mais
elementos crème ou sugar ou exatamente um elemento glazed.

Os seguintes exemplos de marcação estão de acordo com essa regra:

Exemplo 3:

<!ELEMENT farm ( farmer+, ( dog* | cat? ) , pig* , ( goat | cow )? , ( chicken+ |


duck* ) )>

O exemplo 3 indica que o elemento farm pode ter um ou mais elementos farmer, um
número qualquer de elementos opcionais dog ou um elemento opcional cat, um
número qualquer de elementos opcionais pig, um elemento opcional goat ou cow e
um ou mais elemenots chicken e ou um número qualquer de elementos opcionais
duck.

Os seguintes exemplo de marcação estão de acordo com essa regra:

4.6 EMPTY, conteúdo misto e ANY

A seção anterior apresentou o conteúdo de um elemento, indicando que esse pode


conter um ou mais elementos filhos como conteúdo. Além destas especificações, os
tipos de especificações de conteúdos servem para refinar ainda mais os elementos.

Além do conteúdo elemento, existem outros três tipos de conteúdo:

Empty – esta palavra-chave declara elementos vazios. Os elementos vazios não


contêm dados de caracteres ou elementos filhos.

<!ELEMENT scale EMPTY>

Declaração do elemento scale como um elemento vazio.

Conteúdo Misto – é possível se declarar um elemento como um conteúdo misto.


Tais elementos podem conter qualquer combinação de elementos e PCDATA.

<!ELEMENT myMessage(#PCDATA|message)>

O elemento myMessage contém conteúdo misto.


Any – Um elemento declarado como do tipo any pode possuir qualquer conteúdo,
inclusive PCDATA, elementos ou uma combinação de elementos e PCDATA. Os
elementos com conteúdo any também podem ser elementos vazios.

4.7 Declaração de Atributos

A declaração de atributo especifica uma lista de atributos para um elemento usando


a declaração de lista de atributos ATTLIST. O elemento pode ter um número
qualquer de atributos.

<!ELEMENT x EMPTY>

<!ATTLIST x y CDATA #REQUIRED>

A exemplo acima declara como empty o elemento x. A declaração de atributo


especifica que y é um atributo de x. A palavra-chave CDATA indica que y pode
conter qualquer texto de caracteres, exceto os caracteres <, >, &, ' e “.

É necessário observar que a palavra-chave CDATA na declaração de tipo tem um


significado diferente da seção CDATA em um documento XML.

As DTDs possibilitam que seja especificado o valor padrão (default) de um atributo


usando defaults de atributos:

#IMPLIED – especifica que, se o atributo não aparece no elemento, então a


aplicação que está usando o documento XML pode usar qualquer valor que por
ventura escolher. Um valor para este o não é requerido.

#REQUIRED – especifica que o atributo deve aparecer no elemento. O documento


XML não é válido se o atributo estiver faltando.

#FIXED – especifica que o valor do atributo é constante e não pode ser diferente no
documento XML. Um valor para o atributo é requerido.
“string” – especifica um valor padrão para o atributo, se não for definido um.

4.8 Tipos de Atributos

Os atributos são classificados como strings (CDATA), ou como tokenizado ou como


enumerados.

String - não impõe quaisquer restrições sobre os valores do atributo (exceto os


caracteres especiais da linguagem XML).

Atributos tokenizados – atributos com token ou tokenizados impõe restrições sobre


os valores dos atributos. É possível que o autor de uma DTD restrinja os valores
usados pelos atributos. Existem quatro diferentes tipos de atributos com tokens: ID,
IDREF ENTITY e NMTOKEN.

ID – identifica de forma única um elemento;


IDREF – apontam para elementos com um atributo ID;

Figura 12: Documento XML com atributos ID e IDREF

A Figura 12 apresenta um documento XML que utiliza tipos de atributos ID e IDREF.


O elemento loja consiste no elemento entrega e no elemento livro. Cada elemento
entrega descreve um método de envio. A linha 7 declara o atributo entregaID como
um tipo de atributo ID (cada elemento entrega tem um único identificador). As linhas
23-33 declaram elementos livro com o atributo tipoEntrega (linha 9) do tipo IDREF.
O atributo tipoEntrega aponta para um dos elementos entrega através do atributo
entregaID desses elementos. No exemplo, se o atributo tipoEntrega de um
elemento livro receber o valor “s3”, o documento não será válido, uma vez que
nenhum atributo entrega tem o valor “s3”.

ENTITY – Entidades são utilizadas para associar nomes com outros fragmentos do
documento. Podem ser utilizadas entidades internas, ou externas. A utilização é na
forma de &nome;

<!ENTITY esucri “Escola Superior de Crici&#250;ma”>

assim:

<elemento>&esucri;</elemento>
resulta em:

<elemento>Escola Superior de Criciúma</esucri>

A principal utilidade de entidades está na referência a arquivos externos, de forma


que um documento XML possa ser "dividido" em vários arquivos (exemplo do
catalogo de livros, filmes e discos).

NMTOKEN - é um tipo de atributo mais restritivo, cujo valor consiste em caracteres


letras, dígitos, pontos, sublinhados, hífens e dois-pontos.

<!ATTLIST clientes fone NMTOKEN #REQUIRED>

A declaração acima indica que cliente contém o atributo NMTOKEN phone


necessário.

A marcação: <cliente phone=”555-111-2222”> está em conformidade com a regra.


Já a marcação: <cliente phone=”555 111 2222”> não está em conformidade, pois
possui espaços em branco.

Atributos enumerados – o mais restritivo dos três tipos. Podem aceitar somente
um valor da lista de valores definida na declaração de atributo. Os valores de tipos
enumerados são separados por caracteres barra vertical (|).

<!ATTLIST person gender ( M | F ) “F”>

O exemplo acima contém uma declaração de tipo enumerado que permite que o
atributo gender tenha ou o valor M ou F. O valor padrão “F” é especificado à direita
do tipo de atributo do elemento. Já o exemplo que segue, <!ATTLIST person
gender ( M | F ) #IMPLIED> não fornece um valor padrão para gender.
REFERÊNCIAS

Anotações de aula:
Profa. Ana Carolina Nicolosi da Rocha Gracioso
Prof. Rafael de Moura Speroni
Prof. Sidnei Aparecido dos Reis
Profa. Elaine Cristina de Souza

Sites:
http://www.w3c.org
www.unicode.org

Das könnte Ihnen auch gefallen