Você está na página 1de 21

Introduo

A XML (eXtensible Markup Language, ou Linguagem de Marcao


Estendida) um subconjunto da SGML (Standard Generalized Markup
Language, ou Linguagem de Marcao Padro Generalizada) que
permite que uma marcao especfica seja criada para especificar
idias e compartilh-las na rede. Ela tem as virtudes da SGML e da
HTML sem qualquer das limitaes bvias.
Pontos fortes da XML

Inteligncia: a XML inteligente para qualquer nvel de complexidade. A marcao


pode ser alterada de uma marcao mais geral como "<CO> Lassie </CO>" para
uma mais detalhista, como "<CO> <VENHA_PARA_CASA> <COLLIE> Lassie
</COLLIE> </VENHA_PARA_CASA> </CO>". As idias so bem marcadas para
que "<VENDO_DOIS> duplo </VENDO_DOIS>" e "<MAIS_LICOR> duplo
</MAIS_LICOR>" sejam sempre valores diferentes. A informao conhece a si
mesma. No necessria mais nenhuma idia indesejvel;
Adaptao: a XML a lngua-me de outras linguagens. Assim, linguagens como
DickML e JaneML tornaram-se possveis. A adaptao infinita. Marcaes
personalizadas podem ser criadas para qualquer necessidade. Se uma marcao que
descreva como uma pizza pepperoni diferente de uma pizza calabresa for
necessria, ela pode ser feita;
Manuteno: a XML fcil de manter. Ela contm somente idias e marcaes.
Folhas de estilos e links vm em separado, e no escondidas no documento. Cada
um pode ser alterado separadamente quando preciso com fcil acesso e fceis
mudanas. No preciso mais se achar em uma baguna de marcaes;
Ligao: a XML possui uma maneira de ligar que inclui todas as formas de ligao.
No s isso; ela liga de maneiras que a HTML no pode. A HTML pode fazer de uma
maneira simples, onde um objeto se liga a outro. A XML faz isso, mas tambm pode
ligar dois ou mais pontos a uma idia. Existem ainda links gmeos que ligam todas
as ideas dentro de uma mesma. Qualquer link entre uma idia pode ser manipulado
de uma nica maneira;
Simplicidade: a XML simples. Um usurio de mdia experincia que olha a XML
pode ach-la difcil de acreditar no que v. Comparada com a HTML no. Comparada
com a SGML um estudo de simplicidade. A especificao da SGML tem 300
pginas. A da XML, 33. Idias obscuras e desnecessrias foram retiradas em favor
de idias concisas. A XML vai direto ao ponto;
Portabilidade: a XML de fcil portabilidade. A razo da sua existncia fora e
portabilidade. A SGML tem fora. A HTML tem portabilidade. A XML tem ambas. A
XML pode ser navegada com ou sem o seu DTD (Document Type Definition, ou
Definio de Tipo de Documento - as normas que definem como as tags so
estruturas nos documentos XML), tornando o download mais rpido. Tudo que um
navegador precisa para ver XML ter a noo que ela prpria e a folha de estilos
controlam a aparncia. Se uma validao estrita necessria, o seu DTD pode
acompanh-lo e fornecer detalhes exatos da sua marcao.

Objetivos do desenvolvimento da XML


A especificao da XML primou pelos seguintes objetivos:

Deveria ser claro usar a XML na Internet;

A XML deveria suportar uma grande variedade de aplicaes;


A XML deveria ser compatel com SGML;
Deveria ser fcil escrever programas que processem documentos XML;
O nmero de recuros opcionais em XML deveria ser mantido em um mnimo
absoluto, idealmente zero;
Os documentos XML deveriam ser legveis pelos seres humanos e razoavelmente
claros;
O projeto XML deveria ser preparado rapidamente;
O projeto XML deveria ser formal e conciso;
Os documentos XML deveriam ser fceis de serem criados;
A conciso na marcao em XML de mnima importncia.

Como a XML definida


A XML definida pelas seguintes especificaes:

Extensible Markup Language (XML) 1.0: define a sintaxe da XML;


XML Pointer Language (XPointer) e XML Linking Language (XLink): define um
padro para representar os links entre os recursos. Alm dos links simples, como a
tag <A> da HTML, a XML possui mecanismos para ligar recursos mltiplos e
diferentes. A XPointer desceve como enderear um recurso, e a XLink descreve como
associar dois ou mais recursos;
Extensible Style Language (XSL): define a linguagem de folhas de estilos pado
para a XML.

Documentos
Se voc j est acostumado com a HTML ou a SGML, os documentos
XML parecer-lhe-o familiar. Um documento XML simples
apresentado a seguir:
Exemplo 1: um documento XML simples
<?xml version="1.0"?>
<piada>
<Joo>Diga <citao>boa noite</citao>, Maria.</Joo>
<Jos><citao>Boa noite, Maria.</citao></Jos>
<aplausos/>
</piada>
Algumas coisas podem sobressair-se para voc:

O documento comea com uma instruo de processamento:


<?xml ...?>. Esta a declarao XML. Embora no seja
obrigatria, a sua presena explcita identifica o documento
como um documento XML e indica a verso da XML com a qual
ele foi escrito.

No h declarao do tipo do documento. Diferentemente da


SGML, a XML no requer uma declarao de tipo de documento.
Entretanto, uma declarao de tipo de documento pode ser
fornecida; alm disso, alguns documentos iro precisar de uma
para serem entendidos sem ambigidade.

Elementos vazios (<aplausos/> neste exemplo) tem uma sintaxe


modificada. Enquanto que a maioria dos elementos em um
documentos envolvem algum contedo, elementos vazios so
simplesmente marcadores onde alguma coisa ocorre (uma
separador horizontal para a marca em <hr> em HTML, por
exemplo, ou uma referncia cruzada para DocBook's para a
marca <xref>). O final /> na sintaxe modificada indica a um
programa que processa o documento XML que o elemento
vazio e uma marca de fim correspondente no deve ser
procurada. Visto que os documentos XML no requerem uma
declarao de tipo de documento, sem esta pista seria
impossvel para um analisador XML determinar quais marcas so
intencionalmente vazias e quais teriam sido deixadas vazias por
um erro.
A XML suavizou a distino entre elementos declarados como
EMPTY e elementos que meramente no tm contedo. Em XML,
vlido usar uma marca de elemento vazio para qualquer um
destes casos. Tambm vlido usar um par de marcas incio-fim
para elementos vazios: <aplausos></aplausos>. Se a
interoperabilidade interessa, melhor reservar a sintaxe de
marcas de elementos vazios para elementos declarados como
EMPTY e usar a marca de elemento vazio somente para estes
elementos.

Os documento XML so compostos de marcas e contedos. Existem


seis tipos de marcaes que podem ocorrer em um documento XML:
elementos, referncias a entidades, comentrios, instrues de
processamento, sees marcadas e declaraes de tipos de
documento. As sees seguintes introduzem cada um destes conceitos
de marcao.

Elementos
Elementos so a mais comum forma de marcao. Delimitados pelos
sinais de menor e maior, a maioria dos elementos identificam a
natureza do contedo que envolvem. Alguns elementos podem ser
vazios, como visto acima; neste caso eles no tm contedo. Se um
elemento no vazio, ele inicia com uma marca de incio , <element>, e
termina com uma marca de trmino, </element>.
Atributos

Atributos so pares de valores nomeados que ocorrem dentro


dasmarcas de incio aps o nome do elemento. Por exremplo:
<div classe="prefcio">

um elemento div cujo atributo class possui o valor prefcio.


Em XML, todos os valores de atributos devem estar entre aspas.

Referncias a Entidades
A fim de introduzir a marcao em um documento, alguns documentos
foram reservados para identificar o incio da marcao. O sinal de
menor, < , por exemplo, identifica o incio de uma marca de inicio ou
trmino. Para inserir estes caracteres em seu documento como
contedo, deve haver uma alternativa para represent-los. Em XML,
entidades so usadas para representar estes caracteres especiais. As
entidades tambm so usadas para referenciar um texto
freqentemente repetido ou alterado e inclu-lo no contedo de
arquivos externos.
Cada entidade deve ter um nome nico. A definio dos seus prprios
nomes de entidades discutido na seo declaraes de entidades.
Para usar uma entidade, voc simplesmente a referencia pelo nome.
As referncias s entidades iniciam com o E comercial e terminam com
um ponto-e-vrgula.
Por exemplo, a entidade lt insere um literal < em um documento. A
cadeia de caracteres <element> pode ser representada em um
documento XML como <&lt;element>.
Uma forma especial de referncia a entidades, chamada de referncia
a caracter, pode ser usada para inserir arbitrariamente caracteres
Unicode em seu documento. Este um mecanismo para inserir
caracteres que no podem ser diretamente digitados pelo seu teclado.

Referncias a caracter podem ter uma das duas formas: referncias


decimais, &#8478;, e referncias hexadecimais, &#x211E;. Ambas se
referem ao caracter Unicode nmero U+211E.

Comentrios
Comentrios iniciam com <!-- e terminam com -->. Os comentrios
podem conter qualquer dado, exceto a literal "--". Voc pode colocar
comentrios entre marcas em qualquer lugar em seu documento.
Comentrios no fazem parte de um contedo textual de um
documento XML. Um processador XML no preciso para reconheclos na aplicao.

Instrues de Processamento
Instrues de processamento (PIs) so formas de fornecer
informaes a uma aplicao. Assim como os comentrios, elas no
so textualmente parte de um documento XML, mas o processador
XML necessrio para reconhec-las na aplicao.
As instrues de processamento tm a forma: <?nome dadospi?>. O
nome, chamado de alvo PI, identifica a PI na aplicao. As aplicaes
processariam somente os alvos que eles reconhecem e ignoram todas
as outras PIs. Qualquer dado que segue oalvo PI opcional; para a
aplicao que reconhece o alvo. Os nomes usados em PIs podem ser
declarados como notaes a fim de identific-los formalmente.
Os nomes de PI que iniciam com xml so reservados para a
padronizao da XML.
Sees CDATA
Em um documento, uma seo CDATA instrui o analisador para ignorar a
maioria dos caracteres de marcao.
Considere um cdigo-fonte em um documento XML. Ele pode conter
caracteres que o analisador XML iria normalmente reconhecer como
marcao (< e &, por exemplo). Para prevenir isto, uma seo CDATA
pode ser usada.
<![CDATA[
*p = &q;

b = (i <= 3);
]]>

Entre o incio da seo, <![CDATA[, e o fim da seo, ]]>, todos os


dados de caracteres so passados diretamente para a aplicao, sem
interpretao. Elementos, referncias a entidades, comentrios e
instrues de processamento so todos irreconhecveis e os caracteres
que os compem so passados literalmente para a aplicao.
A nica cadeia de caracteres que no pode ocorrer em uma seo
CDATA "]]>".

Declaraes de Tipos de Documentos


Uma grande porcentagem da especificao da XML trata de vrios
tipos de declaraes que so permitidas em XML. Se voc tem
experincia com SGML, voc reconhecer estas declaraes dos SGML
DTDs (Definies de Tipos de Documentos). Se voc j viu isto antes,
o seu significado pode no ser imediatamente bvio.
Um dos maiores poderes da XML que ela permite que voc crie seus
prprios nomes para marcas. Mas, para uma dada aplicao,
provvel no ser significativo para marcas que ocorrer em uma ordem
completamente arbitrria. Considere o exemplo 1. Isto teria
significado?
<Joo>Diga <citao>boa noite</citao>, Maria.</Joo>
<Jos><citao>Boa noite, Maria.</citao></Jos>
Sai totalmente do que normalmente esperamos que tenha senso.
Simplesmente no significa nada.
Entretanto, de um ponto de vista estritamente sinttico, no h nada
de errado com este documento XML. Assim, se o documento deve ter
significado, e certamente h se voc estiver escrevendo uma folha de
estilos ou aplicao para process-lo, deve haver alguma restrio na
seqncia e aninhamento das marcas. Declaraes so onde estas
restries podem ser expressadas.
Mais genericamente, as declaraes permitem a um documento
comunicar meta-informaes ao analisados a respeito do seu

contedo. Meta-informao inclui as seqncias e aninhamentos


permitidos para as marcas, valores de atributos e seus tipos e
padres, os nomes de arquivos externos que podem ser refernciados e
se eles podem ou no conter XML, o formato de algum dado (noXML) externo que pode ser referenciado e as entidades que podem ser
encontradas.
H quatro tipos de declaraes em XML: declaraes de tipos de
elementos, declaraes de listas de atributos, declaraes de
entidades e declaraes de notaes.
Declaraes de Tipos de Elementos

Declaraes de tipos de elementos identificam os nomes dos


elementos e a natureza do seu contedo. Uma declarao de tipo de
elemento tpica se parece com isto:
<!ELEMENT piada (Joo+, Jos, aplausos?)>
Esta declarao identifica o elemento nomeado como piada. Seu
modelo de contedo segue o nome do elemento. O modelo de
contedo define o que um elemento pode conter. Neste caso, uma
piada deve conter Joo e Jos e pode conter aplausos. As vrgulas entre
os nomes dos elementos indicam que eles devem ocorrer em
sucesso. O sinal de adio aps Joo indica que ele pode ser repetido
mais de uma vez, mas deve ocorrer pelo menos uma vez. O ponto de
interrogao aps aplausos indica que ele opcional (pode estar
ausente ou ocorrer somente uma vez). Um nome sem pontuao,
como Jos, deve ocorrer somente uma vez.
As declaraes para todos os elementos usados em qualquer modelo
de contedo deve estar presente para que um processador XML
verifique a validade do documento.
Alm dos nomes de elementos, o smbolo especial #PCDATA reservado
para indicar dados de caracter. A clusula PCDATA significa dado de
caracter analisvel.
Os elementos que contm somente outros elementos so ditos que
tm contedo de elementos. Os elementos que contm outros
elementos e #PCDATA so ditos que tm contedo misturado.
Por exemplo, a definio para Jos pode ser
<!ELEMENT Jos (#PCDATA | citao)*>

A barra vertical indica um relacionamento "ou" e o asterisco indica que


o contedo opcional (pode ocorrer zero ou mais vezes); por esta
definio, portanto, Jos pode conter zero ou mais caracteres e marcas
citao, misturadas em qualquer ordem. Todos os modelos de
contedo misturado devem ter esta forma: #PCDATA deve vir primeiro,
todos os elementos devem ser separados por barras verticais e o
grupo inteiro deve ser opcional.
Outros dois modelos de contedo so possveis: EMPTY indica que o
elemento no possui contedo (e, conseqentemente, no tem marca
de trmino) e ANY indica que qualquer contedo permitido. O modelo
de contedo ANY algumas vezes til durante a converso de
documentos, mas deveria ser evitado ao mximo em um ambiente de
produo, pois desabilita toda a verificao do contedo deste
elemento.
Aqui est um conjunto completo das declaraes de elementos para o
Exemplo 1:
Exemplo 2: declaraes de elementos para Exemplo 1
<!ELEMENT piada (Joo+, Jos, aplausos?)>
<!ELEMENT Joo (#PCDATA | citao)*>
<!ELEMENT Jos (#PCDATA | citao)*>
<!ELEMENT citao (#PCDATA)*>
<!ELEMENT aplausos EMPTY>
Declaraes de Listas de Atributos

Declaraes de listas de atributos identificam que elementos podem


ter atributos, que atributos eles podem ter, que valores os atributos
podem suportar e qual valor o padro. Uma dclarao de lista de
atributos tpica se parece com isto:
<!ATTLIST piada
nome
ID
#REQUIRED
rtulo
CDATA
#IMPLIED

estado ( engraada | noengraada ) 'engraada'>


Neste exemplo, o elemento piada possui trs atributos: nome, que um
ID e obrigatrio; rtulo, que uma cadeia de caracteres (dados de
caracter) e no obrigatrio; e estado, que deve ser ou engraada ou
noengraada e por padro engraada, se nenhum valor especificado.
Cada atributo em uma declarao tem trs partes: um nome, um tipo
e um valor padro.
Voc tem liberdade para selecionar qualquer nome desejado, sujeito a
algumas pequenas restries, mas os nomes no podem ser repetidos
no mesmo elemento.
Existem seis tipos de atributos possveis:
1. CDATA

Atributos CDATA so cadeias de caracteres; qualquer texto


permitido. No confunda atributos CDATA com sees CDATA; eles
no tm relao.
2. ID

O valor de um atributo ID deve ser um nome. Todos os valores


usados para IDs em um documento devem ser diferentes. Os IDs
identificam unicamente elementos individuais em um documento.
Os elementos podem ter um nico atributo ID.
3. IDREF

ou IDREFS
O valor de um atributo IDREF deve ser o valor de um nico atributo
ID em algum elemento no documento. O valor de um atributo
IDREFS pode conter valores IDREF mltiplos separados por espaos
em branco.
4. ENTITY

ou ENTITIES
O valor de um atributo ENTITY deve ser o nome de uma
nica entidade (veja sobre declaraes de entidades abaixo). O
valor de um atributo ENTITIES pode conter valores de entidades
mltiplos separados por espaos em branco.

5. NMTOKEN

ou NMTOKENS
Atributos de smbolos de nome so uma forma restrita do atributo
de cadeia de caracteres. Em geral, um atributo NMTOKEN deve
consistir de uma nica palavra, mas no h restries adicionais
para a palavra; no tem que estar associado com outro atributo ou
declarao. O valor de um atributo NMTOKENS pode conter valores
NMTOKEN mltiplos separados por espaos em branco.
6. Uma lista de nomes
Voc pode especificar que o valor de um atributo deve ser pego de
uma lista especfica de nomes. Isto freqentemente chamado de
tipo enumerado, porque cada um dos valores possveis est
explicitamente enumerado na declarao.
Alternativamente, voc pode especificar que os nomes devem
atender a um nome de notao (veja sobre declaraes de notao
abaixo).
H quatro valores padro possveis:
#REQUIRED

O atributo deve ter um valor explicitamente especificado em cada


ocorrncia do elemento no documento.
#IMPLIED

O valor do atributo no requerido, e nenhum valor padro


fornecido. Se um valor no especificado, o processador XML deve
proceder sem um.
"valor"
Qualquer valor vlido pode ser dado a um atributo como padro. O
valor do atributo no requerido em cada elemento no documento,
e se ele estiver presente, ser dado a ele o valor padro.
#FIXED

"value"
Uma declarao de atributo pode especificar que um atributo tem
um valor fixo. Neste caso, o atributo no requerido, mas se ele
ocorrer deve ter o valor especificado. Se no estiver presente, ser
dado a ele o valor padro. Um uso de atributos fixos para associar

semntica e um elemento. Uma discusso completa vai alm do


propsito deste trabalho, mas voc pode achar vrios exemplos de
atributos fixos na especificao de XLink.
O processador XML executa a normalizao dos valores dos atributos
nos valores dos atributos: as referncias de caracter so substuitudas
por caracteres referenciados, referncias a entidades so resolvidas
(recursivamente) e espaos em branco so normalizados.
Declaraes de Entidades

Declaraes de entidades lhe permitem associar um nome com algum


outro fragmento de contedo. Essa construo pode ser um pedao de
texto normal, um pedao de uma declarao de tipo de documento ou
uma referncia a um arquivo externo que contm ou texto ou dados
binrios.
Declaraes de entidades tpicas so mostradas no Exemplo 3.
Exemplo 3: declarao de entidades tpica
<!ENTITY
ATI
"ArborText, Inc.">
<!ENTITY boilerplate
SYSTEM
"/standard/legalnotice.xml">
<!ENTITY ATIlogo
SYSTEM "/standard/logo.gif" NDATA GIF87A>
Existem trs tipos de entidades:

Entidades Internas
Entidades internas associam um nome com uma cadeia de
caracteres ou texto literal. A primeira entidade no Exemplo 3 uma
entidade interna. Usando &ATI; em qualquer lugar do documento
inserir "ArborText, Inc" naquele local. Entidades internas permitem
a voc definir atalhos para textos freqentemente digitados ou
textos que se espera que sejam alterados, como o estado de
reviso de um documento.
Entidades internas podem incluir referncias para outras entidades
internas, mas errado elas serem recursivas.
A especificao XML pr-define cinco entidades internas:

&lt;

produz o sinal de menor, <

&gt;

produz o sinal de maior, >

&amp;

&apos;

produz um apstrofo, '

&quot;

produz aspas, "

produz o E comercial, &

Entidades Externas
Entidades externas associam um nome com o contedo de um
outro arquivo. Entidades externas permitem a documento XML
referenciar o contedo de um outro arquivo; elas contm ou texto
ou dados binrios. Se elas contm texto, o contedo do arquivo
externo inserido no ponto de referncia e analisado como parte
do documento referente. Dados binrios no so analisados e
podem somente ser referenciados em um atributo; eles so usados
para referenciar figuras e outro contedo no-XML no documento.
A segunda e a terceira entidades no Exemplo 3 so entidades
externas.
O uso de &boilerplate; inserir o contedo do arquivo /standard/
legalnotice.xml no local da referncia da entidade. O processador
XML analisar o contedo deste arquivo como se ele ocorresse
literalmente no local.
A entidade ATIlogo tambm uma entidade externa, mas o seu
contedo binrio. A entidade ATIlogo pode ser usada somente
como o valor de um atributo ENTITY (ou ENTITIES) (em um
elemento graphic, talvez). O processador XML passar esta
informao para a aplicao, mas ele no tenta processar o
contedo de /standard/logo.gif.
Entidades Parmetro
A entidade parmetro somente pode ocorrer na declarao de tipo
de documento. Uma declarao de uma entidade parmetro
identificada por "% " (porcento e espao) defronte ao seu nome na
declarao. O sinal de porcento tambm usado em referncias
para entidades parmetro, ao invs do E comercial. As referncias a
entidade parmetro so imediatamente expandidas na declarao
de tipo de documento e seu texto de substituio parte da
declarao, onde as referncias a entidades normais no so
expandidas. Entidades parmetro no so reconhecidas no corpo de
um documento.

Voltando s declaraes de elementos no Exemplo 2, voc


perceber que dois deles tm o mesmo modelo de contedo:
<!ELEMENT Joo (#PCDATA | citao)*>
<!ELEMENT Jos (#PCDATA | citao)*>

At o momento, estes dois elementos so a mesma coisa somente


porque eles tm a mesma definio literal. A fim de tornar mais
explcito o fato de que estes dois elementos so semnticamente a
mesma coisa, usada uma entidade parmetro para definir seus
modelos de contedo. H duas vantagens em se usar uma entidade
parmetro. Primeiramente, ela lhe permite dar um nome descritivo
ao contedo, e segundo que lhe permite alterar o modelo de
contedo em somente um local, se voc desejar atualizar as
declaraes do elemento, garantindo que elas sempre fiquem as
mesmas:
<!ENTITY % pessoascontentes "#PCDATA | citao">
<!ELEMENT Joo (%pessoascontentes;)*>
<!ELEMENT Jos (%pessoascontentes;)*>
Declaraes de Notao

Declaraes de notao identificam tipos especficos de dados binrios


externos. Estas informaes so passadas para a aplicao de
processamento, que pode fazer o uso que quiser ou que desejar. Uma
declarao de notao tpica :
<!NOTATION GIF87A SYSTEM "GIF">
Eu preciso de uma Declarao de Tipo de Documento?

Como foi visto, o contedo XML pode ser processado sem uma
declarao de tipo de documento. Entretanto, existem alguns casos
onde a declarao necessria:
Ambientes de autoria
A maioria dos ambientes de autoria precisa ler e processar
declaraes de tipo de documento a fim de entender e reforar o
modelo de contedo do documento.
Valores padres de atributos
Se um documento XML conta com valores padres de atributos,
pelo menos uma parte da declarao deve ser processada a fim de
se obter os valores padres corretos.
Manipulao de espaos em branco

A semntica associada com espao em branco em contedo de


elementos diferem da semntics associada com espao em branco
em contedo misturado. Sem um DTD, no h maneira para o
processador distingir os casos, e todos os elementos so
efetivamente contedo misturado. Para mais detalhes, veja a seo
chamada Manipulao de Espaos em Branco, neste trabalho.
Em aplicaes onde uma pessoa compe ou edita os dados, um DTD
provavelmente vai ser preciso se qualquer estrutura deve ser
garantida.
Incluindo uma Declarao de Tipo de Documento

Se presente, a declarao de tipo de documento deve ser a primeira


coisa em um documento depois de comentrios e instrues de
processamento opcionais.
A declarao de tipo de documento identifica o elemento raiz do
documento e pode conter declaraes adicionais. Todos os
documentos XML devem ter um elemento raiz nico que contenha todo
o contedo do documento. Declaraes adicionais podem vir de um
DTD externo, chamado de subconjunto externo, ou ser includo
diretamente no documento, o subconjunto interno, ou ambos:
<?XML version="1.0" standalone="no"?>
<!DOCTYPE chapter SYSTEM "dbook.dtd" [
<!ENTITY %ulink.module "IGNORE">
<!ELEMENT ulink (#PCDATA)*>
<!ATTLIST ulink
xml:link

CDATA #FIXED "SIMPLE"

xml-attributes CDATA #FIXED "HREF URL"


URL

CDATA #REQUIRED>

]>
<chapter>...</chapter>

Este exemplo referencia um DTD externo, dbook.dtd, e inclui


declaraes de elementos e atributos para o elemento ulink no
subconjunto interno. Neste caso, ulink d a semntica de um link
simples da especificao XLink.

Note que as declaraes no subconjunto interno no leva em conta as


declaraes no subconjunto externo. O processador XML l o
subconjunto interno antes do externo e a primeira declarao tem
precedncia.
A fim de determinar se um documento vlido, o processador XML
deve ler a declarao de tipo de documento inteira (ambos os
subconjuntos). Mas para algumas aplicaes, a validao pode no ser
precisa, e pode ser suficiente para o processador ler somente o
subconjunto interno. No exemplo acima, se a validade no
importante e a nica razo para ler a declarao de tipo de documento
identifcar a semntica de ulink, a leitura do subconjunto externo no
necessria.
Voc pode comunicar estas informaes na declarao de documento
standalone. A declarao de documento standalone, standalone="yes"
ou standalone="no", ocorre na declarao XML. Um valor yes indica que
somente declaraes internas precisam ser processadas. Um valor no
indica que ambas as declaraes interna e externa devem ser
processadas.
Outras questes de marcao
Alm da marcao, existem algumas outras questes a considerar:
manipulao de espaos em branco, normalizao de valores dos
atributos e a linguagem com a qual o documento foi escrito.
Manipulao de Espaos em Branco

A manipulao de espaos em brancos uma questo sutil. Considere


o seguinte fragmento de contedo:
<piada>
<Joo>Diga <citao>boa noite</citao>, Maria.</Joo>

O espao em branco (a nova linha entre <piada> e <Joo> )


significante?
Provavelmente no.
Mas como voc pode afirmar isto? Voc somente pode determinar se
um espao em branco significante se voc conhece o modelo de
contedo dos elementos em questo. Em resumo, um espao em
branco significante em contedo misturado e insignificante em
contedo de elemento.
A regra para os processadores XML que eles devem passar por todos
os caracteres que no so marcao na aplicao. Se o processador

um processador de validao, ele tambm deve informar aplicao


se os caracteres espaos em branco so significantes.
O atributo especial xml:space pode ser usado para indicar
explicitamente que os espaos em branco so significantes. Em
qualquer elemento que inclua a especificao de atributo
xml:space='preserve', todos os espaos em branco naquele elemento (e
dentro dos subelementos que no alteram explicitamente xml:space)
sero significantes.
Os nicos valores vlidos para xml:space so preserve e default. O valor
default indica que o processamento padro desejado. Em um DTD, o
atributo xml:space deve ser declarado como um tipo enumerado com
somente estes dois valores.
Uma ltima observao sobre espaos em branco: em texto analisvel,
os processadores XML so requeridos para normalizar todas as marcas
de final de linha para um um nico caracter de alimentao de linha
(&#A;). Isto raramente de interesse dos autores, mas elimina um
nmero de questes de portabilidade de plataformas cruzadas.
Normalizao dos valores de atributos

O processador XML executa a normalizao dos valores de atributos


em valores de atributos: referncias a caracteres so substitudas por
caracteres referenciados, referncias a entidades s resolvidas
(recursivamente) e os espaos em branco so normalizados.
Identificao da linguagem

Muitas aplicaes de processamento de documentos podem se


beneficiar da informao sobre a linguagem natural com a qual o
documento foi escrito. A XML define o atributo xml:lang para identificar
a linguagem. Visto que o propsito deste atributo padronizar a
informao entre as aplicaes, a especificao XML tambm descreve
como as linguagens devem ser identificadas.

Validao
Dada a discusso precedente de declaraes de tipos, conclui-se que
uns documentos so vlidos e outros no. Existem duas categorias de
documentos XML: bem formatados e vlidos.

Documentos Bem Formatados


Um documento somente pode ser bem formatado se ele obedece a
sintaxe da XML. Um documento que inclui seqncias de caracteres de
marcao que no podem ser analisadas ou so invlidas no podem
ser bem formatados.
Alm disso, o documento deve atender a todas as seguintes condies
(subentendendo-se que algumas destas condies podem exigir
experincia com SGML):

A instncia do documento deve estar conforme a gramtica dos


documentos XML. Em particular, algumas construes de
marcaes (referncias a entidades parmetro, por exemplo) so
somente permitidas em locais especficos. O documento no
bem formatadose tais ocorrerem em outros locais, ainda que o
documento esteja bem formatado nos outros casos.

O texto de substituio para todas as entidades parmetro


referenciadas dentro de uma declarao de marcao consiste
em zero ou mais declaraes de marcaes completas.
(Nenhuma entidade usada no documento pode consistir de
somente uma parte de uma declarao de marcao.)

Nenhum atributo pode aparecer mais do que uma vez na mesma


marca de incio.

Valores de atributos cadeias de caracteres no podem conter


referncias a entidades externas.

Marcas no-vazias devem ser apropriadamente aninhadas.

Entidades parmetro devem ser declaradas antes de serem


usadas.

Todas as entidades devem ser declaradas, exceto as seguintes:


amp, lt, gt, apos e quot.

Uma entidade binria no pode ser referenciada no fluxo do


contedo; ela pode ser usada somente em um atributo declarado

como ENTITY ou ENTITIES.

Nem a texto ou entidades parmetro so permitidas


recursividade, direta ou indiretamente.

Por definio, se um documento no est bem formatado, ele no


XML. Isto significa que no h documento XML que no seja bem
formatado e os processadores XML no fazem nada com tais
documentos.
Documentos
Um documento bem formatado vlido somente se ele contm uma
declarao de tipo de documento e se o documento obedece as
restries da declarao (seqncia e aninhamento de elementos
vlido, atributos necessrios so fornecidos, valores de atributos so
do tipo correto, etc.). A especificao XML identifica todos os creitrios
em detalhes.

Ligao
As especificaes XPointer e XLink, atualmente em desenvolvimento, introduz um
modelo ligao padro para a XML. Em considerao ao espao e o fato de que
rascunho da XLink ainda est sendo desenvolvido, o que segue um exame dos
recursos da XLink, em vez de uma descrio detalhada da especificao.
Em XLink, um link expressa um relacionamento entre recursos. Um recurso
qualquer local (um elemento, o seu contedo, ou uma parte do seu contedo, por
exemplo) que enderevel em um link. A natureza exata do relacionamento entre
os recursos depende da aplicao que processa o link e da informao semntica
fornecida.
Alguns destaques da XLink so:

a XLink lhe d controle sobre a semntica do link.

a XLink introduz Links Extendidos. Links Extendidos podem envolver mais de


dois recursos.

a XPointer introduz Ponteiros Extendidos (XPointers). Os XPointers fornecem


um mtodo sofisticado de localizar recursos. Em particular, os XPointers lhe
permitem localizar recursos arbitrrios em um documento, sem que seja
necessrio que o recurso seja identificado com um atributo ID.

Visto que a XML no tem um conjunto fixo de elementos, o nome do elemento de


ligao no pode ser usado para localizar links. Em vez disso, os processadores XML
identificam os links pelo reconhecimento do atributo xml:link. Outros atributos

podem ser usados para fornecer informaes adicionais ao processador XML. Um


recurso de renomeao de atributos existe para contronar colises de nome em
aplicaes existentes.
Dois atributos, show e actuate lhe permitem exercer algum controle sobre o
comportamento da ligao. O atributo show determina se o documento para o qual
est se fazendo a ligao est embutido no documento atual, substitui o documento
atual ou mostrado em uma nova janela quando o link acionado. actuate
determina como o link acionado, ou automaticamente ou quando selecionado pelo
usurio.
Algumas aplicaes iro necessitar de um controle muito mais acurado sobre os
comportamento dos links. Para estas aplicaes, locais padro so fornecidos onde a
semntica adicional pode ser expressa.

Links Simples
Um link simples lembra fortemente um link HTML <A>:
<link xml:link="simple" href="locator">Texto do Link</link>
Um link simples identifica um link entre dois recursos, um dos quais o prprio
contedo do elemento do link. Este um link in-line.
Um localizador identifica o outro recurso. Um localizador pode ser um URL, uma
consulta ou um Ponteiro Extendido.

Links Extendidos
Links extendidos lhe permitem expressar relacionamentos entre mais de dois
recursos:
<elink xml:link="extended" role="annotation">
<locator xml:link="locator" href="text.loc">Texto</locator>
<locator xml:link="locator" href="annot1.loc">Anotaes</locator>
<locator xml:link="locator" href="annot2.loc">Mais Anotaes</locator>
<locator xml:link="locator" href="litcrit.loc">Literatura Crtica</locator>
</elink>
Este exemplo mostra como os relacionamentos entre um trabalho literrio,
anotaes e literatura crtica deste documento podem ser expressos. Note que este
link separado de todos os recursos envolvidos.
Links extendidos podem ser in-line, para que o contedo do elemento de ligao
(outro que no dseja elemento localizadores) participe no link como um recurso, mas
esse no necessariamente o caso. O exemplo acima um link out-of-line link, pois
no usa seu contedo como um recurso.

Ponteiros Extendidos
Referncias cruzadas com o mecanismo XML ID/IDREF (que similar ao mecanismo
#fragment em HTML) requer que o documento para o qual se est ligando tenha
ncoras definidas, onde os links so desejados (e tecnicamente requer que ID e
IDREF ocorram no mesmo documento). Este pode no ser sempre o caso, e algumas
vezes no possvel modificar o documento que voc deseja ligar.
Os XML XPointers tomam emprestados conceitos de HyTime e da Text Encoding
Initiative (TEI). Os XPointers oferecem a sintaxe que lhe permite localizar um
recurso atravs da rvore de elementos do documento que contm o recurso.
Por exemplo:
criana(2,piada).(3,.)
locazida a terceira criana (qulaquer que possa ser) da segunda piada no
documento.
Os XPointers podem expandir as regies da rvore. A expanso XPointer
span(criana(2,piada),criana(3,piada))
seleciona a segunda e terceira oldjoke no documento.
Alm da seleo atravs de elementos, os XPointers permitem a seleo por ID,
valores de atributos e correspodncia de cadeias de caracteres. Neste trabalho, o
XPointer
span(raiz()criana(3,set1)string(1,"Aqui",0),
raiz()ctriana(3,set1)string(1,"Aqui",4))
seleciona a primeira ocorrncia da palavra "Aqui". O link pode ser estabelecido por
um link extendido sem modificar o documento alvo.
Note que o alcance de um XPointer pode expandir uma seo estruturamente
invlida do documento. A especificao XLink no especifica como as aplicaes
devem tratar tais alcances.

Grupos de Links Extendidos


Links out-of-line introduzem a possibilidade de que um processador XML possa
precisar processar vrios arquivos para mostrar corretamento o documento de
hipertexto.
De acordo com o exemplo de texto de antoao acima, e assumindo que o texto ,
na verdade, somente para leitura, o processador XML deve carregar pelo menos o
texto e o documento que contm o link extendido.
A XLink define os Grupos de Links Extendidos para este propsito. Grupos de Links
Extendidos podem ser usados recursicamente, e um atributo steps fornecido para
limitar o nvel da recursividade.

Entendendo as Partes
Alguns documentos, particularmente documentos compostos que colaboram com
XLinks, so provavelmente compostos de elementos de mltiplos conuntos de
marcas. Por exemplo, um artigo tcnico pode ser escrito usando-se um DTD, mas

inclui equaes matemticas escritas em MathML e grficos vetoriais escritos em um


terceiro DTD.
A fim de uma aplicao de processamento associar a semntica correta com um
elemento, ela deve conhecer que conjunto de marcas o elemento possui. A XML
resolve este problema com nomes espaados. Nomes espaados em XML descreve
este sistema em detalhes.
O princpio permitir a um prefixo delimitado por dois pontos associar-se com
alguma semntica externa atravs de uma URI. O uso deste prefixo identifica o
elemento como tendo a semntica descrita pela URI. Por exemplo:
<bk:para>A frao 3/4 pode ser expressa em MathML como:
<ml:cn type="rational">3<ml:sep/>4</ml:cn>.</bk:para>
O elemento para neste exemplo identificado explicitamente como sendo o nome
espaado identificado pelo prefixo bk, que deve ter sido definido anteriormente no
documento, e os elementos cn e sep so do elemento ml (presumivelmente
associado de alguma maneira com MathML).

Estilo e Substncia
Os navegadores HTML so de difcil codificao. Embora alguns navegadores possam
basear sua formatao em Cascading Style Sheets (CSS), eles ainda contm
convenes de difcil codificao para documentos que no fornecem uma folha de
estilos. Um cabealho de primeiro nvel aparece da maneira correta, pois o
navegador reconhece a marca <h1>.
Novamente, visto que os documentos XML no tm um conjunto fixo de marcas,
testa aproximao no funcionar. A apresentao de um documento XML
dependente de uma folha de estilos.
A linguagem de folha de estilos padro para os documentos XML a Extensible Style
Language (XSL).
Outras linguagens de folhas de estilos, como Cascading Style Sheets, tambm so
suportadas.

Você também pode gostar