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 |
||
AUTOR: Giuliano Sposito |
Motivação |
Objetivo |
Pré-Requisito |
Introdução |
Wireless (Extensible) Markup Language |
<?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 |
<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 |
<?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 |
Referências |
|