Introdução
Quem trabalha com
PHP, invariavelmente acaba trabalhando com bancos de dados e, em algum momento, precisará criar relatórios dos dados armazenados.
O caminho normal, e em um primeiro momento o mais fácil também, é mesclar código PHP com código HTML para criar a exibição do relatório, porém, essa alternativa acaba se mostrando pouco produtiva quando nos deparamos com a necessidade de alteração na estrutura dos dados, ou no leiaute dos relatórios.
É claro que existem várias ferramentas que podem ser utilizadas para a criação de relatórios, porém, nem sempre elas estão disponíveis ou atendem plenamente às necessidades do projeto, então, acabamos nos voltando para fazer os relatórios "na mão".
Contudo, como geralmente acontece com a maioria de nossas necessidades, em termos de desenvolvimento de sistemas, alguém já encontrou a solução, bastando para nós, apenas encontrá-la e aprender a utilizar. Para o caso de relatórios, felizmente, existe o
XML/XSLT, como veremos neste texto.
XML e XSLT
XML (eXtensible Markup Language) é uma recomendação do
World Wide Web Consortium (W3C) para gerar linguagens de marcação para necessidades especiais. (1)
É um dos subtipos da SGML (acrônimo de:
Standard Generalized Markup Language, ou: Linguagem Padronizada de Marcação Genérica), capaz de descrever diversos tipos de dados. Seu propósito principal, é a facilidade de compartilhamento de informações através da internet. (2)
Em meados da década de 1990, o W3C começou a trabalhar em uma linguagem de marcação que combinasse a flexibilidade da SGML com a simplicidade da HTML. O princípio do projeto era criar uma linguagem que pudesse ser lida por software e integrar-se com as demais linguagens.
Sua filosofia seria incorporada por vários princípios importantes: (2)
- Separação entre conteúdo e formatação;
- Simplicidade e legibilidade, tanto para humanos quanto para computadores;
- Possibilidade de criação de tags sem limitação;
- Criação de arquivos para validação de estrutura (chamados DTDs);
- Interligação de bancos de dados distintos;
- Concentração na estrutura da informação, e não na sua aparência.
O XML é um formato para a criação de documentos com dados organizados de forma hierárquica, como se vê, frequentemente, em documentos de texto formatados, imagens vetoriais ou bancos de dados. (2)
Por sua vez, o XSL Transformations, ou XSLT (eXtensible Stylesheet Language for Transformation - linguagem extensível para folhas de estilo de transformações), é uma linguagem de marcação XML usada para criar documentos XSL que, por sua vez, definem a apresentação dos documentos XML nos browsers e outros aplicativos que a suportem. (3)
É importante observar que o documento XSL não altera o documento XML original, ou seja, não cria outro documento. Neste sentido, ele (o documento XSL) atua como as folhas de estilos CSS: apenas determina como o browser apresenta o documento XML, ao qual está associado ou anexado (de uma forma bem parecida à usada para associar uma folha de estilos CSS a um documento (X)HTML). O browser recebe o documento XML original, na íntegra, como ele foi criado e apresenta-o como o documento XSL determina. (3)
Mas há uma diferença importante entre XSLT e CSS: o documento XSL pode adicionar conteúdo à apresentação do documento XML no browser e também, pode esconder conteúdo do XML apresentado no browser. Portanto, XSLT possibilita transformações mais potentes do que as folhas de estilo CSS. (3)
XSLT é parte da especificação XSL (as outras partes sendo XSL-FO e XPath). Como a XML e a HTML, a especificação XSLT é uma recomendação desenvolvida pelo W3C. (3)
Pela sua portabilidade, já que é um formato que não depende das plataformas de hardware ou de software, um banco de dados pode, através de uma aplicação, escrever em um arquivo XML, e um outro banco distinto pode ler, então, estes mesmos dados. (3)
Como podemos ver, ao combinarmos PHP, XML e XSLT, podemos criar relatórios que podem ser facilmente modificados porque, se quisermos modificar a aparência dos relatórios, basta mudar os arquivos XSL, se quisermos modificar a estrutura do banco de dados, basta alterarmos o código PHP que gera os dados em XML (veremos isso adiante). Podemos, inclusive, disponibilizar vários leiautes de relatórios a partir dos mesmos dados, apenas com um XSL diferente para cada leiaute.
Passos para criar relatórios com PHP, XML e XSLT
Vamos ao decorrer deste texto, mostrar de forma simples e mais didática possível, como utilizar PHP, XML e XSLT para criar relatórios. Para isso, utilizaremos um exemplo de um relatório simples que exibe uma lista de produtos, descrição e valor.
Abordaremos o tema em cinco passos, começando pela definição dos dados a serem exibidos, criação do XML, do XSL e do processador XSLT e a transformação do XML em HTML.