Publicação Eletrónica de um Livro


Publicação Eletrónica 2017/2018

Margarida Santos Silva
Mariana Gomes Oliveira de Castro
Sónia Marisa Ferreira Faria
2018-01-21 | Entrega do Projeto

Palavras-chave:

XML , XSL , XSL Schema , Publicação Eletrónica, XSLT

Abstract

O presente relatório visa reportar todas as fases da publicação eletrónica de um livro, desde a análise do mesmo, com o intuito de perceber a sua estrutura, até à construção propriamente dita da publicação em formato digital. Este projeto envolveu o conhecimento e respetivo consolidamento das matérias abordadas na UC Publicação Eletrónica, nomeadamente as linguagens XML, XML Schema e XSL.
Assim sendo, foi primeiramente criado o XML Schema para definir os elementos que compõem o livro, bem como a sua relação hierárquica. Logo após criou-se a instância XML, que consiste em preencher os campos definidos na fase anterior com blocos de texto, imagens, entre outros. O passo seguinte consistiu em realizar duas stylesheets para associar ao contéudo, anteriormente preenchido, o formato pretendido, modificando o seu aspeto e dispondo-o no documento de modo desejado. Com estas duas stylesheets gerou-se assim um documento HTML e um documento PDF, que representam o objetivo final deste projeto.

Índice

Capítulo 1 Introdução
Capítulo 2 Fundamentos Teóricos
Secção 2.1
XML
Secção 2.2
XML Schema
Secção 2.3
XSL
Capítulo 3 XML Schema
Secção 3.1
Capa
Secção 3.2
Conteúdo
Secção 3.3
Estrutura complexa Tcorpo
Secção 3.4
Estrutura complexa Tpara
Capítulo 4 Stylesheet para geração de HTML
Capítulo 5 Stylesheet para geração de PDF
Capítulo 6 Conclusão



1. Introdução

Com o impacto das novas tecnologias foram surgindo novas oportunidades, das quais se pode destacar a publicação eletrónica. Esta surge assim como uma ferramenta fundamental nos dias de hoje para armazenar informação e tratá-la, dando-lhe o formato e aspeto desejável de forma eficiente. Noutros tempos esta tarefa seria mais lenta e acarretaria erros ao longo do tratamento da informação.
Contudo, é necessário dominar algumas técnicas de modo a realizar a publicação eletrónica, uma vez que o ato de publicar eletronicamente não conseguiste apenas em digitalizar ou redigir um documento através de um computador. Trata-se sim de estruturar o documento, recorrendo por exemplo a linguagens de anotação.
Assim sendo, surge no âmbito da UC Publicação Eletrónica o presente projeto, que visa explorar e avaliar os conhecimentos obtidos durante as lições teóricas e práticas acerca deste assunto.
É, portanto, pretendido neste trabalho prático a publicação eletrónica de um livro publicado em papel, intitulado A "IMPRENSA" o que ela diz, sôbre o NAZI (Canário Fadista) e o seu Canto.
De modo a orientar a execução deste projeto foram propostas várias etapas, sendo estas as seguintes:
  1. Análise da informação fornecida;
  2. Planeamento da edição em papel (PDF) e da edição em HTML;
  3. Especificação de um XML Schema para a publicação final;
  4. Criação da instância XML;
  5. Criação da stylesheet XSLT para gerar a publicação HTML;
  6. Especificação/Planeamento do XSLFO para a geração do PDF;
  7. Especificação da stylesheet XSLT para a geração do XSLFO;
  8. Redação do relatório em XML (com transformação para HTML).
Estas etapas foram realizadas ao longo do projeto, sendo os resultados apresentados nas secções seguintes.

Índice
Próximo

2. Fundamentos Teóricos

2.1. XML

O XML, abreviatura para Extensible Markup Language, é uma linguagem de anotação que permite armazenar dados num documento segundo uma estrutura definida através de marcações (tag's). Esta linguaguem, uma vez que permite a construção de documentos estruturados e que genéricos, facilita a troca de informação entre sistemas diferentes, bem como o seu tratamento, permitindo ainda que através de uma estrutura se criem vários ficheiros de modo eficiente. Um documento XML e uma página web criada através do XML são formados por anotações e dados, dados esses que na sua maioria serão blocos de texto. [1]

2.2. XML Schema

O XML Schema é também uma linguagem, cujo resultado é um esquema que irá definir a sintaxe do documento XML, abordado anteriormente. É nesse esquema que se definem as anotações pretendidas, bem como a sua relação hierárquica, formando assim a estrutura global pretendida. O esquema obtido não servirá apenas como base na construção do documento XML, mas também para o validar. [2]
Como alternativa ao XML Schema pode ser utilizado o DTD (Document Type Definition), que, de modo análogo, descreve formalmente a sintaxe do documento XML.

2.3. XSL

Uma vez que o XML Schema cuida apenas da estrutura do documento XML, é necessário usar o XSL, abreviatura para Extensible Stylesheet Language, que se encarrega de lidar com o aspecto, isto é, com a forma como os dados são apresentados.
A necessidade da utilização do XSL surge do facto de as tag's criadas não serem pré-definidas, tal como acontece no HTML, por isso não têm um estilo associado logo à partida.
O XSL é constituido por várias partes, entre elas o XSLT e o XPATH. O XSLT é uma linguagem cuja função é transformar documentos XML noutros documentos, por exemplo documentos em formato HTML ou PDF. Por sua vez, o XPATH é uma linguagem que permite a navegação através de documentos XML. O XSLT com recurso ao XPATH vai permitir construir um documento cujos elementos nele contidos são dispostos, ordenados, mostrados ou ocultados, segundo as 'templates' contidas nesse XSLT. [3][4]

Anterior
Índice
Próximo

3. XML Schema

Para a realização da publicação eletrónica do livro supracitado foi primeiramente necessário definir o seu XML Schema. Na construção do mesmo foi considerada a estrutura original do livro impresso, definindo assim a estrutura genérica do conteúdo deste.
Primeiramente considerou-se o livro dividido em 2 partes: capa e conteúdo, como se pode visualizar na Figura 1.


Figura 1: Subdivisão primária da estrutura do livro.

Para ajudar na construção de alguns elementos, que serão abordados posteriormente neste relatório, criaram-se Complex Types de modo a não repetir a construção das mesmas subestruturas de elementos penduradas em elementos diferentes. Este tipo de estrutura pode assim ser chamada várias vezes na estrutura principal anteriormente criada para atribuir ao elemento em que se encontra pendurada as caracteristicas nela contidas. Assim sendo, criaram-se o Tpara e Tcorpo que são exemplos dessas estruturas, estando representadas na Figura 1, anteriormente mostrada, e que representam a estrutura do parágrafo e a do corpo, respetivamente.

3.1. Capa

A capa é constituida por uma sequência de três elementos: o título, a imagem e a data. Em que o título e a data são do tipo string, isto é, são blocos de texto, enquanto que a imagem tem na sua constituição um atributo designado path que servirá para invocar a imagem apartir do caminho onde esta se encontra. É possível visualizar a estrutura idealizada na Figura 2.


Figura 2: Elementos estruturantes da capa.

3.2. Conteúdo

Por sua vez, o contéudo é constituido por uma choice entre dois tipos de recorte apresentados, podendo estes ser uma notícia ou uma canção. A Figura 3 representa a estrutura referida.


Figura 3: Elementos estruturantes do conteúdo.

Quanto à noticia, considerou-se esta como uma sequência dos elementos meta e corpo, em que o primeiro consiste no cabeçalho do recorte, contendo como subelementos o título do jornal, a data da publicação e a cidade, sendo que estes subelementos são todos de formato string
Nesta situação recorre-se ao Complex Type Tcorpo para definir o corpo, sendo que a estrutura definida no primeiro é então utilizada para definir a estrutura do último.
É possível visualizar a estrutura da notícia na Figura 4, abaixo apresentada.


Figura 4: Estrutura da notícia.

A estrutura da canção assemelha-se em tudo à da notícia, com exceção na construção do meta, uma vez que neste caso este elemento apenas é constítuido por uma sequência de título e autor, ambos campos string. Esta estrutura verifica-se na Figura 5.


Figura 5: Estrutura da canção.

3.3. Estrutura complexa Tcorpo

Como referido anteriormente, criou-se o Complex Type Tcorpo cuja função é auxiliar a construção de elementos que tenham a mesma estrutura, mas que estejam em locais diferentes do esquema global, permitindo assim a não repetição de código ao longo da construção do mesmo.
Assim sendo, esta estrutura foi utilizada na estrutura respeitante ao corpo, quer na noticia, quer na canção.
O Tcorpo é definido assim como sendo uma sequência de título e subtítulo campos de texto opcionais, seguidos da subestrutura informação e da imagem, que em tudo se assemelha com a já referida na Secção 3.1.
A subestrutura informação é, por sua vez, uma escolha (choice) que pode ser realizada infinitas vezes, entre os elementos estrofe, parágrafo e autor. O primeiro elemento é uma sequência de 1 ou mais versos que assumem as propriedades de um parágrafo definidas no Complex Type Tpara. Já o segunto elemento é também ele, tal como o verso do tipo Tpara. Enquanto que o último elemento é de texto.
É possível visualizar a estrutura referida na Figura 6, apresentada logo de seguida.


Figura 6: Estrutura complexa designada Tcorpo.

3.4. Estrutura complexa Tpara

Do mesmo modo criou-se o Complex Type Tpara utilizado como estrutura dos seguintes elementos: parágrafo e verso.
Esta estrutura é definida recorrendo a uma choice, que pode ser realizada infinitas vezes, entre os elementos b, i, lugar, nome, data e indicação, representados na Figura 7. Os quatro últimos elementos são de formato string, enquanto que os quatro primeiros representam subestruturas, abordadas já de seguida.


Figura 7: Estrutura complexa designada Tpara.

As subestruturas b e i, representadas na Figura 8, são similares, uma vez que são constituídas por uma sequência em que podem ser escolhidas múltiplas vezes o elemento i ou b (respetivamente)


Figura 8: Parte da estrutura complexa designada Tpara.


Anterior
Índice
Próximo

4. Stylesheet para geração de HTML

Com o objetivo de gerar a publicação HTML, mais precisamente um website, a partir do documento XML, foi criada a stylesheet XSLT. De forma a dar um aspeto diferente às páginas web, recorreu-se à utilização do "style" e às formatações oferecidas pelo "w3css".
Primeiramente foi criado um "xsl:result-document" que engloba o conteúdo para uma determinada página web. O URL da página é especificado a cada "xsl:result-document". Neste caso, a primeira página corresponde à capa,composta pelo título, pela data e pela imagem presente na subcapa do documento digitalizado. De seguida é apresentado parte do código correspondente à estruturação da capa.


Figura 9: Excerto do código relativo à elaboração da capa.

Num segundo momento, gerou-se outro "xsl:result-document" correspondente ao índice. Este é dividido em "Notícias" e "Canção", onde cada uma destas divisões engloba os links dos respetivos artigos, os quais irão redirecionar para a página de cada um destes artigos em questão.
No fim de cada página encontra-se uma barra de navegação, que permite ir para a capa ou para as páginas dos artigos, no caso de nos encontrarmos no índice, ou permite navegar pelos diferentes artigos e voltar ao índice, caso nos encontremos já numa página relativa a um artigo. De seguida é possível observar um excerto do código relativo à construção do índice.


Figura 10: Excerto do código referente ao índice.

De seguida, aplicou-se um "apply-templates" para o conteúdo do documento, o qual compreende as notícias e a canção, com o intuito de, subsequentemente, se determinar a formatação para cada um destes elementos.
Neste seguimento, foram criados dois templates, um para as notícias e outro para a canção. Cada um destes templates inclui um "xsl:result-document" de forma a que cada artigo apenas se encontre numa única página web (com um único URL) a ele destinada. De seguida é apenas apresentado o código correspondente a cada notícia, uma vez que a canção é estruturada de forma semelhante.


Figura 11: Código respetivo à estruturação da página web de uma notícia.

Uma vez que o corpo de um artigo de notícia é semelhante ao de uma canção, apenas se gerou um templates geral para o "corpo". Este é constituído por uma tabela de duas células, onde a primeira é incorporada pela imagem do artigo e a segunda integra o texto presente na imagem e, caso existam, o título e subtítulo correspondente. É ilustrado de seguida o código correspondente a este templates.


Figura 12: Código relativo à estruturação do corpo de cada artigo.

Por fim, foram criados os templates para a informação, imagens, parágrafos, estrofes, versos, entre outros, com o objetivo de dar forma a esse conteúdo.

Anterior
Índice
Próximo

5. Stylesheet para geração de PDF

De modo a converter o documento XML em PDF, foi especificada a stylesheet XSLT para a geração do XSLFO.
Inicialmente, definiu-se que a primeira página deste documento iria corresponder à capa, composta pelo título do livro, a imagem que estava na subcapa do livro digitalizado e a data. A segunda página diria respeito ao índice, e cada página das restantes iria compreender cada artigo do livro.
Desta forma, procedeu-se ao desenvolvimento da stylesheet. É possível observar a sua parte inicial na figura a seguir apresentada.


Figura 13: Excerto de códifo relativo à estruturação das páginas do PDF.

Como se pode verificar, foram especificadas as formatações da capa e do índice, e aplicado um "apply-templates" para, posteriormente, se especificar a formatação do conteúdo. O elemento "fo:page-sequence" permite iniciar uma nova página e indicar o que se pretende em cada uma. Recorrendo ao elemento "fo:block", são criadas áreas retangulares que englobam um certo conteúdo no seu interior.
Note-se que ao longo da construção do documento, foram definidos vários elementos que permitem dar o aspeto pretendido às páginas, como por exemplo aplicar espaçamentos, mudar o tipo e o tamanho da letra, alterar o tamanho de imagens, etc.
Na figura apresentada de seguida, é possível verificar como foi gerado o índice, dividido em "notícias" e "canção", visto que o livro tem várias notícias e uma canção no final.


Figura 14: Estruturação do índice.

Como se pode constatar, é gerado um id para cada notícia e para cada canção, para apresentar a página de cada um e para criar um link de maneira a ser possível ir diretamente para o artigo desejado. Desta maneira, na lista de conteúdos aparece o nome do jornal e a data de cada notícia, o título da canção, e o respetivo número de página.
De seguida, criou-se o template da notícia, apresentado na figura abaixo. Note-se que foi também criado de maneira análoga o template da canção, pelo que não vai ser aqui exibido.


Figura 15: Estruturação da notícia.

Seguidamente foi especificado o template do "corpo" (que pertence tanto às notícias como à canção), demonstrado na figura seguinte.


Figura 16: Estruturação do corpo das notícias e da canção.

Cada corpo é composto por uma tabela com uma linha, sendo que esta tem uma célula à esquerda com o recorte da notícia/canção e uma célula à direita com a transcrição do texto da imagem.
Subsequentemente, foram elaborados os restantes templates, nomeadamente para as imagens do "corpo", informação, estrofe, parágrafo, verso, etc.

Anterior
Índice
Próximo

6. Conclusão

Com a realização deste projeto assimilaram-se e aprofundaram-se os conhecimentos sobre as linguagens nele usadas, nomeadamente o XML, o XML Schema e o XSL.
Através deste projeto foi possível compreender o papel que a publicação eletrónica desempenha nos dias de hoje, sendo que esta agiliza o processo de publicação em formato digital e sem ela este seria muito mais demorado e não seria de modo algum automático.
Os objetivos inicialmente planeados foram cumpridos, obtendo assim como resultado a publicação em formato HTML e em formato PDF, obtida através das stylesheets construidas para o efeito.
Em suma, o trabalho realizado poderá servir, num futuro próximo, de exemplo para a realização de outras publicações inseridas, por exemplo, em contexto académico.

Anterior
Índice



Bibliografia

[1] ROSS,Timothy. XML - Managing Data Exchange. 2007.
[2] BIRON, Paul V., et al. XML schema part 2: Datatypes. 2004.
[3] XSL(T) Languages. Acedido em 12/11/2018 através de https://www.w3schools.com/xml/xsl_languages.asp.
[4] CLARK, James. XSL Transformations (XSLT). W3C Recommendation 16 November. 1999.


Índice