Transformação de arquivo XML com XSLT usando PHP

16/12/2005 09:45:00

Autor: Rondinely S. de Almeida


Serviços para Webmasters

Primeiro vamos verificar se o PHP está configurado para usar DOM XML

    // Se for encontrada a função 'domxml_xslt_stylesheet_file' consideramos
// que estamos lidando com uma versão inferior a 5 do PHP e executamos
// o código abaixo.
if (function_exists('domxml_xslt_stylesheet_file')) {

Como já dissemos antes, nas versões anteriores ao PHP 5 existiam duas maneiras principais de tranformar um documento XML em HTML utilizando-se de uma folha de estilos XSL. O código abaixo utiliza-se da biblioteca DOM XML e só será executado caso seja detectada a presença da função 'domxml_xslt_stylesheet_file' no PHP.

    //Cria um objeto DOM XML.
$xml = domxml_open_file("locadora.xml");
//Cria um objeto DOM XML com a folha de estilos XSL.
$xsl = domxml_xslt_stylesheet_file('locadora-tudo.xsl');

Criamos um objeto '$xml' com o auxílio da função 'domxml_open_file' que irá colocar no novo objeto o conteúdo do arquivo 'locadora.xml'.

Em seguida criamos o objeto '$xsl' utilizando a função 'domxml_xslt_stylesheet_file' e o conteúdo do arquivo 'locadora_tudo.xsl'. Este objeto além de armazenar a folha de estilo XSL será responsável pela tranformação do documento XML.

    //Processa o documento XML e salva o resultado.
$html = $xsl->process($xml);
//A partir do resultado imprime o documento convertido.
print $xsl->result_dump_mem($html);

Neste bloco a partir do método 'process' do objeto '$xsl' processamos o documento XML e armazenamos o resultado na variável '$html'. A seguir imprimimos na saída padrão o documento XML, já transformado em HTML, com a ajuda do método 'result_dump_mem' também do objeto '$xsl'.

Não deixe de ver também:

Pronto, este código é tudo o que necessitamos no caso de estar presente a biblioteca DOM XML. Caso contrário será executado o código a seguir, tanto no caso da versão do PHP ser 5 ou superior, quanto no caso de estar presente a biblioteca Sablotron nas versões anteriores do PHP.

} else {
    //Monta o array de argumentos com o conteúdo dos arquivos XML e XSL. 
    $arguments = array(
'/_xml' => file_get_contents("locadora.xml"),
'/_xsl' => file_get_contents("locadora-tudo.xsl")
);

Monta um o array com o conteúdo do arquivo XML e XSL para ser usado de argumento na função 'xslt_process'.

    //Cria um novo processador XSLT 
    $xsltproc = xslt_create();

Como o comentário já diz, cria um processador XSLT para fazer a tranformação dos documentos.

    //Processa o documento XML com base nos padrões do arquivo XSL e armazena o resultado. 
    $html = xslt_process(
$xsltproc, 'arg:/_xml', 'arg:/_xsl', null, $arguments
);

Usando a função 'xslt_process' e os argumentos preveamente definidos trasforma o conteúdo do documento XML e armazena o resultado na variável '$html'.

    //libera o processador XSLT da memória.
    xslt_free($xsltproc);

    //Imprime o arquivo convertido em HTML na saída padrão.
print $html; }
?>

Apaga o processador XSLT da memória e imprime o conteúdo HTML na saída padrão. A conversão será visível no navegador como no exemplo 'locadora.php' que se encontra no início deste artigo.

Espero que este artigo seja útil e uma solução prática para quem trabalha ou pensa em utilizar documentos XML e folhas de estilo XSL.

Até o próximo artigo.

Anexo I

locadora.css

table {
border-collapse:collapse;
border: 2px solid #000;
padding: 2px;
}
th {
padding:4px;
}
td {
font-family:Arial, Helvetica, sans-serif;
font-size:10px;
background-color:#FFFFCC;
color:#000;
border: 1px solid #000;
text-align:center;
padding:4px;
}

Artigos relacionados

>> Inicio <<
© Copyright hospedia.com.br - 2005
Todos os direitos reservados.
Seu Ponto de Partida na Internet
Receitas de Bolos
Lyrics
centro-top