Transformando XML com XSLT


Quando temos um arquivo XML, podemos querer exibí-lo para o Usuário. Como seu formato é incompreensível para Usuários que não conhecem, pode-se estruturá-lo para exibir de uma forma mais amigável.

Para isso utilizamos XSLT para transformar o XML, mostrando assim ao Usuário algo compreensível, utilizando HTML para formatar e exibir estes valores.

Temos abaixo os arquivos XML e XSLT:

Arquivo XML (Categorias.xml):

 

Arquivo XSLT (Formatacao.xslt):

Vemos que utilizamos um for-each para percorrer os dados do XML baseando-se nas tags: “Dados/Registro”.

Agora em nosso arquivo ASPX, temos que criar a estrutura para resgatar o conteudo do Arquivo XML e carregar o arquivo XSLT, e assim aplicar este estilo no conteúdo do arquivo XML, e gerando o seu “output” em HTML, para que o browser possa compreender.

Temos que importar os seguintes Namespaces:

1
2
3
4
 
Imports System.IO
Imports System.Xml
Imports System.Xml.Xsl
Imports System.Text
 

Agora faremos essa tranformação no evento Page_Load do nosso WebForm. O código abaixo mostra como efetuar:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
Private Sub Page_Load(ByVal sender As Object, ByVal e As _
    System.EventArgs) Handles MyBase.Load
 
    Dim arquivoXML As String = Server.MapPath(“Categorias.xml”)
    Dim arquivoXSLT As String = Server.MapPath(“Formatacao.xslt”)
    Dim xmlDOC As New XmlDocument
    Dim xsltDOC As New XslTransform
    Dim sb As New StringBuilder
    Dim sw As New StringWriter(sb)
 
    xmlDOC.Load(arquivoXML)
    xsltDOC.Load(arquivoXSLT)
    xsltDOC.Transform(xmlDOC, Nothing, sw, Nothing)
    Response.Write(sb.ToString)
End Sub
 

Criamos dois objetos, sendo um do tipo XmlDocument e o outro do tipo XslTransform e carregamos os respectivos arquivos em cada um desses objetos. Depois disso, chamamos o método “Transform”, que aplica o estilo do XSLT no XML e através de um objeto do tipo StringWriter recuperamos o “output” gerado e atribuímos à um StringBuilder, e este por sua vez armazena o conteúdo que por fim escrevemos na tela através do Response.Write.

Anúncios

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s