Xsl e .net

di Andrea Zani, in .NET,

Una discussione in un ng, ho risvegliato nella mia mente un argomento che molto tempo fa avevo solo sfiorato: la possibilità di implementare nei fogli di stile xsl funzioni e metodi personalizzate in .net.

Come ho riportato in quel mio post, ecco un esempio pratico sull'argomento.

Scriviamo questo file XML (contenuto.xml):

<?xml version="1.0" encoding="utf-8" ?>
<root>
<utente>
<nome>Andrea</nome>
<cognome>Zani</cognome>
</utente>
<utente>
<nome>Daniele</nome>
<cognome>Bochicchio</cognome>
</utente>
</root>

Mi scuso ancora con Daniele per averlo incluso.

Quind il file xsl, "converti.xslt":

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:az="urn:az-scripts"
version="1.0">

<msxsl:script implements-prefix="az" language="VB">
public function UnisciDati(primo as string, secondo as string) as string
return primo+" "+secondo
end function
</msxsl:script>

<xsl:template match="/">
<p>
<xsl:for-each select="//utente">
<xsl:apply-templates select="nome" />
</xsl:for-each>
</p>
</xsl:template>

<xsl:template match="nome">
<b><xsl:value-of select="az:UnisciDati(.,../cognome)" /></b><br />
</xsl:template>
</xsl:stylesheet>

Nella nostra pagina asp.net sarà sufficiente inserire questo codice per visualizzarlo nella nostra pagina asp.net:

<asp:Xml id=Xml1 runat="server" DocumentSource="contenuto.xml"
TransformSource="converti.xslt" />

Molto semplice e interessante, vero? Una piccola annotazione, il codice .net all'interno del file xsl, è meglio inserirlo in tag appositi per non avere errori in eventuali validazioni:

<msxsl:script implements-prefix="az" language="VB">
<![CDATA[
public function UnisciDati(primo as string, secondo as string) as string
return primo+" + "+secondo
end function
]]>
</msxsl:script>

Ma come funziona? In modo molto semplice: grazie alla classe xslTrasform - classe utilizzata anche dal web control <asp:xml> - viene presa quella sezione di codice e compilata al volo.

Ma abbiamo anche una possibilità in più: richiamare una classe già compilata presente nel nostro progetto in modo da non unire codice con un file xsl.

Bella storia!

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese