Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Propiedad XmlDataSource.TransformArgumentList

 

Publicado: noviembre de 2016

Proporciona una lista de argumentos XSLT que se utilizan con la hoja de estilos definida por el Transform o TransformFile Propiedades para realizar una transformación en los datos XML.

Espacio de nombres:   System.Web.UI.WebControls
Ensamblado:  System.Web (en System.Web.dll)

[BrowsableAttribute(false)]
public virtual XsltArgumentList TransformArgumentList { get; set; }

Valor de propiedad

Type: System.Xml.Xsl.XsltArgumentList

Un XsltArgumentList objeto que contiene parámetros XSLT y objetos que se aplicará a los datos XML cuando se carga el XmlDataSource control. El valor predeterminado es null.

Establecer el TransformArgumentList propiedad cuando la Transforming evento se desencadena para asegurarse de que los parámetros XSLT están disponibles en el momento en que se aplica la transformación XSLT a los datos XML.

Si el EnableCaching propiedad está establecida en true y TransformArgumentList se establece la propiedad, las entradas de caché no se invalidan automáticamente cuando cambian los parámetros en la lista de argumentos de transformaciones. En ese caso, debe escribir código que invalide la caché estableciendo la CacheKeyDependency propiedad.

En el ejemplo de código siguiente se muestra cómo utilizar una XmlDataSource con un TreeView control para mostrar datos XML transformados. La transformación XML se realiza mediante la hoja de estilos indicada por la TransformFile propiedad. Además, la hoja de estilos utiliza argumentos de transformación que se pasan al control de origen de datos en un XsltArgumentList objeto en tiempo de ejecución. El ejemplo de código muestra cómo pasar la XsltArgumentList al control de origen de datos controlando el Transforming evento con un controlador de eventos personalizado.

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Xml.Xsl" %>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
private void TransformEventHandler(object sender, EventArgs e) {

  // Add a dynamic transformation argument.
  DateTime d = new DateTime();
  d = DateTime.Now.AddDays(20);

  // Create an XsltArgumentList.
  XsltArgumentList xslArg = new XsltArgumentList();
  xslArg.AddParam("purchdate", "", d.ToShortDateString());

  ((XmlDataSource) sender).TransformArgumentList = xslArg;
}
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
      <asp:XmlDataSource
        id="XmlDataSource1"
        runat="server"
        datafile="bookstore.xml"
        transformfile="bookswithdiscount.xsl"
        ontransforming="TransformEventHandler" />

        <!- TreeView uses hierachical data, so the
            XmlDataSource uses an XmlHierarchicalDataSourceView
            when a TreeView is bound to it. -->

      <asp:treeview
        id="TreeView1"
        runat="server"
        datasourceid="XmlDataSource1">
        <databindings>
          <asp:treenodebinding Depth="1" datamember="genre"
            textfield="name" valuefield="name"/>
          <asp:treenodebinding depth="2" datamember="book"
            textfield="title" valuefield="title"/>
          <asp:treenodebinding depth="3" datamember="chapter"
            textfield="name" valuefield="num"/>
        </databindings>
      </asp:treeview>

    </form>
  </body>
</html>

El archivo XML en el ejemplo de código tiene los datos siguientes:

<bookstore>
   <genre name="fiction">
     <book ISBN="0000000000">
       <title>Secrets of Silicon Valley</title>
       <price>12.95</price>
       <chapters>
         <chapter num="1" name="Introduction" />           
         <chapter num="2" name="Body" />          
         <chapter num="3" name="Conclusion" />
       </chapters>
     </book>
   </genre>
   <genre name="novel">
     <book genre="novel" ISBN="1111111111">
       <title>Straight Talk About Computers</title>
       <price>24.95</price>
       <chapters>
         <chapter num="1" name="Introduction" /> 
         <chapter num="2" name="Body" />
         <chapter num="3" name="Conclusion" />
       </chapters>
     </book>
   </genre>
</bookstore>

La transformación de los datos XML se realiza con la siguiente hoja de estilos.

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:param name="purchdate"/>
 <xsl:template match="bookstore">
   <bookstore>
     <xsl:apply-templates select="genre"/>
   </bookstore>
 </xsl:template>
 <xsl:template match="genre">
   <genre>
     <xsl:attribute name="name">
       <xsl:value-of select="@name"/>
     </xsl:attribute>
     <xsl:apply-templates select="book"/>
   </genre>
 </xsl:template>
 <xsl:template match="book">
   <book>
     <xsl:attribute name="ISBN">
       <xsl:value-of select="@ISBN"/>
     </xsl:attribute>
     <xsl:attribute name="title">
       <xsl:value-of select="title"/>
       Price: <xsl:value-of select="price"/>
           15% discount if purchased by: <xsl:value-of select="$purchdate"/>      
     </xsl:attribute>
     <xsl:apply-templates select="chapters/chapter" />
   </book>
 </xsl:template>
 <xsl:template match="chapter">
   <chapter>
     <xsl:attribute name="num">
       <xsl:value-of select="@num"/>
     </xsl:attribute>
     <xsl:attribute name="name">
       <xsl:value-of select="@name"/>
     </xsl:attribute>
     <xsl:apply-templates/>
   </chapter>
 </xsl:template>
</xsl:stylesheet>

.NET Framework
Disponible desde 2.0
Volver al principio
Mostrar: