Usando XSL para converter XMLs em qualquer formato

Em determinadas situações, nos vemos na tarefa de converter algum formato de representação descritiva para o formato do sistema em que trabalhamos. O XML é um formato amplamente adotado para a representação e que muitas vezes se torna dificil de trabalhar com ele por falta de padronização.

O XML é uma ferramenta útil para diversas situações, aqui descreverei uma maneira simples de converter formatos de XML usando XSL:

O primeiro passo é entender o formato de destino. Neste exemplo, usarei o DC importado pelo DSPACE. O formato

[code language=”xml”]
< ?xml version="1.0" encoding="UTF-8"?>
<dublin_core schema="dc">
<dcvalue element="title" qualifier="none" language="pt_BR"></dcvalue>
</dublin_core>
[/code]

O segundo passo é entender o formato de origem. Como os formatos podem variar, o grande segredo é entender quais dados são importantes e em que lugar da estrutura do XML eles estão. O XML tem uma estrutura hierárquica, o que facilita a localização do dado.

E o terceiro é criar um XSL para converter os dados:

[code language=”xml”]
< ?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="xml" indent="yes" version="1.0" encoding="UTF-8"></xsl:output>

<xsl:template match="/">
<dublin_core schema="dc">
<dcvalue element="title" qualifier="none" language="pt_BR"><xsl:value -of select="/art/fm/bibl/title"></xsl:value></dcvalue>
</dublin_core>
</xsl:template>

</xsl:stylesheet>
[/code]

É necessário criar o formato de saida e usar o xsl para conseguir os valores das variáveis. Neste exemplo, o xsl é xsl:value-of select=”/art/fm/bibl/title” e que recupera o valor da hierarquia /art/fm/bibl/title no documento original e copia no documento de destino.

Em caso de informações repetitivas, é necessário usar outros recursos do xsl como o xsl:if ou o xsl:for-each.

O quarto passo é rodar em lote para quem usa Linux usando o programa xlstproc ( apt-get install xlstproc ): Para que ele rode, é necessário usar 3 argumentos: o arquivo original, o arquivo xsl contém as regras de conversão, e o nome do arquivo de saída.

Não testei, mas é possível usar o XSL no MARCEdit também. É uma forma de usar a interface gráfica.

1 pensamento em “Usando XSL para converter XMLs em qualquer formato”

  1. Bem legal o post!
    Venho trabalhando com a XSLT já faz algum tempo.
    O tema de minha dissertação, inclusive, é a utilização da XSLT na conversão de registros.
    Em breve defenderei, se quiser, te enviarei uma cópia!
    Abraços,

Deixe uma resposta