In questa lezione creiamo il file "argomento.asp" che ha lo scopo di:
- aprire il file con il feed rss opportuno, ovvero quello scelto dall'utente e passatogli attraverso la querystring
- creare un form per ogni singola notizie e caricare la grammatica per ogni singolo form
- gestire la navigazione dell'utente tra una notizia e l'altra
Ora carichiamo il feed corretto nel nostro file.
<%
file="https://www.html.it/rss/" & request("argomento")
Set XML = Server.CreateObject("msxml2.DOMDocument.3.0")
XML.async = false
XML.setProperty "ServerHTTPRequest", True
XML.validateOnParse =false' true
blnLoaded = XML.Load(file)
%>
Navigando il file XML dobbiamo estrarre i nodi "title", che contengono il titolo della notizia, e i nodi "description" che contengono la notizia stessa. L'applicazione leggerà queste informazioni all'utente.
<%
Set objNodeList = XML.getElementsByTagName("item")
For Each objNode In objNodeList
For Each objNode2 In objNode.childNodes
Select Case objNode2.nodeName
Case "title"
' estraiamo il valore del title
strTNotizia = objNode2.firstChild.nodevalue
Case "description"
' estraiamo il valore della descizione
strDNotizia = objNode2.firstChild.nodevalue
End Select
Next
i = i + 1
' qui dobbiamo inserire il nostro form voicexml con le grammatiche per la navigazione
next
%>
Abbiamo già visto come inserire il codice VXML all'interno di una pagina asp, perciò ora ci preoccupiamo soltanto di come scrivere il nostro file VXML e la parte di navigazione.
<form id="notizia1">
<field name="myapp">
<grammar src="../grm/navigazione.grxml"/>
<prompt>
<p><s><%=strTNotizia=%></s></p>
<p><s><%=strDNotizia=%></s></p>
</prompt>
<noinput>
<!-- inserire qui i gestori per gli eventi di nomatch e noinput -->
<filled>
<if cond="myapp== 'aiuto' ">
<prompt>
<p>
<s>I comandi disponibili sono: prossima notizia, notizia precedente, aiuto e ripeti.</s>
</p>
</prompt>
<goto next="#notizia1" />
<elseif cond="myapp== 'rip'"/>
<goto next="#notizia1" />
<elseif cond="myapp== 'not+'"/>
<goto next="#notizia2" />
...
</field>
</form>
Ovviamente possiamo parametrizzare questo codice per far si che si adatti alle nostre dieci notizia sostituendo a notizia1, un valore che incrementeremo dal nostro codice ASP, e stessa cosa faremo per i salti della navigazione.
Vediamo come modificare il codice (riportiamo solo le voci cambiate):
listato 6.7: codice per la singola notizia modificato
<!-- qui inseriamo l'indicatore incrementato da ASP-->
<form id="notizia(<%=i%>">
<!-- per gestire i salti di navigazione in avanti scriveremo: -->
<goto expr="'notizia' + <%=i+1%>" />
<!-- per gestire i salti di navigazione indietro scriveremo: -->
<goto expr="'notizia' + <%=i-1%>" />