Schema e Stylesheets para tratamento de Curriculums Vitae (Modelo Europeu) em XML

Schema e Stylesheets para tratamento de Curriculums Vitae (Modelo Europeu) em XML

Relatório inserido no trabalho prático da cadeira de PED do MICEI 2004/05


Autores

DavidSora
david.sora@cern.ch - http://www.cern.ch/dsora

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 2005





| Ínicio| Abertura| Prólogo| Índice| Fecho| Glossário| Bibliografia|
(c) copyright 2005 - David Sora







Dedicatória

Aos meus pais

Agradecimentos

Um forte agradecimento á empresa Altova por nos ter disponibilizado o software de trabalho, à Europass pela informação disponibilizada sobre o modelo de Curriculo Europeu, à biblioteca do CERN pelas condições oferecidas e pelos imensos livros disponíveis, e ao Professor José Carlos Ramalho, por nos ter mostrado o caminho.

Fica aqui, também, um especial agradecimento aos colegas do MICEI 04/05, pelo excelente relacionamento, e a todos os que me aturaram durante o desenvolvimento deste projecto.

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





Prólogo

Este projecto pretende definir o suporte para o processamento estruturado de Curriculums Vitae.

Sendo o tipo de Curriculum visado, o Modelo Europeu, foi desenvolvido um schema, duas instâncias do schema (versão em português e em inglês) e duas stylesheets (transformação em HTML e PDF).

Resumo

O mundo da gestão de informação irá definitivamente mudar após ter visto nascer o XML. Com a ajuda da linguagem XSLT, para a transformação da estrutura de documentos XML, pode-se facilmente transportar dados textuais estruturados entre programas informáticos. Sendo uma sub-linguagem dentro de uma stylesheet XSLT, o XPath surge como uma solução para a identificação de partes do documento de input a ser processado, bem como para cálculos numéricos, manipulação de cadeias de caracteres ou mesmo para testes de condições booleanas. Sendo assim, o XML satisfaz duas exigências fundamentais: separação dos dados da apresentação e transformação de dados entre aplicações.

Abstract

The world of information management will definitively change after having seen born the XML. With the help of the XSLT language, for transforming the structure of the XML document, one can easily interchange structured textual data between computer programs. As a sublanguage within an XSLT stylesheet, XPath appears as the solution for identifying parts of the input document to be processed, as well as, for numeric calculation, string manipulation or for testing boolean conditions. As such, XML satisfies two basic requirements: separating data from presentation and transforming data between applications.

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






Índice de Conteúdos

1. Acerca do Schema

1.1. Tipos Complexos

1.1.1. TDadosPessoais

1.1.2. TMorada

1.1.3. TContacto

1.1.4. TActividade

1.1.5. TFormacao

1.1.6. TLingua

1.1.7. TParagrafo

1.1.8. TProjecto

1.1.9. TArtigo

1.1.10. TPublicacao

1.1.11. TComunicacao

1.2. Tipos Simples

1.2.1. TFormato

1.2.2. TRealce

1.2.3. TLinguagem

2. Descrição das transformações

2.1. Suporte de idiomas

2.2. Ordenação

2.3. Recurso a Templates e variáveis

2.4. Elementos facultativos

2.5. Formatação do Tipo de dados

2.6. Manipulação de nodos

2.7. Geração do índice

2.8. PDF - Definição das secções de página

2.9. Tratamento do texto com realce

2.10. Tratamento de listas




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






1. Acerca do Schema

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

O primeiro esboço do schema foi elaborado com a ajuda da estrutura da informação relativa ao modelo de currículo europeu, disponível no site da Europass. No entanto, em algumas das sub-secções foram acrescentados elementos facultativos, que podem ou não integrar o documento.

O currículo tem dois atributos importantes: a data, que revela a versão do CV em questão e o idioma (que neste caso poderá ser um dos dois, português ou inglês).

A documentação detalhada do schema pode ser consultada em Documentação A seguinte imagem apresenta os primeiros elementos do schema. Como elemento raíz temos o próprio CV, de onde saem sete secções, e das quais apenas duas são obrigatórias: os Dados Pessoais e as Linguas (Maternas e outras linguas se existirem). As restantes são facultativas e correspondem à Vaga desejada, Experiência profissional, Formação, Competências diversas e Informações tais como projectos, publicacões, comunicações, anexos, etc.

A definição do Schema

Estrutura inicial do schema do trabalho.






1.1. Tipos Complexos

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

Os tipos complexos neste trabalho são quase como que as vigas que sustentam a estutura de todo o projecto. Pretendem ser, na maior parte dos casos, abstractos e reutilizáveis. Deve-se salientar que a utilização da ferramenta gráfica XMLSpy, da Altova foi essencial para facilitar o desenho do schema XSD de forma fácil e intuitiva.

Os tipos simples foram utilizados em situações particulares, incluindo nos três casos existentes, determinadas enumerações.

Os tipos definidos foram especialmente identificados pela utilização de um "T" no início do seu nome.





1.1.1. TDadosPessoais

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

Este tipo é utilizado para a definição dos dados pessoais. Inclui obrigatoriamente o nome e apelido do candidato, e as possíveis moradas. Depois, considerados facultativos, fazem parte ainda a(s) nacionalidade(s), o(s) contacto(s), a data de nascimento, o sexo e uma fotografia. A fotografia, por sua vez, é composta por uma imagem formada por um caminho e um formato. Relativamente ao sexo do candidato, o elemento é composto por um atributo que contém um elemento enumerado, para o seu tipo (M ou F).

TDadosPessoais

Estrutura de TDadosPessoais







1.1.2. TMorada

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

Este tipo é utilizado para a definição da(s) morada(s). É composto pela rua, o andar (opcional), o código postal, a localidade, o país e uma descrição da morada (facultativa) que se pretende ser breve, e por esse motivo, limitado a 30 carateres.

TMorada

Estrutura de TMorada.







1.1.3. TContacto

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

Tipo utilizado para a definição dos contactos do candidato. Engloba quatro elementos facultativos: o(s) telefone(s), telemóvel, fax e correio(s) electrónico(s).

TContacto

Estrutura de TContacto.







1.1.4. TActividade

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

Define uma actividade desempenhada como experiência profissional. A sua estrutura é composta por uma data de início e de fim de actividade (esta última é opcional, já que a actividade pode estar ainda a decorrer), o cargo desempenhado, uma ou mais responsabilidades no contexto da actividade, e finalmente o tipo de empresa ou sector de actividade.

TActividade

Estrutura de TActividade







1.1.5. TFormacao

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

Em princípio, o candidato terá no seu currículo uma actividade relacionada com a sua formação, quer seja académica ou profissional. Este tipo pretende englobar essa actividade, incluindo uma data de início e fim, a designação do diploma atribuído, a(s) competência(s) (no caso da formação académica entenda-se por disciplina(s)), a organização de ensino ou formação e finalmente uma qualificação (opcional).

TFormacao

Estrutura de TFormacao







1.1.6. TLingua

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

Este tipo pretende definir a estrutura para o nível de conhecimentos de uma determinada língua estrangeira. Foi estruturado de acordo com o Nível do Quadro Europeu Comum de Referência (CECR).

Assim, é composto pelo nome da língua, e por três critérios para a avaliação do conhecimento da língua. O primeiro refere-se à compreensão, a nível oral e de leitura; o segundo faz referência à fala, a nível de interacção e produção; e por fim à escrita. Estes tipos de conhecimento da língua podem ser avaliados numa escala de diferentes níveis, enumerados num atributo do elemento para o efeito.

TLingua

Estrutura de TLingua







1.1.7. TParagrafo

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

Este é o tipo mais usado no documento. Serve para representar um parágrafo e é repetido ao longo do currículo, em diferentes secções. Os seus elementos são todos facultativos. Pode ser composto por referência(s) externa(s) ao documento (o atributo associado permite a indicação do url e de um possível nome para a referência); realce(s) para o texto (cujo atributo oferece três diferentes tipos possíveis: itálico, sublinhado ou negrito); e lista(s). A lista acaba por ser o elemento mais complexo do tipo TParagrafo visto tratar-se de um elemento recursivo. Isto é, uma lista para além de ter um atributo associado que define o tipo de lista (numerada ou não-numerada), poderá conter elemento(s), e o elemento por sua vez é composto por um ou mais parágrafos.

TParagrafo

Estrutura de TParagrafo







1.1.8. TProjecto

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

Este tipo define a composição de um projecto. Assim, é composto por um título e um sub-título (facultativo), o corpo do projecto (que inclui um ou mais parágrafos), uma data de conclusão e o nome do orientador.

TProjecto

Estrutura de TProjecto







1.1.9. TArtigo

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

TArtigo é usado para definir a estrutura de um artigo científico. A sua constituição caracteriza-se por um título, um ou mais autores, bem como uma ou mais publicações.

TArtigo

Estrutura de TArtigo







1.1.10. TPublicacao

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

Com este tipo define-se a estrutura de uma publicação de um determinado artigo. É composto por uma designação e uma data de publicação. Como elementos facultativos, encontram-se as páginas de início e fim, bem como o local da publicação.

TPublicacao

Estrutura de TPublicacao







1.1.11. TComunicacao

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

Este tipo define uma comunicação. É composta por um título, possivelmente um sub-título, o evento, o local da comunicação (país, cidade e instituição) e a data respectiva.

TComunicacao

Estrutura de TComunicacao








1.2. Tipos Simples

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

Os tipos simples foram criados especificamente para aplicar restrições a outros tipos, através de enumerações com valores definidos para os diferentes casos.





1.2.1. TFormato

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

Enumeração dos tipos de formato permitidos para a fotografia:

	
<xs:simpleType name="TFormato">
	<xs:annotation>
		<xs:documentation>Formato da Foto (jpg, gif e png)</xs:documentation>
	</xs:annotation>
	<xs:restriction base="xs:string">
		<xs:enumeration value="jpg"/>
		<xs:enumeration value="gif"/>
		<xs:enumeration value="png"/>
	</xs:restriction>
</xs:simpleType>







1.2.2. TRealce

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

Enumeração dos tipos de realce permitidos para o texto:

	
<xs:simpleType name="TRealce">
	<xs:annotation>
		<xs:documentation>Tipo de realce de texto (itálico, sublinhado e negrito)</xs:documentation>
	</xs:annotation>
	<xs:restriction base="xs:string">
		<xs:enumeration value="italico"/>
		<xs:enumeration value="sublinhado"/>
		<xs:enumeration value="negrito"/>
	</xs:restriction>
</xs:simpleType>







1.2.3. TLinguagem

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

Enumeração das linguagens permitidas para o documento:

	
<xs:simpleType name="TLinguagem">
	<xs:annotation>
		<xs:documentation>Linguagem suportada no curriculum</xs:documentation>
	</xs:annotation>
	<xs:restriction base="xs:string">
		<xs:enumeration value="portugues"/>
		<xs:enumeration value="ingles"/>
	</xs:restriction>
</xs:simpleType>









2. Descrição das transformações

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

Descrevem-se aqui alguns dos aspectos mais importantes das transformações processadas nas stylesheets deste projecto. Convém salientar que devido as enormes potencialidades do XSLT este projecto poderia ser continuado e incluir ainda muitas outras técnicas de transformação.

Neste projecto foram elaboradas duas stylesheets: uma para a geração de documentos no formato html e outra para o formato pdf. Para as transformações foram também utilizadas duas aplicações adicionais: o SAXON (html) e o FOP (pdf).





2.1. Suporte de idiomas

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

Tratando-se de um modelo Europeu do CV faz todo o sentido exisitir suporte de diferentes línguas. Assim, neste projecto foram criadas as condições para o suporte de duas línguagens: o português e o inglês. Para tal, e como já foi referido anteriormente, o nodo raíz do schema tem um atributo Linguagem associado, do tipo TLinguagem.

Foram também criadas duas instâncias do schema, uma em inlês e outra em português. Relativamente às stylesheets, o método usado para testar o tipo de linguagem foi com o uso da função xsl:choose que se repete ao longo do código XSLT, permitindo assim dois outputs diferentes, consoante a linguagem escolhida:

	
<xsl:choose>
	<xsl:when test="/EuroCV/@Linguagem='portugues'">
		<span style="font-size:small; "> até </span>
			</xsl:when>
	<xsl:when test="/EuroCV/@Linguagem ='ingles'">
		<span style="font-size:small; ">to </span>
	</xsl:when>
</xsl:choose>

A imagem anterior faz referência a apenas um pequeno excerto de código da stylesheet para a transformação html, de um caso em que se está a testar o tipo de linguagem do documento de entrada.

Obviamente, foi feito o mesmo na stylesheet para a transformação pdf:


<xsl:choose>
	<xsl:when test="/EuroCV/@Linguagem='portugues'">
		<fo:inline font-size="10pt"> até </fo:inline>
	</xsl:when>
	<xsl:when test="/EuroCV/@Linguagem ='ingles'">
		<fo:inline font-size="10pt"> to </fo:inline>
	</xsl:when>
</xsl:choose>







2.2. Ordenação

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

A ordenação dos elementos no documento é feita em diferentes secções do CV. Foram utiliazados dois tipos de ordenação, usando a função xsl:sort. O exemplo a seguir ilustra uma ordenação feita por ordem alfabética dos correios electrónicos:


<!-- Ordenados alfabeticamente -->
<xsl:sort/>
	<span style="font-size:small; ">
		<a href="mailto:{text()}">
			<xsl:apply-templates/>
		</a>
	</span>			

O excerto de código a seguir apresentado ilustra uma ordenação feita primeiro por data das publicações de um artigo, e a seguir por titulo:


<xsl:for-each select="Artigo/Publicacoes/Publicacao">
	<xsl:sort select="Data" order="descending"/>
	<xsl:sort select="../../Titulo"/>
	







2.3. Recurso a Templates e variáveis

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

Uma das preocupações deste trabaho foi tornar o código modular. Inicialmente foi usado o Altova Style Vision para criar a folha de estilo primária. Depois houve então um trabalho extenso de modularização do código de forma a torná-lo mais estruturado. Para tal recorreu-se ao uso de Templates (xsl:template), um para cada secção do currículo, bem como para o tratamento de determinados elementos.

O uso de templates permite uma divisão do código em blocos que podem posteriormente serem aplicados a situações e secções específicas do documento com o xsl:apply-templates. A sua grande vantagem é que o "desenho" do esquema pode evoluir no tempo, ser modificado com, por exemplo, a adição de novos elementos filhos sem modificar a lógica para os elementos pais.

Exemplo de um template:


<!-- :: Template para o tratamento das referências externas :: -->
<xsl:template match="xref">
	<a href="{@url}">
		<xsl:value-of select="text()"/>
	</a>
</xsl:template>	
			

Para além dos templates foram também usadas variáveis para definir certos blocos de código que se repetem ao longo da stylesheet, evitando assim a repetição sucessiva das mesmas linhas:


<!-- :: Link para voltar ao topo da página :: -->
<xsl:variable name="topo">
	[<a href="#CV">
		<xsl:choose>
			<xsl:when test="/EuroCV/@Linguagem='portugues'">Voltar
			</xsl:when>
			<xsl:when test="/EuroCV/@Linguagem ='ingles'">Back
			</xsl:when>
		</xsl:choose>
	</a>]
</xsl:variable>







2.4. Elementos facultativos

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

Como já foi referido anteriormente, existem muitos elementos facultativos no documento. Aliás, e de acordo com o Modelo Europeu, uma grande parte dos elementos, inclusivé algumas secções (tais como, por exemplo, experiência profissional ou formação) são opcionais. Os elementos facultativos foram tratados com a função xsl:if que processa o nodo unicamente se a condição fôr verdadeira, ou seja, se o elemento em causa existir:

	
<!-- Ate... se houver "ate"...-->
<xsl:if test="Ate">
	<xsl:choose>
		<xsl:when test="/EuroCV/@Linguagem='portugues'">
			<fo:inline font-size="10pt"> até </fo:inline>
		</xsl:when>
		<xsl:when test="/EuroCV/@Linguagem ='ingles'">
			<fo:inline font-size="10pt"> to </fo:inline>
		</xsl:when>
	</xsl:choose>
	<fo:inline font-size="10pt">
		<xsl:apply-templates select="Ate"/>
	</fo:inline>
</xsl:if>
		

A imagem anterior corresponde a um excerto do código, em que se utiliza uma condição if para testar a existência ou não do elemento.






2.5. Formatação do Tipo de dados

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

Aqui faz-se uma pequena referência à necessidade de, por vezes, formatar o tipo de dados para obter um resultado desejado. Neste caso ilustra-se a seguir a formatação dum elemento do tipo data, para apresentar unicamente o ano da publicação de um artigo, em vez da data completa:


<xsl:for-each select="Data">
	<span style="font-size:smaller; ">	
		<xsl:value-of select="format-number(number(substring(., 1, 4)), '0000')"/>
	</span>
</xsl:for-each>
	

Para a formatação foi usada a função format-number() no select de um xls:value-of.






2.6. Manipulação de nodos

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

Em certos casos, existe a necessidade de realizar cálculos sobre a árvore documental. Este projecto não foi excepção. A seguir apresenta-se um excerto de código que tem como objectivo colocar um separador (|) entre os nomes das línguas maternas do candidato. É claro que esse separador tem de ser colocado, antes de mais, se o candidato possuir mais do que uma língua materna. Assim optou-se por colocar o (|) no fim de cada nodo (língua materna) desde que este não seja o último da lista (se o candidato possuir apenas uma língua materna então o nodo é forçosamente o último e nesse caso o separador não é colocado):


<!-- Se o nodo nao fôr o último coloca um separador | no fim do mesmo -->
<xsl:for-each select="LMaterna[position()!=last()]">
	<xsl:apply-templates/> | 
</xsl:for-each>
							
<!-- Se fôr o último então coloca apenas o conteúdo... -->
<xsl:for-each select="LMaterna[last()]">
	<xsl:apply-templates/>
</xsl:for-each>		

Como se pode ver no excerto de código, foram usadas as funções position() que dá como resultado a posição na lista, e last() que devolve como resultado a posição do último nodo.






2.7. Geração do índice

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

Numa página html é normal e até muitas das vezes necessário a existência de um índice de forma a facilitar a navegação na página. Em relação ao formato pdf, apesar de possível, não faz aqui muito sentido já que um currículo em formato pdf é, normalmente, destinado à obtenção de uma impressão em papel. Foi decidido então gerar um índice na stylesheet de tranformação para html.

Assim, foram criados templates para tratamento das secções a incluir no índice:


<xsl:template match="DadosPessoais" mode="Indice">
 [<a href="#{name()}">
	<xsl:choose>
		<xsl:when test="/EuroCV/@Linguagem='portugues'">Dados_Pessoais
		</xsl:when>
		<xsl:when test="/EuroCV/@Linguagem ='ingles'">Personal_information
		</xsl:when>
	</xsl:choose>
</a>]
</xsl:template>
			

O template ilustrado em cima, neste caso para a secção dos dados pessoais, coloca um link para uma área do documento (referência interna) entre []. Para tal, dentro de href, recorreu-se à função name() para obter o nome do nodo.

Por outro lado, é necessário colocar uma âncora na área do documento para fechar a ligação ao índice:


<xsl:template match="DadosPessoais">
	<a name="#{name()}">
		...
	</a>

Como nem todos as secções foram incluídas no índice, foi necessário criar um mecanismo para a filtragem dessas mesmas secções:


<!-- :: Template para filtrar os nodos do tipo texto não utilizados no índice :: -->
	<xsl:template match="text()" priority="-1" mode="Indice"/>








2.8. PDF - Definição das secções de página

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

Tratando-se de um CV foram definidas apenas duas zonas para as páginas: a região do corpo do texto (body) e uma região para o rodapé da página (after) para a paginação:


<fo:layout-master-set>
	<fo:simple-page-master 
	      master-name="conteudo" page-height="11in" 
	      page-width="8.5in" margin-left="0.6in" 
	      margin-right="0.6in">
		<fo:region-body 
			margin-top="0.79in" margin-bottom="0.79in" 
			region-name="corpo"/>
		<fo:region-after extent="0.79in"/>
	</fo:simple-page-master>
</fo:layout-master-set>
	

Como se pode ver, do excerto retirado da stylesheet, foram definidas todas as propriedades essenciais à formatação da página, incluindo a definição das duas zonas referidas anteriormente: region-body e region-after. A imagem, em baixo, ilustra a posição de cada uma das zonas possíveis, numa página:

Definição das zonas de uma página








2.9. Tratamento do texto com realce

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

Em qualquer documento é usual vermos o texto realçado de diferentes formas, para destacar determinada informação. O tratamento do texto com realce foi, nas duas stylesheets, definido para três tipos possíveis (itálico, negrito e sublinhado) usando condições para testar o atributo associado ao elemento. Veja-se a seguir um exemplo, usando a função xsl:when, para tratar o texto a negrito:


<!-- elementos a negrito: -->
	<xsl:when test="@tipo='negrito'">
		<b>
			<xsl:apply-templates/>
		</b>
	</xsl:when>
				
			







2.10. Tratamento de listas

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

Como já se referiu anteriormente, as listas neste projecto requerem algum cuidado no seu tratamento visto que uma lista pode conter outra lista e assim sucessivamente. Em baixo, encontra-se ilustrado um excerto de código de uma template criada para tratar os dois tipos de listas possíveis neste projecto (numeradas ou não-numeradas). Neste caso vamos apenas fazer referência às listas numeradas:


<!-- Se a lista for do tipo número -->
		<xsl:if test="@tipo='numero'">
			<ol>
				<xsl:for-each select="elemento">
					<li>
						<xsl:apply-templates/>
					</li>
				</xsl:for-each>
			</ol>
		</xsl:if>
				
			

Como se pode ver, é usada uma condição para testar o tipo da lista e a transformação é processada se o resultado da condição fôr verdadeiro. A instrução xsl:for-each é usada para permitir gerar listas dentro da própria lista.








Epílogo


Este projecto começou por ser um desafio e foi se revelando, à medida que foi sendo desenvolvido, como uma descoberta de um novo e aliciante mundo a ser explorado. É evidente que muito ainda poderia ter sido feito no âmbito do projecto, incluindo processos de optimização para o processamento das stylesheets e adição de outras linguagens. Mas as restrições de um projecto limitado no tempo fazem parte do próprio desafio que o mesmo constitui.

A utilidade desta tecnologia é gigantesca, podendo ser aplicada em muitas das situações, tanto a nível académico, profissional ou mesmo pessoal. Relativamente ao schema e às stylesheets para tratamento de CV criadas neste projecto posso dizer que a partir de agora tenho a possibilidade de criar os meus próprios CV de forma mais metódica e profissional, e levar o conhecimento adquirido na fase de desenvolvimento do trabalho para outros tipos de documentos e/ou aplicações.

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





Glossário


CERN: European Center for Nuclear Research

CV: Curriculum Vitae

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

PED: Processamento Estruturado de Documentos

XML: Extended Markup Language

XSD: Extensible Stylesheet Definition

XSLT: Extensible Stylesheet Language for Transformations






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





Bibliografia


[mkay00] - Kay, Michael , XSLT - Programmer's Reference , Wrox Press , Arden House, 1102 Warwick Road, Acock's Green, Birmingham B27 6BH, UK , 2000 , 1-861003-12-9

[ped02] - Ramalho, José C. , Apontamento da cadeira de PED 2004/05 , Dep. Informática - Univ. Minho , Braga , http://www.di.uminho.pt/~jcr/

[RJos02] - Ramalho, José C. , XML & XSL da teoria à prática , FCA , Rua D.Estefânia, 183 - r/c - Dto. 1049-057 Lisboa , Outubro 2002 , http://www.di.uminho.pt/~jcr/XML/publicacoes/livros/fca2002/index.htm , 972-722-347-8

[Ecrion04] - ECRION Software , XSL-FO Tutorial , ECRION Software , 2004






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