helyoWAP

TUTORIAL WML
(16)
Programas comentados: phone24.wml - phone25.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> 

Comentários:
Este programa está sendo adaptado com os mesmos elementos da linguagem WML utilizados na época de sua publicação. O objetivo era mostrar a possibilidade da construção de um wap-jornal que efetivamente funcionasse, mas com poucas (e básicas ) instruções WML. Tínhamos optado conscientemente em não programar as teclas de desvio pois estávamos na era pré-celular real em que cada simulador (mais precários que os atuais)  apresentava uma reação diferente (o que não mudou, por sinal) . Neste programa, uma tela inicial redireciona o usuário através de "links ancorados",  para vários cards. Nas tela de notícias é possível seguir para a próxima ou retornar às manchetes.Como dissemos, o programa é "básico" e não há muito que comentar.

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.

 

WirelessBRASIL                 Portal helyoWAP                    Anterior                    Próxima