Os documentos são criados com o objectivo de registar informação de modo a ser possível comunicá-la, ou partilhá-la. Para que tenham valor é necessário que sejam fáceis de localizar, fáceis de consumir (interpretar), fáceis de validar e fáceis de reutilizar. A estrutura de um documento é a chave para a informação que nele está contida e pode determinar o seu valor.
As vantagens da explicitação da estrutura, para o aumento de mais-valias da informação baseada em documentos, podem ser analisadas à luz das seguintes perspectivas (traçando um paralelismo com a tecnologia baseada em bases de dados relacionais):
Nas bases de dados relacionais, a rapidez e flexibilidade com que se consegue aceder à informação permite selecionar e ordenar os registos de modo a criar os relatórios necessários num dado momento. Da mesma maneira, a estrutura associada aos documentos permite que elementos destes sejam rapidamente localizados e manipulados. Por exemplo, pode-se seleccionar todos os títulos de capítulos de um livro e construir um índice alfabético.
A verificação de que a informação apresentada está completa e de acordo com as regras estruturais é designada por validação. Numa base de dados relacional é sempre possível validar o conteúdo de um campo ou de um registo. Se os documentos forem estruturados correctamente é possível criar algoritmos que executam, de forma aceitável, a validação.
No contexto de uma base de dados pode-se encarar a reutilização como a possibilidade de gerar diferentes relatórios para o mesmo conjunto de informação. Se, pelo seu lado, os documentos tiverem uma estrutura de algum modo previsível será possível localizar alguns elementos e utilizá-los para outros fins. Por exemplo, imagine-se um manual de manutenção em que cada tarefa é sempre identificada com um número e um título descritivo. Deste manual poderiam ser extraídos cartões de tarefa, cada um respeitante a uma tarefa, que seriam entregues aos diferentes mecânicos encarregues de as realizar.
É importante perceber que todas estas vantagens da estruturação só são possíveis se esta for rigorosamente mantida. A estrutura dos documentos deve ser monitorada e a sua qualidade controlada ao longo de todo o processo de publicação. Este processo implica um reformular completo dos métodos existentes e uma reconversão por parte das pessoas intervenientes no processo.
A publicação de documentos há muito tempo que sente necessidade de tornar explícitos certos aspectos dos textos que são publicados. Historicamente, o termo inglês "markup", em português anotação, codificação ou etiquetagem, foi usado para descrever as anotações ou outras marcas que eram colocadas nos textos para instruir os compositores e tipógrafos de como estes deviam ser impressos ou compostos. Por exemplo, palavras sublinhadas com linha ondulada deveriam ser impressas em "boldface" (letra mais carregada). Com a automação das tarefas de formatação e impressão o termo começou a ser utilizado num sentido mais amplo, cobrindo todas as espécies de códigos de anotação inseridos em textos electrónicos para dirigir a sua formatação, impressão ou outro tipo de processamento.
Generalizando, pode-se definir anotação de um texto como um meio de tornar explícita uma interpretação desse texto. O exemplo mais banal de anotação são os sinais de pontuação que induzem uma determinada interpretação do texto em que estão inseridos.
A ideia de anotar um documento surge naturalmente quando se pensa num documento específico. Por exemplo, uma carta comercial, é um documento com uma determinada estrutura intrínseca e quase todas as empresas as escrevem de acordo com essa estrutura (a importância da normalização). Ora, para o computador será muito mais fácil processar este tipo de documento se ele estiver anotado, i.e., etiquetando o que é o cabeçalho, a assinatura, a data, ... Caso contrário ter-se-á que percorrer o texto a adivinhar o que é o quê.
Normalmente, os sistemas de processamento de texto requerem que o texto original seja enriquecido com informação adicional. Esta informação adicional, que tem a forma de anotações, serve dois propósitos:
Divide o documento nas suas componentes lógicas e
Especifica qual ou quais as funções de processamento que devem ser aplicadas naquele componente.
Em sistemas de DTP ("DeskTop Publishing"), que envolvem formatações muito complexas, a anotação é normalmente realizada pelo utilizador, que foi especialmente treinado para desempenhar a tarefa.
Nos sistemas de processamento de texto, as formatações a realizar sobre o texto são mais simples, o que permite que a anotação seja feita pelo utilizador sem um esforço muito consciente. Mas, com o evoluir da tecnologia, mesmo os processadores de texto começam a incluir facilidades de DTP, o que vem trazer uma maior complexidade à tarefa de anotar.
Em conclusão, a tarefa de anotar um texto requer esforço e consome tempo.
Embora o utilizador, na maior parte das situações, não se aperceba, há três passos distintos na tarefa de anotação:
Primeiro, há que analisar a estrutura da informação e os atributos que a caracterizam.
Depois, é preciso determinar, de memória ou consultando uma norma de estilos, quais as funções de processamento que produzirão o formato/transformação desejado para cada elemento.
Por último, há que inserir as anotações no texto.
Distinguem-se dois tipos de anotação: procedimental e descritiva. Na primeira, mais orientada a aspectos tipográficos, as anotações vão ter um correspondente impacto físico no aspecto final do documento. A segunda, preocupa-se mais com aspectos lógicos e estruturais do texto, as anotações apenas identificam as várias componentes do documento.
Observe-se o seguinte exemplo de uma carta, já devidamente anotada:
Exemplo 3-1. Uma carta anotada
Comité Organizador da Conferência "Sistemas de Informação para o Futuro" .vspace Caros Senhores, Venho por este meio informá-los dos meios necessários à minha palestra: .tab 4 .of 4 .vspace 1. um retroprojector 2. um projector com conector VGA para ligação a computador portátil .vspace Obrigado
Um sistema de anotação procedimental define qual o processamento a ser realizado em determinados pontos do documento.
No exemplo acima, os comandos .vspace, .tab 4 e .of 4, realizam funções do tipo: deixar uma linha em branco, inserir uma tabulação de quatro posições e mover a margem esquerda quatro posições.
Como é possível observar, este tipo de anotação é muito pouco flexível e dificultará futuras utilizações com objectivos diferentes do de formatação. As linguagens de anotação procedimental são específicas e dependentes de uma plataforma, não são facilmente portáveis para outro sistema com um conjunto de funções e comandos diferente. A anotação procedimental foca o formato e aparência, não tem nenhuma relação com com a hierarquia ou identificação de componentes. Assim, é demasiado ambígua para ser utilizada em aplicações que necessitem de ver o texto com uma estrutura associada. Este tipo de anotação pode, também, tornar-se complexo e de leitura difícil para um humano.
Um dos formatadores mais famosos é o TeX [GMS94], disponível em várias plataformas. Observe o seguinte exemplo de código TeX:
Exemplo 3-2. Texto anotado em TeX
\hrule \vskip 3cm \centerline{\bf Escrevendo uma tese} \vskip 6pt \centerline{\sl por José Carlos} \vskip .5cm
Como se pode ver, a anotação procedimental pode, muito rapidamente, tornar-se complexa. No entanto, permite um controlo directo do formato visual do texto no resultado final.
Desde que ao utilizador só interesse o registo de informação em papel a anotação procedimental serve perfeitamente para atingir os seus objectivos. Se, por outro lado, se se pretender dar outras utilizações ao texto esta não é a metodologia a seguir.
Ao contrário da abordagem anterior, a anotação descritiva utiliza códigos de anotação que apenas classificam as componentes do documento.
Códigos como <P> ou \end{description}, apenas identificam partes do documento e indicam asserções do tipo: "aqui é parágrafo", ou "este é o fim da última lista descritiva iniciada".
Exemplo 3-3. Texto anotado de uma carta
<CARTA> <DEST>Comité Organizador da Conferência "Sistemas de Informação para o Futuro"</DEST> <ABERTURA>Caros Senhores,</ABERTURA> <CORPO><PARA>Venho por este meio informá-los dos meios necessários à minha palestra: <LISTA> <LITEM>. um retroprojector</LITEM> <LITEM>. um projector com conector VGA para ligação a computador portátil</LITEM> </LISTA></PARA> <PARA>Por agora é tudo. Até dia 25.</PARA></CORPO> <FECHO>Obrigado</FECHO> </CARTA>
As vantagens deste tipo de anotação são óbvias: o mesmo documento é susceptível de ser tratado, sem nenhuma alteração, por vários processadores diferentes, podendo, cada um destes, aplicar funções de processamento distintas às várias componentes do documento; cada processador, pode também, tratar apenas as partes relevantes para si. Por exemplo, um programa poderá extrair, de um documento, nomes próprios de pessoas e lugares, para inserir numa base de dados, enquanto outro, processando o mesmo documento, apenas imprimirá os nomes próprios num tipo de letra diferente.
Como seria de esperar, as várias comunidades de utilizadores procuram normalizar o conjunto de anotações que utilizam. O conjunto de anotações, utilizado por uma dada comunidade de utilizadores num determinado contexto, designa-se por "Linguagem de Anotação". Como se poderá ver mais à frente, existem mecanismos formais para a definição destas linguagens.
Uma linguagem de anotação não define apenas quais as anotações que se poderão utilizar num dado contexto, mas também especifica qual a ordem em que essas anotações devem e podem ou não ser utilizadas.
Existem algumas linguagens de anotação de ampla utilização, embora quem as utilize nem sempre tenha muita consciência do que está a fazer. O melhor exemplo é uma linguagem que toda a gente utiliza no dia-a-dia sem se aperceber: os sinais de pontuação. Os sinais de pontuação que se colocam num texto induzem uma dada interpretação desse texto e dividem-no em componentes.
Outros exemplos, são as linguagens presentes nos sistemas de edição de texto: o LaTeX [GMS94], o RTF, o bem mais antigo WordStar e linguagens mais actuais utilizadas na anotação de documentos para a Internet, o HTML [HTML4.0] e o XML [XML1.0].
Ao tentar classificar cada uma daquelas linguagens em termos de anotação procedimental ou descritiva, constata-se que essa classificação reflecte a evolução da anotação.
Mesmo utilizando uma linguagem de anotação descritiva, há certos cuidados a ter na definição e utilização dessa linguagem que têm a ver com a subjectividade da tarefa de anotar.
Há três abordagens básicas à tarefa de anotar:
Anotação orientada ao formato.
Anotação orientada à estrutura.
Anotação orientada ao conteúdo.
Uma boa linguagem de anotação terá de surgir de um equilíbrio destas três aproximações. Optando por uma em detrimento das outras poderá levar a lacunas que se farão sentir aquando da anotação de um documento.
Este é o processo de anotar o documento com preocupações de estilo e aparência visual. Depois de tudo o que se disse sobre independência de plataformas pode paracer contraditório estar agora a falar em formas. Contudo, há elementos cuja natureza intrínseca está definitivamente ligada à forma. Texto carregado ou em itálico é um bom exemplo disso - o autor pode querer colocar o texto nesta forma de modo a realçar essa parte do texto. Outro exemplo é a quebra de página - em certos projectos, a paginação não pode ser livre. Outro exemplo ainda, são as tabelas que representam uma boa maneira de apresentar certo tipo de informação mas que como se disse estão muito ligadas à apresentação.
Exemplo 3-4. Anotação orientada ao formato
<TITULO alinha="centrado" estilo="carregado" >Isto é um título centrado e com letra carregada</TITULO> <P>Isto é um parágrafo onde o autor quis colocar algumas <REALCE>letras realçadas</REALCE>.</P>
O perigo deste tipo de anotação é o de não permitir, no futuro, utilizações alternativas do conteúdo do documento. A anotação orientada ao formato descreve o aspecto visual de um elemento, mas não o identifica nem especifica qual a sua função.
A anotação orientada à estrutura baseia-se na hierarquia genérica. Os elementos são definidos pelo seu nome hierárquico.
Este tipo de anotação torna-se útil quando se tratam vários tipos de estrutura diferentes ao mesmo tempo. Ao definir os elementos em termos da sua posição hierárquica, vão ser necessárias menos anotações do que se estivéssemos a identificar os elementos pelo seu conteúdo.
Exemplo 3-5. Anotação orientada à estrutura
<SEC1>Isto é uma secção de nível 1.</SEC1> <SEC2>Isto é uma secção de nível 2.</SEC2> <P0>Isto é um parágrafo do nível de topo.</P0> <LISTA1>Isto é um item de uma lista de nível 1.</LISTA1> <LISTA2>ISTO é um item de uma lista de nível 2.</LISTA2>
O uso abusivo deste tipo de anotação pode levar a situações em que elementos diferentes em termos de conteúdo mas que ocorrem na mesma posição hierárquica sejam anotados com mesma marca. Se, mais tarde, se pretender ter um processamento orientado ao conteúdo não há possibilidade de diferenciar os elementos porque a marca que os identifica é a mesma.
A anotação orientada ao conteúdo é o coração da anotação genérica. A identificação dos elementos pelo seu conteúdo e propósito, em lugar da sua forma ou posição hierárquica, faz com que se atinja o expoente máximo da flexibilidade no contexto aplicacional.
Na definição de anotações orientadas ao conteúdo, dá-se nomes diferentes a elementos que tipograficamente são idênticos.
Exemplo 3-6. Anotação orientada ao conteúdo
<RECEITA> <TITULO>Mousse de Chocolate</TITULO> <INGREDIENTES> <INGREDIENTE>Meia dúzia de ovos</INGREDIENTE> <INGREDIENTE>200g chocolate</INGREDIENTE> <INGREDIENTE>50g de manteiga</INGREDIENTE> </INGREDIENTES> <INSTRUÇÕES> <INSTRUÇÃO>Separar as gemas das claras...</INSTRUÇÃO> ... </INSTRUÇÕES> </RECEITA>
Mais uma vez, o uso abusivo pode levar a situações problemáticas. Neste caso, em situações extremas pode-se estar a anotar elementos com marcas diferentes sem que, mais tarde, se tire partido dessas anotações e as anotações pesam no processamento do documento. Documentos com anotação abusiva tornam-se dispendiosos e muitas vezes impossíveis de processar.
Mostraram-se três pequenos exemplos que reflectem os três tipos básicos de anotação. Para cada um destes tipos de anotação, identificaram-se alguns problemas que surgiriam se se optasse por levar ao extremo qualquer um deles.
Depois disto, torna-se claro que a solução óbvia é usar os três de forma equilibrada.
Na escrita desta dissertação utilizou-se uma linguagem de anotação desenvolvida para a indústria da publicação electrónica, chamada DocBook [DocBook,WM99]. Nesta linguagem estão representados os três paradigmas:
EMPH para realçar texto e TABLE para organizar visualmente a informação.
SECT1, SECT2 e SECT3 para marcar os vários níveis de secções e subsecções.
NAME, AUTHOR, PUBDATE, COMMAND, ..., para marcar vários items de informação.
Pode-se pois, prever que num projecto real com alguma dimensão, a anotação a utilizar seja resultado da combinação destes três paradigmas: apresentação, estrutura e conteúdo.