Aprendendo XML

ArticleCategory: [Artikel Kategorie]

Applications

AuthorImage:[Here we need a little image from you]

[Floris Lambrechts]

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]

[Illustration: xml]

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.
Mozilla screenshot
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.

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