Visualizzare un documento XML in una Web Form con trasformazioni XSLT
Nel primo esempio con il Web Server Control
XMLDataSource abbiamo visto una semplice trasformazione, mediante il web Server Control
GridView, di un file sorgente XML in una WebForm.
L'esempio che verrà realizzato adesso, invece, prevede la lettura di critiche inviate da ipotetici
utenti, su alcuni libri.
La base di data sarà sempre un file XML al quale sono associati 2 file XSLT di trasformazione, per una
differente presentazione a video:
la prima visualizzerà un abstract di colui o colei che ha inviato il messaggio (nome, oggetto);
la seconda, espansa, mostrerà il messaggio più completo.
Il file XML avrà il seguenti nodo (aggiungerne più di uno per effettuare la prova):
<commento id="10">
<mittente>Giovanni B.</mittente>
<oggetto>Ottimo</oggetto>
<giudizio>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Phasellus iaculis, dui non convallis aliquet, purus dui vehicula.
</giudizio>
</commento>
Mostrare la prima tabella "Abstract"
Nella pagina si deve importare un WebServerControl XML:
<asp:Xml ID="Xml1" runat="server"
DocumentSource="~/App_Data/NomeFile.xml"
TransformSource="~/App_Data/FileAbstract.xslt">
</asp:Xml>
DocumentSource: è il file sorgente XML;
TransformSource: è il file XSLT che abbiamo già preparato a parte e che mostrerà, appunto,
solo il mittente e l'oggetto.
Il risultato è:
| Mittente | Oggetto |
|---|
| Giovanni B. | Ottimo |
| Michele R. | Buono |
| Annalisa T. | Mediocre |
In questo modo non leggiamo i commenti scritti dagli utenti. Lo possiamo fare aggiungendo
un altro controllo server, il WebServerControl CheckBox il quale visualizzerà, se è selezionato o meno,
o le sole intestazioni (come la tabella qui su) oppure tutti i dati, commenti compresi.
Al di sotto della tabella, si deve aggiungere il controllo CheckBox.
Oltre questo passaggio si deve anche scrivere pochissimo codice grazie al quale...
se il CheckBox è selezionato, avremo la tabella con le intestazioni.
Se, invece, è deselezionato, avremo una formattazione completamente diversa (in pratica il documento
XML legge da un secondo file XSLT. Il codice è:
If CheckBox1.Checked Then
Xml1.TransformSource = "App_Data/NomeFile.xslt"
Else
Xml1.TransformSource = "App_Data/AltroFile.xslt"
End If