|
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).
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.
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:
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:
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 '
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;
|