Aprendendo XML
ArticleCategory: [Artikel Kategorie]
Applications
AuthorImage:[Here we need a little image from you]
TranslationInfo:[Author and translation history]
original in en Floris
Lambrechts
en to pt Bruno Sousa
AboutTheAuthor:[Über den Autor]
Tenho sido, por muitos anos o principal editor da
LinuxFocus/Holanda. Estou a estudar "engenharia industrial em
electr�nica" em Leuven, B�lgica e passo o meu tempo a brincar com o
Linux, o PHP, o XML e a LinuxFocus, ao mesmo tempo que leio livros de
Stephen Hawking e (pelo momento:) de Jef Raskin, 'The Humane
Interface'.
Abstract:[Here you write a little summary]
Isto � um pequena introdu��o ao XML. Conhecer� o Eddy o meta cat, o
pol�cia da sintaxe do XML e algumas DTDs. N�o se preocupe n�s
explicaremos :-)
ArticleIllustration:[This is the title picture for your
article]
ArticleBody:[Der eigentliche Artikel]
Introdu��o
No ver�o de 2001, alguns dos editores da _LF_ vieram juntos, a Bord�us
para o LSM. Muito di�logo e
discuss�es acerca da documenta��o da LSM, o interesse especial do grupo
virava-se para a mesma mat�ria: o XML. Longa (e divertidas) horas
decorreram a explicar o que o XML � realmente, o que � bom para
sabermos como utiliz�-lo. Caso esteja interessado, � isto que este
artigo procurar� discutir.
Gostaria de agradecer ao Egon Willighagen e ao Jaime Villate por me
introduzirem o XML. Este artigo, � de algum modo, baseado na informa��o
dos artigos de Jaime, que pode encontrar nos links abaixo.
O que � o XML?
N�s, rapazes de documenta��o, sab�amos o que o XML era, mais ou menos.
Apesar de tudo, a sua sintaxe � muito semelhante ao HTML e � outra
linguagem de "marca��o" como o SGML e (novamente) o HTML, correcto?
Sim. Mas existe ainda mais.
O XML tem algumas propriedades que o tornam num formato de dados �til
para, praticamente, tudo. Parece que, na maioria das vezes, pode
descrever as coisas mais complexas, ao mesmo tempo que permanece de
f�cil interpreta��o para os humanos e f�cil de ser interpretador por
programas. Como � que � poss�vel? Investiguemos esta linguagem �mpar.
Eddy, o gato meta
Antes de tudo, o XML � uma linguagem de marca��o. Os
documentos escritos numa linguagem de marca��o cont�m basicamente, duas
coisas: dados e metadados. Se sabe o que significam os
dados, por favor avise-me, mas at� ent�o falemos dos metadados :).
Simplesmente, dizendo: os metadados s�o informa��o extra que adicionam
um contexto, ou um significado aos dados em si. Um exemplo simples:
repare na frase 'My cat is called Eddy'. Uma pessoa humana
como voc� sabe que 'cat' � o nome de uma esp�cie de animais e
'Eddy' � o seu nome. Contudo, os programas de computador, n�o
s�o humanos e n�o sabem isto. Assim, utilizamos os metadados para dar
significado aos dados (claro que � com a sintaxe XML!):
<sentence>
My <animal>cat</animal>
is called <name>Eddy</name>.
</sentence>
Agora, at� mesmo um programa de computador est�pido pode dizer que
'cat' � uma esp�cie e que 'Eddie' � um nome. Se quiser produzir um
documento onde todos os nomes s�o impressos a azul, e todas as esp�cies em vermelho, ent�o o XML facilita-nos a tarefa. S� pelo
divertimento, eis aqui o que obter�amos:
My cat is called
Eddy.
Agora, teoricamente, podemos p�r a informa��o do layout (as cores
neste caso) num ficheiro � parte, um chamado sytlesheet. Quando tal
fazemos, estamos a separar a informa��o do layout do conte�do, algo que �
considerado, por alguns, o C�lice Sagrado da Web designTM. At�
agora, n�o fizemos nada de especial, adicionar metadados � a fun��o para
a qual as linguagens de marca��o s�o desenhadas. Assim, o que � que torna
o XML t�o especial?
O pol�cia da sintaxe
Antes de mais, o XML tem uma sintaxe muito restrita. Por exemplo, no
XML toda a <tag> tem de ter uma </tag> de fecho. [ Note: visto que � um pouco
est�pido escrever <tag></tag>
quando n�o existe nada entre elas, pode tamb�m escrever <tag /> e, eventualmente, aproveitar alguns pares de
minutos da sua vida].
Uma outra regra, � que n�o pode 'misturar' as tags. Temos de fechar
as na ordem reversa �quela em que as abriu. Algo como isto n�o � v�lido:
<B> Texto a Negrito <I>Texto a
negrito e it�lico </B> texto em it�lico </I>
As regras de sintaxe dizem que deve fechar a tag </I> antes de fechar a tag </B>
E, tenha cuidado, _todos_ os elementos no
XML devem estar contidos em tags (claro com excep��o das tags externas!).
Isto, � a raz�o pela qual no exemplo acima, n�s escrevemos as tags <sentence> � volta da frase. Sem elas, algumas
das palavras na frase n�o seriam inclu�das entre as tags, e isto, como
outras imensas coisas, tornam o pol�cia da sintaxe do XML realmente
muito mau.
A Pol�tica de sintaxe do Mozilla a trabalhar...
Mas uma for�a de pol�cia forte tem as suas vantagens: traz ordem. Como
o XML segue uma sintaxe restrita, � muito f�cil para os programas l�-la.
Os dados no seus documentos XML, tamb�m se encontram muito estruturados,
o que os torna de f�cil leitura e escrita para humanos.
Por favor, note que qualidade 'te�rica' do XML nem sempre pode ser
posta em pr�tica. Por exemplo, a maioria dos parsers de XML correntes
est�o longe de ser r�pidos, e por vezes s�o, realmente, enormes. Assim
parece que o XML, n�o � de t�o f�cil leitura para o software em geral.
Digamos que, n�o � uma boa ideia fazer *tudo* em XML, s� porque pode.
Para aplica��es onde precisa de fazer v�rias pesquisas num documento, ou
onde tem documentos, realmente, enormes, o XML n�o � frequentemente a
escolha certa. Mas tal n�o significa que � imposs�vel utilizar o XML
com estes prop�sitos.
Um exemplo simp�tico e que demonstra o poder do XML, mas tamb�m a sua
lentid�o, � o facto de poder escrever base de dados nele (tente faz�-lo
com o HTML! :p). Foi exactamente o que o Egom Willighagen fez para a
sec��o alem� da LinuxFocus, o seu artigo acerca deste sistema est�
dispon�vel nos links no fim desta p�gina. Neste caso a flexibilidade e
extensibilidade de um formato de ficheiro artesanal foi escolhido ao
inv�s da velocidade (diga-se mySQL).
Respeitante � sintaxe restrita do XML: se pretende ficar bom amigo dos
verificadores de sintaxe, ent�o existem v�rias maneiras de fazer com que o
pol�cia da sintaxe fa�a algum do seu trabalho. Caso o pretenda, tem de
fazer uma utiliza��o inteligente da DTD...
A DTD
No nosso pequeno exemplo, acima, 'Eddy o gato-meta' invent�mos as
nossas pr�prias tags de XML. Claro que tal acto criativo n�o � tolerado
pelo pol�cia da sintaxe! O 'homem de azul' quer saber o que est� a
fazer, como, quando e (se poss�vel) porqu�. Bem, sem problemas, pode
explicar tudo com a DTD...
Uma DTD permite-lhe 'inventar' novas tags. De facto, permite-lhe
inventar novas linguagens, desde que sigam a sintaxe do XML.
A DTD, ou Document Type Definition (Defini��o do tipo
de Documento), � um ficheiro que cont�m uma descri��o da linguagem do
XML. �, actualmente, uma lista de todas as tags poss�veis, dos seus
poss�veis atributos, e das suas poss�veis combina��es. A DTD descreve o
que � poss�vel na sua linguagem XML e o que n�o �. Assim quando falamos
da 'linguagem XML', estamos, na realidade, a falar de uma DTD espec�fica.
Ponha o pol�cia a trabalhar
Por vezes a DTD obrig�-lo-� a fazer algo num determinado
s�tio. Por exemplo, a DTD pode for�a-lo a incluir uma tag que contenha o
t�tulo do documento. O que existe de bom nisto, � que existe software
actual (por exemplo um m�dulo do emacs) que escreve as tags requeridas
automaticamente.
Deste modo, algumas partes da estrutura dos seus documentos s�o
preenchidas automaticamente. Por causa da sintaxe ser t�o restrita e
bem definida, a DTD pode gui�-lo atrav�s do processo de escrever um
documento. E quando comete erros, como esquecer-se de uma tag de fecho, o
pol�cia informa-a. Assim, ao fim de contas, os pol�cias n�o s�o t�o
'maus'; onde os pol�cias do mundo real dizem 'Tem o direito de permanecer
em sil�ncio' o pol�cia do XML, diz-lhe muito amigavelmente, acerca de um
'Erro de sintaxe na linha xx : '... :)
E enquanto o pol�cia faz todo o seu trabalho, claro que *voc�* se pode
concentrar somente no conte�do.
Na Remistura
Uma �ltima grande caracter�stica do XML, � a habilidade de utilizar
v�rias DTDs ao mesmo tempo. Isto quer dizer que pode utilizar v�rios
tipos de dados diferentes, ao mesmo tempo, no mesmo documento.
Este 'mistura' � feita com os namespaces do xml. Por exemplo, voc�
pode incluir a DTD Docbook no seu documento .xml (neste exemplo com o
prefixo 'dbk').
Todas as tags do Docbook est�o prontas a ser utilizados no seu
documento na seguinte forma (suponha que existe a seguinte tag no
Docbook, <just_a_tag>):
<dbk:just_a_tag> somente algumas palavras
</dbk:just_a_tag>
Utilizando o namespace system, voc� pode utilizar qualquer tag de
qualquer DTD do xml. Abre um mundo de possibilidades, como pode ver no
pr�ximo cap�tulo...
DTDs Dispon�veis
Aqui est� uma pequena colec��o de DTDs que est�o (em parte) em
utiliza��o.
- Docbook-XML
O Docbook � a linguagem para escrever documentos estruturados, por
exemplo, livros e papeis. Mas, tamb�m � utilizada para outras
tarefas diferentes. O Docbook �, actualmente, uma DTD SGML (o SGML �
um standard de marca��o), mas existe, tamb�m, uma vers�o popular em
XML. Esta � uma das mais populares DTDs do XML.
- MathML
O MathML � a linguagem de marca��o Matem�tica, que � utilizada para
descrever express�es e f�rmulas matem�ticas. �, realmente, um
utilit�rio elegante para as pessoas do mundo da matem�tica. Os
Qu�micos, por seu lado, n�o precisam de ter inveja dos seus colegas
matem�ticos, para eles existe algo como a CML, ou Chemical Markup
Language (Linguagem de Marca��o Qu�mica). Note que o Mozilla 1.0
traz, agora suporte para a MathML, por omiss�o.
- RDF
A RDF � a Resource Description Framework. � desenhada para ajudar a
codificar e a reutilizar os metadados; na pr�tica � utilizada por
muitos sites para dizer a outros as not�cias que est�o a apresentar.
Por exemplo, o site Alem�o linuxdot.nl.linux.org utiliza o
ficheiro RDF de outros sites para apresentar os itens de not�cias. A
maioria dos sites populares de not�cias (como por exemplo a Slashdot)
t�m ficheiros RDF dispon�veis para que possa copiar os t�tulos das
suas not�cias para uma sidebar da sua p�gina pessoal, por
exemplo.
- SOAP
O SOAP significa Simple Object Access Protocol (Protocolo simples de
acesso a objectos). � uma linguagem utilizada por processos para
comunicar uns com os outros (trocar dados e executar chamadas a
procedimentos remotos). Com o SOAP os processos podem comunicar
remotamente uns com os outros, por exemplo sob um protocolo http
(internet). Penso que aqui o Atif da LF lhes pode dizer mais acerca
disto, veja os links :-)
- SVG
Scalable Vector Graphics. O trio PNG, JPEG2000 e SVG � suposto
englobar o futuro das imagens na web. O PNG tomar� as regras do GIF
(bitmaps o mais compressos poss�vel com transpar�ncia), e o JPEG2000
poder� suceder o .jpg de hoje (bitmaps com um grau configur�vel de
compress�o). O SVG n�o se baseia em bitmaps, mas � um formato de
imagem � base de vectores, o que quer dizer que as imagens n�o s�o
representadas por pixels, mas por formas matem�ticas (linhas,
quadrados,...). O SVG tem tamb�m fun��es como scripting e anima��o,
assim, neste sentido, pode compar�-la com o Flash da Macromedia. Pode
utilizar JavaScript nos ficheiros .svg, e utilizando o JavaScript
pode, por sua vez escrever c�digo .svg. Muito flex�vel, n�o �?
Mas o svg � relativamente novo; de momento, s� existe um plugin SVG da
Adobe para browsers, de alta qualidade , para as plataformas Windows
& Mac. O Mozilla est� a trabalhar num visor embebido SVG, Mas
este ainda n�o est� completo e tem de obter uma vers�o especial,
compilada do browser para o poder utilizar.
NOTE: os ficheiros .svg podem tornar-se enormes e, isto � o
porqu� de muitas vezes ir encontrar ficheiros .svgz. Existem vers�es
compressas utilizando o algoritmo do gzip.
- XHTML
XHTML � a variante XML da vers�o do HTML 4.01. Devido � sintaxe
restrita do XML, existem algumas coisas que pode fazer no HTML mas
que n�o s�o v�lidas no XHTML. Mas por outro lado, uma p�gina que
escreva em XHTML � ao mesmo tempo uma p�gina HTML v�lida. Note que o
programa tidy HTML pode converter as suas p�ginas existentes em HTML
para XML.
- Os outros
Muitos novos formatos utilizam o XML, muitas vezes combinados com a
compress�o .gz ou .zip. Somente um exemplo, o KOffice utiliza os
formatos de ficheiro DTD's do XML. Isto � muito �til, por que permite
a combina��o de funcionalidade de diferentes aplica��es num s�
documento, Por exemplo, pode escrever um documento KWord, com um folha
de c�lculo KChart embutida nele.
Links
O W3C, ou World Wide Web Consortium
Eles t�m informa��o acerca do XML, da MathML, da CML, do RDF, do SVG,
do SOAP, do XHTML, dos namespaces...
www.w3.org
Algum material de Jaime Villate (pode precisar de um tradutor
online para ler os dois primeiros:)
Introdu��o ao
XML(em Espanhol)
Como gerar HTML com o XML(em Espanhol)
LSM-slides
O programa, HTML tidy:
www.w3.org/People/Raggett/tidy
O Docbook
www.docbook.org
O projecto SVG do Mozzila
www.mozilla.org/projects/svg
Artigos da LinuxFocus relevantes:
Utilizando o XML e o XSLT
para construir a LinuxFocus.org(/Nederlands)
Construindo documentos PDF com o
Docbook