Este projeto tem como objetivo principal o planeamento e respetiva criação da edição
em formato PDF
e em formato HTML (Hypertext Markup Language) de um livro pessoal de recortes de imprensa.
Os objetivos de formação genérica incluem a pesquisa, análise e selecção de
informação, o treino na resolução de problemas, o desenvolvimento da
capacidade de análise e o desenvolvimento da capacidade de comunicação escrita.
Os objetivos de formação específica incluem: a análise da especificação e do
problema, o desenvolvimento da instância XML( Extensible Markup Language), criação da stylesheet XSLT (Extensible Stylesheet Language Transformations) para gerar a publicação HTML e
criação da stylesheet XSLT para a geração do XSLFO (XSL Formatting Objects)
Um XML schema trata-se de uma linguagem de anotação que permite declarar elementos
e atributos, seguindo regras gramaticais, para definir num documento XML.
Neste projeto, após uma análise da informação fornecida, desenvolveu-se um documento
XML schema. Para tal, criou-se dois elementos (livro e imagem) e um
Complex Type (Tpara) (Figura
1).
Sendo que este último define um tipo complexo, ou seja, define um elemento XML
que contém outros elementos e/ou atributos.

Figura 1: Ilustração dos elementos livro e imagem e do complex type.
Primeiramente, definiu-se o elemento
livro (Figura
2) como uma sequência de elementos: corpo, imagem, capa e contracap. Esta estrutura
tem como base a estrutura genérica
de um livro. É de salientar que se considera que o elemento
imagem pode não existir, sendo definido que o número minimo de ocorrências é zero. Como
o este elemento (Figura
3) é utilizado em vários elementos, colocou-se como um elemento global, sendo referenciado
sempre que utilizado noutros elementos, como se pode observar pelas figuras 2
e 3, trata-se de um elemento do tipo
string e contém um atributo
url também do tipo
string
para representar o diretoria da imagem pretendida.

Figura 2: Ilustração do elemento livro.

Figura 3: Ilustração do elemento global imagem.
Relativamente aos elementos filhos do elemento
livro, o corpo (Figura
4) é definido por uma sequência de uma ou mais notícias. Posteriormente, o elemento
notícias (Figura
5)
contém um atributo do tipo
ID, que identifica exclusivamnete uma dada notícia e por uma sequência dos seguintes
elementos: cabecalho, titulo,
subtitulo e conteúdo. Sendo que cada sequência pode conter um ou mais conteúdos.
Os elementos
titulo e
subtitulo são do tipo
string. O elemento
cabecalho é definido por uma sequência
de elementos (Autoria, Data e Local). Os elementos
Autoria e
Local são do tipo
string, o elemento
Data é composto por três elementos (dia, mes e ano) todos eles do tipo
string. Relativamente ao elemento
conteúdo, composto
pelo elemento imagem (referenciado pelo elemento global) e por o elemento parágrafo.

Figura 4: Representação do elemento corpo.
O elemento
parágrafo é do tipo complexo, neste caso é um
complex type Tpara (Figura
5).
Este tipo é definido por uma
choice, ou seja, não tem uma ordem definida como uma sequência.
Neste caso, conseiderou-se que pode ter todos os elementos ou nenhum, sendo o número
minimo de ocorrências da
choice zero e o máximo infinito.
Este
complex type é composto pelos elementos:
b (para representar o negrito),
nome (tipo
string),
sitio (tipo
string),
cronologia (tipo
string),
br (que contem os elementos nome, sitio e cronologia para permitir colocar partes de
parágrafo em versos e que estes versos possam possuir nomes, lugar e datas)
i (representar os itálicos). Tanto no elemento
b e
i são compostos por os elementos
xref,
iref,
nome,
sitio e
cronologia. O primeiro representa referências externas
e o segundo referências internas, sendo que cada elemento é definido por um atributo
url e
refslide, respetivamente. É de salientar que para permitir que palavras a negrito
possam estar em itálico e vice-versa, foi necessário no elemento
b colocar o elemento
i, assim como no elemento
i colocar o elemento
b.
O elemento
parágrafo é do tipo conteúdo misto, uma vez que pode conter elemntos, mas também texto livre.

Figura 5: Representação o complex type Tpara.
Por fim, os restantes elementos filhos do elemento capa e contracap estão definidos pelos mesmos elementos, sendo eles editora, título, subtítulo, data
e imagem.
Estes elementos, exceto a imagem que referência um elemento global, são do tipo
string.
Na geração da edição em HTML, desenvolveu-se um website.
Para tal, definiu-se a seguinte estrutura: página principal (index.html) com a
informação relativa ao título, subtitulo,
data e uma ligação para página com o índice de capítulos (cap.html). Posto isto,
agrupou-se as notícias por editoras com uma hiperligação
para a página da respetiva notícia com o seu conteúdo e uma imagem da notícia
original. Em cada página criou-se uma barra de navegação, permitindo aceder à próxima
notícia ou voltar para a anterior, assim como
retroceder para o índice.
Para a geração do website recorreu-se ao elemento
result-document, que permite gerar vários documentos de saída de um documento de origem usando XSLT,
sendo necessário um
result-document para a página principal, outro para a página do índice com os capítulos e outro para
gerar cada página de notícia, como se pode observar pelos excertos de código seguinte.
[1]
<xsl:result-document href="website/index.html">
<xsl:result-document href="website/cap.html">
<xsl:result-document href="website/noticia{count(preceding-sibling::noticias)+1}.html">
Nas Figuras
6 e
7 pode-se observar a página respetiva ao índice de capítulos e outra com um exemplo
de uma página de uma notícia.

Figura 6: Ilustração da página de capítulos.

Figura 7: Ilustração de um exemplo de uma Página de notícia.
O XSLFO (Figura
8) trata-se de uma linguagem de marcação baseada em XML que permite especificar detalhadamente
as informações de paginação,
layout e estilo que se aplicam ao seu conteúdo. A marcação XSLFO é bastante complexa e detalhada
e virtualmente a única maneira prática de produzir um arquivo
XSLFO é recorrer ao XSLT para produzir um documento de origem.
O modelo de formatação do XSL define um conjunto de áreas retangulares (caixas)
onde é colocado o conteúdo.
Este conteúdo, como texto, imagens, entre outros, é formatado nestas caixas e
depois convertido no formato de saída desejado.
[2]
Para a geração da edição PDF, teve-se que definir o
layout da página,sendo necessário
definir várias geometrias que serão aplicadas às diferentes páginas.

Figura 8: Ilustração do XSLFO.
Neste projeto decidiu-se desenvolver também um índice de capítulos, agrupando as notícias
por editora. Sendo que cada notícia contém um link (interno) para o sitio do
documento que contém a notícia pretendida, tendo-se colocado uma notícia por página.
Cada notícia está definida pelo seu conteúdo, uma imagem com a notícia original e
informações relativas aos lugares, nomes e
cronologia presentes nessa notícia. Colocou-e ainda um marcador "Voltar ao Ínicio"
para voltar à capa do livro.
Tal como esperado, o desenvolvimento do projeto possibilitou uma aprendizagem
acerca
da abordagem a ter perante um trabalho que se poderá caraterizar como ambíguo,
uma vez que pode
ser expresso de diferentes formas, apesar de o conteúdo ser o mesmo.
Para além disso, permitiu também uma pesquisa informativa e consequente utilização
de CSS, assim como
dos elementos utilizados, tanto no XSLT como no XSLFO.
De um modo geral, e tendo em conta o cariz formativo deste trabalho, considera-se
que todos os
objetivos foram cumpridos.