In questa lezione scriviamo le grammatiche per il file inizio.vxml e per la navigazione.
La prima gramamatica serve esclusivamente all'utente per scegliere quale argomento desidera ascoltare, la lista degli argomenti la possiamo trovare all'indirizzo: http://www.html.it/rss.php.
La nostra grammatica perciò dovrà contenere la lista degli argomenti e alcune possibilità di pronunciare le frasi di scelta.
Il nome della grammatica, come abbiamo dichiarato nel file precendete è argomenti.grxml e la sua struttura sarà la seguente:
<?xml version="1.0"?>
<grammar
xml:lang="it-IT"
version="1.0"
mode="voice"
tag-format="Nuance"
root="myapp"
xmlns="http://www.w3.org/2001/06/grammar"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2001/06/grammar
http://www.w3.org/TR/speech-grammar/grammar.xsd">
<meta name="creator" content="Fabizio Gramuglio"/>
<rule id="argomento" scope="public">
<item>
<item repeat="0-1"><ruleref uri="#Ausiliare"/></item>
<item repeat="0-1"><ruleref uri="#Verbo"/></item>
<item repeat="0-1"><ruleref uri="#Articolo"/></item>
<item><ruleref uri="#Azione"/></item>
</item>
</rule>
<!--- level 0 grammar -->
<rule id="Azione" scope="public">
<one-of>
<item>news di accatiemmeelle punto it<tag><![CDATA[<argomento
"webnews_news">]]></tag></item>
<item>news<tag><![CDATA[<argomento "webnews_news">]]></tag></item>
<item>nius<tag><![CDATA[<argomento "webnews_news">]]></tag></item>
......
<!-- inseriamo i diversi argomenti -->
......
<item>aiuto<tag><![CDATA[<argomento "aiuto">]]></tag></item>
<item>aiutami<tag><![CDATA[<argomento "aiuto">]]></tag></item>
</one-of>
</rule>
<rule id="Ausiliare">
<one-of>
<item>vorrei</item>
<item>voglio</item>
<item>puoi</item>
<item>potresti</item>
.......
</one-of>
</rule>
<rule id="Verbo">
<one-of>
<item>ascoltare</item>
<item>leggermi</item>
......
</one-of>
</rule>
<rule id="Articolo">
<one-of>
<item>il</item>
<item>lo</item>
<item>la</item>
......
</one-of>
</rule>
</grammar>
Abbiamo associato al valore del singolo argomento il nome del file xml che dovremo aprire, cosi ci limitiremo a passarlo direttamente al file asp senza dover fare altre elaborazioni. Questo caso dimostra come si possa utilizzare l'attribuzione semantica per velocizzare e migliorare anche la stesura del codice.
Scriviamo la grammatica di navigazione per il prossimo file, ovvero quello in cui l'utente potrà scegliere di cambiare argomento, tornando indietro, oppure di passare alla prossima notizia, a quella precedente etc.
<?xml version="1.0"?>
<grammar
xml:lang="it-IT"
version="1.0"
mode="voice"
tag-format="Nuance"
root="myapp"
xmlns="http://www.w3.org/2001/06/grammar"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2001/06/grammar
http://www.w3.org/TR/speech-grammar/grammar.xsd">
<meta name="creator" content="Fabrizio Gramuglio"/>
<rule id="myapp" scope="public">
<item>
<ruleref special="GARBAGE"/>
<item repeat="0-1"><ruleref uri="#Ausiliare"/></item>
<item repeat="0-1"><ruleref uri="#Verbo"/></item>
<item repeat="0-1"><ruleref uri="#Articolo"/></item>
<item><ruleref uri="#Azione"/></item>
</item>
</rule>
<!--- level 0 grammar -->
<rule id="Azione" scope="public">
<one-of>
<item>notizia prossima<tag><![CDATA[<myapp "not+">]]></tag></item>
<item>prossima notizia<tag><![CDATA[<myapp "not+">]]></tag></item>
<item>avanti di una notizia<tag><![CDATA[<myapp "not+">]]></tag></item>
<item>notizia avanti<tag><![CDATA[<myapp "not+">]]></tag></item>
<item>notizia successiva<tag><![CDATA[<myapp "not+">]]></tag></item>
<item>successiva notizia<tag><![CDATA[<myapp "not+">]]></tag></item>
<item>seguente notizia<tag><![CDATA[<myapp "not+">]]></tag></item>
<item>notizia seguente<tag><![CDATA[<myapp "not+">]]></tag></item>
<item>notizia dopo<tag><![CDATA[<myapp "not+">]]></tag></item>
<item>ripeti<tag><![CDATA[<myapp "rip">]]></tag></item>
<item>puoi ripetere<tag><![CDATA[<myapp "rip">]]></tag></item>
<item>rileggi<tag><![CDATA[<myapp "rip">]]></tag></item>
<item>puoi rileggere<tag><![CDATA[<myapp "rip">]]></tag></item>
<item>ripeti ultimo<tag><![CDATA[<myapp "rip">]]></tag></item>
<item>ripeti ultimo paragrafo<tag><![CDATA[<myapp "rip">]]></tag></item>
<item>non ho capito<tag><![CDATA[<myapp "rip">]]></tag></item>
<!-- anche in questo caso mettiamo la possibilità di chiedere aiuto -->
<item>aiuto<tag><![CDATA[<myapp "aiuto">]]></tag></item>
</one-of>
</rule>
<rule id="Ausiliare">
<one-of>
<item>vorrei</item>
<item>voglio</item>
<item>puoi</item>
<item>potresti</item>
</one-of>
</rule>
<rule id="Verbo">
<one-of>
<item>leggi</item>
<item>mi leggi</item>
<item>leggimi</item>
<item>vai</item>
<item>torna</item>
</one-of>
</rule>
<rule id="Articolo">
<one-of>
<item>il</item>
<item>a</item>
<item>al</item>
<item>alla</item>
</one-of>
</rule>
</grammar>
In questa grammatica abbiamo perciò inserito i comandi per la navigazione e la possibilità di chiedere aiuto. Quello che ci resta da fare è scrivere il codice del documento argomento.asp per la gestione dei contenuti del feed RSS.
Open Graph Protocol, Facebook e il Web SemanticoCome sfruttare il Web Semantico "made in Facebook" |
Introduzione a RDFa - 2Arricchire un documento HTML con metadati semantici presi dal... |
Introduzione a RDFaCos'è e a cosa serve il linguaggio che potrebbe aprire il campo alle... |
Usare SVG per creare sfondi flessibili, scalabili e divertentiScopriamo cos'è il formato SVG e come possiamo usarlo in modo... |
Visualizzare i metadati RDF Dublin core con le trasformazioni XSLMettere insieme XSL, XPATH e le definizioni Dublin core per... |
Guida PodcastingUn percorso in 16 lezioni, per entrare nella filosofia del podcast... |
Guida Smil 2.0Un percorso pratico alla scoperta di SMIL: il linguaggio (XML) per... |
Guida Web serviceCosa sono, a cosa servono e come si creano servizi Web, i sistemi... |
Ogni mese, direttamente nella tua e-mail: articoli, guide, FAQ e approfondimenti sui linguaggi della famiglia XML.
Iscriviti alla newsletter