Tratamento de um Jornal Electronico em XML

Tratamento de um Jornal Electronico em XML

Trabalho prático de Processamento Estruturado de Documentos - MICEI 2002/03


Autores

ElizabeteDuarte
elizabete.m.duarte@telecom.pt - http://www.homepage.com

Orientadores

José C. L.Ramalho
jcr@di.uminho.pt - http://www.di.uminho.pt/~jcr/

Universidade do Minho
Departamento de Informática
http://www.di.uminho.pt

Junho de 2003





| Ínicio| Abertura| Prólogo| Índice| Fecho| Glossário| Bibliografia|
(c) copyright 2003 - Não é permitida a reprodução de conteúdos deste trabalho, sem autorização expressa do autor.







Dedicatória

Para quem soube estar sempre presente...

Agradecimentos

Especialmente à minha família: marido e filhos.

A todos os colegas que com as suas pertinentes opiniões ajudaram-me muito.

assinatura

| Ínicio| Abertura| Prólogo| Índice| Fecho| Glossário| Bibliografia|





Prólogo

O trabalho apresentado contempla um schema, um DTD, uma stylesheet, e a instância do schema em XML. A instância é um Jornal com informação variada tirada de alguns jornais disponíveis On-line.

O trabalho pretende definir uma estrutura espedita e funcional, passível de ser aplicada a documento informativo. Não é objectivo do trabalho criar uma implementação sistemática de todos os objectos possíveis, mas sim criar algumas utilizações mais comuns para exemplificar algumas potencialidades destas linguagens.

Ficam neste trabalho em aberto algumas ideias, e poderão ser aplicadas mais tarde, o facto de manter o documento anotado num formato compativel,exportável, a vários formatos e várias plataformas, garante qualquer tratamento no futuro, constituindo uma vantagem muito relevante.

Resumo

Com o presente trabalho pretende-se por em prática um conjunto de conceitos e ferramentas no âmbito do Processamento Estruturado de Documentos. Procedeu-se à elaboração de um documento informativo digital, jornal digital. Neste trabalho foi analisado um documento Jornal Digital sobre o qual foi criado:Um schema;O seu DTD correspondente; Uma instância do documento, XML, com base em jornais online e notícias variadas de forma a conseguir encontrar as situações que melhor retratam o documento e elevam as potencialidades desta forma do o tratar; E uma transformação XSL para transformação do texto XML numa página HTML

Abstract



| Ínicio| Abertura| Prólogo| Índice| Fecho| Glossário| Bibliografia|






Índice de Conteúdos

1. Introdução

1.1. Apresentação do caso de estudo

1.2. Motivação e Objectivos

2. Tratamento do Documento

2.1. O Schema do documento

2.2. Tipos complexos

2.2.1. Tentidade

2.2.2. Tparagrafo

2.2.3. Tlink

3. As transformações XSLT

3.1. Templates "by call"

3.2. Testes aos elementos facultativos

3.3. Glossário e Bibliografia

3.4. Geração do índice




| Ínicio| Abertura| Prólogo| Índice| Fecho| Glossário| Bibliografia|






1. Introdução

| Ínicio| Abertura| Prólogo| Índice| Fecho| Glossário| Bibliografia|

Este relatório documenta o trabalho desenvolvido no âmbito da disciplina de Processamento Estruturado de Documentos do Mestrado/Cursos de Especialização em Informática, servindo como elemento de avaliação opcional da referida disciplina.





1.1. Apresentação do caso de estudo

| Ínicio| Abertura| Prólogo| Índice| Fecho| Glossário| Bibliografia|

O objectivo do trabalho é a criação é o desenvolvimento de um sistema constituído por uma estrutura documental e de apresentação para um Jornal Electrónico.

Pretendia-se elaborar um documento em eXtended Markup Language (XML), instância de um jornal electrónico; a criação de um Document Type Definition (DTD) e de um Schema que suportassem o jornal electrónico e lhe conferissem significado definindo a estrutura do ficheiro XML; e a construção de uma Style Sheet XSLT para a transformação e geração de um ficheiro HTML para a visualização da instância criada.

Este relatório será processado sobre os trabalhos desta mesma cadeira mas do ano de 2002 criando um documento HTML para apresentação ao docente da cadeira.






1.2. Motivação e Objectivos

| Ínicio| Abertura| Prólogo| Índice| Fecho| Glossário| Bibliografia|

O XML oferece a possibilidade de anotar um documento num sistema de processamento de forma a tornar explicita a interpretação do mesmo. Na sua construção é efectuada uma análise à estrutura da informação e aos atributos que caracterizam o documento, são determinadas quais as funções de processamento que conferem o formato desejado de cada elemento e o documento fica criado com a inserção de etiquetas e anotações no mesmo.

A linguagem XSL é usada para especificar a transformação de documentos XML transformando-o noutro documento XML, HTML ou Texto.

No desenvolvimento dos diversos documentos, utilizou-se como ferramenta de suporte o pacote XML Spy (versão 5.3). Esta ferramenta é apropriada para o desenvolvimento de aplicações baseadas em XML, permitindo a produção e manutenção de documentos XML, SchemasXML, bem com o StylesheetsXSLT. Cobre as principais vertentes do XML, nomeadamente: edição e validação XML, edição e validação de DTD's e Schemas, edição e transformação XSL

A implementação deste projecto permitiu aplicar e desenvolver um conjunto de conhecimentos ministrados ao longo do curso, designadamente: estruturação de documentos em XML, produção de DTD's e Schemas para validação de documentos, construção e aplicação de transformações XSL a documentos XML







2. Tratamento do Documento

| Ínicio| Abertura| Prólogo| Índice| Fecho| Glossário| Bibliografia|

Adoptou-se um documento modelo para o jornal electrónico e partir daqui desenvolveram-se os suportes necessários para criar um documento estruturado anotado de forma a ser facilmente processado.

A análise documento permitiu concluir a organização da informação que contem:

Um elemento abertura: onde é colocada a informação global e relevante do jornal (Nome e a data em que é publicado);

Um elemento corpo: constituído pelo conjunto de secções e artigos;

Finaliza com um elemento Fecho: contem a informação referente à redacção, direcção e outra.





2.1. O Schema do documento

| Ínicio| Abertura| Prólogo| Índice| Fecho| Glossário| Bibliografia|

O Schema foi criado após uma análise do documento.

Toda a documentação detalhada do schema, pode ser consultada no link seguinte: Documentação do schema . Toda a documentação do Schema está anotada, pelo que se poderá obter mais informações no próprio Schema.

O esquema geral do Jornal, onde o elemento raiz para este tipo de documento é o jornal:

A definição do Schema

Schema geral do Jornal.
O Jornal é caracterizado por 3 elementos: abertura, corpo e Fecho. A abertura é constituída pelo titulo, identificador do nome do jornal, e pela data em que o jornal foi publicado. Tanto o elemento titulo como data são strings, poder-se-ia ter colocado o elemento data como data só que era muito mais restritivo pelo que se optou por não o fazer. , a abertura define os textos de prólogo e resumos, o corpo inclui as secções e dentro destas os parágrafos, e finalmente o fecho que define epílogo, glosssário e bibliografia.








2.2. Tipos complexos

| Ínicio| Abertura| Prólogo| Índice| Fecho| Glossário| Bibliografia|







2.2.1. Tentidade

| Ínicio| Abertura| Prólogo| Índice| Fecho| Glossário| Bibliografia|

A utilização de tipos complexos simplifica bastante a definição do XSD pois torna a estrutura mais abstracta podendo-se utilizar o mesmo tipo para diversos elementos. É este o caso de Tentidade, o qual foi utilizado da definição de autores, orientadores, instituições e editoras, por se tratar da mesma colecção de informação.

No elemento email, dentro de Tentidade foi usado em pattern para verificar a forma do sintáctica do email.

Tentidade

Tentidade, utilizado neste cado sob o elemento orientador.







2.2.2. Tparagrafo

| Ínicio| Abertura| Prólogo| Índice| Fecho| Glossário| Bibliografia|

Este elemento é provavelmente o mais importante do schema, pois define todos os possíveis conteúdos a incluir no documento. A figura seguinte esquematiza os elementos possíveis neste tipo complexo. Com esta estrutura é possível incluir os principais tipos de informação usados, permitindo uma análise de informação notável. O tipo é consituido por uma choice de vários dos elementos indicados, podendo inclusivé ser nulo, dando neste caso um parágrafo em branco.

Este tipo complexo é também muito utilizado, nomeadamente no prólogo, dedicatória, resumos, secções, epílogo, etc, tudo que contenha corpo e necessite de usar os sub elementos que contém.

Tparagrafo

Estrutura do tipo complexo: Tparagrafo.







2.2.3. Tlink

| Ínicio| Abertura| Prólogo| Índice| Fecho| Glossário| Bibliografia|

Mais um exemplo de reutilização. Este tipo complexo, serve também para caracterizar além de urls, as figuras, aproveitando a mesma estrutura.

Tlink

Estrutura do tipo complexo: Tlink. Exemplo sobre o elemento link.









3. As transformações XSLT

| Ínicio| Abertura| Prólogo| Índice| Fecho| Glossário| Bibliografia|

A solução aqui apresentada, por condicionamentos vários, não foi optimizada em termos de extensão de código. No entanto ficou claro, que muito mais se pode fazer com XSLT, sendo bastante útil para perceber como se trata de uma ferramenta potente, e extrapolável a diversos âmbitos.

De seguida, destacam-se algumas funcionalidades usadas na solução final.





3.1. Templates "by call"

| Ínicio| Abertura| Prólogo| Índice| Fecho| Glossário| Bibliografia|

Foram criados alguns templates que por não obedecerem à estrutura do documento, foram chamados via xsl: call template. Esta solução é interessante para o caso da definição do layout. Com ela pode-se facilmente alterar ou standardizar o aspecto das páginas.

Neste pequeno exemplo, servio para chamar o menu, e standardizar espaços de separação. Vejamos o exemplo seguinte:


	<xsl:template name="menu">
		<font size="1">|
	<a href="#inicio">Ínicio</a>|
	<a href="#abertura">Abertura</a>|
	<a href="#prologo">Prólogo</a>|
	<a href="#indice">Índice</a>|
	<a href="#fecho">Fecho</a>|
	<a href="#glossario">Glossário</a>|
	<a href="#bibliografia">Bibliografia</a>|
	</font>
	</xsl:template>

O template é chamado desde a instrução <xsl: call template name=menu"> em qualquer parte do código.






3.2. Testes aos elementos facultativos

| Ínicio| Abertura| Prólogo| Índice| Fecho| Glossário| Bibliografia|

Os elementos xsl: if teste, ou xsl: choose, são muito úteis neste caso, pois permitem-nos aplicar tratamento a elementos facultativos. O excerto de código seguinte indica o tratamento dado ao nome do autor na bibliografia, para o caso de ter ou não apelido.

					
	<xsl:template match="autores">
		<xsl:if test="autor/sobrenome">
			<xsl:value-of select="autor/sobrenome"/>
		<xsl:text>, </xsl:text>
		</xsl:if>
		<xsl:value-of select="autor/nome"/>
	</xsl:template>

Desta forma o apelido e a vírgula, só aparecem se o apelido existir.






3.3. Glossário e Bibliografia

| Ínicio| Abertura| Prólogo| Índice| Fecho| Glossário| Bibliografia|

Nestas aplicações, foram gerados os links, e os respectivos anchors nas entradas do glossário. Para facilitar a entrada de dados, não foi acrescentado nenhum ID no glossário, apenas se fazendo o link pelo acrónimo utilizado.

Desta parte, desta-se a utilização do xsl:sort para a ordenação do Glossário por ordem alfabética.

					
	<xsl:template match="glossario">
			<xsl:apply-templates select="itemglo">
			<xsl:sort select="nome"/>
			</xsl:apply-templates>
	</xsl:template>

Esta função apenas pode ser utilizada dentro de instruções xsl: for-each, ou como é o caso, dentro de xsl:apply-templates.






3.4. Geração do índice

| Ínicio| Abertura| Prólogo| Índice| Fecho| Glossário| Bibliografia|

A principal ferramenta utilizada na geração do índice foi a instrução {gerenate-id()} com a qual é gerado um identificador aleatório por cada nó seleccionado, sendo garantido que em cada passagem por esse nó, o ID é sempre o mesmo. Assim foi relativamente fácil construir o índice, tratando-se do layout e pouco mais.

No entanto teve de ser dada atenção aos contéudos que apareceram repetidos, pela aplicação do xsl:apply-templates recursivamente. Por essa razão, foram incluidas algumas linhas com templates vazios de modo a evitar esse problema.

Vejamos o código correspondente.

					
	<!-- Geração índice de conteúdos -->
	
	<xsl:template match="seccao" mode="indice">
		<a href="#{generate-id()}">
			<xsl:number level="multiple"/>
			<xsl:text>.  </xsl:text>
			<xsl:value-of select="titulo"/>
		</a>
		<br/>
		<xsl:apply-templates mode="indice"/>
	</xsl:template>
	<!-- retirar conteúdo das secções -->
	<xsl:template match="text()" mode="indice"/>

Repare-se na instrução xsl: template match="text()" justamente para eliminar os conteúdos de texto na geração do índice.








Epílogo


De uma forma geral, este trabalho foi uma agradável surpresa, ultrapassando largamente as espectativas criadas. Os contrangimentos habituais, limitam no imediato o aprofundamento dos conhecimentos na área, na certeza porém, de estar aberta a porta para a utilização da tecnologia em variadas aplicações no dia-a-dia, algumas delas já em estudo

O relatório em si, serviu antes de mais como instância do próprio trabalho, e pretendeu apenas salientar alguns pontos mais importantes, ao invés de estar a detalhar todas as funcionalidades indicadas.

Algumas ideias futuras passam por aplicar esta tecnologia à geração a armazenamento de notas técnicas num repositório de conhecimento, e desenvolver este schema e styleshhet de modo a contemplar mais conteúdos, com vista a sua utilização nas teses e pré-teses.

| Ínicio| Abertura| Prólogo| Índice| Fecho| Glossário| Bibliografia|





Glossário


CDATA: Bloco de um documento XML, onde a anotação é ignorada. Usado neste documento nas secções onde são apresentados excertos de código para exemplo.

EDI: Electronic Data Interchange

MICEI: Mestrado de Informática / Curso de Especialização em Informática

PED: Processamento Estruturado de Documentos

UM: Universidade do Minho

XML: Extended Markup Language

XSD: Extensible Stylesheet Definition

XSLT: Extensible Stylesheet Language for Transformations






| Ínicio| Abertura| Prólogo| Índice| Fecho| Glossário| Bibliografia|





Bibliografia


[dtid01] - Tidwell, Doug , XSLT, Mastering XML Tranformations , O'Reilly , 1º edição , O'Reilly & Associates, Inc , Sebastopol , Agosto 2001 , , 0-596-00053-7

[ped02] - Ramalho, José C. L. , Apontamento da cadeira de PED 2001/02 , Dep. Informática - Univ. Minho , Braga , pág. String , http://www.di.uminho.pt/~jcr/

[zvon] - Nic, Miloslav , XSLT Reference , www.zvon.org






| Ínicio| Abertura| Prólogo| Índice| Fecho| Glossário| Bibliografia|