Schema e Stylesheet para tratamento de Curriculums Vitae em XML

Schema e Stylesheet para tratamento de Curriculums Vitae em XML

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


Autores

António Sousa
amrs@mail.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 2003





| Ínicio| Abertura| Prólogo| Índice| Fecho| Glossário| Bibliografia|
(c) copyright 2003 - António de Sousa, Formato do relatório por: Guilherme Teixeira.







Dedicatória

Gostaria de dedicar este trabalho a todos quantos possam encontrar nele utilidade. Dedico-o também, ao professor José Ramalho, que me despertou para esta muito interessante abordagem ao processamento estruturado de documentos, que estou certo será de futuro e é já uma forma excelente de produção de documentos.

Agradecimentos

À empresa Altova por nos ter disponibilizado o software XML de trabalho.

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





Prólogo

O trabalho apresentado contempla um schema, uma stylesheet, e a instância do schema em XML

O trabalho pretende definir uma estrutura expedita e funcional, passível de ser aplicada à elaboração de curriculums vitae. 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.

Resumo

A criação de uma instância XML, com base em regras bem definidas (schema) e com um posterior processamento via XSLT, permite anotação estruturada, arquivo e transformação/produção de documentos, ou seja, processamento estruturado de documentos. O XML é uma linguagem universal para representação de informação independente de ferramentas e plataformas o que a torna sem dúvida numa importante tecnologia do presente mas mais ainda, do futuro.

Abstract

A XML instance creation, based on well formed rules (schema) and following processement thru XSLT, allows structured annotation, documents archive and transformation/production, meaning, documents structured processement. XML is a universal language for independent information representation of tools and platforms which turns it undoubtebly, in an important technology of the present and fare more in the future.

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






Índice de Conteúdos

1. Acerca do Schema

1.1. Tipos simples

1.1.1. TAct_Form

1.2. Tipos complexos

1.2.1. TDadosPessoais

1.2.2. TMorada

1.2.3. TContactos

1.2.4. TDescricao

1.2.5. TDescFuncao

2. A Stylesheet

2.1. Ordenação por data

2.2. Geração do indice




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






1. Acerca do Schema

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

Este trabalho teve como objectivo a criação de um schema, capaz de acomodar, de forma simples e flexivel as diversas informações relativas a um curriculum vitae, schema esse que foi pensado de forma a que futuramente possa vir a ser integrado e possa fazer o suporte à submissão electrónica de curriculums vitae, por parte dos candidatos, a uma empresa de gestão de recursos humanos - recrutamento e selecção. Com este intuito fez-se uma pesquisa sobre as principais caracteristicas que um curriculum vitae deve ter, procedendo-se à sua definição de forma o mais completa possivel, recorrendo-se muitas vezes no schema à utilização de elementos facultativos por forma a flexibilizar a sua utilização.

Toda a documentação detalhada do schema, pode ser consultada no link seguinte: Documentação do schema . Toda a documentação do schema está anotada, de onde se poderá obter mais informações localizadas.

A Figura 1, apresenta os cinco primeiros elementos do schema que têm como elemento raíz o CVitae. O DadosPessoais constituido por todos os dados pessoais relativos ao candidato, o Habilitações que inclui habilitações académicas e outras do candidato, o Actividades_Formações inclui as actividades e formações do candidato, o ExpProfissional que inclui experiência profissional anterior e actual (incluindo a actividade que exerce), e finalmente o Passatempos que define os passatempos preferidos do candidato.

A definição do Schema

Figura 1 - Estrutura inicial do schema do trabalho.






1.1. Tipos simples

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

Foi utilizado neste schema apenas um tipo simples que permitiu introduzir uma restrição, através da definição de uma enumeração. Todos os tipos definidos, quer os simples quer os complexos são facilmente identificados uma vez que têm o seu nome iniciado por um T.





1.1.1. TAct_Form

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

Na Tabela 1 está identificado o código correspondente à definição da enumeração deste tipo simples.

	
<xs:simpleType name="TAct_Form">
  <xs:annotation>
    <xs:documentation>Enumerations: Actividade ou Formação</xs:documentation>
  </xs:annotation>
  <xs:restriction base="xs:string">
    <xs:enumeration value="Actividade"/>
    <xs:enumeration value="Formacao"/>
  </xs:restriction>
</xs:simpleType>








1.2. Tipos complexos

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

Nas próximas subsecções serão analisados os tipos complexos utilizados no schema. Um tipo complexo não é mais que um conjunto de outros tipos, tendo como principal caracteristica a possibilidade da sua utilização de forma recursiva. Isto torna a estrutura do tipo complexo mais abstracta facilitando assim, muito a definição do XSD.





1.2.1. TDadosPessoais

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

O tipo complexo TDadosPessoais é utilizado na definição dos dados pessoais do candidato, no qual se inclui: o nome, uma ou mais moradas, contactos e ainda informação do BI do candidato, onde se inclui a data de nascimento que é a única informação obrigatória. A sua estrutura está definida na Figura 2.

TDadosPessoais

Figura 2 - Estrutura do tipo complexo TDadosPessoais.







1.2.2. TMorada

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

TMorada permite a definição de moradas, constituido por: rua, freguesia, código postal, localidade e descrição opcional do tipo de morada que foi definida, estão alguns exemplos definidos na Figura 3.

TMorada

Figura 3 - Estrutura do tipo complexo TMorada.







1.2.3. TContactos

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

Este elemento complexo permite a definição dos possiveis contactos introduzidos pelo candidato. Dele fazem parte o telefone, e-mail e fax que estão ilustrados na Figura 4.

TContactos

Figura 4 - Estrutura do tipo complexo TContactos.







1.2.4. TDescricao

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

TDescricao é um elemento complexo utilizado em várias fases da definição do curriculum vitae nomeadamente na descrição de outras habilitações para além das académicas assim como na descrição das actividades ou formações frequentadas pelo candidato. É constituido por um elemento que define o tipo de habilitação adquirida, uma descrição e a data de conclusão (opcional), como pode ser confirmado pela Figura 5.

TDescricao

Figura 5 - Estrutura do tipo complexo TDescricao.







1.2.5. TDescFuncao

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

TDescFuncao é utilizado na descrição de funções anteriores ou actuais por parte do candidato. Dele fazem parte o nome da função, a empresa, a área em que se insere a função, como opcional a referência web da empresa, a data de inicio dessa função e finalmente a data de conclusão dessa função, caso seja uma função já terminada, por esse motivo o elemento é opcional. Na Figura 6 encontra-se ilustrado o elemento complexo TDescFuncao.

TDescFuncao

Figura 6 - Estrutura do tipo complexo TDescFuncao.









2. A Stylesheet

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

Uma vez que a definição do schema foi pensado de forma a que futuramente possa vir a ser integrado e possa fazer o suporte à submissão electrónica de curriculums vitae, tal como foi dito atrás, consequentemente a stylesheet teve, por sua vez, de ser elaborada de forma a ser facilmente integrada num ambiente web e por forma a ser fácil a sua consulta. Começou-se então por definir a transformação da instância XML em HTML, com acesso a toda a informação submetida por parte do candidato, dividida por blocos para mais fácil leitura e criação de um indice para mais fácil e rápida consulta dos dados procurados. Muito mais e de forma diversa se pode fazer com XSLT. Como forma de ilustrar essa mesma flexibilidade serão apresentadas várias formas de criação de indices na subsecção 2.2





2.1. Ordenação por data

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

Para cada um dos blocos de informação ou secções foi efectuada uma ordenação por data dos vários elementos através da utilização do comando sort do xsl, aplicando-o na forma crescente ou decrescente conforme os casos, como se pode verificar pela Tabela 2.

					
<xsl:sort select="data" data-type="data" order="ascending"/>
...
<xsl:sort select="data" data-type="data" order="descending"/>







2.2. Geração do indice

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

Normalmente na criação de indices recorre-se ao {generate-id()} responsável pela geração de identificadores únicos. Neste caso isso não foi necessário uma vez que as caracteristicas da própria estrutura, dividida em blocos, contém nela mesma e para cada um, um nome (identificador) único e bem definido que foi utilizado como referência na criação dos links. Nas Tabelas 3, 4 e 5 estão ilustrados exemplos de várias possibilidades de criar o indice como forma também de mostrar a flexibilidade da tecnologia:

					
<xsl:template match="seccao" mode="indice">
  <a href="#{generate-id()}">
    <xsl:number level="multiple"/>
    <xsl:text>.  </xsl:text>
    <xsl:value-of select="titulo"/>
  </a>
  <br/>
  <xsl:apply-templates mode="indice"/>
</xsl:template>

					
<xsl:template match="DadosPessoais" mode="indice">
  [<a href="#{name()}">Dados Pessoais</a>]
</xsl:template>
...
<xsl:template match="text()" priority="-1" mode="indice"/>


<xsl:attribute name="href">
  <xsl:text disable-output-escaping="yes">#Dados Pessoais</xsl:text>
</xsl:attribute>
...
<xsl:attribute name="name">
  <xsl:text disable-output-escaping="yes">Dados Pessoais</xsl:text>
</xsl:attribute>









Epílogo


A elaboraçao deste trabalho permitiu de facto confirmar as imensas potêncialidades desta tecnologia assim como familiarizar o aluno com as respectivas ferramentas de desenvolvimento. É sem sombra de dúvidas uma tecnologia com o futuro assegurado.

Quanto ao relatório, pretendeu ilustrar de forma simples o trabalho efectuado, através de explicações sucintas das diversas fases de desenvolvimento do mesmo, sem ser exaustivo, mas demonstrando a forma expedita e flexivel com que se pode efectuar o processamento estruturado de documentos.

Como trabalho de futuro deve ser encarada a possibilidade de flexibilizar ainda mais a estrutura definida, assim como a introdução de mais elementos de suporte à acomodação de informação relativa a curriculums vitae porque como foi dito no inicio esta estrutura foi pensada para fazer o suporte à submissão e consulta electrónica de curriculums vitae a uma uma empresa de gestão de recursos humanos - recrutamento e selecção e portanto necessita de obter uma estrutura muito heterogénea para contemplar os mais diversos tipos de informação.

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





Glossário


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

XML: Extended Markup Language

XSD: Extensible Stylesheet Definition

XSLT: Extensible Stylesheet Language for Transformations






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





Bibliografia


[jrph] - Ramalho, José C. , XML & XSL - Da Teoria à Prática , FCA - Editora de Informática , 972-722-347-8

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






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