msdn31_capa.jpg

Clique aqui para ler todos os artigos desta edição

 

Gerando HTML com transformação XML/XSLT

Roberto Lopes

Este artigo discute

Este artigo usa as seguintes tecnologias

·        XML/XSLT;

·        HTML;

·        Aplicações ASP.NET

 

Visual Studio .NET 2005, C#.

 

Atualmente XML (Extensible Markup Language) é base de diversas ferramentas e tecnologias (Visual Studio, Web Services etc.). Neste artigo vou apresentar de uma forma simples a aplicação de XML e XSLT (Extensible Stylesheet Language Transformation - linguagem para transformar XML em outros tipos de documento como XML, HTML etc.), para gerar código HTML (arquivos ou strings) formatados on the fly (em tempo de execução).

Vou utilizar como exemplo uma página de confirmação de pedido de uma empresa hipotética que tem como negócio, serviços de comunicação (Internet, Telefone fixo e Telefone celular). A idéia é apresentar um formulário onde o usuário vai selecionar o tipo de serviço desejado, preencher seus dados cadastrais e clicar em um botão para enviar o formulário.

Uma página HTML será criada em tempo de execução utilizando o processo de transformação XSLT, fazendo uso de parâmetros passados pela aplicação ASP.NET e por um arquivo XML.

Por questão de espaço, não vou entrar em muitos conceitos de XML ou XSLT. Para tal, sugiro consultar a seção de Links, que certamente será uma fonte rica de informação para ambas as tecnologias. Mesmo não entrando em detalhes, será muito simples compreender todos os passos do processo de geração de documentos HTML on the fly.

Papéis

Antes de mais nada precisamos entender adequadamente os componentes que farão parte da solução e o papel de cada uma das tecnologias adotadas. Na Tabela 1, será possível encontrar cada uma das tecnologias e onde ela se “encaixa” nessa solução.

 

Tecnologia

Descrição

XML

O arquivo XML será utilizado como um “banco de dados”, contendo “pedaços” de código HTML. Nele, teremos tags para definir o texto a ser utilizado em cada tipo de produto a ser adicionado ao arquivo de saída (HTML) pelo processo de transformação XSLT.

XSLT

O arquivo XSLT vai funcionar como um “maestro” na composição do arquivo de saída (documento HTML), fazendo uso de uma linguagem própria. Ele será o responsável pela geração do arquivo HTML, processando os dados recebidos do aplicativo ASP.NET (através dos parâmetros) e buscando/adicionando blocos de dados do arquivo XML, de acordo com os parâmetros passados pelo aplicativo ASP.NET.

HTML

HTML será utilizado durante todo o processo. No XML (onde os blocos de código retornados à requisição do processo XSLT, são dados em HTML), no XSLT (que além de usar os blocos de código do arquivo XML, adicionará blocos dinâmicos de código HTML) e também será o formato de saída da transformação.

Parâmetros

Os parâmetros são fundamentais para que possamos passar dados dinamicamente para a transformação. Alguns exemplos de parâmetros a serem utilizados são: Tipo do produto (Internet, Telefone fixo e Telefone celular), Nome, Endereço etc.

Tabela 1. A definição de cada tecnologia

A transformação

Todo o processo gira em torno do arquivo XSLT, que possui uma poderosa e rica fonte de recursos para gerar saída em vários formatos (HTML, XML, PDF etc.). A linguagem usada em XSLT possui todos os recursos básicos de uma linguagem de programação (condicionais, repetição, armazenamento etc.).

Como já comentei anteriormente, a técnica adotada aqui vai utilizar um arquivo XML como fonte de dados para retornar “pedaços” do corpo da página de confirmação de acordo com o produto selecionado. Mas para que usar um arquivo XML, se podemos colocar todos os dados dentro do arquivo XSLT?

Podemos realmente fazer isso, mas voltando um pouco no artigo e observando a Tabela 1, note que citei que o XSLT será o “maestro” do processo de transformação, fazendo uso de sua linguagem para gerar o resultado final e o XML funcionaria como um banco de dados. Se fizermos uma analogia com um aplicativo convencional, seria o mesmo que colocamos todos os dados de uma tabela de um banco de dados dentro de uma classe em um programa em C#. Isso faria sentido? É claro que não.

O conceito é criar um arquivo XSLT que não precisa ser modificado (seria o “programa” do processo), independente dos produtos oferecidos e criar um arquivo XML que iria conter detalhes dos produtos, que podem modificar de acordo com a volatilidade do mercado (seria o banco de dados do processo).

Pense no seu departamento de marketing criando e alterando os dados do arquivo XML e atualizando o servidor de produção sempre que algo mudar nos produtos da empresa (sem que pra isso você precise recompilar o seu código). O XSLT não precisa ser modificado. Ele foi desenhado para trabalhar dinamicamente.

Agora com o conceito de cada tecnologia mais apurado, observe na Figura 1 o fluxo do processo desde o Click do botão até a geração do arquivo HTML.

 

image001.jpg

Figura 1. Fluxo do processo da transformação e geração do conteúdo HTML

Criando o aplicativo

Crie um novo projeto ASP.NET no Visual Studio 2005, chamado “IntegrandoXMLXSLT”. Utilizei a linguagem C# (se preferir usar VB.NET, a conversão será muito simples).

Logo em seguida, abra o Solution Explorer e crie uma pasta chamada “XML” ao projeto (clique com o botão direito sobre o nome do projeto e selecione New Folder). O Solution Explorer deverá estar parecido ao apresentado na Figura 2.

 

image004.jpg

Figura 2. Solution Explorer com pasta XML

O arquivo XML

Clique com o botão direito sobre a pasta XML e selecione Add New Item. Na janela de diálogo que se abrirá, selecione XML File, atribuía o nome “PaginaConf.xml” e clique no botão Add. Note que o novo arquivo foi adicionado na pasta e ele já foi criado com a declaração XML. Agora, adicione o código apresentado na Listagem 1 ao arquivo.

 

Listagem 1. Conteúdo do arquivo PaginaConf.xml

xml-stylesheet type="text/xsl" href="PaginaConf.xsl"?>

<paginaconfirmacao>

  <corpopagina id="Internet">

    <corpomensagem>

            <p style="font-size:12.0pt; font-family:Times New Roman">

Ao clicar o botão enviar, você assinou digitalmente seu contrato de Internet conosco.

            p>

            <p style="font-size:12.0pt; font-family:Times New Roman">

...

Quer ler esse conteúdo completo? Tenha acesso completo