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.
Uma resposta para “Usando XSL para converter XMLs em qualquer formato”
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,