CÓMO: Mostrar un documento XML en ASP.NET mediante el Control de servidor Web Xml

Exención de responsabilidades de contenido KB retirado

Este artículo se refiere a productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

Resumen

En este artículo paso a paso se muestra cómo utilizar el control Xml de servidor Web para que pueda mostrar un documento de lenguaje de marcado Extensible (XML) utilizando el lenguaje de transformación XSLT (Extensible Stylesheet) desde dentro de la de Microsoft.NET Framework.

El control Xml facilita la fácil de usar datos XML en un formulario Web Forms. El control Xml encapsula el código que tradicionalmente agrega el autor de la página.

Requisitos

La lista siguiente describe el hardware recomendado, software, infraestructura de red y service packs que se necesitan:

  • Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server o Microsoft Windows XP Professional con el de Microsoft.NET Framework instalado
En este artículo se supone que está familiarizado con los temas siguientes:
  • Extensible Stylesheet Language Transformation (XSLT) y XML
  • Controles de servidor Web de.NET Framework

Mostrar un documento XML de .NET

En esta sección, se crea una pequeña aplicación Web de ASP.NET que permite a un cliente seleccionar elementos de menú de la comida según recuento de calorías. Para ello, el ejemplo utiliza el control de servidor Web Xml , un documento XML simple que contiene el menú de datos y hojas de estilo XSL para transformar los datos XML. Puede utilizar la clase XsltArgumentList del espacio de nombres System.Xml.Xsl para acceder a los parámetros de la transformación.

  1. Crear una aplicación Web de Visual Basic como sigue:
    1. Inicie Microsoft Visual Studio .NET, seleccione nuevoy, a continuación, haga clic en proyecto.
    2. En Tipos de proyecto, elija Proyectos de Visual Basic. En plantillas, haga clic en Aplicación Web de ASP.NET.
    3. En el cuadro nombre , escriba menúy, a continuación, haga clic en Aceptar.
  2. Asegúrese de que está visible la ventana del explorador de soluciones. Si esta ventana no está visible, presione CTRL + ALT + L.
  3. WebForm1.aspx debe abrirse en la vista Diseño. Si no es así, haga doble clic en WebForm1.aspx en el Explorador de soluciones.
  4. Presione la tecla F4 para tener acceso a la página de propiedades. Cambie la propiedad pageLayout en FlowLayout.
  5. En el formulario de Web, escriba calorías máximo: .
  6. Agregue un control TextBox , un control Button y un control Xml al formulario como sigue:
    1. Presione CTRL + ALT + X para abrir el cuadro de herramientas.
    2. En el cuadro de herramientas, haga clic en Formularios Web Forms.
    3. Arrastre un control TextBox y un control Button desde el cuadro de herramientas al formulario Web.
    4. Presione F4 para acceder a la ventana de propiedades para el control de botón y, a continuación, cambie la propiedad Text al Menú de filtro.
    5. Coloque el punto de inserción detrás del botón y, a continuación, presione ENTRAR para colocar el punto de inserción del control Xml .
    6. Arrastre un control Xml de servidor Web desde el cuadro de herramientas al formulario Web.
    7. Presione F4 para acceder a la ventana de propiedades del control Xml . Cambie la propiedad DocumentSource a Menu.xmly, a continuación, cambie la propiedad TransformSource a Menu.xslt.
  7. Agregue el código siguiente a la parte superior de la página de código subyacente:
    Imports System.Xml.Xsl
  8. Haga doble clic en el botón para crear un controlador de evento Click en la página de código subyacente del formulario Web. Agregue el código siguiente al controlador de eventos:
    Dim tal As New XsltArgumentList()    tal.AddParam("calories", "", TextBox1.Text)
    Xml1.TransformArgumentList = tal
    Xml1.Visible = True

    Con esta lista de argumentos, puede pasar el valor del control TextBox como un parámetro a la hoja de estilos. Este comandos XSLT stylesheet utiliza para filtrar todos los elementos de menú de comida que son mayores que los de calorías que contar los tipos de clientes. La siguiente línea de código de la hoja de estilos ilustra cómo se recibe y se utiliza el parámetro:
    <xsl:for-each select="lunch-menu/food[calories <= $calories]">
  9. Utilice el código de la Menu.xml y las secciones Menu.xslt para crear el Menu.xml y los archivos Menu.xslt. Guarde estos archivos en la misma carpeta que WebForm1.aspx.

Lista de código completa

Menu.xml

<?xml version='1.0'?><lunch-menu>
<food>
<name>Cheese Pizza</name>
<price>$6.95</price>
<description>Individual deep-dish pizza with lots of mozzarella cheese</description>
<calories>800</calories>
</food>
<food>
<name>Pepperoni Pizza</name>
<price>$7.95</price>
<description>Individual deep-dish cheese pizza with thick-cut pepperoni slices</description>
<calories>950</calories>
</food>
<food>
<name>The "Everything" Pizza</name>
<price>$9.95</price>
<description>Individual deep-dish pizza with all our toppings. House specialty!</description>
<calories>800</calories> </food>
<food>
<name>Hungarian Ghoulash</name>
<price>$4.50</price>
<description>Large serving in a sourdough bread bowl. A_local delight!</description>
<calories>600</calories>
</food>
<food>
<name>Maisey's Pork Sandwich</name>
<price>$6.95</price>
<description>A fresh pork fillet, deep-fried to perfection. Served with fries.</description>

<calories>950</calories>
</food>
</lunch-menu>

Menu.xslt

<?xml version="1.0"?><xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="calories">1500</xsl:param>
<xsl:template match="/">
<HTML>
<BODY STYLE="font-family:Arial, helvetica, sans-serif; font-size:12pt;
background-color:#EEEEEE">
<xsl:for-each select="lunch-menu/food[calories <= $calories]">
<DIV STYLE="background-color:blue; color:white; padding:4px">
<SPAN STYLE="font-weight:bold; color:white"><xsl:value-of select="name"/></SPAN>
- <xsl:value-of select="price"/>
</DIV>
<DIV STYLE="margin-left:20px; margin-bottom:1em; font-size:10pt">
<xsl:value-of select="description"/>
<SPAN STYLE="font-style:italic">
(<xsl:value-of select="calories"/> calories per serving)
</SPAN>
</DIV>
</xsl:for-each>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>

WebForm1.aspx

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="menu.WebForm1"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
<meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
<meta name=vs_defaultClientScript content="JavaScript">
<meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body >

<form id="Form1" method="post" runat="server">
<P>Maximum Calories:
<asp:TextBox id="TextBox1" runat="server"></asp:TextBox>
<asp:Button id="Button1" runat="server" Text="Filter Menu"></asp:Button></P>
<P>
<asp:Xml id="Xml1" runat="server" DocumentSource="menu.xml" TransformSource="menu.xslt"></asp:Xml></P>

</form>

</body>
</HTML>

WebForm1.vb

Imports System.Xml.Xsl
Public Class WebForm1
Inherits System.Web.UI.Page
Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
Protected WithEvents Xml1 As System.Web.UI.WebControls.Xml

#Region " Web Form Designer Generated Code "

'The Web Form Designer requires this code.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

End Sub

Private Sub Page_Init(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: The Web Form Designer requires this method call.
'Do not use the Code editor to modify it.
InitializeComponent()
End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
'Insert user code to initialize the page here.
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim tal As New XsltArgumentList()
tal.AddParam("calories", "", TextBox1.Text)
Xml1.TransformArgumentList = tal
Xml1.Visible = True
End Sub
End Class

Comprobar que funciona

  1. Presione F5 para ejecutar la aplicación en modo de depuración.
  2. De forma predeterminada, todo del menú aparece. Tome nota de los recuentos de calorías para cada elemento.
  3. En el cuadro de texto, escriba una cantidad de calorías y, a continuación, haga clic en el Menú Filtro. Observe que aparecen sólo los elementos de menú que están menor o igual a este importe calorías.
  4. Presione MAYÚS + F5 para detener la depuración y volver a Visual Studio .NET.

Referencias

Para obtener más información, visite el siguiente sitio Web de Microsoft:

Para obtener información adicional acerca de los controles de servidor Web, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

306459 INFO: Introducción a los controles de servidor de ASP.NET
Propiedades

Id. de artículo: 315906 - Última revisión: 9 ene. 2017 - Revisión: 1

Comentarios