Wap - Corso di WML

Cos'è il WML
WML (Wireless Markup Lenguage)è un linguaggio a marcatori che rende accessibili ipertesti a "piattaforme alternative" ai personal computer o telefoni cellulari, e i PDA (cosidetti palmari).
Le informazioni viaggiano su Internet e dalla rete raggiungono i gateway UP.Link costruiti dalla Phone.com e da questi sono avviati alla altra grande rete digitale, la GSM in Europa e la CDPD negli Stati Uniti. Dal Tcp/Ip al WAP (Wireless Application Protocol).

come funziona WAP


Quando, nella quiete della nostra casa, navighiamo su Internet con il nostro Browser noi vediamo una pagina Web Quando navighiamo in Internet con il protocollo WAP sul display del nostro cellulare vediamo una CARD. Le CARD sono, in pratica, i luoghi dove vengono visualizzate e elaborate le informazioni, cioè il testo e la grafica.
Queste CARD sono organizzate in DECK (in inglese: "deck of cards" mazzo di carte) Il DECK è l'analogo, per la struttura del sito web che tutti conosciamo. Ogni gioco di carte ha le sue regole, le CARD del WML sopratutto "compiono delle azioni" in inglese DO A TASK queste azioni sono innescate ad esempio nel premere un pulsante del cellulare.
Senza preoccuparci dell'esatta sintassi, quando voglio innescare una azione basta che scriviamo il marcatore:

<do>
</do>


e accanto a questo scriva l'attributo che precisa il tipo dell'azione che voglio innescare:

<do type=>
</do>


riportiamo in appendice l'elenco delle azioni che si possono innescare attraverso il marcatore <do>, per non appesantire la spiegazione.

Notiamo che è necessario che esiste un marcatore che inneschi un tipo di azione precisa da compiere perché non abbiamo ampie possibilità di interazione con il nostro cellulare non c'e mouse, finestre menù a tendina, tastiera qwerty con combinazione di tasti etc.

Dopo avere innescato una azione dobbiamo vedere QUALE azione inneschiamo precisamente.

<do>

???

</do>


All'interno del marcatore <do> annidiamo così una serie di marcatori che specifichino quali azioni si possono compiere Le azioni che può compiere Il WML sono quattro:

<ul type=1>

  • Andare avanti da una CARD all'altra

    <go>
    </go>

  • Andare indietro da una CARD all'altra:

    <prev>
    </prev>


  • Bloccare, fare in modo che il dispositivo WAP non faccia nulla

    </noop>

  • Aggionare, rinfrescare, i dati che sono immessi dall'utente:

    <refresh>
    </refresh>

      Questi quattro marcatori, sono chiamati TASK ELEMENT ovvero marcatori che hanno un compito.

      Esistono naturalmente dei marcatori che si occupano della compilazione di moduli.

      <imput>
      </imput>


      che si occupa di inoltrare le informazioni inserite dall'utente del dispositivi WAP-READY:

      <select>
      </select>


      che consente all'utente di fare scelte tra svariate opzioni.
      Esiste anche la possibilità di eseguire azioni di scripting come vedremo nei listati successivi. Quando, nella quiete della nostra casa, navighiamo su Internet con il nostro Browser noi vediamo una pagina Web Quando navighiamo in Internet con il protocollo WAP sul display del nostro cellulare vediamo una CARD. Le CARD sono, in pratica, i luoghi dove vengono visualizzate e elaborate le informazioni, cioè il testo e la grafica.
      Queste CARD sono organizzate in DECK (in inglese: "deck of cards" mazzo di carte) Il DECK è l'analogo, per la struttura del sito web che tutti conosciamo. Ogni gioco di carte ha le sue regole, le CARD del WML sopratutto "compiono delle azioni" in inglese DO A TASK queste azioni sono innescate ad esempio nel premere un pulsante del cellulare.
      Senza preoccuparci dell'esatta sintassi, quando voglio innescare una azione basta che scriviamo il marcatore:

      <do>
      </do>


      e accanto a questo scriva l'attributo che precisa il tipo dell'azione che voglio innescare:

      <do type=>
      </do>


      l'elenco delle azioni che si possono innescare attraverso il marcatore <do> è riportato nella lezione "l'elemento <do>.

      Notiamo che è necessario che esiste un marcatore che inneschi un tipo di azione precisa da compiere perché non abbiamo ampie possibilità di interazione con il nostro cellulare non c'e mouse, finestre menù a tendina, tastiera qwerty con combinazione di tasti etc.

      Dopo avere innescato una azione dobbiamo vedere QUALE azione inneschiamo precisamente.

      <do>

      ???

      </do>


      All'interno del marcatore <do> annidiamo così una serie di marcatori che specifichino quali azioni si possono compiere Le azioni che può compiere Il WML sono quattro:

      <ul type=1>

    • Andare avanti da una CARD all'altra

      <go>
      </go>

    • Andare indietro da una CARD all'altra:

      <prev>
      </prev>


    • Bloccare, fare in modo che il dispositivo WAP non faccia nulla

      </noop>

    • Aggionare, rinfrescare, i dati che sono immessi dall'utente:

      <refresh>
      </refresh>

        Questi quattro marcatori, sono chiamati TASK ELEMENT ovvero marcatori che hanno un compito.

        Esistono naturalmente dei marcatori che si occupano della compilazione di moduli.

        <imput>
        </imput>


        che si occupa di inoltrare le informazioni inserite dall'utente del dispositivi WAP-READY:

        <select>
        </select>


        che consente all'utente di fare scelte tra svariate opzioni.
        Esiste anche la possibilità di eseguire azioni di scripting come vedremo nei listati successivi.

        Raccomandazioni generali
        Ogni documento WML deve incominciare con questo PROLOGO:

        <?xml version="1.0"?>
        <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD wml 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">


        che è la dichiarazione XML del DTD WML.

        Il WML è, a differenza dell'HTML, è "case sensitive" ovvero, interpreta come differenti nomi di file e elementi di questi identici ma scritti con caratteri maiuscoli o minuscoli Es.

        Pippo.wml e pippo.wml

        sono differenti.

        La sintassi degli URL è analoga all'HTML.

        Esistono una serie di marcatori ed attributi che sono specifichi del WML interpretato dall'UP.SIMULATOR.
        Quando nel listato ne contiene uno mettiamo il simbolo


        e il nome preciso dell'elemento in questione. Questi elementi ed attributi ricordano, i "netscapismi" dell' HTML 3.2.

        L'attributo title NON è attualmente supportato dall' UP.BROWSER.

        Scrivere il testo   Indice generale
        <?xml version="1.0"?>
        <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
        <wml>
        <CARD>

        Hello World!

        </CARD>
        </wml>

        Questo è un listato semplicissimo.
        Abbiamo creato il file.

        <WML>
        </WML>


        dentro questo abbiamo costruito una CARD con il marcatore:

        <CARD>
        </CARD>

        Per scrivere basta annidare il testo tra questi marcatori.
        Abbiamo scritto HELLO WORLD perché è un classico della letteratura informatica.
        Facciamo un appunto sul set di caratteri usato da WML. WML usa il set di caratteri usato dal XML Universal Character Set del ISO/IEC-10646 (Unicode 2.0) e supporta ogni subset dell' Unicode character set (ad esempio US-ASCII, ISO-8859-1, o UTF-8).

        Formattare il testo - allineamento    Indice generale
        <?xml version="1.0"?>
        <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
        <wml>
        <CARD>
        <p align="right" />

        Hello World!

        </CARD>
        </wml>


        In questo listato, che è identico al precedente, il marcatore settato:

        <p align="right"/>

        determina l'allineamento del testo sulla destra del display.
        Per settare il testo al sinistra:

        <p align="left"/>

        ovviamente.

        Formattare il testo - separare da una riga vuota
        <?xml version="1.0"?>
        <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">

        <wml>
        <CARD>

        <br/> Hello World!

        </CARD>
        </wml>


        Questo è un listato semplicissimo.
        Abbiamo creato il file:

        <WML>
        </WML>


        dentro questo abbiamo costruito una CARD con il marcatore:

        <CARD>
        </CARD>


        all'interno di questi marcatori abbiamo inserito il testo.
        Il testo è separato da una riga vuota grazie all'elemento </br> che lo spezza.
        Notare che, a differenza dell'HTML, basta mettere il marcatore di fronte al testo che vogliamo spezzare.

        Se inserisci l'elemento </br> nel testo di CARD con annidato il marcatore INPUT o CARD con annidato il marcatore SELECT le varie opzioni appariranno in schermate diverse.

        Testo in grassetto
        <?xml version="1.0"?>
        <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">

        <wml>
        <CARD>
        <p>
        <b>

        Hello World!

        </b>
        </p>
        </CARD>
        </wml>


        Abbiamo creato il file:

        <WML>
        </WML>


        dentro questo abbiamo costruito una CARD con il marcatore:

        <CARD>
        </CARD>


        All'interno del marcatore Bold, cioè grassetto:

        <b>
        </b>


        scriviamo il nostro testo che apparirà, appunto, in grassetto.

        Testo in corsivo
        <?xml version="1.0"?>
        <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">

        <wml>
        <CARD>
        <p>
        <i>

        Hello World!

        </i>
        </p>
        </CARD>
        </wml>


        Abbiamo creato il file:

        <WML>
        </WML>


        dentro questo abbiamo costruito una CARD con il marcatore:

        <CARD>
        </CARD>

        Il testo scritto dentro il marcatore:

        <i>
        </i>


        apparirà in corsivo.

        Testo sottolineato
        <?xml version="1.0"?>
        <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">

        <wml>
        <CARD>
        <p>
        <u>

        Hello World!

        </u>
        </p>
        </CARD>
        </wml>


        Abbiamo creato il file:

        <WML>
        </WML>


        dentro questo abbiamo costruito una CARD con il marcatore:

        <CARD>
        </CARD>


        Il testo scritto dentro il marcatore:

        <u>
        </u>


        apparirà sottolineato.

        L'UP.BROWSER non supporta questo marcatore.

        Grandezza dei caratteri    Indice generale
        <?xml version="1.0"?>
        <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">

        <wml>
        <CARD>
        <p>
        <big>

        Hello World!

        </big>
        </p>
        </CARD>
        </wml>


        Abbiamo creato il file:

        <WML>
        </WML>


        dentro questo abbiamo costruito una CARD con il marcatore:

        <CARD>
        </CARD>


        Il testo scritto dentro il marcatore:

        <big>
        </big>


        apparirà ingrandito.

        Questo marcatore non è supportato dall'UP Browser.

        <?xml version="1.0"?>
        <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">

        <wml>
        <CARD>
        <p>
        <small>

        Hello World!

        </small>
        </p>
        </CARD>
        </wml>


        Abbiamo creato il file:

        <WML>
        </WML>


        dentro questo abbiamo costruito una CARD con il marcatore:

        <CARD>
        </CARD>


        Il testo scritto dentro il marcatore:

        <small>
        </small>


        apparirà in caratteri piccoli.

        Creare una tabella    Indice generale
        <?xml version="1.0"?>
        <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">

        <wml>

        <CARD>

        <table align="C" title="label" columns="3">
        <tr>
        <td>colonna 1</td>
        <td>colonna 2</td>
        <td>colonna 3</td>
        </tr>
        </table>
        </CARD>
        </wml>


        Abbiamo creato il file:

        <WML>
        </WML>


        dentro questo abbiamo costruito una CARD con il marcatore:

        <CARD>
        </CARD>


        All'interno di questa abbiamo annidato una tabella.
        costituita da 3 colonne con il marcatore:

        <table>
        </table>


        Il marcatore ha tre attributi:

        align=""

        che può essere:

        align="l" LEFT se vogliamo che il testo nella nostra tabella sia spostata a sinistra

        align="c" CENTER se vogliamo che il testo nella nostra tabella sia spostata al centro

        align="r" RIGHT se vogliamo che il testo nella nostra tabella sia spostata a destra

        title="" che dà un titolo alla nostra tabella

        Questo marcatore non è supportato dall' UP.BROWSER:

        colums="carattere numerico"

        che indica il numero di colonne della nostra tabella.
        Notiamo la presenza del marcatore:
        <tr>
        </tr>


        e del relativo marcatore annidato:

        <tr>
        <td>
        </td>
        </tr>


        analoga alla sintassi di tabelle dell'HTML.

        Inserire un'immagine    Indice generale
        <?xml version="1.0"?>
        <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
        <WML>
        <CARD>
        <img alt="testoalternativo" src="http://www.html.it/logo.wbmp" " align="middle" height="100" width="100" vspace="" hspace=""/>
        </CARD>
        </WML>


        Abbiamo creato il file:

        <WML>
        </WML>


        dentro questo abbiamo costruito una CARD con il marcatore:

        <CARD>
        </CARD>


        All'interno di questa CARD annidiamo il marcatore:

        <img/>

        che consente l'inserimento di grafica nella CARD Questo marcatore, che assomiglia molto al "parente" HTML ha 8 attributi:

        alt="" che consente l'inserimento di testo alternativo qualora non sia possibile mettere in onda l'immagine.

        src="" che specifica l'URL completo dell'immagine che vogliamo mettere in onda.

        align="" che specifica l'allineamento dell'immagine rispetto al testo l'align può essere

        top immagine allineata in alto
        middle immagine allineata al centro
        bottom immagine allineata in basso

        height="" L'altezza dell'immagine attributo non supportato dall' UP.BROWSER

        width="" La larghezza dell'immagine attributo non supportato dall' UP.BROWSER

        vspace="" Lo spazio vuoto verticalmente all'immagine. Attributo non supportato dall' UP.BROWSER

        hspace="" Lo spazio vuoto orizzontalmente attorno all'immagine. Il valore predefinito, di default, è zero.

        Abbiamo inserito un file .WBMP.
        I file .wbmp sono particolari file grafici in bianco e nero, con la profondità di un bit, adeguati alle caratteristiche dei telefono cellulari o dispositivi analoghi. E' disponibile un convertitore di files grafici per chi desiderasse convertire immagini per "cellulari"; si chiama pic2wbmp e si può scaricare da: http://www.gingco.de/

        Inserire un'icona
        <?xml version="1.0"?>
        <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">

        <wml>
        <CARD>
        <p>

        guarda la mia emoticon

        </p>
        <br/><img alt=":)" localsrc="smileyface" />
        </CARD>
        </wml>


        Abbiamo creato il file:

        <WML>
        </WML>


        dentro questo abbiamo costruito una CARD con il marcatore:

        <CARD>
        </CARD>


        All'interno di questa CARD annidiamo il marcatore:

        <img/>

        e il suo particolare attributo:
        localsrc=""

        che consente, specificando il nome di una determinata icona, di farla apparire sul display del nostro dispositivo. Se l' icona non è presente nella ROM (Read-Only Memory) del dispositivo verrà scaricata direttamente dall'UP.LINK Server.
        Naturalmente le icone possono avere aspetto differente a seconda del dispositivo usato.
        Riportiamo l'elenco con il nome di tutte le icone e la relativa immagine.

        Clicca qui per ingrandire l'immagine


        Link esterni    Indice generale
        <?xml version="1.0"?>
        <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">

        <wml>
        <CARD>

        <a href="http://www.html.it/home.wml" title="vai"> html.it sul nostro telefonino

        </a>
        </wml>
        </CARD>


        Abbiamo creato il file:

        <WML>
        </WML>

        dentro questo abbiamo costruito una CARD con il marcatore:

        <CARD>
        </CARD>


        Dentro questa CARD abbiamo annidato il marcatore <a href="">
        </a>


        che crea un'ancora ipertestuale verso un altro DECK o CARD E' necessario che vi sia l'attributo:

        hreF=""

        che specifica l'URL.
        Se noi aggiungiamo l'attributo:

        title=""

        sul fondo del display del nostro dispositivo, se lo consente, vedremo scritto quello che abbiamo specificato se non inseriamo niente vedremo scritto come valore predefinito, di default, LINK.



        Bisogna anche notare che qui non si innesca alcun marcatore. <go>
        </go>



        Abbiamo scelto di introdurre nel listato sui LINK proprio questa particolarità del marcatore:

        <a href="">
        </a>


        Il TASK solo in questa occasione, per questo marcatore è in un certo senso, "sottinteso" dal WML.
        Nei successivi esempi sarà adeguatamente specificato.

        Ancore o link interni
        <?xml version="1.0"?>
        <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">

        <wml>
        <CARD>
        <do type="accept"title="tasto">
        <go href="#CARD2"/>
        </do>
        <p>
        premi il pulsante per andare alla schermata successiva
        </p>
        </CARD>

        <CARD id="CARD2">
        <p>
        schermata successiva.
        </p>
        </CARD>
        </wml>


        Abbiamo creato il file:

        <WML>
        </WML>


        dentro questo abbiamo costruito una CARD con il marcatore:

        <CARD>
        </CARD>


        Incontriamo il nostro primo marcatore:

        <do>
        </do>


        che innesca, come dicevamo sopra, una azione compiuta dall'utente ovvero la pressione di un determinato tastino, il tastino in questione non è specificato è definito in maniera astratta dall' attributo:

        type="accept"

        che significa tastino schiacciato per chiarire bene che tipo di azione compiamo ci aiuta l'attributo:

        title=""

        che fa apparire, in fondo al display del nostro dispositivo una scritta esplicativa.
        per assicurare la compatibilità ad un grande numero di dispositivi la scritta non dovrebbe essere più lunga di cinque carattteri Se l'attributo è lasciato vuoto appare come predefinita, ovvero di default, la scritta OK.
        La conseguenza di questa azione che l'utente compie è determinata dal marcatore:

        <go>
        </go>


        che causa il richiamo ad una CARD o ad un DECK. Questo marcatore è un task element Nota che, nel nostro esempio, per richiamare una CARD abbiamo usato il carattere # se volevamo richiamare un URL di un DECK dovevamo scriverlo nel consueto modo.

        Gli attributi del marcatore:

        <go>
        </go>


        sono:

        href="" che ci conduce, come nell'HTML, ad un'altra CARD o ad un'altro DECK

        method="" che indica, come nell'HTML, in che maniera i dati vanno sottomessi al server può essere get o post

        Alla fine, notiamo, che, all'interno del marcatore:

        <go>
        </go>


        possiamo, a differenza degli altri marcatori WML, non annidare nulla in tal caso dobbiamo però scrivere nella forma di marcatore chiuso:

        </go>

        Tasto Back per tornare alla pagina precedente    Indice generale
        <?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">

        <wml>
        <CARD>
        <do type="accept" title="indietro">
        <prev/>
        </do>
        <p>
        premi il pulsante per andare al DECK precedente
        </p>
        </CARD>


        Abbiamo creato il file:

        <WML>
        </WML>


        dentro questo abbiamo costruito una CARD con il marcatore:

        <CARD>
        </CARD>


        Incontriamo il marcatore:

        <do>
        </do>


        che innesca, come dicevamo sopra, una azione compiuta dall'utente ovvero la pressione di un determinato tastino, il tastino in questione non è specificato è definito in maniera astratta dall' attributo:

        type="accept"

        che significa tastino schiacciato per chiarire bene che tipo di azione compiamo ci aiuta l'attributo:

        title=""

        che fa apparire, in fondo al display del nostro dispositivo una scritta esplicativa.
        per assicurare la compatibilità ad un grande numero di dispositivi la scritta non dovrebbe essere più lunga di cinque caratteri Se l'attributo è lasciato vuoto appare come predefinita, ovvero di default, la scritta OK.

        la conseguenza di questa azione che l'utente compie è determinata dal marcatore:

        <prev>
        </prev>


        che causa il brusco ritorno indietro al DECK precedentemente visitato.

        Abbiamo creato questo listato per vedere come funziona in effetti, un task element che non sia il solito:

        <go>
        </go>


        Tu, che stai compulsando con infinita pazienza il nostro corso, potrai esercitarti creando i tuoi listati con gli altri task element.

        Un link con la tastiera numerica del cellulare


        <?xml version="1.0"?>
        <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
        <wml>
        <CARD>
        <a href="http://www.html.it/home.wml" accesskey="0" title="">

        premi la tastiera alfanumerica

        </a>
        </CARD>
        </wml>


        Abbiamo creato il file:

        <WML>
        </WML>


        dentro questo abbiamo costruito una CARD con il marcatore:

        <CARD>
        </CARD>

        Dentro questa CARD abbiamo annidato il marcatore:

        <a href="">
        </a>

        che crea un'ancora ipertestuale verso un altro DECK o CARD.

        Possiamo, attraverso l'attributo:

        accesskey="0|1|2|3|4|5|6|7|8|9"

        far partire il collegamento schiacciando un determinato tasto alfanumerico che noi specifichiamo e che l'utente vedrà sul display del suo dispositivo.

        Come l'utente inserisce testo in una card    Indice generale
        <?xml version="1.0"?>
        <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">

        <wml>
        <CARD>
        <p>
        Tuo Nome:
        <input name="nome" maxlength="15" /> <br/>
        Tuo Cognome:
        <input name="cognome" maxlength="15" /> <br/>
        Città: <input name="citta" maxlength="2" emptyok="true" value="CA" /> <br/>
        cap:
        <input name="cap" maxlength="5" /> <br/>

        </CARD>
        </wml>


        Abbiamo creato il file:

        <WML>
        </WML>


        dentro questo abbiamo costruito una CARD con il marcatore:

        <CARD>
        </CARD>


        in questa CARD incontriamo il marcatore:

        <imput/>

        che crea la riga di un modulo che l'utente deve riempire.

        Questo marcatore ha una serie di attributi:

        name="" Che specifica il nome della variabile in cui le informazioni che inserisce l'utente verranno immagazzinate

        emptyok="true" Quando l'utente compila un modulo ha la facoltà di non riempire alcune righe che non sono fondamentali.
        Nel codice WML, per definire quali sono queste righe usiamo questo attributo. Se lo settiamo su "true" significa: "E' ok se l'utente lascia vuota la riga" Se lo settiamo su "false" significa: "Questa riga DEVE essere riempita".

        maxlength="" Con questo attributo definiamo la lunghezza massima del testo che l'utente deve inserire. Va inserito in caratteri numerici.

        Come l'utente inserisce testo maiuscolo
        <?xml version="1.0"?>
        <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">

        <wml>
        <CARD>
        <p>
        Inserisci i tuoi dati:
        <input name="nome" format="X" />
        </CARD>
        </wml>


        Abbiamo creato il file:

        <WML>
        </WML>


        dentro questo abbiamo costruito una CARD con il marcatore:

        <CARD>
        </CARD>


        in questa CARD incontriamo il marcatore:

        <imput/>

        che crea la riga di un modulo che l'utente deve riempire.
        Questo marcatore ha un attributo particolare:

        format=""

        Settato con il carattere "X" maiuscolo fa in modo che qualsiasi carattere alfanumerico che l'utente inserisce appaia scritto maiuscolo Per fare in modo che l'utente non inserisca più di un determinato numero di caratteri devo scrivere nel valore dell'attributo quanti devono essere:

        format="3X"

        Come l'utente inserisce testo minuscolo
        <?xml version="1.0"?>
        <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">

        <wml>
        <CARD>
        <p>
        Inserisci i tuoi dati:
        <input name="nome" format="x"/>
        </CARD>
        </wml>


        Abbiamo creato il file:

        <WML>
        </WML>


        dentro questo abbiamo costruito una CARD con il marcatore:

        <CARD>
        </CARD>


        in questa CARD incontriamo il marcatore:

        <imput/>

        che crea la riga di un modulo che l'utente deve riempire.
        Questo marcatore ha un attributo particolare:

        format=""

        Settato con il carattere "x" maiuscolo fa in modo che qualsiasi carattere alfanumerico che l'utente inserisce appaia scritto minuscolo Per fare in modo che l'utente non inserisca più di un determinato numero di caratteri devo scrivere nel valore dell'attributo quanti devono essere:

        format="3x"

        Come l'utente inserisce una password
        <?xml version="1.0"?>
        <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">

        <wml>
        <CARD>
        <p>

        Password:

        <input name="password" maxlength="8" type="password"/>
        </p>
        </CARD>
        </wml>


        Abbiamo creato il file:

        <WML>
        </WML>


        dentro questo abbiamo costruito una CARD con il marcatore:

        <CARD>
        </CARD>


        in questa CARD incontriamo il marcatore:

        <imput/>

        che crea la riga di un modulo che l'utente deve riempire.
        Questo marcatore ha un attributo particolare:

        password=""

        che occulta il testo di una password che, NOTA BENE, non viene in alcun modo criptata.
        E' analogo al marcatore dell' HTML:

        <input type=hidden >
        </input>


        e al marcatore dell'HDML:

        <ENTRY NAME=password NOECHO=TRUE>
        </ENTRY>


        Scelta tra varie opzioni
        <?xml version="1.0"?>
        <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">

        <wml>
        <CARD>
        <p>
        prego scegli il tuo colore preferito:
        <select multiple="true" name="colore">
        <option value="1">rosso</option>
        <option value="2">verde</option>
        <option value="3">blu</option>
        </select>
        </p>
        <do type="accept"><noop/></do>
        </CARD>
        </wml>


        Abbiamo creato il file:

        <WML>
        </WML>


        dentro questo abbiamo costruito una CARD con il marcatore:

        <CARD>
        </CARD>


        in questa CARD incontriamo il marcatore:

        <select>
        </select>


        che determina la scelta tra varie opzioni ognuna di queste opzioni è annidata dentro il marcatore:

        <option value="">
        </option>


        Il marcatore <select> ha il seguente attributo:

        multiple="true|false" che determina se la scelta deve avvenire tra molte (true) o un'unica opzione (false).

        Vi è poi il marcatore:

        <do type=accept>
        </do>


        che innesca un'azione che non porta a nulla, che fa in modo che il dispositivo non faccia nulla cioè il TASK ELEMENT:

        </noop>

        Scelta tra opzioni rappresentate graficamente
        <?xml version="1.0"?>
        <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
        <wml>
        <CARD>
        <p>
        fai la tua scelta
        <select name="color"multiple="false">
        <option value="1">
        <img src="/logo.wbmp" alt="scelta"/>
        </option>
        </select>
        </p>
        <do type="accept"><noop/></do>
        </CARD>
        </wml>


        Abbiamo creato il file:

        <WML>
        </WML>


        dentro questo abbiamo costruito una CARD con il marcatore:

        <CARD>
        </CARD>


        in questa CARD incontriamo il marcatore:

        <select>
        </select>


        che determina la scelta tra varie opzioni ognuna di queste opzioni è annidata dentro il marcatore:

        <option value="">
        </option>


        Il marcatore <select> ha il seguente attributo multiple="false" che determina una scelta in un'unica opzione (false).

        All'interno del marcatore:

        <option>
        </option>


        abbiamo inserito un marcatore che consente l'inserimento della grafica:

        <img src="/logo.wbmp" alt="scelta"/>

        che abbiamo lungamente trattato nel capitolo come si inserisce l'immagine.
        Vi è poi il marcatore:

        <do type=accept>
        </do>


        che innesca un'azione che non porta a nulla, che fa in modo che il dispositivo non faccia nulla cioè il TASK ELEMENT:

        </noop>

        Modello di riferimento per un intero Deck    Indice generale
        <?xml version="1.0"?>
        <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
        <wml>

        <template onenterforward="http://www.html.it" onenterforward="URL">

        <do type="help">

        </template>

        </wml>

        Abbiamo creato il file

        <WML>
        </WML>

        Dentro questo annidiamo il marcatore:

        <template>
        </template>


        Questo marcatore permette che un determinato marcatore <do></do> annidato sia disponibile attraverso varie CARD.
        Nel nostro esempio il marcatore:

        <do type=help>
        </do>


        sarà reso disponibile a tutte le CARD a partire dall'URL specificato nell'attributo:

        onenterforward="URL"

        Inserire informazioni per la gestione del DECK
        <?xml version="1.0"?>
        <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
        <head>

        <access domain="http://www.html.it" path="http://www.html.it/home.wml"/>

        <meta http-equiv="Cache-Control" content="max-age=3600" forua= true />

        </head>

        Abbiamo creato il file

        <WML>
        </WML>


        prima di creare una CARD inseriamo il marcatore:

        <head>
        </head>


        che come il suo equivalente dell'HTML consente di annidare i metamarcatori, ovvero dei marcatori che non hanno nulla a che fare direttamente con la navigazione e lo scripting ma che forniscono una serie di informazioni sul DECK vediamo di analizzarli dettagliatamente:

        <access domain="domain" path="path"/> ci fornisce informazioni sul dominio del DECK e sulla directory precisa in cui si trova la CARD.

        <meta http-equiv="Cache-Control" content="max-age=timr" forua= true /> Per capire cosa è il Cache-Control dobbiamo pensare alla cache dei nostri soliti Web-browser: nella cache dei nostri browser le pagine web sono immagazzinate per essere immediatamente scaricate e e visualizzate invece nel nostro UP.BROWSER le informazioni "sopravivono " per un pò; Noi settiamo il TTL time to live la "soppravivenza"delle informazioni immagazzinate nella cache del nostro browser. Il tempo di soppravivenza delle nostre informazioni è misurato in secondi ed è descritta dall'attributo:

        content="max-age="time"

        Dove time sta, appunto per i millesimi di secondo che deve durare la CARD immagazzinata nella cache Se non è specificata alcuna Cache-Control ttl allora la CARD verrà ricaricata ogni volta dal server. Per specificare il ttl bisogna bilanciare adeguatamente la media capienza della R.O.M. (Read Only Memory) del nostro telefono cellulare e la velocità di trasmissione delle nostre informazioni.

        forua false|true Specifica se le informazioni debbano essere (true)o non essere (false) trasmesse al browser del nostro dispositivo.

        Come si crea uno SPLASH SCREEN
        <?xml version="1.0"?>
        <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">

        <wml>
        <CARD ontimer="http://www.html.it/home.wml">
        <timer value="50"/>
        <p>benvenuto nel sito html.it</p>
        </CARD>
        </wml>


        Abbiamo creato il file

        <WML>
        </WML>


        dentro questo abbiamo costruito una CARD con il marcatore:

        <CARD>
        </CARD>


        in questa CARD incontriamo l' attributo del marcatore CARD:

        ontimer"" Questo attributo fa in modo che un determinato URL appaia per un determinato periodo di tempo sul display del nostro cellulare. Il tempo in cui l'URL viene visualizzato è misurato in decimi di secondo.
        Nel listato di esempio 50 quindi equivale a 5 secondi.

        Questa durata viene impostata in un specifico marcatore:

        <timer value=""/>

        che appare, nel WML, solo con questo compito.
        Con questo listato abbiamo creato uno splash screen ovvero una schermata che, come i titoli di testa di un film, introduce un programma. Esiste una gerarchia di eventi nel WML, cioè nelle nostre CARD vengono eseguiti prima i marcatori:

        • <onevent>

        • <timer>

        • <do>


        Come si aggiornano i valori inseriti nella CARD
        <?xml version="1.0"?>
        <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
        <wml>
        <card title="prova" ordered="false">
        <do type="ACCEPT">
        <go method="post" href="http://www.html.it/cgi">
        <postfield name="nome" value="$nome"/>
        <postfield name="cognome" value="$cognome"/>
        </go>
        </do>
        <do type="options" label="Clear">
        <refresh>
        <setvar name="nome" value=""/>
        <setvar name="cognome" value=""/>
        </refresh>
        </do>
        <p> Metti il tuo nome: <input title="nome" name="nome"/>
        Metti il tuo cognome: <input title="cognome" name="cognome"/>
        </p>
        </card>
        </wml>


        Questo listato è relativamente complicato e mette in gioco alcuni marcatori che abbiamo precedentemente spiegato ed altri nuovi.

        Abbiamo creato il file:

        <WML>
        </WML>


        dentro questo abbiamo costruito una CARD con il marcatore:

        <CARD>
        </CARD>


        Questa CARD contiene l'attributo:

        ordeered="false"

        Se fosse settato TRUE le istruzioni contenute seguirebbero un'ordine definito in questa CARD incontriamo due volte il marcatore:

        <do>
        </do>


        La prima volta si occupa di innescare un marcatore:

        <go method"post"URL"">
        </go>


        che inoltra ad un server HTTP le informazioni variabili contenute all'interno del marcatore:

        <postfield value="$">

        che serve appunto ad immagazzinare variabili che devono essere inoltrate ad un server.
        Queste variabili sono inserite dall'utente utilizzando il marcatore:

        <imput key="">
        <imput>


        dove l'attributo key specifica appunto il nome di una variabile che verrà inoltrata.

        Se vogliamo operare una correzione ai dati che abbiamo inserito entra in gioco il secondo marcatore:

        <do type="OPTION">
        </do>


        che innesca, se l'utente preme nel cellulare il tastino che corrisponde ad OPTION, un aggiornamento delle informazioni che l'utente inserisce Questo aggiornamento è specificato appunto all'interno del marcatore:

        <refresh>
        </refresh>


        all'interno di questo marcatore che rinfresca le informazioni abbiamo inserito il marcatore:

        <setvar name="">
        </setvar>


        che contiene appunto le variabili.

        Sul display del nostro dispositivo WAP-ENABLED vedremo apparire la scritta:

        metti il tuo nome

        metti il tuo cognome

        inseriamo i nostri dati


        e premiamo il tasto enter così i dati verrano inoltrati al server, altrimenti premiamo il tasto option e potremo cancellare e riscrivere prima di inoltrare i nostri dati al server.

        Il marcatore ONEVENT
        <?xml version="1.0"?>
        <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">

        <wml>

        <card ordered="false">
        <onevent type="onenterbackward">
        <prev/>
        </onevent>

        </wml>

        Abbiamo creato il file

        <WML>
        </WML>


        dentro questo abbiamo costruito una CARD con il marcatore:

        <CARD>
        </CARD>


        Il primo marcatore che incontriamo è il marcatore:

        <onenevent>
        <onenevent>


        che innesca un 'azione qualora l'utente prema un determinato tasto ad esempio, in questo caso, se l'utente preme il tastino del cellulare che fa tornare indietro entrerà in gioco il TASK ELEMENT:

        </prev>

        che ci farà tornare indietro al DECK precedente.
        Esiste una gerarchia di eventi nel WML, cioè nelle nostre CARD vengono eseguiti prima i marcatori:

        • <onevent>
        • <timer>
        • <do>


        Elenco degli attributi dell'elemento DO    Indice generale
        Attributo Azione che viene innescata schiacciando un certo pulsante

        type= accept viene innescato il meccanismo che fa accettare una azione compiuta dall'utente, ad esempio la pressione di un tastino

        delete viene innescato il meccanismo che cancella una azione.

        help viene innescato il meccanismo che mostra un aiuto.

        options viene innescato il meccanismo che mostra una serie di opzioni.

        prev viene innescato il meccanismo che fa tornare indietro verso la CARD precedente. reset viene innescato il meccanismo di reset. L' UP.Browser non supporta attualmente questo TASK

        unknown viene innescato un meccanismo "sconosciuto"(equivalente al TYPE=""). L' UP.Browser non supporta attualmente questo TASK

        vnd.co-type viene innescato un meccanismo specificato dal costruttore di un particolare dispositivo WAP-ENABLED. L' UP.Browser non supporta attualmente questo TASK

        X-*, x-* sono lasciati per future versione del WML (non riservati da un venditore). L' UP.Browser non supporta attualmente questo TASK

        Come si scrivono i caratteri    Indice generale
        Se voglio che nel display appaia < nel listato devo scrivere <

        Se voglio che nel display appaia > nel listato devo scrivere >

        Se voglio che nel display appaia ' nel listato devo scrivere &apos;

        Se voglio che nel display appaia " nel listato devo scrivere "

        Se voglio che nel display appaia & nel listato devo scrivere &

        Se voglio che nel display appaia $ nel listato devo scrivere $$;

        Se voglio che nel display appaia spazio non interrotto nel listato devo scrivere & nbsp;




      •  
           Home Page
           Wap e WML
           WML editing
           Emulatori Wap
            
           Lezioni del corso
           Introduzione al corso
           Scrivere il testo
           Formattare il testo
           Stile del testo
           Creare una tabella
           Immagini e icone
           Creare i link
           Tasti
           I moduli WML
           Elementi di scripting
           L'elemento <do>
           Scrivere i caratteri


        Scrivi una E-mail
        Pagina completamente relizzata dalla Zinasoft Se sei interessato alla relizzazione
        di una pagina web per la tua azienda, contattaci cliccando sul logo.