Como usar um arquivo XML com um Schema Definido (XSLT) no Asp.Net
|
O método XSLT permite transformar arquivo XML em outros formatos e tem várias outras funcionalidades, é possível efetuar cálculos, filtrar informações, controlar espaços em branco em um documento entre outras funções. Abaixo segue exemplo utilizando alguns métodos possíveis no Asp.Net.
Método TransformUsando o método XslTransform, são exibidos os dados de um arquivo XML com base nas definições de um arquivo XSLT. Arquivo: xslt1.aspx(exemplo) <%@ Page Language="C#" %> <%@ import Namespace="System" %> <%@ import Namespace="System.Xml" %> <%@ import Namespace="System.Xml.Xsl" %> <html> <script runat="server"> // Exemplo usando XSLT usando o método tranform private void Page_Load(Object Sender, EventArgs e) { //Carrega-Se um documento normalmente XmlDocument doc = new XmlDocument(); doc.Load("http:/www.SEUDOMINIO.com.br/estado.xml"); //Cria-se uma instância XslTransform XslTransform xls=new XslTransform(); //Carrega-se a folha de estilo a ser usada no arquivo xml xls.Load("http://www.xyz.com.br/foreach.xslt"); //Usando o metódo transform, aplicamos a folha de estilo em doc // o parâmetro null poderia ser um caminho especifico que poderia ser mostrado o resultado XmlReader r = xls.Transform(doc,null); //No loop lemos todo o documento e apresenta o resultado no browser while(r.Read()) { Response.Write(r.ReadOuterXml()); } } </script> </html>
<?xml version="1.0" encoding="utf-8" ?> <Estados> <Estado ref="MG"> <name>Minas Gerais</name> <capital>Belo Horizonte</capital> </Estado> <Estado ref="SP"> <name>São Paulo</name> <capital>São Paulo</capital> </Estado> </Estados>
<?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <table border="1" color="#ff3300"> <xsl:for-each select="//Estado"> <tr> <td><xsl:value-of select="name"/></td> <td><xsl:value-of select="capital"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> Método SelectUsando o método Select é possível retornar um conjunto de nós especificados no Xpath. Como no exemplo abaixo: Arquivo: xslt.aspx(exemplo) <%@ Page Language="C#" %> <%@ import Namespace="System" %> <%@ import Namespace="System.Xml" %> <%@ import Namespace="System.Xml.XPath" %> <html> <script runat="server"> // Exemplo usando XSLT usando o método Select public void Page_Load(Object Sender, EventArgs e) { //Carrega-se normalmente o documento XmlDocument doc = new XmlDocument(); doc.Load("http://www.SEUDOMINIO.com.br/estado.xml"); //Usando o metódo CreateNavegator instanciamos um objeto do tipo XPathNavegator XPathNavigator Nav=doc.CreateNavigator(); //Com o método Select definimos o XPath que será utilizado no documento //i foi instanciado como XPathNodeIterator que contém o conjunto de nós que irão ser usados XPathNodeIterator i = Nav.Select("//Estado/name"); //Um loop com o valor de i que caminha entre os nós desejados while(i.MoveNext()) { //Mostrar no browser o valor do nó corrente Response.Write(i.Current.Value + "<br>"); } } </script> </html> Método CompileO método Compile é muito similar o método Select, só que por questões de performance é muito mais rápido, quando se tem arquivos maiores e expressões no Xpath mais complexas é possível se notar a diferença. O que ele faz exatamente é compilar a instrução Xpath. <%@ Page Language="C#" %> <%@ import Namespace="System" %> <%@ import Namespace="System.Xml" %> <%@ import Namespace="System.Xml.XPath" %> <html> <script runat="server"> // Exemplo usando XSLT usando o método Compile public void Page_Load(Object Sender, EventArgs e) { XmlDocument doc = new XmlDocument(); doc.Load("http://www.SEUDOMINIO.com.br/estado.xml"); XPathNavigator Nav=doc.CreateNavigator(); //A única diferença com o método select é a chamada do metódo XPathExpression cache = Nav.Compile("//Estado/name"); XPathNodeIterator i = Nav.Select(cache); while(i.MoveNext()) { Response.Write(i.Current.Value + "<br>"); } } </script> </html> Veja também
Links |
|