helyoWAP |
|
TUTORIAL
WML |
Autor: Helio Fonseca Rosa
Esta página contém muitas figuras. Aguarde a carga se a conexão estiver lenta.
Programa
Phone24.wml
Objetivo: adaptar parte do programa para construção de um jornal
(comentado neste mesmo site) para em seguida, no próximo programa (phone25.wml),
fazer modificações utilizando o elemento <spawn>.
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="inicio">
<p align= "center">
** JECAWAP NEWS **<br/><br/>
<a href="#not1">MANCHETE 1</a><br/>
<a href="#not2">MANCHETE 2</a><br/>
<a href="#not3">MANCHETE 3</a><br/>
</p>
</card>
<card id="not1">
<p align="center">
** JECAWAP NEWS **<br/>
Manchete 1<br/>Texto da primeira noticia<br/>
<a href="#not2">Proxima</a><br/>
<a href="#inicio">Inicio</a> </p>
</card>
<card id="not2">
<p align="center">
** JECAWAP NEWS **<br/>
Manchete 2<br/>Texto da segunda noticia<br/>
<a href="#not3">Proxima</a><br/>
<a href="#inicio">Inicio</a> </p>
</card>
<card id="not3">
<p align="center">
** JECAWAP NEWS **<br/>
Manchete 3<br/>Texto da terceira noticia<br/>
<a href="#inicio">Inicio</a> </p>
</card>
</wml>
Phone25.wml
Objetivo: modificar o código anterior para obter telas semelhantes (não
iguais), mas utilizando o elemento <spawn>.
Phone25.wml (código):
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//PHONE.COM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card title="Manchetes">
<do type="accept">
<spawn href="$(nomekard:noesc)">
<catch/>
</spawn>
</do>
<p align="center" mode="nowrap">
** JECAWAP NEWS **<br/>( SPAWN )<br/>
<select name="nomekard">
<option value="#kard1">MANCHETE 1</option>
<option value="#kard2">MANCHETE 2</option>
<option value="#kard3">MANCHETE 3</option>
</select>
</p>
</card>
<card id="kard1" title="Noticia1">
<do type="accept" label="Proxima">
<go href="#kard2"/>
</do>
<do type="options" label="Fim">
<exit/>
</do>
<p align="center">
** JECAWAP NEWS **<br/>
Manchete 1<br/><br/>Texto da primeira noticia
</p>
</card>
<card id="kard2" title="Noticia2">
<do type="accept" label="Proxima">
<go href="#kard3"/>
</do>
<do type="options" label="Fim">
<exit/>
</do>
<p align="center">
** JECAWAP NEWS **<br/>
Manchete 2 <br/>
<br/>Texto da segunda noticia
</p>
</card>
<card id="kard3" title="Noticia3">
<do type="accept" label="Primeira">
<go href="#kard1"/>
</do>
<do type="options" label="Fim">
<exit/>
</do>
<p align="center">
** JECAWAP NEWS **<br/>
Manchete 3<br/><br/>
Texto da terceira noticia
</p>
</card>
</wml>
Comentários:
Este programa contém um deck e três cards. Veja a representação dos
contextos:
Vamos comparar duas estruturas de desvios para tentar ganhar um pouco de flexibilidade em técnicas de programação. O trecho abaixo foi copiado do programa phone7.wml e logo a seguir está o trecho correspondente deste programa phone25.wml que estamos comentando. Procure fazer a comparação por você mesmo.
***********************************************************************
(....phone7.wml...)
<card
id="card1">
<p align="center">
<do type="accept"
label="Mensagem">
<go href="#exibir_mensagem"/>
</do>
<strong>**
helyoMOBILE **</strong><br/></p>
<p>
Escolha um signo:
<select name="horoscopo"
ivalue="2">
<option
value="Evite fazer promessas.">Capricornio</option>
<option
value="Aguarde grandes acontecimentos.">Peixes</option>
<option
value="Um novo amor espera por voce.">Aries</option>
</select>
</p>
</card>
************************************************************************
(...phone25.wml...)
<card title="Manchetes">
<do type="accept">
<spawn href="$(nomekard:noesc)">
<catch/>
</spawn>
</do>
<p align="center" mode="nowrap">
** JECAWAP NEWS **<br/>( SPAWN )<br/>
<select name="nomekard">
<option value="#kard1">MANCHETE 1</option>
<option value="#kard2">MANCHETE 2</option>
<option value="#kard3">MANCHETE 3</option>
</select>
</p>
</card>
No phone7.wml a variável "horóscopo" definida
no <select> recebe como conteúdo uma frase definida no <option>.
No phone25.wml a variável "nomekard" definida no <select>
recebe como conteúdo um endereço definido no <option>.
Este conteúdo, cuja referência normal seria $(nomekard), será agora
referenciado como $(nomekard:noesc) se usado com "go href..."
ou "spawn href...", como é o caso.
Quando se estuda com mais detalhes o assunto "variáveis em WML"
encontramos os chamados "escaping modifiers" que são três: noesc,
escape e unesc (também assunto par mais tarde).
No phone7.wml podemos notar que a tecla
"ACCEPT" efetua o desvio sempre para o mesmo card, que
gera telas diferentes de cada vez pois utiliza a mesma variável com mensagens
diferentes.
No phone25.wml a tecla "ACCEPT" desvia para cards
diferentes pois o endereço de desvio é o conteúdo de uma variável que
muda com a opção escolhida.
Cada card apresenta uma programação da tecla "OPTIONS" e encontramos <exit/> que é a versão "tag isolada" (standalone tag) do par <exit> </exit> comentado no programa phone23.wml.
Nas telas de notícias é possível retornar às anteriores (circularmente, dentro do contexto interno) ou encerrar o contexto e voltar às manchetes.