Dossier de Disciplina

Dossier de Disciplina

Linguagem XML para especificação de um Dossier


Autores:

Cátia Vilhena
N.º 30707
LMCC
catv@portugalmail.com
Marlene Amorim
N.º 28171
LMCC
marlene_amorim@aeiou.pt

Orientadores:

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

Instituição:

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


3 de Dezembro de 2004





| Ínicio| Abertura| Prólogo| Índice| Fecho| Glossário| Bibliografia| Apêndices|
(c) copyright 2002 - Não é permitida a reprodução de conteúdos deste trabalho, sem autorização expressa do autor, no entanto a título promocional estão abertas condições negociáveis para determinadas partes do conteúdo :-)







Agradecimentos:

Agradecemos aos nossos pais e todos os entes queridos que nos aturaram durante o período de desenvolvimento deste trabalho. Referenciando ainda a contribuição do docente da disciplina, José Carlos Ramalho, pela sua persistência e por possibilitar a realização deste projecto em prol do exame.







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





Prólogo

O trabalho apresentado contempla schemas, stylesheets, instâncias e interfaces em XML.

O trabalho pretende definir uma estrutura espedita e funcional, passível de ser aplicada a dossiers de disciplina. 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 a potência destas linguagens.

Ficam neste trabalho em aberto algumas ideias, a serem aplicadas mais tarde , porque na verdade o facto de manter o documento num formato exportável para vários formatos, para várias plataformas, e anotado, garante qualquer tratamento no futuro, constituindo uma vantagem muito importante a ter em conta.

Resumo

Este projecto, Dossier de Disciplina, tem como objectivo a criação de uma linguagem XML, para especificação de um dossier de disciplina, bem como a construção de stylesheets que permitam a geração da versão HTML e da versão PDF (recorrendo a uma especificação XSL-FO) a partir das fontes XML especificadas.

Pretendemos que a linguagem criada seja flexível de modo a permitir ao utilizador personalizar os documentos que pretender desenvolver.

Todo o projecto foi desenvolvido segundo a seguinte cronologia: inicialmente, foi analisado o problema proposto e desenvolvido o Schema para a especificação da linguagem.

De seguida, foram projectadas stylesheets capazes de gerar a versão HTML e a versão PDF a partir das fontes XML especificadas.

A execução deste trabalho permitiu ter uma maior noção do que é a linguagem XML e todos os elementos que de certo modo a rodeam.

O desempenho prestado por esta linguagem torna-se extremamente útil dado que permite melhorar a satisfação dos utilizadores devido ao facto de ser extensível às suas opções.

Abstract

This project, Dossier de Disciplina, has as purpose the creation of a XML language, for a dossier specification, as well as the stylesheets construction that allows the generation of the HTML version and PDF version, from the XML sources specified.

We want the language created to be flexible, so that the user can personalize the documents that pretend to develop. All the project was developed by the follow chronology: in the beginning, was analysed the purposed problem and implanted the Schema for the language specification.

Then was projected stylesheets able to generate the HTML version and the PDF version from the XML sources specified.

The execution of these work allowed a major notion than the XML and every elements, which involve it in certain way. The useful performance by this language becomes extremely useful, because it allows a better satisfaction by the users, due to be extensible to its options.

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






Índice de Conteúdos

1. Estrutura do Relatório 2. Introdução ao XML 3. Apresentação do Projecto


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






1. Estrutura do Relatório

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

Este relatório é constituído por três capítulos, acrescidos ainda do Epílogo, da Bibliografia, do Glossário e dos Apêndices. A seguir descreve-se do que trata cada parte do relatório.

No capítulo 2, Introdução ao XML, fazemos uma breve introdução ao XML;

No capítulo 3, Apresentação do Projecto, começamos por fazer uma síntese sobre o trabalho, passando de seguida à contextualização (onde se refere o contexto no qual o trabalho efectuado se encontra inserido), apresentação do caso de estudo (onde se apresentam os conceitos que serviram de ponto de partida para a elaboração do trabalho, bem como o a sua interacção, fazendo uma análise detalhada).

Neste capítulo falamos, ainda, acerca do Schema (descrevemos em pormenor todos os detalhes constantes no schema elaborado), sobre a instância criada, sobre as transformações XSLT (podemos visualizar algumas fracções de código presentes nas stylesheet's, efectuando uma descrição sucinta) e sobre a interface desenvolvida para os utilizadores;

No Epílogo, faz-se uma síntese do relatório, onde se reflecte o estado do trabalho final, indicando sugestões que se poderão efectuar além do que já se fez.

Por fim, são apresentadas as referências bibliográficas e WWW que suportam este relatório, e no Glossário, está incluída toda a informação dos termos técnicos utilizados, para uma melhor compreensão do relatório e do projecto desenvolvido; na secção dos Apêndices é permitido o acesso aos links para as aplicações desenvolvidas no projecto.







2. Introdução ao XML

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







2.1. Visão Geral do XML

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

Este primeiro capítulo faz uma pequena introdução ao XML.

O XML é um conjunto de regras para definir tags semânticas que identificam as diferentes partes de um documento. É uma meta markup language que define uma sintaxe usada para definir outras linguagens de marcação estruturadas, semânticas e de domínio específico.

XML não é apenas uma linguagem de marcação como o HTML, uma vez que o HTML é um conjunto fixo de tags que descrevem um número fixo de elementos.

O XML é uma linguagem na qual construímos as tags que precisamos, tags essas que devem ser organizadas de acordo com certos princípios gerais, sendo elas bastante flexíveis no seu significado.

As tags que criamos podem ser documentadas num DTD. Por exemplo, o MOL.DTD na Chemical Markup Language (CML) descreve um vocabulário e uma sintaxe para ciências moleculares: química, cristalografia, físicas de estado sólido, e outras. Ela inclui tags para átomos, moléculas, ligações, espectro, e outros. Este DTD pode ser partilhado por muitas pessoas diferentes no campo de ciências moleculares. Existem outros DTD que estão disponíveis para outros campos.

O XML define uma meta sintaxe que algumas linguagens de marcação de domínico específico como MusicML, MathML e CML devem seguir. Se uma aplicação entende esta meta sintaxe, ela automaticamente entende todas as linguagens contruídas a partir desta linguagem. Um browser não precisa de conhecer antecipadamente cada uma das tags que poderiam ser usadas pelas centenas de difentes linguagens de marcação.







2.2. Linguagem derivada do SGML

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

O XML é um subconjunto do SGML, compreendendo todas as suas potencialidades designadamente a possibilidade de poder estruturar todo o tipo de dados. Por conseguinte, cada documento estruturado em XML segue as regras do SGML. Tal como o SGML, o XML é uma linguagem metadata, estruturada em etiquetas, recorrendo a DTD ou Schemas para definir a sua semântica.

O SGML formaliza a estrutura de um documento para obter a portabilidade do mesmo, permitindo que um dado formato de um documento seja específico ao domínio em questão. O SGML é muito poderoso, mas também muito complexo, o que o torna difícil de utilizar. O objectivo da criação do XML, foi retirar o que havia de bom no SGML e torná-lo o mais simples possível. Para uma melhor compreensão do tema abordado recomendados a leitura do livro referenciado Anotação Estrutural de Documentos e sua Semântica , que a nosso ver está muito bem escrito.







2.2.1. Schema versus DTD's

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

A linguagem XML-SCHEMA é muito mais poderosa que as antigas DTDs no que concerne a:







2.3. O que é o XML?

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

O XML é uma ferramenta que rapidamente ganhou preponderância no mundo da internet. É uma ferramenta extremamente poderosa no que respeita à gestão, organização e visualização de bases de dados textuais.

É um standard que descreve a estrutura e conteúdo de informação. Descreve o conteúdo e a estrutura lógica de como um conteúdo se deve agregar, mas não a maneira como é representada e/ou deve ser apresentada no browser. Começou a ser usado para que, documentos massivamente estruturados pudessem ser usados na Internet.

A flexibilidade do XML provém da possibilidade de transportar qualquer tipo de dados, mantendo-os estruturalmente coesos e inteligíveis, como binários através da estrutura markup


 tag value tag 

Devido a esta estrutura é também possível combinar num mesmo documento vários objectos com tipos de dados diferentes.

Se bem que tenhamos a tendência de associar e de comparar o XML com a função delegada ao HTML actualmente, como formato de dados na web, o XML, como formato de dados universal que se quer, ultrapassa largamente o âmbito dos browsers, podendo ter implicações bem mais globais. Assim, exemplos de ocumentos XML podem ser transações de e-commerce, grafismos vectoriais, equações matemáticas, API's de servidores, objectos de meta-data e virtualmente, tudo o que tenha representação estruturada.

Para a visualização e interpretação de documentos em XML é por vezes necessário utilizar a linguagem XSL. É essencial para quem pretende criar visualizações distintas e com formatos diferentes da mesma informação.







2.3.1. XSL

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

O XSL é uma linguagem de folhas de estilo. Um conjunto de instruções destinadas à visualização. Divide-se em duas partes, uma para transformar o documento XML noutro tipo de documento e a outra para definir objectos de formatação para apresentação gráfica:

O XSL é especialmente conhecido através da sua linguagem de transformação XSLT. É com este tipo de aplicação que o XSL está implementado nos browsers www utilizados na Internet. O XSLT é uma linguagem XML que respeita as regras de bem formado e válido. Define:

Os documentos XML são hierárquicos, o que quer dizer que podem ser vistos como uma árvore onde cada nível possui vários elementos. O XSLT tem definidas transformações que podem abarcar um elemento, um ou vários níveis. A aplicação XSLT percorre o documento, verificando para cada nível se existe uma transformação associada. Caso exista ela é aplicada. A escolha dos elementos a transformar é feita através de operadores de selecção e de pattern matching.







2.4. Potencialidades

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

O HTML permitia uma comunicação inter-plataforma/universal mas com a particularidade de só poder ser descodificada semanticamente por humanos (ex.: uma factura online e uma biografia pessoal seriam a mesma coisa perante uma máquina), se bem que pudesse ser catalogada artificialmente mas nunca de maneira 'inteligente' . Poder-se-á chamar a esta característica a associação de meta dados às tags markup.

Com a chegada do XML, qualquer campo pode significar o que quer que seja, tendo a certeza de que um parser XML a entenderá como um humano. A isto acresce o facto de ser uma linguagem extensível, o que significa que perante novas necessidades, podem ser facilmente acrescentados ao standard lexical novas tagsXML. Há ainda a vantagem de abolir todo o mapeamento de representação de estruturas OO (ex.: UML ou Java).

É um standard normalizado? Apesar do W3C ter ratificado a especificação 1.0 em Fevereiro de 98, a natureza do XML é poderosa ao ponto de cada um lhe especificar um vocabulário standard próprio.

No que respeita ao e-commerce, a explosão de potencialidades é propícia a que na emergência da conquista de mercado de software para este campo, várias sejam já as propostas de 'dialectos' XML. É do mesmo modo necessário chegar a um acordo no que respeita às tags utilizadas assim como os níveis de possíveis de processamento sobre as tags O Internet Explorer 5.0 já vem equipado com parser XML assim como o Netscape Navigator 4.7 e 5.0.







2.4.1. Utilização no Mundo Real

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

Apesar de recente, tem já hoje grande implementação na área das tecnologias de informação, marcando presença em grande parte dos sistemas baseados em tecnologias web e que tenham sido implementados recentemente.

Se navegarmos pela web encontramos frequentemente exemplos de implementação de soluções XML, especialmente se o fizermos tentando procurar sites que realizem operações bancárias, leilões on-line ou pesquisa indexada de documentos.

Um dos exemplos mais divulgados é o do comércio electrónico. A maior parte das soluções de e-commerce implementadas em ambientes web, utilizam precisamente o XML. O objectivo destas aplicações é a integração de sistemas e tecnologias diversas, com apenas uma coisa em comum: a utilização do XML como linguagem de comunicação.

Também no mundo empresarial esta tecnologia é utilizada, por exemplo, para realizar acções que se repetem periodicamente, como é o caso dos relatórios estatísticos, em que o relatório em si, só é produzido uma vez em XML, depois é visualizado no meio que for desejado, qualquer que ele seja.

O XML trás igualmente valor acrescentado aos portais na medida em que pode ser utilizado para seleccionar conteúdos, sendo possível a personalização de uma página em função do perfil do utilizador, através de folhas de estilo ou por aplicação de filtros na pesquisa na base de dados.

No contexto das bibliotecas digitais, a utilização desta ferramenta é, seguramente, um passo importante numa nova estruturação e organização do conhecimento e da difusão da informação.







2.5. Vantagens do XML

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

  1. A XML é extensível

  2. Os documentos XML são auto-descritivos

  3. Apesar da sua simplicidade, a XML permite criar estruturas bastante complexas

  4. A XML é extremamente flexível

  5. A XML permite efectuar a validação de documentos (DTD, XML-SCHEMA)

  6. O conteúdo de um documento XML pode ser facilmente manipulado pelas aplicações de software (APIs DOM e SAX)

  7. A XML tem uma natureza metalinguística

  8. A XML é um padrão aberto

  9. O conteúdo de um documento XML está separado da sua apresentação

  10. Um documento XML pode ser pesquisado de formas não previstas







2.6. Conclusão

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







3. Apresentação do Projecto

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







3.1. Introdução

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

Pretende-se com este trabalho ter um primeiro contacto com a área da linguagem XML, nomeadamente com os problemas inerentes à sua implementação, tais como o desenvolvimento de Schemas e Stylesheets para a geração de outras versões de código, por exemplo HTML e PDF.







3.2. Contextualização

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

Este relatório tem como objectivo descrever o trabalho prático realizado no âmbito da disciplina de Processamento Estruturado de Documentos, leccionada no 5º ano da Licenciatura em Matemática e Ciências de Computação, cujo tema é Dossier de Disciplina.







3.3. Apresentação do Caso de Estudo

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

Neste projecto, pretende-se desenvolver uma aplicação XML que sirva de suporte à criação e manutenção de dossiers de disciplina.

A primeira fase do projecto tem como objectivo final a elaboração dum XML Schema para este tipo de dossier e da respectiva documentação. Começamos por efectuar uma análise aprofundada de vários exemplos de dossiers de disciplina na Internet para melhor nos inteirarmos do problema, de forma a seguir com a especificação do Schema, pois este tem de conter toda a informação possível existente neste tipo de dossiers, de modo a permitir a criação de dossiers de disciplina os mais completos possíveis. Procedemos também ao levantamento de todos os elementos informativos referentes a um dossier junto da Dona Helena da secretaria do DI, de maneira a conhecer os elementos indispensáveis dum dossier. Aí foram-nos apresentados vários exemplos de dossiers de disciplina, nomeadamente um dossier da disciplina de SDSD devido a sua qualidade em termos de conteúdo e de apresentação.

O Schema apresentado teve origem na análise descrita e foi validado com o docente. Toda a documentação detalhada do Schema pode ser consultada a seguir.







3.4. Acerca do Schema

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

O Schema para dossiers (dossier.xsd) foi construido modularmente, isto é, importa três Schemas externos em que o primeiro foi desenhado para bibliografias (bibliografia.xsd), o segundo para programas (programa.xsd) e o ultimo para texto livre (texto.xsd). O motivo que nos levou a construir o Schema para dossiers modularmente é a possivel reutilização dos Schemas para programas e bibliografias para outros tipos de documentos e não exclusivamente para dossiers de diciplina. Assim, as definições do programa e da bibliografia nos dossiers de disciplina são definições genéricas. Quanto ao Schema texto.xsd, este é importado não só pelo Schema principal dossier.xsd como pelos Schemas externos programa.xsd e bibliografia.xsd, pois estes partilham a mesma definição do texto livre, isto é, usam a mesma definição para parágrafos, listas, tabelas, imagens, etc.







3.4.1. Schema para texto livre

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

O Schema para texto livre tem um NameSpace associado com o valor: http://xml.di.uminho.pt/PED2004/texto e pretende definir informação textual livre.

Assim, o tipo complexo para texto livre (Ttexto) consiste numa sequência de um ou mais parágrafos (parágrafo) definidos como elementos globais.



TAD para texto livre

TAD para texto livre


Um parágrafo (parágrafo) consiste em texto simples aleatoriamente "misturado" ou não com os elementos globais seguintes:



Elemento parágrafo

Elemento parágrafo








3.4.2. Schema para programas

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

O Schema tem um NameSpace associado com o valor: http://xml.di.uminho.pt/PED2004/programa.

O elemento raiz do Schema para programas é programa. Um programa está dividido em uma ou mais secções (secção). Cada secção tem um atributo id e é definida como sendo elemento global. As secções contém um título (título) e um corpo organizado numa mistura de subsecções (secção), parágrafos (parágrafo) ou listas (lista). A descrição dos parágrafos e das listas é importada do Schema para texto livre.



Elemento programa

Elemento programa




Elemento secção

Elemento secção








3.4.3. Schema para bibliografias

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

O Schema tem um NameSpace associado com o valor: http://xml.di.uminho.pt/PED2004/bibliografia.

O elemento raiz do Schema para bibliografias é bibliografia. Uma bibliografia está organizado em uma ou mais entradas bibliográficas (bibitem), que contém os elementos informativos seguintes: a chave do livro (chave), o título do livro (título), os autores do livro (autores) descritos como lista de um ou mais autor (autor), opcionalmente o número da edição do livro (edição), o nome da editora (editora), opcionalmente o código ISBN do livro (ISBN), a data de edição do livro (data), e também, opcionalmente, o endereço url do livro (endereço) e um resumo descritivo do livro (resumo). Os endereços (opcionais) das entradas bibliográficas são referências externas descritas através dos atributos url e legenda, isto é, são do tipo complexo Txref importado do Schema para texto livre. O resumo é texto livre, isto é, é do tipo complexo Ttexto definido no Schema para texto livre. As entradas bibliográficas têm um atributo id para poderem ser referenciadas e um atributo tipo que indica o tipo de bibliografia ao qual a entrada pertence (TipoBibliografia), i.e. bibliografia de tipo essencial ou complementar.



Elemento bibliografia

Elemento bibliografia




Elemento bibitem

Elemento bibitem








3.4.4. Schema principal para dossiers de disciplina

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

O Schema para dossiers reconhe como válidas instâncias de dossier, programa e bibliografia, uma vez que estes elementos são definidos como globais no Schema, e tem associado um NameSpace com o valor: http://xml.di.uminho.pt/PED2004/dossier.

O elemento raiz do Schema é o dossier.

Um dossier de disciplina tem uma área reservada à apresentação da disciplina (apresentação), o programa detalhado da disciplina (programa), o sistema de avaliação da disciplina (avaliação), a bibliografia da disciplina (bibliografia), o material pedagógico da disciplina (material-pedagógico) e os sumários da disciplina (sumários), que passaremos a explicar de seguida.



Elemento dossier

Elemento dossier


a) Apresentação

Na apresentação da disciplina constam a identificação da disciplina (identificação), o historial da disciplina (historial), i.e. um breve enquadramento da disciplina no contexto do curso, a identificação da equipa docente da disciplina (equipa-docente), a identificação dos turnos leccionados na disciplina (turnos), um resumo dos objectivos/resultados que se pretendem atingir com a disciplina (objectivos) e da metodologia seguida para os atingir na leccionação da disciplina (metodologia), e por fim os requisitos da disciplina (requisitos). É de salientar que as áreas relativas a metodologia e aos requisitos da disciplina são de carácter facultativo.



Elemento apresentação

Elemento apresentação


  • Relativamente a identificação da disciplina, esta deve conter os elementos informativos seguintes: a designação da disciplina (designação), o ano lectivo (ano-lectivo) referente ao dossier constituído por dois anos sequenciais (ano), o semestre (semestre) em que a disciplina é leccionada dentro do ano lectivo em causa caso o regime da disciplina seja semestral, o departamento ao qual pertence a disciplina (departamento), a escola ao qual pertence o departamento da disciplina (escola), a instituição na qual a disciplina é leccionada (instituição), a área científica da disciplina (área-científica), o docente responsável pela disciplina (responsável-ref), as diferentes turmas da disciplina (turmas) descritas como uma lista de uma ou mais turmas (turma), o regime anual ou semestral da disciplina (regime), a escolaridade da disciplina (escolaridade) organizada em uma ou mais aulas (aula), e as unidades de crédito da disciplina (unidades-crédito).

    A informação relativa ao departamento, escola e instituição da disciplina é do tipo complexo Tentidade, em que constam os elementos informativos seguintes: o nome da entidade (nome), e opcionalmente, o url (url) e o logo (figura) da entidade. O url é uma referência externa e o logo é uma imagem; estes elementos são descritos respectivamente pelos tipos Txref e Timagem importados do schema para texto livre.

    Na informação relativa a cada turma constam o curso ao qual é leccionada a disciplina (curso), o ano do curso em que a disciplina se integra no plano de estudos (ano-curso), a classificação como obrigatória ou opcional da disciplina perante o curso (tipo-disciplina) e o código da disciplina para o curso (código-disciplina).

    A informação relativa a cada aula na escolaridade da disciplina consiste na associação do número de horas semanais (horas-semanais) reservadas ao tipo da aula (tipo-aula): teórica (T), teórico-prática (TP) ou prática (P).

    Os cursos têm um atributo id para poderem ser referenciados no dossier.

    O docente responsável é uma referência a um docente; este é descrito através do atributo ref, cujo valor corresponde ao do atributo id do docente responsável definido na identificação da equipa docente.



    Elemento identificação

    Elemento identificação


  • Relativamente a identificação da equipa docente, esta é descrita como uma lista de um ou mais docentes (docente). Cada docente integrado na equipa tem os elementos informativos seguintes: o nome do docente (nome), e de ordem facultativa, seu código de docente (código), sua foto (foto), sua categoria como professor auxiliar, professor associado, assistente ou convidado (categoria), o departamento ao qual pertence (departamento), a escola a qual pertence (escola), a instituição na qual lecciona (instituição), os seus contactos (contactos), e os seus horários de aulas e de atendimento (horários) descritos como sequência de um ou mais horário (horário).

    O departamento, a escola e a instituição do docente são do tipo complexo Tentidade já descrito atrás.

    Na informação relativa aos contactos do docente constam o seu url (url), o seu e-mail (email), o seu telefone (telefone), o seu fax (fax) e o seu gabinete (gabinete). Todos estes elementos são facultativos.

    Na informação relativa a cada horário do docente constam os elementos informativos seguintes: o turno leccionado pelo docente (turno-ref), o dia da semana (dia-semana), as horas (horas) com a hora de início (inicio) e a hora de fim (fim), e a sala (sala). Cada turno é uma referência a um turno definido na identificação dos turnos, sendo descrito pelo seu atributo ref.

    A foto dos docentes é uma imagem do tipo Timagem.

    Os docentes tem um atributo id para poderem ser referenciados no dossier e um atributo responsável, cujo valor é sim ou não, para ser possível distinguir o docente responsável pela disciplina dos outros docentes da equipa docente.



    Elemento equipa-docente

    Elemento equipa-docente




    Elemento docente

    Elemento docente


  • Relativamente a identificação dos turnos, estes são descritos como uma sequência de um ou mais turnos (turno). Para cada turno constam os elementos informativos seguintes: o nome do turno (nome), i.e. por exemplo, T, TP, P, TP1, TP2 ou atendimento, o tipo do turno (tipo), i.e. teórico, prático ou teórico-prático, os cursos aos quais o turno é destinado (cursos) descritos como uma lista de um ou mais curso (curso-ref), e os docentes responsáveis pelo turno (docentes) descritos como uma lista de um ou mais docente (docente-ref). Cada curso é uma referência a um curso definido nas turmas na identificação da disciplina, sendo descrito pelo seu atributo ref. Cada docente é uma referência a um docente definido na identificação da equipa docente, sendo descrito pelo seu atributo ref. Os turnos têm um atributo id para poderem ser referenciados no dossier.



    Elemento turnos

    Elemento turnos




    Elemento turno

    Elemento turno


  • Relativamente ao historial, aos objectivos, a metodologia e aos requisitos da disciplina, estes são todos constituídos por informação textual livre, ou seja do tipo Ttexto importado do schema para texto livre. Assim, não é imposta a lista dos elementos que neles devem constar, de maneira a dar total liberdade ao docente responsável pela criação e manutenção do dossier de disciplina na forma e organização do conteúdo dessas partes.



    Elemento historial

    Elemento historial


b) Programa

O programa detalhado da disciplina é o elemento global programa importado do schema para programas.

c) Avaliação

No sistema de avaliação da disciplina constam os elementos informativos seguintes: o regime de faltas adoptado a cada tipo de aulas leccionadas na disciplina (regime-faltas), os métodos de avaliação da disciplina (métodos) e as classificações obtidas na disciplina (classificações) para o ano lectivo do dossier em questão.



Elemento avaliação

Elemento avaliação


  • Relativamente ao regime de faltas, este contém informação textual livre, ou seja é do tipo Ttexto importado do schema para texto livre.



    Elemento regime-faltas

    Elemento regime-faltas


  • Relativamente aos métodos de avaliação, estes são descritos como lista de um ou mais métodos (método). Cada método contém os elementos informativos seguintes: o tipo de avaliação contínuo ou não-contínuo do método (tipo-avaliação), os elementos de avaliação que compõem o método (elementos-av) descritos como lista de um ou mais elementos (elem-av), a fórmula usada para a obtenção da classificação final (fórmula), e um resumo opcional do método (resumo).

    Relativamente aos elementos de avaliação, cada elemento contém os elementos informativos seguintes: uma chave (chave), i.e. uma abreviatura para sua designação que será usada para referenciar o elemento dentro da formula de avaliação, a sua designação (nome), a sua descrição (descrição) se for preciso detalhar o elemento de avaliação em causa, e os enunciados relativos ao elemento (enunciados) descritos como lista de um ou mais enunciado (enunciado). A descrição e os enunciados dos elementos de avaliação são de carácter facultativo. A título de exemplo, ao elemento de avaliação trabalhos práticos (chave: tp) são associados os enunciados dos trabalhos, ao elemento de avaliação exame teórico (chave: ex) são associados os enunciados dos exames, etc.. A descrição do elemento de avaliação é texto livre, isto é, é do tipo Ttexto. Relativamente aos enunciados, cada enunciado tem um título (título), uma data opcional (data) e um ou mais ficheiro externo de suporte ao enunciado (ficheiro). O ficheiro é uma referência externa, ou seja, é do tipo Txref. Os elementos de avaliação têm um atributo id para poderem ser referenciados no dossier.

    Relativamente a fórmula de obtenção da classificação final, esta indica os componentes da fórmula (componentes) e o critério aplicado a estes (critério), i.e. o somatório, o máximo ou o mínimo. Os componentes estão organizados em um ou mais componente (componente), em que cada componente consiste na associação de um elemento de avaliação (elem-ref) ao seu peso relativo na fórmula (peso). Os pesos são percentagens (escala de 0 a 100). Os elementos de avaliação são referências a elementos de avaliação definidos na lista de elementos do método de avaliação correspondente, sendo descritos pelo atributo ref.

    O resumo do método de avaliação é informação textual, logo do tipo Ttexto.



    Elemento métodos

    Elemento métodos




    Elemento método

    Elemento método


  • Relativamente as classificações, estas são organizadas em zero ou mais pautas (pauta). De facto, durante o período lectivo ainda não existem classificações para disponibilizar. Cada pauta tem um título (título), uma data opcional (data) e um ficheiro externo de suporte a pauta (ficheiro). O ficheiro é uma referência externa, logo é descrito pelo tipo Txref.



    Elemento classificações

    Elemento classificações




    Elemento pauta

    Elemento pauta


d) Bibliografia

A bibliografia da disciplina é o elemento global bibliografia importado do schema para bibliografias.

e) Material-pedagógico

O material pedagógico da disciplina está organizado em um ou mais tipo de material (tipo). Cada tipo de material contém como elementos informativos: a sua designação (nome) e o seu conteudo organizado em um ou mais subtipo de material (subtipo) ou em um ou mais material do tipo em causa (material). De modo semelhante aos tipos de material, cada subtipo contém a sua designação (nome) mas o seu conteudo está organizado apenas em um ou mais material (material). Cada material é formado por texto livre (tipo Ttexto), porque existe muita diversidade na natureza dos materiais de apoio.



Elemento material-pedagógico

Elemento material-pedagógico




Elemento tipo

Elemento tipo


f) Sumários

Os sumários da disciplina estão organizados segundo zero ou mais aulas leccionadas (aula). Cada aula dos sumários tem um atributo id para poder ser referenciada no dossier, um atributo tipo que é o tipo de aula leccionada, i.e. T, TP ou P, e um atributo semana que é a semana de leccionação da aula. Para cada aula dos sumários constam os elementos informativos seguintes: o turno correspondente a aula dada (turno-ref), a data em que a aula foi dada (data), os docentes que deram a aula (docentes) de maneira facultativa, e o sumário da aula (sumário). O turno é uma referência a um turno definido na identificação dos turnos, sendo descrito pelo seu atributo ref. A data é constituída por um dia (dia) e de maneira facultativa por duas horas (horas): a hora de inicio (inicio) e a hora de fim (fim); a omissão da hora pressupõe que é igual a hora estabelecida no horário. Os docentes são descritos como uma lista de um ou mais docente (docente-ref); cada docente é uma referência a um docente definido na identificação da equipa docente, sendo descrito pelo seu atributo ref. O sumário de cada aula é texto livre, ou seja, é do tipo Ttexto definido no schema importado sobre texto livre.



Elemento sumários

Elemento sumários




Elemento aula

Elemento aula








3.5. Criação de uma instância

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

Esta segunda fase do projecto consiste apenas na criação de uma instância para teste do Schema e das transformações que se descrevem a seguir.

Para a criação da instância recorremos ao dossier da disciplina de SDSD do ano lectivo 2003/2004, visto que este se encontra bastante completo e disponibiliza um conjunto vasto de ficheiros. Este exemplo de dossier foi codificado em XML segundo o Schema para dossiers desenvolvido na fase anterior.







3.6. As transformações XSLT

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

A solução aqui apresentada para a elaboração da terceira fase do projecto passa pela criação de duas stylesheets: uma para gerar a versão HTML de um documento XML com uma instância válida dum dossier de disciplina; a outra para gerar a versão PDF do mesmo. A instância usada para teste das transformações XSLT desenvolvidas foi criada na fase anterior do projecto. Apesar de ficarmos bastante satisfeitos com o nosso trabalho, fica claro que muito mais se poderia ter feito com a XSLT, sendo esta uma ferramenta potente e extrapolável a diversos âmbitos.







3.6.1. XSLT - Versão HTML

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

A stylesheet que gera a versão HTML do dossier completo, isto é que gera o website da disciplina a partir do documento XML com a instância do dossier, é a stylesheet designada dossier.xsl. Esta stylesheet usa a versão 1.1 para ser possível gerar múltiplos ficheiros de saída e foi construída modularmente de maneira a torná-la mais legível. A template principal da stylesheet é aplicada ao elemento raiz do dossier e é a partir dela que são geradas as varias páginas do website. As páginas do website são formadas por um conjunto de três frames: uma contendo o cabeçalho com informação relativa a identificação da disciplina do dossier, outra com o índice dos links para as várias paginas do website, e outra principal de suporte as páginas acedidas através dos links do índice. A template principal gera num primeiro tempo uma travessia ao elemento dossier, que trata de gerar, usando as stylesheets importadas por dossier.xsl, a versão HTML das diferentes partes constituintes do dossier (isto é, as páginas que são acedidas na frame com o índice e que são visualizadas na frame principal: objectivos.html, docentes.html, historial.html, identificacao.html, turnos.html, bibliografia.html, elementosA.html, classificacoes.html, regime-faltas.html, metodosA.html, material.html, programa.html, sumarios.html) assim como a página visualizada na frame para o cabeçalho (cabecalho.html); ela gera num segundo tempo a página visualizada na frame para o índice (indice.html) e a página inicial do website (inicio.html).



<xsl:template match="/">
		<xsl:apply-templates select="dos:dossier"/>
		<xsl:document href="../website/indice.html">
			<font size="2">
				<br/>
				<a target="main" href="identificacao.html">Identificação da disciplina</a>
				<br/>
				<a target="main" href="historial.html">Historial</a>
				<br/>
				<a target="main" href="objectivos.html">Objectivos</a>
				<br/>
				<a target="main" href="docentes.html">Equipa docente e horários</a>
				<br/>
				<a target="main" href="turnos.html">Turnos</a>
				<br/>
				<a target="main" href="programa.html">Programa </a>
				<br/>
				<a target="main" href="regime-faltas.html">Regime de faltas</a>
				<br/>
				<a target="main" href="metodosA.html">Métodos de avaliação</a>
				<br/>
				<a target="main" href="elementosA.html">Elementos de avaliação</a>
				<br/>
				<a target="main" href="classificacoes.html">Classificações</a>
				<br/>
				<a target="main" href="bibliografia.html">Bibliografia</a>
				<br/>
				<a target="main" href="material.html">Material pedagógico</a>
				<br/>
				<a target="main" href="sumarios.html">Sumários</a>
			</font>
		</xsl:document>
		<xsl:document href="../website/inicio.html">
			<frameset rows="27%,73%">
				<frame name="banner" frameBorder="0" scrolling="no" src="cabecalho.html"/>
				<frameset cols="20%,80%">
					<frame name="contents" frameBorder="0" scrolling="no" src="indice.html"/>
					<frame name="main" frameBorder="0" src="identificacao.html"/>
				</frameset>
			</frameset>
		</xsl:document>
	</xsl:template>
	
	<xsl:template match="dos:dossier">
		<xsl:apply-templates select="dos:apresentação"/>
		<xsl:apply-templates select="prog:programa"/>
		<xsl:apply-templates select="dos:avaliação"/>
		<xsl:apply-templates select="bib:bibliografia"/>
		<xsl:apply-templates select="dos:material-pedagógico"/>
		<xsl:apply-templates select="dos:sumários"/>
	</xsl:template>

Vamos de seguida descrever de maneira sucinta as varias stylesheets importadas pela stylesheet dossier.xsl:

  1. A stylesheet que trata de gerar o cabeçalho das páginas do website é designada cabecalho.xsl. Esta stylesheet é constituída por quatro templates, em que a template principal se aplica ao elemento identificação da apresentação do dossier. A stylesheet consiste simplesmente em extrair a informação relevante para a construção do cabeçalho contida em identificação, isto é, os logos das entidades relativas a disciplina, a designação da disciplina, as turmas (curso e ano), o docente responsável pela disciplina, o ano lectivo e o semestre. Esta stylesheet faz uso de uma tabela de hashing sobre os docentes que constituem a equipa docente da disciplina para aceder a informação do docente responsável através do seu atributo ref. Todas as templates da stylesheet usam o modo cab de maneira a não haver conflitos no acesso aos nodos em comum com as templates da stylesheet identificacao.xsl.


    
    <xsl:key name="i-docentes" match="/dos:dossier/dos:apresentação/dos:equipa-docente/dos:docente" use="@id"/>

  2. As stylesheets que tratam de gerar a versão HTML das diferentes partes constituintes do dossier de disciplina, isto é, a apresentação, o programa, a avaliação, a bibliografia, o material pedagógico e os sumários, são descritas a seguir. Referimos que foi aplicado mais uma vez o conceito de modularização a estas stylesheets, uma vez que elas fazem quase todas a importação de uma stylesheet especifica, modulo.xsl, contendo templates para processar todo o tipo de informação textual (listas, parágrafos, tabelas, imagens, referencias, etc..) evitando assim a repetição das mesmas templates dentro das stylesheets.

a) Apresentação

O conjunto das stylesheets que trata da apresentação do dossier de disciplina é constituído pelas stylesheets seguintes: identificacao.xsl, historial.xsl, docente.xsl, turnos.xsl e objectivos.xsl.

A stylesheet que trata de gerar a página com a identificação da disciplina designa-se identificacao.xsl. Esta stylesheet é constituída por quatro templates, em que a template principal se aplica ao elemento identificação da apresentação do dossier. A stylesheet consiste em extrair simplesmente toda a informação contida em identificação, isto é, a designação da disciplina, o docente responsável pela disciplina, as turmas, etc.. e faz uso de uma tabela de hashing sobre os docentes que constituem a equipa docente da disciplina para aceder a informação do docente responsável através do seu atributo ref.



<xsl:key name="i-docentes" match="/dos:dossier/dos:apresentação/dos:equipa-docente/dos:docente" use="@id"/>

A stylesheet que trata de gerar a página com o historial da disciplina designa-se historial.xsl. Esta stylesheet é constituída por uma única template aplicada ao elemento historial da apresentação do dossier. A stylesheet consiste em extrair toda a informação textual contida em historial, usando as templates importadas da stylesheet modulo.xsl.

A stylesheet que trata de gerar a página com os docentes e horários da disciplina designa-se docentes.xsl. Esta stylesheet é constituída por quatro templates, em que a template principal se aplica ao elemento equipa-docente da apresentação do dossier, e consiste em extrair num primeiro tempo toda a informação relativa a cada docente da equipa docente (menos a informação sobre os seus horários), fazendo aparecer primeiro o docente responsável e depois os restantes, e consiste num segundo tempo em extrair numa tabela toda a informação sobre os horários de cada docente. A stylesheet usa uma tabela de hashing sobre os turnos da disciplina para aceder a informação do turno, na template aplicada ao horário de cada docente, através do seu atributo ref.



<xsl:key name="i-turnos" match="/dos:dossier/dos:apresentação/dos:turnos/dos:turno" use="@id"/>



<xsl:template match="dos:equipa-docente">
	.........
	<xsl:apply-templates select="dos:docente[@responsável='sim']"/>
	<xsl:apply-templates select="dos:docente[@responsável='não']"/>
	........
	<xsl:apply-templates select="dos:docente/dos:horários"/>
	.......
</xsl:template>

A stylesheet que trata de gerar a página com os turnos da disciplina designa-se turnos.xsl. Esta stylesheet é constituída por duas templates, em que a template principal se aplica ao elemento turnos da apresentação do dossier. A stylesheet consiste em extrair toda a informação relativa a cada turno e faz uso de duas tabelas de hashing: uma sobre os cursos da disciplina para aceder a informação do curso através do seu atributo ref e outra sobre os docentes da disciplina para aceder a informação do docente através do seu atributo ref.



<xsl:key name="i-cursos" match="/dos:dossier/dos:apresentação/dos:identificação/dos:turmas/dos:turma/dos:curso" use="@id"/>
<xsl:key name="i-docentes" match="/dos:dossier/dos:apresentação/dos:equipa-docente/dos:docente" use="@id"/>

A stylesheet que trata de gerar a página com os objectivos da disciplina designa-se objectivos.xsl. Esta stylesheet é constituída por uma única template aplicada ao elemento objectivos da apresentação do dossier. A stylesheet consiste em extrair num primeiro tempo toda a informação textual contida em objectivos, usando as templates importadas da stylesheet modulo.xsl, e num segundo tempo em extrair a informação textual contida nos elementos metodologia e requisitos da apresentação do dossier, se estes existirem, usando a stylesheet importada.

b) Programa

A stylesheet que trata de gerar a página com o programa detalhado e resumido da disciplina designa-se programa.xsl. Esta stylesheet é constituída por três templates; a template principal é aplicada ao elemento programa do dossier e é a partir dela que são geradas duas travessias ao programa: uma para gerar a versão resumida do programa usando o modo resumido (para não haver conflitos no acesso das restantes templates ao mesmo nodo secção) e a outra para gerar a sua versão detalhada. A travessia que gera a versão detalhada do programa consiste em extrair toda a informação contida em cada secção do programa, isto é, o título e o conteúdo das secções. Caso o conteúdo seja subsecções, é extraído de maneira recursiva a informação de cada secção formando as subsecções; caso o conteúdo seja informação textual como listas ou parágrafos, são usadas as templates importadas da stylesheet modulo.xsl. A travessia que gera a versão resumida do programa limita-se a extrair do programa o titulo das suas secções (e recursivamente das suas subsecções se tiver).



<xsl:template match="prog:programa">
	.........
	<xsl:apply-templates select="prog:secção" mode="resumido"/>
	........
	<xsl:apply-templates select="prog:secção"/>
	.......
</xsl:template>

c) Avaliação

O conjunto das stylesheets que trata da avaliação da disciplina é constituído pelas stylesheets seguintes: regime-faltas.xsl, metodosA.xsl, elementosA.xsl e classificacoes.xsl.

A stylesheet que trata de gerar a página com o regime de faltas da disciplina designa-se regime-faltas.xsl. Esta stylesheet é constituída por uma única template aplicada ao elemento regime-faltas da avaliação do dossier. A stylesheet consiste em extrair toda a informação textual contida em regime-faltas, usando as templates importadas da stylesheet modulo.xs.

A stylesheet que trata de gerar a página com os métodos de avaliação da disciplina designa-se metodosA.xsl. Esta stylesheet é constituída por sete templates, em que a template principal se aplica ao elemento métodos da avaliação do dossier. A stylesheet consiste em extrair toda a informação relativa a cada método, isto é, em primeiro lugar os seus elementos de avaliação, em segundo lugar a sua formula de avaliação e por fim o resumo do método. Em relação aos elementos de avaliação do método não é extraída a informação sobre os enunciados de cada elemento, sendo estes tratados por outra stylesheet elementosA.xsl. A informação textual contida na descrição de cada elemento de avaliação e no resumo de cada método é extraída usando as templates importadas da stylesheet modulo.xsl. Para a geração da formula de avaliação são feitas chamadas a templates especiais de nome arg e soma permitindo mostrar os pesos relativos de cada elemento segundo o critério de avaliação aplicado. A stylesheet usa uma tabela de hashing sobre os elementos de avaliação para aceder a informação de cada elemento de avaliação na fórmula de obtenção da classificação final através do seu atributo ref.



<xsl:key name="i-elem" match="/dos:dossier/dos:avaliação/dos:métodos/dos:método/dos:elementos-av/dos:elem-av" use="@id"/>



<xsl:template match="dos:fórmula">
	<xsl:variable name="c" select="dos:critério"/>
	<xsl:if test="$c='Máximo'">Max(<xsl:call-template name="arg">
			<xsl:with-param name="comp" select="dos:componentes"/>
		</xsl:call-template>)</xsl:if>
	<xsl:if test="$c='Mínimo'">Min(<xsl:call-template name="arg">
			<xsl:with-param name="comp" select="dos:componentes"/>
		</xsl:call-template>)</xsl:if>
	<xsl:if test="$c='Somatório'">
		<xsl:call-template name="soma">
			<xsl:with-param name="comp" select="dos:componentes"/>
		</xsl:call-template>
	</xsl:if>
</xsl:template>

<xsl:template name="arg">
	<xsl:param name="comp" select="."/>
	<font size="+1">
	<b>
		<i> nf</i>
	</b>
	<xsl:text>  =  </xsl:text>
	<xsl:for-each select="$comp/dos:componente">
		<xsl:variable name="elem" select="key('i-elem',dos:elem-ref/@ref)/dos:chave"/>
		<xsl:value-of select="dos:peso"/>
		<xsl:text> %  *  </xsl:text>
		<b>
			<i>
				<xsl:value-of select="$elem"/>
			</i>
		</b>
		<xsl:if test="following-sibling::dos:componente">
			<xsl:text> , </xsl:text>
		</xsl:if>
	</xsl:for-each>
	</font>
</xsl:template>

<xsl:template name="soma">
	<xsl:param name="comp" select="."/>
	<font size="+1">
	<b>
		<i> nf</i>
	</b>
	<xsl:text>  =  </xsl:text>
	<xsl:for-each select="$comp/dos:componente">
		<xsl:variable name="elem" select="key('i-elem',dos:elem-ref/@ref)/dos:chave"/>
		<xsl:value-of select="dos:peso"/>
		<xsl:text> %  *  </xsl:text>
		<b>
			<i>
				<xsl:value-of select="$elem"/>
			</i>
		</b>
		<xsl:if test="following-sibling::dos:componente">
			<xsl:text> + </xsl:text>
		</xsl:if>
	</xsl:for-each>
	</font>
</xsl:template>

A stylesheet que trata de gerar a página com os enunciados dos elementos de avaliação da disciplina designa-se elementosA.xsl. Esta stylesheet é constituída por quatro templates; a template principal se aplica ao elemento elementos-av dos métodos de avaliação do dossier e é a partir dela que são geradas duas travessias aos elementos de avaliação: uma para gerar um índice dos elementos de avaliação que tem enunciados e a outra para gerar o conteúdo dos enunciados de cada elemento de avaliação. A travessia que gera o conteúdo dos enunciados dos elementos de avaliação consiste em extrair toda a informação relativa a cada enunciado dos elementos, isto é, o seu título, a sua data e os ficheiros associados. Todas as templates da stylesheet usam o modo enunciados de maneira a não haver conflitos no acesso aos nodos em comum com as templates da stylesheet metodosA.xsl.

A stylesheet que trata de gerar a página com as classificações da disciplina designa-se classificacoes.xsl. Esta stylesheet é constituída por duas templates, em que a template principal se aplica ao elemento classificações da avaliação do dossier. A stylesheet consiste em extrair toda a informação relativa a cada pauta, isto é o seu título, a sua data e o ficheiro associado.

d) Bibliografia

A stylesheet que trata da bibliografia da disciplina é designada: bibliografia.xsl. Esta stylesheet é constituída por oito templates; a template principal é aplicada ao elemento bibliografia do dossier e é a partir dela que são geradas duas travessias a bibliografia: uma para gerar um índice de títulos da entradas bibliográficas usando o modo indice (para não haver conflitos no acesso das restantes templates ao mesmo nodo bibitem) e a outra para gerar o conteúdo da bibliografia. A travessia que gera o conteúdo da bibliografia consiste em extrair toda a informação contida nas entradas bibliográficas bibitem, mas em primeiro às entradas de tipo essencial e depois às de tipo complementar. Para extrair a informação textual contida no resumo das entradas são usadas as templates importadas da stylesheet modulo.xsl.



<xsl:template match="bib:bibliografia">
	.........
	<xsl:apply-templates mode="indice" select="bib:bibitem">
		<xsl:sort select="bib:título" order="ascending"/>
	</xsl:apply-templates>
	........
	<xsl:apply-templates select="bib:bibitem[@tipo='essencial']">
		<xsl:sort select="bib:título" order="ascending"/>
	</xsl:apply-templates>
	.......
	<xsl:apply-templates select="bib:bibitem[@tipo='complementar']">
		<xsl:sort select="bib:título" order="ascending"/>
	</xsl:apply-templates>
	........
</xsl:template>

<!-- Geração do índice -->
<xsl:template match="bib:bibitem" mode="indice">
	.........
	<a href="#{generate-id()}">
		<xsl:value-of select="bib:título"/>
	</a>
	.........
</xsl:template>

<!-- Geração do conteúdo -->
<xsl:template match="bib:bibitem">
	.........
	<a name="{generate-id()}">
		<b>[<xsl:value-of select="bib:chave"/>]</b>
	</a>
	.........
</xsl:template>

e) Material pedagógico

A stylesheet que trata do material pedagógico da disciplina é designada: material.xsl. Esta stylesheet é constituída por cinco templates; a template principal é aplicada ao elemento material-pedagógico do dossier e é a partir dela que são geradas duas travessias: uma para gerar um índice de tipos de material usando o modo indice (para não haver conflitos no acesso das restantes templates ao mesmo nodo tipo) e a outra para gerar o conteúdo do material pedagógico. A travessia que gera o conteúdo do material pedagógico consiste em extrair toda a informação contida em cada tipo do material pedagógico, isto é, o seu nome e o seu conteúdo. Caso o seu conteúdo seja materiais, são usadas as templates importadas da stylesheet modulo.xsl para extrair a informação textual de cada material ; caso o seu conteúdo seja subtipos, é extraído a informação de cada subtipo de material, ou seja o seu nome e os seus materiais.

f) Sumários

A stylesheet que trata dos sumários da disciplina é designada: sumarios.xsl. Esta stylesheet é constituída por duas templates; a template principal é aplicada ao elemento sumarios do dossier e é a partir dela que são geradas duas travessias: uma para gerar um índice das semanas de aulas e a outra para gerar o conteúdo dos sumários. A travessia que gera o conteúdo dos sumários consiste em extrair, para cada semana de aulas, toda a informação contida em cada aula dos sumários da semana respectiva, isto é, o turno, a data, os docentes e o sumário; dentro de cada semana, as aulas são ordenadas por data e por tipo de aula. Para extrair a informação textual contida no sumário de cada aula são usadas as templates importadas da stylesheet modulo.xsl. A stylesheet faz uso de duas tabelas de hashing: uma sobre os turnos da disciplina para aceder a informação do turno através do seu atributo ref e outra sobre os docentes da disciplina para aceder a informação do docente através do seu atributo ref.



<xsl:template match="dos:sumários">
	.........
	<xsl:for-each select="dos:aula/@semana[not(.=../preceding-sibling::dos:aula/@semana)]">
		<xsl:sort select="." data-type="number" order="ascending"/>
		<xsl:variable name="semana" select="."/>
		<a href="#sem{$semana}">
			<xsl:value-of select="$semana"/>
		</a>
		<xsl:if test="count(/dos:dossier/dos:sumários/dos:aula[@semana=$semana][last()]/following-sibling::dos:aula) &gt; 0">
			<xsl:text>   |   </xsl:text>
		</xsl:if>
	</xsl:for-each>	
	........
	<xsl:for-each select="dos:aula/@semana[not(.=../preceding-sibling::dos:aula/@semana)]">
		<xsl:sort select="." data-type="number" order="ascending"/>
		<xsl:variable name="semana" select="."/>
		<font color="navy">
			<h3>
				<a name="sem{$semana}">
					<u>Semana <xsl:value-of select="$semana"/>
					</u>
				</a>
			</h3>
		</font>
		<br/>
		<ul>
			<xsl:apply-templates select="/dos:dossier/dos:sumários/dos:aula[@semana=$semana]">
				<xsl:sort select="dos:data/dos:dia" order="ascending"/>
				<xsl:sort select="@tipo" order="ascending"/>
			</xsl:apply-templates>
			<br/>
		</ul>
		<h5><a href="#topo">Topo...</a></h5>
		<hr/>
	</xsl:for-each>	
</xsl:template>



<xsl:key name="i-turnos" match="/dos:dossier/dos:apresentação/dos:turnos/dos:turno" use="@id"/>
<xsl:key name="i-docentes" match="/dos:dossier/dos:apresentação/dos:equipa-docente/dos:docente" use="@id"/>







3.6.2. XSLT - Versão PDF

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

A geração da versão PDF do dossier completo não é um processo directo ao inverso da geração da versão HTML do mesmo. De facto, implementamos num primeiro tempo uma stylesheet designada dossier.xsl que permite gerar a versão FO do documento XML com a instância do dossier; num segundo passo geramos a partir da versão FO do documento a sua versão em PDF.

A stylesheet dossier.xsl foi construída modularmente de modo semelhante a stylesheet que gera a versão HTML do documento XML. De facto, esta importa diferentes stylesheets: uma stylesheet que trata de gerar a capa para o dossier (capa.xsl), outra que gera o índice do conteúdo do dossier (indice.xsl), outra que trata de gerar todo o tipo de informação textual, isto é, listas, parágrafos, tabelas, imagens, referencias, etc..(modulo.xsl), e para acabar um conjunto de stylesheets que trata de gerar a versão FO de partes especificas do dossier como o programa, a bibliografia, o material pedagógico, os sumários, etc.. (programa.xsl, bibliografia.xsl, material.xsl, sumarios.xsl, etc..).

A template principal da stylesheet dossier.xsl é aplicada ao elemento raiz do documento XML com o dossier e gera um conjunto de Formatting Objects (FO elementos), que são os elementos constituintes do respectivo documento FO gerado. O elemento FO principal gerado é o elemento root, que descrevemos em pormenor de seguida.



				<xsl:template match="/">
				<fo:root>
					<fo:layout-master-set>
						<!-- TEMPLATES -->
					</fo:layout-master-set>
						
					<!-- CONTEUDO -->
				</fo:root>
				</xsl:template>

O elemento root contêm duas secções importantes:







3.7. Criação da Interface ("front-ends")

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

Nesta quarta fase do projecto desenvolvemos no Microsoft Stylevision uma interface para dossiers. Associando no XMLSpy a instância do dossier com esta interface é agora possivel edita-la e modifica-la com o Authentic

A interface criada serve de suporte a criação e manutenção de dossiers de disciplina e permite esconder aos futuros utilizadores da aplicação a complexidade inerente a linguagem XML.



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






Epílogo


Actualmente, a linguagem XML é utilizada nas maiores e mais importantes empresas do mercado, podendo esta aposta ser a diferença entre uma empresa com bons resultados e o seu fecho.

Foram alguns os problemas encontrados, à medida que se tentava finalizar cada uma das fases, mais questões se deparavam e, apesar do esforço contínuo, pensamos ter conseguido alcançar quase todos os objectivos a que nos proposemos.

Com a execução deste projecto adquirimos não só mais conhecimentos acerca da linguagem XML, mas também da análise e tratamento da informação, assim como, o desenvolvimento da aplicação em Microsoft XMLSpy e especificação de documentos em HTML e PDF e sua interacção.

Podemos afirmar que a linguagem por nós criada é orientada a um número abrangente de opções por parte do utilizador, ou seja, permite agrupar uma determinada quantidade de informação.

No desenvolvimento do nosso trabalho, apercebemo-nos do quanto é importante a análise que deve ser feita antes de um projecto deste tipo ser implementado.

Durante a arquitectura da linguagem foram surgindo inúmeras situações que nos obrigaram a reestruturações na concepção da mesma.

Assim, podemos dizer que é necessária a execução de um projecto para realmente se apreender o que o constitui.

O relatório em si, serviu e pretendeu salientar todos os pontos mais importantes e fulcrais de todo o nosso projectos.

Como perspectivas futuras podemos destacar a possível criação de outras stylesheets para versões de geração de texto distintas das por nós já implementadas: HTML e PDF

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





Glossário


DTD: Document Type Definition

LMCC : Licenciatura em Matemática e Ciências de Computação

XSL : Extensible Stylesheet Language

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

FO: Formatting Objects

HTML: HiperLink Markup Language

PED: Processamento Estruturado de Documentos

SDSD: Sistemas de Dados para Suporte à Decisão

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| Apêndices|





Bibliografia


[Tid01] - XSLT, Mastering XML Tranformations, Doug Tidwell, O'Reilly, Agosto 2001, 0-596-00053-7.

[Ram02] - Apontamento da cadeira de PED 2001/02, José C. L. Ramalho, http://www.di.uminho.pt/~jcr/

[Ram03] - XML & XSL da Teoria à Prática, José C. L. Ramalho, Pedro Rangel Henriques, http://www.fca.pt

[ZVON] - XSLT Reference, Miloslav Nic, http://www.zvon.org






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





Apêndices


1. Links para aplicações desenvolvidas no projecto


Fase 1 - Schemas

Schema para dossier

Documentação do Schema para dossier (em HTML)

Schema para programa

Documentação do Schema para programa(em HTML)

Schema para bibliografia

Documentação do Schema para bibliografia (em HTML)

Schema para texto livre

Documentação do Schema para texto livre (em HTML)

Fase 2 - Instâncias

Instância de um dossier

Instância de um programa

Instância de uma bibliografia

Fase 3 - 1ª parte : XSLT versão HTML

Stylesheet principal para gerar a versão HTML do dossier completo

Output: versão HTML do dossier completo

Stylesheet para gerar a versão HTML do programa (resumido e detalhado)

Output: versão HTML do programa (resumido e detalhado)

Stylesheet para gerar a versão HTML da bibliografia

Output: versão HTML da bibliografia

Fase 3 - 2ª parte : XSLT versão PDF

Stylesheet principal para gerar a versão PDF do dossier completo

Output: versão PDF do dossier completo

Stylesheet para gerar a versão PDF do programa (resumido e detalhado)

Output: versão PDF do programa (resumido e detalhado)

Stylesheet para gerar a versão PDF da bibliografia

Output: versão PDF da bibliografia

Fase 4 - Front-Ends

Interface para o dossier

Output: interface para o dossier (em HTML)

Interface para o programa

Output: interface para o programa (em HTML)

Interface para a bibliografia

Output: interface para a bibliografia (em HTML)

Fase 5 - Relatório final

Instância do relatório

Schema do relatório

Stylesheet para gerar a versão HTML do relatório







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