3 pagine in totale: <<Indietro 1 2 [3]
Passare parametri dall'esterno
Proviamo a complicarci la vita, creando un esempio che prenda un parametro, nel caso specifico la data, in base alla selezione dell'utente:

Come sempre partiamo dal foglio di stile, che conterrà questo codice:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:az="urn:az-object"
version="1.0">
<xsl:param name="date"/>
<xsl:template match="/">
<span>Giorno di riferimento per la scadenza: <xsl:value-of select="$date" /></span>
<table border="1" cellspacing="0" cellpadding="1">
<tr>
<th>Codice</th>
<th>Descrizione</th>
<th>Data inserimento</th>
<th>Giorni giacenza</th>
</tr>
<xsl:for-each select="//articoli">
<xsl:apply-templates select="articolo" />
</xsl:for-each>
</table>
</xsl:template>
<xsl:template match="articolo">
<tr>
<td><xsl:value-of select="codice" /></td>
<td><xsl:value-of select="descrizione" /></td>
<td><xsl:value-of select="data_inserimento" /></td>
<td><xsl:value-of select="az:CalcolaData(data_inserimento,$date)" /></td>
</tr>
</xsl:template>
</xsl:stylesheet>Abbiamo aggiunto una dichiarazione per un parametro di nome "date", che visualizzeremo nella pagina inserendo:
<xsl:value-of select="$date" />Quindi tale parametro viene passato alla funzione server-side in questo modo
<xsl:value-of select="az:CalcolaData(data_inserimento,$date)" />Ed ecco quindi come diventa il codice della pagina:
private void Page_Load(object sender, System.EventArgs e)
{
if (!Page.IsPostBack)
{
Calendar1.SelectedDate=DateTime.Now;
InserisciDati(DateTime.Now);
}
}
public void InserisciDati(DateTime data)
{
XsltArgumentList args=new XsltArgumentList();
args.AddParam("date",String.Empty,data.ToShortDateString());
args.AddExtensionObject("urn:az-object",this);
Xml1.TransformSource="esempio_4.xslt";
Xml1.TransformArgumentList=args;
}
public string CalcolaData(string data,string data2)
{
DateTime dt1,dt2;
TimeSpan diff;
dt1=DateTime.Parse(data2);
dt2=DateTime.Parse(data);
diff = dt1.Subtract(dt2);
return diff.Days.ToString();
}La funzione principale è ovviamente InserisciDati. Nell'istanza di classe XsltArgumentList viene aggiunto il parametro date in cui viene inserita la data da calcolare. Quindi è stata modificata la funzione "CalcolaData", a cui è stato aggiunto un parametro di input aggiuntivo, ovvero la data passata dal documento XSL.
Conclusioni
Se desiderate approfondire maggiormente gli esempi trattati in questo articolo, vi invito a scaricare l'esempio dal link che trovare alla fine di questo articolo.
Come si può notare l'unione di XML, XSLT e del .NET Framework consente di creare facilmente sistemi di trasformazione dei contenuti, potendo tra l'altro contare su strumenti di tutto rispetto.
Approfondimenti
3 pagine in totale: <<Indietro 1 2 [3]
Attenzione: Questo articolo contiene un allegato
Contenuti dell'articolo
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.







Difficoltà
Stampa
Download



