XML - Europass Curriculum Vitae

XML - Europass Curriculum Vitae

Relatório inserido nos trabalhos práticos da cadeira de PED do MICEI 2004/2005


Autores

Fernanda Faria
ffaria@neps.ics.uminho.pt -

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

Julho de 2005





| Ínicio| Abertura| Índice| Fecho| Glossário| Bibliografia|
(c) copyright 2002 - Guilherme Teixeira.

Resumo

Na era da globalização, em que nos encontramos, é cada vez mais comum a movimentação de pessoas dentro da Comunidade Europeia, quer para a procura de novas oportunidades de emprego, quer para a frequência de cursos que contribuam para a sua formação profissional.

Em qualquer dos casos, um dos requisitos, geralmente solicitado aos candidados, é a apresentação do seu Curriculum Vitae. Dadas as inúmeras formas em que este documento existe, é difícil para uma entidade fazer a melhor e mais justa avaliação dos seus candidatos. O Europass Curriculum Vitae (euroCV) vem assim permitir a apresentação das competências e qualificações pessoais de uma forma clara e perceptível em toda a União Europeia.

Este relatório apresenta o trabalho desenvolvido para a criação e geração de euroCVs utilizando a tecnologia XML. Os resultados do trabalho foram um Schema XML para a criação de euroCV, de acordo com as normas de preenchimento definidas pela Comunidade Europeia, e duas stylesheets para geração do documento em HTML e em PDF.

Abstract

In the globalization era we live, it´s very common see people moving between all European Community's countries, saking to find new job opportunities or courses that wil improve their professional carreer.

In both cases, it is usually asked for a Curriculum Vitae to candidates. By its nature, this document can be found in inumerous styles, which make difficult the decisors's task of selecting the best candidate. Europass Curriculum Vitae (euroCV) was introduced to overcome this problem, allowing personal's competences and qualifications to be presented in a clear and perceptible way in all European Union.

This report presents work undertaken to euroCV creation and generation using XML technology. Results are a XML schema for euroCV creation, taking into account the european community filling normes, and two stylesheets for HTML and PDF generation, respectively.

| Ínicio| Abertura| Índice| Fecho| Glossário| Bibliografia|






Índice de Conteúdos

1. Introdução

2. O Schema

2.1. Tipos complexos

2.1.1. Tendereco

2.1.2. Tdatas

2.1.3. Tdata

2.1.4. Tcontacto

2.1.5. Tnumero

2.1.6. Tperiodo

2.1.7. TcompList

2.2. Tipos simples

2.2.1. TtipoEmail

2.2.2. TtipoNumero

2.2.3. TtipoClass

3. As transformações XSL

3.1. Principais expressões XPath utilizadas

3.1.1. xsl:for-each

3.1.2. xsl:choose

3.1.3. xsl:if

3.1.4. xsl:sort

3.2. Geração do documento HTML

3.3. Geração do documento PDF




| Ínicio| Abertura| Índice| Fecho| Glossário| Bibliografia|






1. Introdução

| Ínicio| Abertura| Índice| Fecho| Glossário| Bibliografia|

O trabalho aqui relatado surge no âmbito da cadeira Processamento Estruturado de Documentos do curso de Mestrado em Informática. Pretendeu-se criar uma linguagem baseada em XML para criação e validação de documentos do tipo Europass Curriculum Vitae. Utilizou-se a ferramenta de edição de XML, XML Spy, para todo o desenvolvimento deste trabalho. Este iniciou-se com a análise do referido documento para identificar a sua estrutura. Esta estrutura foi descrita num schema (extensão .xsd), que lista todos os elementos e atributos contidos no documento e respectivos relacionamentos existentes entre eles. Este ficheiro é utilizado para criar uma instância de um documento XML (extensão .xml), isto é, de um euroCV. A geração do documento XML no formato HTML fez-se à custa do desenvolvimento de uma stylesheet (extensão.xslt), usando as linguagens XSLT e XPath. Para a geração de um euroCV no formato PDF recorreu-se também à linguagem XSL-FO para o desenvolvimento de outra stylesheet (extensão .xsl).

Assim, os documentos que resultaram deste trabalho são os seguintes:

- euroCV.xsd

- euroCV.xml

- euroCV2html.xslt

- euroCV2pdf.xsl

Na secção seguinte, faz-se uma breve descrição do schema e apresentam-se os tipos complexos e simples criados especificamente para o tratamento dos documentos da classe euroCV. De seguida, referem-se as principais transformações efectuadas. Finalmente, apresentam-se as conclusões deste trabalho.






2. O Schema

| Ínicio| Abertura| Índice| Fecho| Glossário| Bibliografia|

A imagem seguinte, apresenta os primeiros elementos do schema. A raíz do schema, euroCV é composta por uma sequência de 8 elementos correspondentes às divisões existentes no modelo de euroCV disponibilizado pela Comunidade Europeia. Tratando-se de uma sequência, é explícita a ordem pela qual eles devem constar no documento, no entanto, três deles são opcionais podendo ser referidos ou não.

A definição do Schema

Estrutura inicial do schema do trabalho.

O primeiro elemento, fotografia, é opcional e contém o caminho (path) para a fotografia do "dono" do euroCV.

O segundo elemento, informacaoPessoal contém todos os dados pessoais do candidato, tais como nome, morada, contactos, nacionalidade, data de nascimento e sexo.

O empregoPretendido é o terceiro elemento do euroCV e contém apenas a indicação do posto a que o candidato se propõe ou a sua área de competência.

O quatro elemento, experienciaProfissional, descreve separadamente os cargos anteriormente ocupados, começando pelo mais recente. Para cada cargo, são indicadas as datas de referência, a função, as principais actividades exercidas, os principais dados sobre a entidade empregadora e o tipo de empresa ou sector.

De seguida, encontram-se descritos os cursos e formações concluídos e correspondem ao quinto elemento do euroCV, formacaoAcadProfissional. Sobre cada curso ou formação, indicam-se as datas de referência, a designação da qualificação atribuída, as principais disciplinas ou competências profissionais, os dados da instituição de ensino e, opcionalmente, a classificação final.

O sexto elemento do euroCV, aptidoesCompetPessoais, descreve aptidões e competências pessoais adquiridas no decurso da vida profissional ou não. Estas encontram-se agrupadas pelas categorias: línguas ou idiomas, aptidões e competências sociais, de organização, técnicas, informáticas, artísticas, outras competências e carta de condução. Relativamente às línguas, são inicialmente apresentadas a(s) língua(s) materna(s). Seguidamente, para cada língua estrangeira, é feita uma auto-avaliação utilizando, para o efeito, uma grelha elaborada pelo Conselho da Europa que contempla a capacidade de compreender, falar e escrever. A categoria Carta de Condução indica apenas a(s) categoria(s) de veículos para as quais o titular se encontra habilitado. Relativamente às restantes categorias referidas, são apresentadas as principais competências e o contexto em que estas foram adquiridas.

Segue-se o elemento informacaoAdicional que pretende fornecer outras informações não contempladas nas rubricas anteriores mas consideradas relevantes para o perfil profissional e pessoal do candidato. Foram previstas as categorias: publicações ou trabalhos de investigação, associações das quais é membro, situação militar, situação familiar, pessoas de contacto ou de referência e outras informações.

Por fim, o elemento anexos indica os anexos que acompanham o euroCV.

Toda a documentação detalhada do schema, pode ser consultada no link seguinte: Documentação do schema





2.1. Tipos complexos

| Ínicio| Abertura| Índice| Fecho| Glossário| Bibliografia|

Quando se verifica que um elemento é usado várias vezes ao longo do schema, o ideal é torná-lo um tipo complexo que permite, de uma forma muito simples, a sua reutilização, facilitando a edição e interpretação do schema. Esta secção apresenta os tipos complexos definidos neste trabalho.





2.1.1. Tendereco

| Ínicio| Abertura| Índice| Fecho| Glossário| Bibliografia|

Tipo complexo para a representação de um endereço. Usado ao longo euroCV para descrever as moradas do "dono" do euroCV, das entidades empregadoras em cargos anteriores e das instituições de ensino frequentadas.

Tendereco

Estrutura do tipo complexo: Tendereco.







2.1.2. Tdatas

| Ínicio| Abertura| Índice| Fecho| Glossário| Bibliografia|

Tipo criado para apresentar intervalos de datas, contém os elementos dataInicial e dataFinal. Usado para decrever as datas de referência de cargos anteriores e de cursos frequentados e concluídos.

Tdatas

Estrutura do tipo complexo: Tdatas.







2.1.3. Tdata

| Ínicio| Abertura| Índice| Fecho| Glossário| Bibliografia|

Este tipo complexo tem os seguintes componentes: dia, mês e ano, e permite que apenas os mais relevantes sejam inseridos. Por exemplo, no caso em que não se conhece o dia da data, apenas o mês e ano são referidos. Usado para representar todas as datas ao longo do documento.

Tdata

Estrutura do tipo complexo: Tdata.







2.1.4. Tcontacto

| Ínicio| Abertura| Índice| Fecho| Glossário| Bibliografia|

Tipo complexo para representar contactos, contempla os elementos: telefone, fax e email. Estes são opcionais e não há limite para o número de vezes que podem ocorrer no documento. Associado ao telefone existe um atributo que define o tipo de número (Fixo ou móvel). Este tipo é utilizado sempre que se registam contactos.

Tcontacto

Estrutura do tipo complexo: Tcontacto.







2.1.5. Tnumero

| Ínicio| Abertura| Índice| Fecho| Glossário| Bibliografia|

Tipo complexo para representação de números de telefone ou de fax. É composto por dois elementos opcionais, os prefixos do país e regional, e o próprio número.

Tnumero

Estrutura do tipo complexo: Tnumero.







2.1.6. Tperiodo

| Ínicio| Abertura| Índice| Fecho| Glossário| Bibliografia|

Tipo complexo criado para indicação de períodos de contacto de telefone ou de fax. É composto por dois elementos, dias e horas, para melhor indicar os dias e horas em que determinado contacto se encontra disponível.

Tperiodo

Estrutura do tipo complexo: Tperiodo.







2.1.7. TcompList

| Ínicio| Abertura| Índice| Fecho| Glossário| Bibliografia|

Tipo complexo usado para representação dos vários tipos de aptidões e competências pessoais. É composto por dois elementos, a competência que pode ser referida mais que uma vez, e o contexto que é indicado uma só vez para cada conjunto de competências.

TcompList

Estrutura do tipo complexo: TcompList.








2.2. Tipos simples

| Ínicio| Abertura| Índice| Fecho| Glossário| Bibliografia|

Estes tipos foram introduzidos no trabalho para criar enumerações a serem utilzadas por atributos definidos ao longo do documento.





2.2.1. TtipoEmail

| Ínicio| Abertura| Índice| Fecho| Glossário| Bibliografia|

Tipo simples usado para enumerar as possibilidades de tipos de email associadas ao elemento eMail. A enumeração é composta pelos elementos: Profissional e Pessoal.






2.2.2. TtipoNumero

| Ínicio| Abertura| Índice| Fecho| Glossário| Bibliografia|

Tipo simples usado para enumerar as possibilidades de tipos de numero associadas ao elemento numero. A enumeração é composta pelos elementos: Fixo e Móvel.






2.2.3. TtipoClass

| Ínicio| Abertura| Índice| Fecho| Glossário| Bibliografia|

Tipo simples usado para enumerar as possibilidades de tipos de classificações associadas ao elemento classif. A enumeração é actualmente composta pelos elementos: Nacional e ISCED, podendo ser posteriormente alargada.








3. As transformações XSL

| Ínicio| Abertura| Índice| Fecho| Glossário| Bibliografia|

No sentido de disponibilizar o euroCV nos formatos HTML e PDF foram desenvolvidas duas stylesheets recorrendo às seguintes sub-linguagens do XSL: para a navegação e interrogração à árvore documental, utilizou-se o XPath; para a geração em HTML, o XSLT; e para a geração em PDF, o XSL-FO.

Na próxima subsecção, são apresentadas as expressões XPath utilizadas nas stylesheets criadas. As outras duas subsecções referem as opções e decisões tomadas na geração dos dois tipos de documento





3.1. Principais expressões XPath utilizadas

| Ínicio| Abertura| Índice| Fecho| Glossário| Bibliografia|

Nesta secção são referidas as principais expressões XPath usadas em ambas as stylesheets desenvolvidas.





3.1.1. xsl:for-each

| Ínicio| Abertura| Índice| Fecho| Glossário| Bibliografia|

Esta expressão foi utilizada para percorrer todas as ocorrências de determinado elemento no contexto em que se encontra. Um exemplo é apresentado de seguida, em que são percorridas todas as línguas maternas inseridas no documento.

	
<b>Língua(s) materna(s)</b>
<br/>
<xsl:for-each select="./linguaMaterna">
	<br>
	<xsl:value-of select="."/>
	</br>
</xsl:for-each>
						







3.1.2. xsl:choose

| Ínicio| Abertura| Índice| Fecho| Glossário| Bibliografia|

Esta expressão foi utilizada para testar uma série de opções e efectuar a operação correspondente á opção verificada. São, de seguida, apresentados dois exemplos: o primeiro após verificar o valor da prioridade do elemento formacaoAcadProfissional efectua as operações indicadas para esse valor. Se o valor da prioridade é igual a 1, a rubrica Formação Académica e Profissional surge no documento antes da rubrica Experiência Profissional. Caso contrário, é mantida a ordem definida pelo schema. No segundo exemplo, é extraída a primeira letra do valor do elemento compOral e em função desse valor é efectuada a transformação correspondente. Ou seja, para cada valor de auto-avaliação da língua é automaticamente atribuída a classificação do utilizador: Elementar, Independente ou Experiente.

	
<xsl:choose>
	<xsl:when test="formacaoAcadProfissional/@prioridade = 1">
		...
		<xsl:apply-templates select="formacaoAcadProfissional">
		...
	</xsl:when>
	<xsl:otherwise>
		...
		<xsl:apply-templates select="experienciaProfissional">
		...
	</xsl:otherwise>
</xsl:choose>
						

	
<xsl:choose>
	<xsl:when test="substring(./autoavaliacao/compOral, 1,1) = 'A'">
		<br>Utilizador<br/>elementar</br>
	</xsl:when>
	...
</xsl:choose>			
						







3.1.3. xsl:if

| Ínicio| Abertura| Índice| Fecho| Glossário| Bibliografia|

Utilizou-se esta expressão para testar o número de ocorrências de elementos definidos no schema como opcionais. No seguinte exemplo, verifica-se se foram inseridas actividades no âmbito de um cargo anteriormente exercido.

	
<xsl:if test="count(./actividades/actividade)>0">
	<xsl:for-each select="actividade">
		<br>
		<xsl:value-of select="desigActividade"/>
		.......
	</xsl:for-each>
</xsl:if>
						







3.1.4. xsl:sort

| Ínicio| Abertura| Índice| Fecho| Glossário| Bibliografia|

Esta expressão serviu para ordenar elementos ou atributos. O exemplo seguinte mostra de que forma se procedeu à ordenação por ordem decrescente das datas dos cursos de formação concluídos. A ordenação das datas de referencia dos cargos anteriormente exercidos é feita da mesma forma.

	
<xsl:apply-templates select="formacaoAcadProfissional">
	<xsl:sort select="./curso/datasFA/dataFinal/@dt"  order="descending"/>
</xsl:apply-templates>
						








3.2. Geração do documento HTML

| Ínicio| Abertura| Índice| Fecho| Glossário| Bibliografia|

O documento HTML gerado consiste numa única página web dividida em secções correspondentes aos elementos filho do elemento raiz do schema (euroCV).

Após cada divisão foi inserido um menu que permite o acesso rápido a cada uma das secções. Este menu foi uma adaptação do menu encontrado neste relatório e originalmente desenvolvido pelo seu autor.

Foi também colocado um cabeçalho em que é indicado o tipo de documento (Europass Curriculum Vitae) e o nome do "dono" do mesmo.

As diferentes informações do documento foram colocadas como texto sequencial, excepto no caso da descrição das línguas estrangeiras e respectivas auto-avaliações em que se elaborou a grelha definida para o efeito pelo Conselho Europeu. Não me foi possível inserir a fotografia de forma dinâmica.

A seguinte figura mostra um excerto da página em que se visualiza a forma como as informações foram colocadas no documento HTML, quando se aplicou a stylesheet euroCV2html.xslt à instância euroCVff.xml.

euroCV HTML

Excerto da página HTML gerada







3.3. Geração do documento PDF

| Ínicio| Abertura| Índice| Fecho| Glossário| Bibliografia|

O documento PDF gerado foi construído com base em tabelas que permitem uma boa estruturação da informação. Inicialmente, tentou-se utilizar a region-start para registar como nota de margem a designação das informações contidas na region-body mas, por dificuldades várias, optou-se por criar uma tabela para simular as duas partes do documento. Foi criada uma terceira região para conter os dados de rodapé. O código seguinte mostra o layout definido.

	
<fo:layout-master-set>
	<fo:simple-page-master master-name="eurocv"
         page-height="29.7cm" 
         page-width="21cm"
         margin-top="1.5cm" margin-right="2cm">				
		<fo:region-body region-name="main" margin-left="0.5cm" 
		margin-right="1cm" margin-bottom="3cm"/>
		<fo:region-before extent="2cm"/>
	    <fo:region-after region-name="rodape" extent="2cm"/>
	</fo:simple-page-master>
</fo:layout-master-set>	
						

Foram usados os objectos fo:static-content e fo:flow para inserir os dados no rodapé e na restante parte do documento, respectivamente.

Os objectos mais utilizados do XSL-FO foram fo:table, fo:list-block, fo:inline e fo:block.

Tentou-se reproduzir, o mais fielmente possível, o euroCV modelo disponibilizado pela Comunidade Europeia, no entanto existem alguns detalhes não implementados até ao momento, são eles: inserção dinâmica da fotografia, alinhamento à direita do telefone quando este corresponde a um telemóvel, alteração da ordem da sequência do elemento Formação Académica e Profissional quando este é prioritária em relação ao elemento Experiência Profissional, ordenação das datas de referência dos cursos concluídos e dos cargos anteriores.

As seguintes figuras mostram as duas páginas geradas aplicando a stylesheet euroCV2pdf.xsl à instância euroCVff.xml.

euroCV PDF 1

Página 1 do PDF gerado.

euroCV PDF 2

Página 2 do PDF gerado.









Epílogo


Com este trabalho desenvolvido no âmbito da cadeira de Processamento Estruturado de Documentos, conseguiu-se uma introdução à tecnologia XML e a algumas das suas aplicações e potencialidades, ficando, no entanto, uma certa vontade em aprofundar o tema e ver até onde poderei ir para solucionar alguns dos problemas com que me deparo no dia-a-dia.

Penso que os objectivos mínimos foram cumpridos mas muito mais poderia ser feito ao nível da utilização desta aplicação XML em todos os países da Comunidade Europeia através da eliminação da restrição do idioma que, neste caso, foi utilizado: o Português.

| Ínicio| Abertura| Índice| Fecho| Glossário| Bibliografia|





Glossário


euroCV: Europass Curriculum Vitae

HTML: HyperText Markup Language

PDF: Portable Document Format

XML: Extended Markup Language

XSD: Extensible Stylesheet Definition

XSL: Extensible Stylesheet Language

XSL-FO: Extensible Stylesheet Language - Formatting Objects

XSLT: Extensible Stylesheet Language for Transformations






| Ínicio| Abertura| Índice| Fecho| Glossário| Bibliografia|





Bibliografia


[europCV] - EuroPass , EuroPass CV , Comunidade Europeia , http://europass.cedefop.eu.int

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

[xx1] - Ramalho, José C. L. , XML and XSL - Da Teoria à Prática , FCA - Tecnologias de Informação , 2002

[xslt] - W3C , XSL Transformations (XSLT) , W3C , 2005 , http://www.w3.org/TR/xslt

[xsl] - W3C , Extensible Stylesheet Language (XSL) , W3C , 2005 , http://www.w3.org/TR/xsl

[xsl] - W3C , XML Path Language (XPath) 2.0 , W3C , 2005 , http://www.w3.org/TR/xpath20






| Ínicio| Abertura| Índice| Fecho| Glossário| Bibliografia|