Projeto Final

Publicação Eletrónica 2017/18

Ana Filipa Oliveira Ramos A74727

Ana Margarida Silva Machado A75088

Ana Regina Sousa A74753

2018-01-22 Primeira versão.

Palavras-chave:

XML schema, XML, stylesheet XSLT, XSLFO

Abstract

O presente relatório descreve a realização do projeto final desenvolvido na disciplina em epígrafe. Neste projeto, desenvolveu-se um XMLschema, assim como um documento em formato XML para posteriormento criar stylesheets em XSLT para geração de um output desejado tanto em formato HTML como em PDF.

Índice

Capítulo 1 Objectivos
Capítulo 2 XML Schema
Capítulo 3 Geração em HTML
Capítulo 4 Geração em PDF
Capítulo 5 Conclusão


1. Objectivos

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)
ÍndicePróximo

2. XML Schema

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.
AnteriorÍndicePróximo

3. Geração em HTML

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.
AnteriorÍndicePróximo

4. Geração em PDF

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.
AnteriorÍndicePróximo

5. Conclusão

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.
AnteriorÍndice

Bibliografia

1 Site W3schools: https://www.w3schools.com/xml/xsl_intro.asp (acedido pela última vez 10/01/2018)
2 Ramalho, José. Apontamentos das aulas. Universidade do Minho, 2018.
Índice