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!
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- C# e Net 6 in Kubernetes con Prometheus e Grafana, il 12 gennaio 2022 alle 21:58
- Snaturare Kubernetes evitando i custom container Docker, il 6 gennaio 2022 alle 19:40
- Provando Kaniko in Kubernetes come alternativa a Docker per la creazione di immagini, il 18 dicembre 2021 alle 20:11
- Divertissement con l'OpenID e Access Token, il 6 dicembre 2021 alle 20:05
- Operator per Kubernetes in C# e Net Core 6., il 28 novembre 2021 alle 19:44
- RBAC in Kubernetes verso gli operator, il 21 novembre 2021 alle 20:52