Avançar para a área de conteúdo

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

A primeira vez que acessar o developerWorks, um perfil será criado para você. Informações do seu perfil (tais como: nome, país / região, e empresa) estarão disponíveis ao público, que poderá acompanhar qualquer conteúdo que você publicar. Seu perfil no developerWorks pode ser atualizado a qualquer momento.

Todas as informações enviadas são seguras.

  • Fechar [x]

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Todas as informações enviadas são seguras.

  • Fechar [x]

Inclua estrutura XML no currículo

Utilize HR-XML, folhas de estilo, objetos de formatação e namespaces

Colin Beckingham, Researcher, Freelance
Colin Beckingham é um pesquisador, escritor e programadorfreelancer que mora no leste de Ontário, Canadá. Com diplomas da Queen's University, Kingston e interesse em horticultura, corrida de cavalos, serviço civil, varejo e viagem/turismo. Autor de aplicativos de banco de dados e de diversos artigos para jornais, revistas e on-line, seus interesse de pesquisa incluem programação de software livre e aplicativos de controle de voz em Linux®.

Resumo:  Neste artigo, explore como o XML dá estrutura ao armazenamento de dados relacionados a um currículo. Usando elementos dos projetos HR-XML e Open Applications Group Integration Specification (OAGIS), desenvolva arquivos de dados e de folha de estilo para gerar um currículo de exemplo como um arquivo PDF, usando Apache Formatting Objects Processor (FOP). Pontos de interesse especiais incluem a manipulação de diversos namespaces e dicas sobre como incluir decoração no PDF básico por meio de folhas de estilo.

Data:  20/Jul/2011
Nível:  Intermediário Também disponível em :   Inglês
Atividade:  2778 visualizações
Comentários:  


É possível compor um currículo de maneira fácil e rápida em um editor What You See Is What You Get (WYSIWYG) e, com alguns cliques do mouse, convertê-lo em um arquivo PDF para transmissão para um empregador em potencial. Então por que se dar ao trabalho de armazenar dados em um arquivo XML primeiro? Complicar o processo com etapas adicionais pode introduzir erros, então é preciso uma boa razão para o esforço adicional.

Acrônimos usados frequentemente

  • PDF: Portable Document Format
  • URL: Uniform Resource Locator
  • W3C: World Wide Web Consortium
  • XML: Extensible Markup Language

A justificativa reside na separação entre os dados e a apresentação e no benefício da estrutura trazida por um backend como o XML. Quando os dados se tornam mais complexos e os requisitos do resultado mais variados, XML oferece precisão, portabilidade e adaptabilidade. Entusiastas de dados tentam armazenar todos os dados em um banco de dados de algum tipo. Se uma estrutura de dados é ou não exagerada para um resumo simples é uma questão que depende das suas necessidades e da frequência com que os dados mudam.

Muitos empregadores têm reações negativas diante de um currículo incompleto. Estrutura é bom—elementos agem como lembretes do que deve aparecer no documento. É possível usar XML em várias plataformas, e um único backend de dados XML pode fornecer um currículo (versão curta) ou um curriculum vitae (versão longa) de acordo com os requisitos do empregador, simplesmente usando uma folha de estilo diferente.

O processo

O processo descrito aqui usa Apache FOP (consulte Recursos) para gerar um arquivo PDF a partir de dados XML usando uma folha de estilo Extensible Stylesheet Language (XSL). A folha de estilo controla a apresentação dos dados e segue o formato padrão, conforme descrito no documento W3C (consulte Recursos).

Os dados do currículo podem ser armazenados em formato XML simples usando seu próprio esquema exclusivo. Mas um formato padrão, como HT-XML, tem suas vantagens. Se você tiver requisitos especiais que não são cobertos pelo padrão, é uma simples questão de tomar o que você precisa dele e estender criando um namespace pessoal para o material adicional.

HR-XML e OAGIS

HR-XML e OAGIS (consulte Recursos) são dois projetos de software livre que se combinam para oferecer o tipo de estrutura que muitas grandes organizações consideram importante em contextos de recursos humanos e de negócios.

HR-XML é resultado de pensamento intenso de especialistas no campo de recursos humanos. Esses especialistas abordam a questão do ponto de vista de um empregador, por isso o esquema contém a estrutura para um volume muito maior de informações do que é exigido no estágio da entrevista. Gerenciar pessoas é um negócio complexo. Da determinação de requisitos de equipes, passando por recrutamento, verificação de antecedentes, avaliação de competência e contratação, até relatórios e compensação contínuos, gerenciamento de benefícios, objetivos de desempenho e avaliação. O HR-XML oferece esquemas para cobrir tudo isso.

Enquanto HR-XML é dedicado ao segmento de mercado de recursos humanos, OAGIS examina padrões de troca de dados entre segmentos. Ele lida com ideias e conceitos compartilhados por segmentos em geral, mas deixa os elementos de segmentos específicos para grupos de especialistas, que possuem o conhecimento, de dentro do segmento.

HR-XML tem o cuidado de não reinventar ideias já criadas pelo conjunto mais amplo de elementos do OAGIS—ele apenas inclui novos materiais em seu próprio namespace. O resultado é um esquema baseado em o que armazenar, dado o contexto de recursos humanos (elementos), e em como armazenar (atributos, hierarquia). Então por que não se beneficiar desse trabalho? Para obter mais detalhes sobre o esquema que HR-XML usa, faça download do esquema HR-XML ou o visualize online no Web site (é necessário registrar-se). No caso do download da versão 3.1, há um caminho para a documentação relacionada ao elemento Candidate:

.../HR-XML-3_1/org_hr-xml/3_1/Documentation/Guidelines/ch21.html#id564065

Online, um bom ponto de partida é a seguinte URL:

http://ns.hr-xml.org/schemas/org_hr-xml/3_1/Documentation/ComponentDoc/Candidate-noun.php

O arquivo de dados

A Listagem 1 é um exemplo de um arquivo de dados básico—um fragmento de um arquivo maior—que emprega o elemento Candidate e alguns de seus filhos.


Listagem 1. Arquivo de dados de exemplo

<?xml version="1.0" encoding="UTF-8"?>
<hr:Candidate 
  xmlns:hr="http://www.hr-xml.org/3" 
  xmlns:ccts="urn:un:unece:uncefact:documentation:1.1" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns:oa="http://www.openapplications.org/oagis/9">
  <hr:DocumentID>000000001</hr:DocumentID>
  <hr:CandidatePerson>
    <hr:PersonName>
      <hr:FormattedName>Blimpo Togwer</hr:FormattedName>
      <oa:GivenName>Blimpo</oa:GivenName>
      <hr:FamilyName>Togwer</hr:FamilyName>
    </hr:PersonName>
    <hr:Communication>
      <hr:ChannelCode>Mail</hr:ChannelCode>
      <hr:Address>
        <oa:AddressLine sequence="1">5555 Yellow Brick Road</oa:AddressLine>
        <oa:AddressLine sequence="2">RR #1</oa:AddressLine>
        <oa:CityName>Lesser Village</oa:CityName>
        <oa:CountrySubDivisionCode>KKK</oa:CountrySubDivisionCode>
        <hr:CountryCode>XX</hr:CountryCode>
        <oa:PostalCode>AAA BBB</oa:PostalCode>
      </hr:Address>
    </hr:Communication>
  </hr:CandidatePerson>
</hr:Candidate>
	    

Esse fragmento de código, que representa um exemplo completo, porém simples, mostra alguns detalhes:

  • A declaração XML é seguida do elemento-raiz Candidate.
  • Candidate aqui tem o significado que é definido no namespace hr, indicado pelo prefixo.
  • O namespace hr é associado ao rótulo http://www.hr-xml.org/3.
  • Cada elemento é precedido por um rótulo de namespace, que elimina qualquer ambiguidade sobre o que o elemento representa.
  • Alguns dos elementos são definidos no namespace hr (HR-XML), e outros, no namespace oa (OAGIS). Eles são combinados conforme necessário.
  • CountryCode requer um código de dois caracteres, como US ou FR.
  • CountrySubDivisionCode representa um estado, província, departamento ou outra região administrativa superior em um país.
  • Hierarquia é importante. Por exemplo, para obter o nome da cidade, o caminho envolve: Candidate > CandidatePerson > Communication > Address.

Use o recurso de esquema online do HR-XML para obter os nomes de elementos adicionais, como CandidateProfile, que permitem incluir mais informações, como CandidateObjective, EducationHistory, PublicationHistory, Certifications e assim sucessivamente.

Namespaces

Namespaces são uma estrutura que lida com possíveis ambiguidades ao dar nomes de elementos XML. Consulte Recursos para obter mais informações de introdução a namespaces. Eles impõem boa disciplina. Entretanto, exigem cuidado para garantir que os dados corretos sejam recuperados, do contrário, podem ocorrer erros—, muitos deles silenciosamente. Por exemplo, se você se referir à seção education e não especificar o namespace, como os dados não são encontrados há uma boa chance de o processador não imprimir nada na seção, sem aviso.

Edição

Para fazer alterações em arquivos XML, como tanto o arquivo de dados como a folha de estilo são XML puro, use seu editor de XML ou de texto favorito. Por exemplo, obtenha o Eclipse (consulte Recursos), abra um novo projeto, copie e cole o código da Listagem 1 em um novo documento, edite e você estará no caminho certo para um arquivo de dados de currículo.

A folha de estilo

Para ver uma lista selecionada de tutoriais sobre como desenvolver e usar folhas de estilo, consulte a página do XSL W3C na Web (consulte Recursos).

A Listagem 2 é um exemplo de uma folha de estilo básica no contexto de currículo.


Listagem 2. Folha de estilo de exemplo

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
  xmlns:fo="http://www.w3.org/1999/XSL/Format" 
  xmlns:oa="http://www.openapplications.org/oagis/9"
  xmlns:hr="http://www.hr-xml.org/3">
<xsl:output method="xml" indent="yes"/>
  <xsl:template match="/">
    <fo:root>
      <fo:layout-master-set>
        <fo:simple-page-master master-name="page1">
          <fo:region-body margin="1in" />
        </fo:simple-page-master>
      </fo:layout-master-set>
      <fo:page-sequence master-reference="page1">
        <fo:flow flow-name="xsl-region-body">
          <fo:block text-align="right" font-size="12pt" font-family="serif">
            DocumentID: <xsl:value-of select="hr:Candidate/hr:DocumentID" />
          </fo:block>
          <fo:block>
            <fo:leader leader-pattern="dots" leader-length="100%" />
          </fo:block>
          <fo:block font-size="12pt" font-family="serif">
            Curriculum Vitae - Résumé
          </fo:block>
          <fo:block font-size="20pt" font-family="Arial" font-weight="bold">
            <xsl:value-of 
              select="hr:Candidate/hr:CandidatePerson/hr:PersonName/hr:FormattedName" />
          </fo:block>
          <fo:block font-size="12pt" font-family="serif">
            Contact
          </fo:block>
          <xsl:for-each 
        select="hr:Candidate/hr:CandidatePerson/hr:Communication[hr:ChannelCode='Mail']">
            <fo:block font-size="10pt" font-family="Arial" font-weight="normal">
              <xsl:value-of select="hr:Address//oa:AddressLine[@sequence=1]" />, 
                <xsl:value-of select="hr:Address/oa:AddressLine[@sequence=2]" />
            </fo:block>
            <fo:block font-size="10pt" font-family="Arial" font-weight="normal">
              <xsl:value-of select="hr:Address/oa:CityName" />, 
                <xsl:value-of select="hr:Address/oa:CountrySubDivisionCode" />
            </fo:block>
            <fo:block font-size="10pt" font-family="Arial" font-weight="normal">
              <xsl:value-of select="hr:Address/oa:PostalCode" />, 
                <xsl:value-of select="hr:Address/hr:CountryCode" />
            </fo:block>
          </xsl:for-each>
        </fo:flow>
      </fo:page-sequence>
    </fo:root>
  </xsl:template>
</xsl:stylesheet>
	    

As instruções na Listagem 2 controlam como os dados da Listagem 1 são exibidos na página:

  • O documento precisa de quatro namespaces diferentes. Todas as referências declaram explicitamente o namespace em cada nó, evitando a confusão que pode surgir ao permitir o namespace padrão, no qual não é usado um prefixo.
  • A correspondência de modelo é uma barra (/), indicando que as procuras começam no elemento-raiz do documento de dados.
  • A folha de estilo especifica um conjunto mestre de layout que define páginas no documento geral e um elemento de sequência de página para páginas individuais.
  • Cada página requer uma série de elementos block que instruem o processador sobre onde colocar um item na página e como exibi-lo, incluindo fonte e tamanho da fonte.
  • A folha de estilo usa instruções for-each para iterar pelos grupos de elementos. Por exemplo, pode haver vários canais de comunicação: correio, e-mail, telefone, etc. Usando notação de chaves ([]), é possível especificar um filtro—neste caso, a folha de estilo filtra apenas itens Mail.

Saída usando Apache FOP

Apache FOP usa o arquivo de dados junto com a folha de estilo para produzir o PDF. O FOP não está limitado a saída em PDF—também é possível gerar Rich Text Format (RTF), Printer Command Language (PCL), PostScript (PS), Advanced Function Presentation (AFP), Tagged Image File Format (TIFF) e Portable Network Graphics (PNG), bem como arquivos de texto simples.

Para obter e instalar o FOP, basta fazer o download e descompactar a versão binária (consulte Recursos). O FOP estará pronto para ser executado a partir do local de download.

A seguir, temos um exemplo de instrução da linha de comando para o fop. Neste caso, os dados, estilo e arquivos de configuração estão localizados em um só diretório. Com esse diretório como diretório de trabalho, chamamos fop a partir de seu local.

/path/to/fop/fop -c fop.xconf -xml exx.xml -xsl exx.xsl -pdf exx.pdf
	    

Essa instrução diz ao arquivo executável fop para fazer o seguinte:

  • Procure informações de configuração no arquivo fop.xconf
  • Procure os dados no arquivo exx.xml
  • Use a folha de estilo exx.xsl para produzir o arquivo de saída exx.pdf

O arquivo de configuração é importante e aparece como mostra a Listagem 3.


Listagem 3. Arquivo de configuração FOP

<?xml version="1.0"?>
<fop version="1.0">
  <base>.</base>
  <source-resolution>72</source-resolution>
  <target-resolution>72</target-resolution>
  <default-page-settings height="11in" width="8.26in"/>
  <renderers>
    <renderer mime="application/pdf">
      <filterList>
        <value>flate</value>
      </filterList>
      <fonts>
        <auto-detect />
      </fonts>
    </renderer>
  </renderers>
</fop>

Nessa configuração, o elemento filterlist controla a maneira como os objetos são comprimidos no PDF de saída, e o elemento fonts instrui o processador a usar fontes que já são conhecidas do sistema operacional.

A Figura 1, que é uma captura de tela da saída das listagens anteriores retirada de um leitor de PDF, mostra o resultado ao executar a transformação.


Figura 1. O PDF de saída

Decoração de PDF

A folha de estilo pode conter itens simples de decoração:

  • Linhas de pontos aparecem no exemplo, e o seguinte código as gera:
       
    <fo:block>
      <fo:leader leader-pattern="dots" leader-length="100%" />
    </fo:block>
    

  • É possível fazer linhas em branco aparecerem usando as técnicas incluídas na Dica do developerWorks de Nicholas Chase (consulte Recursos) ou com o seguinte código:
       
    <fo:block>&#160;</fo:block>
    

Consulte a documentação FOP (consulte Recursos) para maiores possibilidades, incluindo bordas, margens, preenchimento, cor, imagens e tabelas.

Conclusão

Gerar um currículo ou curriculum vitae a partir de um arquivo XML envolve um pouco mais de trabalho, mas impõe uma estrutura disciplinada que ajuda a assegurar que o documento esteja tão completo quanto necessário.

Criar documentos usando um editor de texto ainda é uma possibilidade válida na situação simples. Como alternativa, usar um arquivo XML como fonte comum de informações para diferentes versões de um currículo é adequado a origens de dados mais intricadas. A escolha envolve duas opções: "É mais eficiente manter várias cópias de um documento juntas com marcação em um editor, ou manter diversas folhas de estilo que operam com os mesmos dados?" Ambas tendem a levar à mesma conclusão, mas usam caminhos diferentes.


Recursos

Aprender

  • Principles of XML design: Use XML namespaces with care (Uche Ogbuji, developerWorks, abril de 2004) Leia sobre algumas das dificuldades de trabalhar com namespaces e minimize problemas ao incorporar namespaces em design XML.

  • Tip: Control white space in an XSLT style sheet (Nicholas Chase, developerWorks, novembro de 2002): Entenda a retirada de espaço e espaço em branco em transformações e crie o documento que você deseja.

  • Improve your XSLT coding five ways (Benoît Marchal, developerWorks, janeiro de 2001): Inclua cinco técnicas úteis em transformações: usar CSS com folhas de estilo XSL (incluindo entidades HTML), incorporar JavaScript no lado do cliente, trabalhar com diversos documentos de entrada e usar XSLT para gerar folhas de estilo automaticamente.

  • The Open Applications Group Integration Specification (Michael Rowell, developerWorks, junho de 2003): Saiba como OAGIS funciona como um padrão.

  • Apache FOP: Saiba mais sobre esse formatador de impressão conduzido por XSL formatting objects (XSL-FO) e um formatador independente de saída.

  • Página de Conformidade do Apache FOP: Visite essa página para explorar as possibilidades de formatação em um documento FOP.

  • HR-XML: Confira essa ferramenta de implementação de HR-XML.

  • Open Applications Group: Acesse o Web site dessa organização de desenvolvimento de padrões, que desenvolve padrões de negócios com base em processo para eCommerce, Computação em Nuvem, Arquitetura Orientada a Serviços (SOA), Serviços da Web e Integração Corporativa.

  • OASIS: Saiba mais sobre a Organization for the Advancement of Structured Information Standards.

  • XSL: Mergulhe nessa família de recomendações para definir transformação e apresentação de documentos XML.

  • Mais artigos desse autor (Colin Beckingham, developerWorks, março de 2009 - presente): Leia artigos sobre XML, reconhecimento de voz, XHTML, PHP, SMIL e outras tecnologias.

  • Área de XML do developerWorks: Obtenha os recursos necessários para melhorar suas qualificações na esfera de XML.

  • My developerWorks: Personalize sua experiência no developerWorks.

  • Certificação XML da IBM: Descubra como se tornar um Desenvolvedor Certificado pela IBM em XML e tecnologias relacionadas.

  • Biblioteca técnica de XML: Consulte a zona de XML para obter uma ampla gama de artigos técnicos e dicas, tutoriais, padrões e Redbooks da IBM. Leia também mais dicas de XML.

  • eventos técnicos e webcasts do developerWorks: Mantenha-se atualizado em relação à tecnologia nessas sessões.

  • DeveloperWorks no Twitter: Inscreva-se hoje para seguir os tweets do developerWorks.

  • Podcasts do developerWorks: Ouça entrevistas e discussões interessantes para desenvolvedores de software.

  • Demos on-demand do developerWorks: Acompanhe demos que abrangem desde a instalação de produto e configuração para iniciantes até funcionalidade avançada para desenvolvedores experientes.

Obter produtos e tecnologias

Discutir

Sobre o autor

Colin Beckingham é um pesquisador, escritor e programadorfreelancer que mora no leste de Ontário, Canadá. Com diplomas da Queen's University, Kingston e interesse em horticultura, corrida de cavalos, serviço civil, varejo e viagem/turismo. Autor de aplicativos de banco de dados e de diversos artigos para jornais, revistas e on-line, seus interesse de pesquisa incluem programação de software livre e aplicativos de controle de voz em Linux®.

Ajuda para Relatar Abuso

Relatar abuso

Obrigado. Esta entrada foi sinalizada para atenção do moderador.


Ajuda para Relatar Abuso

Relatar abuso

Falha no envio do Relatório de abuso. Tente novamente mais tarde.


developerWorks: Registre-se


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Na primeira vez que você efetua sign in no developerWorks, um perfil é criado para você. Informações selecionadas do seu perfil developerWorks são exibidas ao público, mas você pode editá-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocultá-los), e seu nome de exibição acompanharão o conteúdo que postar.

Selecione seu nome de exibição

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

(Deve possuir de 3 a 31 caracteres.)


Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Classificar este artigo

Comentários

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Software livre
ArticleID=657676
ArticleTitle=Inclua estrutura XML no currículo
publish-date=07202011
author1-email=colbec@start.ca
author1-email-cc=