helyoWAP

TUTORIAL WML
(02)
Programas comentados: phone1.wml - phone2.wml

Autor: Helio Fonseca Rosa

Esta página contém muitas figuras. Aguarde a carga se a conexão estiver lenta

Programa phone1.wml

Objetivo : Gerar a tela abaixo, variante do famoso "Hello World !" (Olá, Mundo !),  programa tradicional dos tutoriais de ensino de linguagens de programação.

 

phone1.wml (código)

<?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>
        WML - Meu primeiro programa
    </p>
   </card>
</wml>



A listagem acima foi copiada/colada/gravada e testada com êxito no OWG1 (sigla de OpenWave Generic1) Simulator. Conforme indicado no campo de endereço do simulador, a listagem foi gravada no micro do autor no drive "c", pasta "wml", com o nome de "phone1.wml".

O arquivo contendo a listagem também está hospedado em http://helyr.sites.uol.com.br/phone1.wml  e a mini-página correspondente poderá ser visualizada por um simulador ou celular WAP. 
O formato da tela exibida por outro simulador ou por um celular dependerá das características técnicas dos mesmos.

Comentários 
As três primeiras linhas são obrigatórias em todos os programas WML e são conhecidas como "preâmbulo".
[ A linguagem WML é considerada um aplicativo da linguagem XML. A principal característica da linguagem XML é que o programador cria facilmente suas próprias tags que são definidas em um documento chamado DTD (Document Definition Type). 
O "criador" da  WML  definiu as tags desta linguagem num DTD que pode ser visto em http://www.wapforum.org/DTD/wml_1.1.xml,  endereço este que consta do "preâmbulo" obrigatório.  Mas não se preocupe com isto agora. ]

"Copie" o "preâmbulo" em algum arquivo e "cole" em seus programas sempre que precisar, para evitar erros de digitação.

Tudo que está entre a tags <wml> e </wml> é o conteúdo de um deck. Tudo que está entre as tags  <card> e </card>  (delimitadores de cards) é o conteúdo de um card. Todo e qualquer texto dentro de um card deve estar entre um ou mais <p> e </p> (delimitadores de parágrafos). 
Neste exemplo o card possui apenas um parágrafo de texto. Então este programa contém um parágrafo de texto dentro de um único card que está dentro de um deck.
Quando uma página escrita em WML (ou seja, um deck) é acessada por um celular, todos os cards constantes do deck são descarregados de uma só vez para a memória do telefone, sendo que é exibido (de um modo geral) o primeiro card.

A palavra "Back" no canto inferior é o label (rótulo) da tecla chamada  "ACCEPT" que está logo abaixo.
Neste caso, o rótulo foi colocado pelo próprio simulador. Mas este rótulo é programável assim como a ação executada pela  tecla "ACCEPT" . A sua vizinha do lado direito é a tecla "OPTIONS". Estas teclas são conhecidas como "softkeys" ou "selections keys" e nada mais são que  mecanismos programáveis de interface com o usuário.
De um modo geral, a tecla "ACCEPT" é programada para proporcionar a entrada em algum menu ou executar comandos. E a tecla "OPTIONS" para finalizar  ações, cancelar ou redefinir comandos  ou navegar "para traz" no registro histórico.

Importante: como regra geral e segura, deve-se utilizar no máximo cinco letras nos rótulos ou labels.
Muitos celulares truncam os labels acima destre limite.
(Em nossos exemplos, didáticos, eventualmente excederemos este limite)

Alguns celulares trocam as posições ( e nomes) destas teclas. Outros não permitem a implementação do mecanismo de software ("prev")  para a tecla  "OPTIONS" pois possuem  uma tecla "BACK" que realiza a  função de retorno para o registro anterior do histórico.

Exercício
Copie/cole o programa acima no seu editor de texto. 
Acrescente um ou mais parágrafos. 
Salve o arquivo com extensão .wml (por exemplo, exercicio1.wml) com opção "somente texto" e veja o resultado no simulador. 
Procure deixar na tela do micro, em planos diferentes,  o processador de textos e o simulador. 
Maximize também a janela "Phone Information" e veja como fica fácil testar e fazer correções em seus programas.


Programa phone2.wml  

Objetivo: Gerar as duas telas abaixo. Exibida a primeira tela, pressionar a  tecla "ACCEPT", cujo label é a palavra "dois" e mudar para a segunda tela.

Figura phone2.jpg .  Carregando...          

 

 phone2.wml (código):

<?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="um">
         <do type="accept" label="dois">
            <go href="#dois"/>
        </do>

       <p align="center">
            **** helyoMOBILE ****<br/><br/>
           WIRELESS WEB <br/>
           Como funciona<br/>
           Como fazer<br/>
           ** (card 1) **
      </p>
   </card>
   <card id="dois">
     <p>
       **** helyoMOBILE ****<br/>
      Este deck, constituido de dois cards, foi escrito em
     WML - Wireless Markup Language.<br/>
     ****** (card 2) ******
    </p>
 </card>
</wml>

 

A listagem acima foi copiada/colada/gravada e testada com êxito no OWG1 Simulator. Está hospedada em http://sites.uol.com.br/helyomobile/wml/phone2.wml. O formato da tela exibida por outro simulador ou por um celular WAP dependerá das características técnicas dos mesmos.


Comentários:
Este programa contém apenas um deck e dois cards. Sempre que usamos mais de um card é uma boa prática identificá-los através do "id" que é também utilizado como âncora ou sinalizador para desvios. Assim,  temos o primeiro card identificado como <card id="um"> e o segundo identificado como <card id="dois">. O desvio para o card "dois" será efetuado pelo comando <go href="#dois"/>.
Repare neste trecho de código:
         <do type="accept" label="dois">
            <go href="#dois"/>
         </do>
Você pode ler este código assim: "faça ("do") a tecla "ACCEPT" receber o label (rótulo) "dois" e, quando acionada, desviar  ou  ir ("go") para o card "dois".
O texto  exibido na tela está centralizado; isto é proporcionado pela tag <p align="center"> (mais precisamente, elemento <p>, atributo align). Para alinhar à direita ou esquerda deve-se usar <p align="right"> ou <p align="left">.
Note que a quebra de linha "br barra" ou <br/>, é "diferente/parecida" com a HTML,  fonte de muitos erros para os principiantes.
No segundo card não utilizamos a "centralização" nem a quebra de linha, para mostrar  que isto  foi  feito automaticamente pelo simulador, que respeita os espaços em branco, ou seja, não quebra uma palavra "no meio".

O retorno ao primeiro card não está programado no código; pode ser obtido pela tecla "back" do simulador. O retorno programável é feito com o elemento <prev>, que será estudado mais adiante.

As telas dos simuladores e celulares reais possuem tamanhos diferentes. É evidente que uma aplicação para ser vista com segurança por TODOS os celulares deve ser planejada para o menor deles. 
Não há um tamanho ideal para um card. Se o conteúdo do mesmo for maior que o espaço disponível na tela, o usuário terá que efetuar um rolamento da mesma.
Num projeto mais cuidadoso pode-se distribuir  o texto a ser exibido por diversos cards,  de tal modo que cada trecho  seja exibido integralmente e a mudança de tela não seja por rolamento e sim por desvio, o que poderá eventualmente ser mais confortável para o usuário. O desvio para cards dentro de um mesmo deck é instantâneo pois estes cards estão armazenados na memória do celular.
O elemento <card> possui um atributo "title" que cada simulador ou celular poderá exibir (ou não exibir) de modo diferente .
Eis um exemplo de sua sintaxe < card id="tres" title="Terceiro">.

Exercício
Copie/cole o programa acima no seu editor de texto.
Acrescente mais um card ao programa .
Além da identificação, coloque um título em cada card. 
Coloque vários parágrafos e teste os alinhamentos à esquerda e à direita. 
No terceiro card, coloque um desvio para o primeiro card. 
Salve o arquivo com extensão .wml (por exemplo, exercicio2.wml) com opção "somente texto" e veja o resultado no simulador. Procure deixar na tela do micro, em planos diferentes, o processador de textos e o simulador. Maximize também a janela "Phone Information" e veja como fica fácil testar e fazer correções em seus programas.

WirelessBRASIL                 Portal helyoWAP                    Anterior                    Próxima