WirelessBR

WirelessBr é um site brasileiro, independente, sem vínculos com empresas ou organizações, sem finalidade  comercial,  feito por voluntários, para divulgação de tecnologia em telecomunicações 

DESENVOLVIMENTO DE APLICAÇÕES WAP
Parte II - Wireless Markup Language

AUTOR: Giuliano Sposito


Motivação
O fenômeno "WAP", o acesso "sem fio" à Internet através de celulares e aparelhos portáteis, tem se tornado cada vez mais evidente em nosso dia-a-dia, e estudos demonstram que poucos anos se tornará o principal canal de acesso à rede mundial de computadores, superando o número de usuários que a acessam via computadores pessoais (tal fato já é realidade no Japão). Diante disso é impossível ignorar o seu valor estratégico e comercial, principalmente no que diz respeito à mercados corporativos.

Assim sendo, já é freqüente em nossos projetos que na intraweb a construção de aplicações que se utilizam de tal tecnologia, e faz-se assim, necessário um documento que permita aos programadores que desejam fabricar aplicações 'wireless', tomar um primeiro contato com tal arquitetura a fim de se familiarizar, no menor tempo possível, com o paradigma de desenvolvimento WAP.

 

 
Objetivo
Este documento é o segundo de uma série de artigos que tem como objetivo iniciar um desenvolvedor com experiência em aplicações WEB à construção de aplicações WAP (acessadas por dispositivos sem fio). Nesta etapa de nosso aprendizado abordaremos brevemente a linguagem de renderização utilizada pelo MicroBrowser dos aparelhos sem-fio denominada de Wireless Markup Language (Linguagem de Marcadores para Dispositivos Sem-Fio) ou simplesmente WML.

 
Pré-Requisito
Como este é o segundo documento sobre implementações de aplicações WAP, faz-se necessário então:

 

 
Introdução
O WML (Wireless Markup Language) é uma linguagem que descreve como o conteúdo WAP será mostrado ao usuário. Com WML pode-se mostrar informações num telefone celular, fornecer ao usuário opções de entrada de dados, e especificar como o dispositivo responderá quando o usuário ativar funções da interface ou pressionar botões. A especificação oficial do WML foi desenvolvida e é mantida pelo WAP Fórum, um consórcio industrial fundado pela Nokia, Phone.com, Motorola, e Ericsson. Foi especificamente projetada para gerar conteúdo e interface de usuário para dispositivos pequenos com baixa banda de transmissão (narrowband) tais como celulares, pages e palms que possuem características básicas em comum:

As características fundamentais do WML podem ser agrupadas em quatro áreas principais, a fim de fornecer suporte à construção de aplicações:
  1. WML oferece suporte a texto e a imagem através de uma variedade de comandos de formatação e layout.
  2. As unidades básicas mostradas (uma por vez) no display do dispositivo sem-fio, os CARDs são agrupados, numa estrutura chamada DECK. Um deck é similar á uma página HTML identificado por uma URL e é a unidade de transmissão de conteúdo.
  3. WML oferece suporte para gerenciamento da navegação entre cards e decks, e inclui comandos para manipulação de eventos que podem ser usados para navegação ou execução de scripts. WML também suporta hiperlinks, similar ao que é utilizado atualmente no HTML versão 4.0.
  4. Parâmetros podem ser configurados para todos os decks WML usando modelo de estados. Variáveis podem ser usadas em lugar de strings e são substituídas em tempo de execução. Configuração de parâmetros permite que recursos de redes sejam utilizados de maneira mais eficiente.
Todo o conteúdo WML é transmitido de forma compilada e codificada nas redes sem fio, essa compilação, como vimos do documento anterior, é feita pelo WAP Gateway após o recebimento dos dados de uma requisição HTTP e da verificação da sintaxe do mesmo.

 

 
Wireless (Extensible) Markup Language
A estrutura de descrição do WML é baseada inteiramente no modelo XML (eXtensible Markup Language), um padrão especificado pelo consórcio W3C, para intercâmbio de dados entre plataformas. O XML (assim como o HTML) são baseados num modelo de formatação de documentos conhecidos como SGML(Standard Generalized Markup Language). As especificações definem a sintaxe, variáveis e elementos usados no WML. Um atual WML 1.1 está disponível (absolutamente a fim de ilustração, pois está escrita em XML!) em http://www.wapforum.org/DTD/wml_1.1.xml.

Se um telefone ou outro dispositivo de comunicação é tido como WAP, significa que este possui um software, conhecido como microbrowser, e este software tem a capacidade de entender tudo que é especificado como sendo WML 1.1. A primeira informação dentro de um XML é conhecida como um prólogo. O prólogo consiste em duas linhas de código: a declaração XML (que define a versão do XML) e a declaração de documentação de validação (um ponteiro indicando uma URL contendo um documento DTD que a rigor é um XML que descreve a gramática de outro XML). Veja o prólogo abaixo, utilizado nos documentos WML:

 

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

Depois do prólogo, cada XML contém um único elemento que contém todos outros sub-elementos e entidades, como no HTML todos elementos são delimitados pelos caracteres <> e </>: <elemento>Minha Informação</elemento>. Pode haver obrigatoriamente um elemento "documento" que é a raíz da hierarquia. Com o WML, o elemento "documento" é <wml>. Todos outros elementos que descrevem o WML estarão contidos nele.

Os dois métodos mais comuns de armazenar dados com o XML são os elementos e atributos. Os elementos são itens estruturados e são representados pelas tags. Os elementos podem também conter sub elementos. Veja um exemplo a seguir:

 


 <!--cartão login --> 
 <card id="LoginCard" title="Login"> seu nome. </card> 

O comentário foi colocado entre os símbolos <!-- e --> e o elemento card contém os atributos id e title.

Outra característica de XML, que nos é relevante neste momento, é o fato de que ela é case sensitive, portanto tags escritas em caixa alta são diferentes das mesmas tags escritas em caixa baixa. Além disso, para toda tag que se abre, deve obrigatoriamente haver uma que a fecha, a estrutura <br/> é uma abreviação para <br></br>. Outra restrição de XML é que não podem haver sobreposições de tag's, por exemplo, a estrutura <b><i> </b></i> é inválida.

 
Decks & Cards

Um único documento WML é conhecido como DECK é a unidade de requisição HTTP, ou seja, cada vez que se consulta uma URL, um deck WML é baixado do site para o Wap Gateway, o equivalente a uma página HTML na WEB. Um deck é composto de um ou mais CARDs, que constituem a unidade de interação com o usuário. Assim, o usuário navega acessando um, e somente um, card de cada vez. A medida em que são percorridos, é que ocorre a transmissão do Wap Gateway para o dispositivo sem fio.



 

A vantagem desta arquitetura é que múltiplas telas podem ser baixadas para o cliente numa única requisição. Usando WMLScript, as seleções e entradas do usuário podem ser retidas e distribuídas entre os cartões já carregados, eliminando então, transações excessivas com os servidores remotos, mantendo a maior parte da navegação entre o cliente e o wap gateway. Claro, este tipo de estrutura implica em limitações para o usuário. Dependendo da capacidade de memória do cliente, pode ser necessário dividir vários cartões e vários decks para evitar que um deck fique demasiadamente grande.

Importante: Uma implicação desse tipo de arquitetura é que em aplicações, como as que nós vamos construir, baseadas em Cliente-Servidor, o processamento no servidor só pode ser realizado quando há transições entre deck. Pois como foi dito anteriormente, somente a busca por um deck gera um HTTP, transições entre cards são feitas localmente entre o dispositivo sem-fio e o wap gateway.

 

 
Variáveis
Como vários cards podem estar contidos em um deck, alguns mecanismos precisam estar acionados para reter dados, enquanto o usuário navega de card em card. Este mecanismo é fornecido pelas variáveis WML. As variáveis podem ser criadas e usadas utilizando-se diversos métodos diferentes, um deles é usando o elemento <setvar> como resultado do usuário que executa uma tarefa, acionando uma ação ou acessando um hiperlink. O exemplo abaixo criará uma variável "nome" com um valor "giuliano":

 


 <setvar name="nome" value="giuliano"/> 

As variáveis também são "setadas" através dos elementos de entrada (input, select, option, etc.). Uma variável é automaticamente criada correspondendo a um atributo de um elemento de entrada. Por exemplo, o elemento abaixo criará uma variável de nome "empresa":

 


 <select name="empresa" title="Empresa:"> 
   <option value="iw">Intraweb</option> 
   <option value="inm">InternetNaMão</option> 
 </select> 
 

É bom mencionar que quando o WML e o WMLScript trabalham juntos, eles compartilham as mesmas variáveis.

 
Criando um Deck WML
Neste exemplo, nós criaremos um deck WML que nos permite primeiramente selecionar um username da lista, entrar com uma senha, então temos nossas seleções repetidas. Basicamente será mostrado a manipulação de entrada, dos eventos e das variáveis num único deck que utiliza vários cartões (cards).

 


 <?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="Login" title="Login"> 
   <do type="accept" label="Senha"> 
    <go href="#Senha"/> 
   </do> 
   <p> 
    Usuário:
    <select name="nome" title="Nome:"> 
     <option value="giuliano">Giuliano</option> 
     <option value="renata">Renata</option> 
     <option value="leonardo">Leonardo</option> 
     <option value="thiago">Thiago</option> 
    </select> 
   </p> 
  </card> 
  
  <card id="Senha" title="Senha:"> 
   <do type="accept" label="Resultado"> 
    <go href="#Resultado"/> 
   </do> 
   <p> 
    Senha: <input type="text" name="senha"/> 
   </p> 
  </card> 
  
  <card id="Resultado" title="Resultado:"> 
   <p> 
    Entrada:<br/> 
    Nome: $(nome)<br/> 
    Senha: $(senha)<br/> 
   </p> 
  </card> 
 </wml> 

Como você pode ver, o prólogo deste documento contém a versão do XML. Depois deste, vem o elemento do documento WML, o deck, que contém três cartões: Login, Senha e Resultado. Cada um destes cartões é definido usando um elemento <card>. Os cartões do Login e da Senha também definem ações, eles utilizam o elemento <do type="accept"> para definir a ação a ser chamada.

Quando o elemento "accept" é encontrado, ele é mostrado no display do celular (ou outro dispositivo) como uma opção.

Selecionando uma destas opções, o elemento <go> será executado.

Se você está familiarizado com a tag anchor <a> no HTML, e você conhece as especificações do atributo href, então se pode fazer um link no browser para uma âncora selecionada . O elemento WML <go> e o atributo href trabalham da mesma maneira. Com HTML, para fazer um link para outro cartão no mesmo documento, você simplesmente insere o símbolo # antes do link. Por exemplo, um link para o cartão Resultado, é só definir o seguinte elemento:

 


 <go href="#Results"/> 

Este cartão resultado emprega variáveis recuperando e exibindo o conteúdo das variáveis Nome e Senha. Lembre-se que as variáveis são substituídas em um cartão ou deck usando a seguinte sintaxe:

 


 $(nome_da_variável) 

 
Mais sobre WML
Este documento, permite tomar um primeiro contato com desenvolvimento de páginas WAP conhecendo a estrutura básica de decks WML, permitindo que o leitor a partir de agora possa facilmente se orientar através de documentos mais formais sobre a linguagem WML.

A fim de aprofundar o conhecimentos sobre WML e WMLScript e adequá-los ao nível desejado para construção de aplicações WAP, sugerimos fortemente a leitura dos dois primeiros artigos na sessão de referências, ambos são guias de referências um sobre WML e o outro sobre WML Script disponíveis no Toolkit de desenvolvimento WAP da Nokia (versão 1.13 beta).

 
Referências

 

 

Anterior                               Home WirelessBR