Software y Aplicaciones Web

Blog de desarrollo de software y aplicaciones web

Comentarios Recientes

Comment RSS

MSDN Home Page (Argentina)


C# Corner


AspAlliance.com

Declaración

Las opiniones en este blog se proporcionan "TAL CUAL", sin garantías,  no confieren derechos y no reflejan, necesariamente, la opinión de quienes me contratan.
Algunas cuestiones que se comentan en el blog no son reales, cualquier similitud con alguna persona viva o muerta no es más que una coincidencia, tampoco significa que necesite terapia, soy asi.

© Copyright 2007-2010

Propaganda

Este sitio implementa publicidad basada en intereses
Oct
16.
2009

  El XML Web Server Control

En esta publicación voy a mostrar cómo se puede mostrar documentos XML "transformados" o formateados en una página web, para ello se utiliza el XML Web Server Control.

Este componente que nos facilita el Framework, nos permite mostrar en un área de una página o formulario web el contenido de un documento XML, pero lo más interesante es que se lo puede "procesar", para ello utiliza otro documento (un XSLT Extensible Stylesheet Language Transformation) que no es otra cosa que un documento en XML que indica cómo se debe procesar en este caso "transformar" el documento original.

Esto muy útil cuando la organización para la que desarrollamos una aplicación recibe frecuentemente documentos en formato XML y mediante un hoja de transformación podemos mostrar el contenido del documento.

 

Vamos a utilizar el documento XML que se genera en otra de mis publicaciones (XML y ADO.NET - parte 1).

El código aspx del formulario es muy sencillo:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm8.aspx.cs" Inherits="ADO2.WebForm8" ValidateRequest="false" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:Panel ID="pnlTransform" runat="server" GroupingText="Transformación XML">
        <asp:Xml ID="xmlTransform" runat="server" ></asp:Xml>
        <br />
        <asp:Button ID="btnDoTransformation" runat="server" 
          Text="Realizar Transformación" onclick="btnDoTransformation_Click" />
        <br />
      </asp:Panel>
    </div>
    </form>
</body>
</html>

Observen que se incorpora un panel (solo para organizar las cosas), luego un XML Web Server Control (se encuentra en la barra de herramientas donde están todos los controles de ASP.NET) y un botón para justamente realizar la transformación.

El código asociado es el siguiente:

using System;
 
namespace ADO2
{
  public partial class WebForm8 : System.Web.UI.Page
  {
    protected void Page_Load(object sender, EventArgs e)
    {
    }
    protected void btnDoTransformation_Click(object sender, EventArgs e)
    {
      DoTransformation();
    }
 
    /// <summary>
    /// Realiza la transformacion de un documento XML de acuerdo a las
    /// instrucciones del documento XSLT 
    /// </summary>
    protected void DoTransformation()
    {
      xmlTransform.DocumentSource = Server.MapPath("~/Provincia.xml");
      xmlTransform.TransformSource = Server.MapPath("~/Provincia.xslt");
    }
  }
}

Vemos que en el evento que captura el "click" del botón invocamos la transformación simplemente asignando el documento origen (el XML) y el documento con la especificación de la transformación (el XSLT).

A continuación está la hoja de transformación (Provincia.XSLT)

<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <html>
      <body>
        <table>
          <xsl:for-each select="NewDataSet/Provincia">
            <tr>
              <xsl:apply-templates select="ID" />
              <xsl:apply-templates select="Nombre" />
            </tr>
          </xsl:for-each>
        </table>
      </body>
    </html>
  </xsl:template>
 
  <xsl:template match="ID">
    <td>
      Código: <xsl:apply-templates />
    </td>
  </xsl:template>
 
  <xsl:template match="Nombre">
    <td>
      Nombre: <span style="font-size:20pt;"><xsl:apply-templates /></span>
    </td>
  </xsl:template>
 
</xsl:stylesheet>

Bueno lo que hace es realmente una estupidez (no hace falta que me lo digan Undecided), pero la idea es que podamos ver el potencial de todo lo que se puede hacer con este simple componente.

Espero que les sirva.




Categorías: ASP.NET | Programacion | WebSite | XML



Add comment




  Country flag
biuquote
  • Comment
  • Preview
Loading