상세 컨텐츠

본문 제목

[WML 기초강좌] 11. WML 에서 변수의 사용..

프로그래밍/Mobile

by 라제폰 2008. 12. 13. 19:08

본문

* WML에서 변수의 사용



<열한번째 예제>



<?xml version="1.0" encoding="ks_c_5601-1987"?>

<!DOCTYPE wml PUBLIC "-//PHONE.COM//DTD WML 1.1//EN" "
http://www.phone.com/dtd/wml11.dtd">



<wml>

<card>

<p>

OPTION태그

<select>



<option>

<onevent type="onpick">

<go href="#cd1">

<setvar name="x" value="1" />

</go>

</onevent>

1번째 CARD

</option>



<option onpick=

"
http://www.fantastock.com/casino/index.wml">WML카지노</option>

</select>

</p>

</card>



<card id="cd1">

<p>

$(x)번째 선택.

</p>

</card>

</wml>



이번 페이지에서는 WML이 HTML과 가장 중요한 차이점인 변수의 사용에 대해 알아보겠습니다.

위의 예제는 이 페이지를 쭉 보시고 이해하시면 아하~ 하실 겁니다.^^

이 예제는 일곱번째 예제와 같은 것인데 단지 변수만 하나 사용해 보았습니다.

그리고 첫번째 선택메뉴의 소스는 간단한 링크걸기(2) 강좌의 가장 밑에 참고 부분을

보시면 어떤 소스를 풀어놓은 것인지 아실 겁니다. 하나하나에 대한 설명은 나중에 해 드리죠.^^



우선 여기서는 간단한 원리만 알아볼 것이구요.

이 뒤에서부터는 변수의 사용이 매우 빈번하니 여러분이 차례대로 공부를 하다보면

자연스레 변수의 사용에 대해 이해가 되시리라 생각됩니다..



WML 변수의 이름은 글자, 숫자, 밑줄의 결합으로 구성됩니다.

단, 맨 처음 글자가 숫자가 될수는 없습니다.



올바른 변수의 예 : abc , _abc , abc_123

틀린 변수의 예 : 12abc , abc 123 (빈칸도 물론 안됩니다)



변수를 본문의 텍스트나 속성값으로 삽입 하는 방법은 다음의 방법이 있습니다.



$(name) , $(name:conversion) - name은 변수 이름



conversion이란 어떠한 변환의 옵션입니다. 이 변환에는 3가지가 있는데 한번 알아보지요.



1. e (escape)

conversion에 e라는 옵션이 들어가면 변수의 값 내부에 존재하는 특정문자를 %로 시작해서

두개의 16진수가 붙는 이스케이프 문자열로 변환됩니다. 또한 빈칸은 +로 변환됩니다.

말이 좀 어렵지요.. 예제를 보면 이해가 되실 겁니다.



만약 var 이란 변수가 abc, def 라는 값을 가지고 있다면

$(var:e)는 abc%2C+def 라는 값으로 변환됩니다. 이해가 되시는지요?



2. u (unesc)

이 옵션은 escape의 반대입니다.

즉 var이라는 변수가 abc%2C+def라는 값을 가지고 있다면

$(var:u)는 abd, def 라는 값으로 변환됩니다. 이제 아시겠죠?



3. n

변환 과정이 개입되지 않는 옵션.



conversion을 사용하지 않고 그냥 $(var) 이런식으로 사용하게 되면 기본 변환 값을 사용합니다.

대부분 conversion의 기본 변환 값은 n 이지만 몇몇 구문은 그렇지 않습니다.

값에 주로 URL이 들어가는 onenterforward, onenterbackward, href, src등의 구문 안에

변수가 $(var) 이런식으로 쓰였다면 이는 $(var:e)의 기본 값을 가지게 됩니다.



예를 들어볼게요. var1이라는 변수에 izmi, var2 라는 변수에 Hello! 라는 값이 들어있다고 가정했을때



var3 = "Welcome, $(var1)! $(var2)" 이 값은

var3 = "Welcome, izmi! Hello!" 이렇게 치환 되는 것입니다.



그리고 어느곳으로의 링크를 하기위해 다음의 문장을 사용했을때..



href="/asp/login?u=$(var1)&amp;p=$(var2)" 이 값은

href="/asp/login?u=izmi&amp;p=Hello%21" 이렇게 치환 되는 것입니다.

(&amp는 &값을 갖는 엔티티. 전에 배우셨지요? ^^ 흐뭇~)



href의 기본 변환 값은 e (escape) 이기 때문이지요.

어떤 구분이 어떤 변환 값을 갖는지 다 아신다면 좋겠지만

그것을 모를 경우에는 자신이 원하는 conversion의 값을 무조건 다 써주는 것이 좋습니다.

이렇게 하는것이 프로그램이 버그가 있을 가능성도 줄이게 되는... 좋은 습관입니다.^^



자 이제 변수의 초기값을 설정하는 방법에 대해 알아보겠습니다.

초기값 설정법은 세가지가 있습니다.



사용자 인터페이스를 이용해 사용자에게 입력 받는 방법 (후에 배우게 됩니다. Form과 비슷합니다)

WML 스크립트를 이용하는 방법 (역시 나중에 WML스크립트를 배우면서..)



그리고 <setvar> 이용.. 이것을 지금 알아보겠습니다.

<setvar>는 태스크 안에서만 이용 할 수 있습니다.

태스크란 브라우저에서 실행되어야 하는 동작을 지정하는데 사용하는 것으로

어떠한 동작을 수행하는데 필요한 정보를 캡슐화 해줍니다. 음..말이 좀 어렵죠?



알기쉽게 알아보자면

가장 자주쓰이는 태스크는 <go>, <prev>, <refresh>태스크가 있습니다.

각각 어떤 페이지로 넘어갈때, 뒤로 가기버튼으로 넘어올때, 자신의 페이지가 다시 읽혀질때

쓰이는 태스크들인데 이 태스크들로 묶여진 부분에 setvar를 이용해 변수값을 전달할수 있습니다.

이 것도 말이 좀 어렵나요.. 더 알기쉽게 예를 들어 보겠습니다.



<go href="#card1">어쩌고 저쩌고</go>

<prev>어쩌고 저쩌고</prev>

<refresh>어쩌고 저쩌고</refresh>



이렇게하면 go, prev를 이용해 다른 페이지로 넘어가거나 refresh로 현재의 카드를 다시 읽으면서

어쩌고 저쩌고 속에 들어있는 명령을 수행을 하게 되는 것입니다.

즉 어쩌고 저쩌고 속에 setvar명령이 있으면 여기서 설정된 변수의 값이 전달이 되는 것이지요.

자, 이제 이해가 되시는지요? 최대한 알기 쉽게 설명 드릴려고 하는데..힘드네요..^^;;



setvar의 사용법은 매우 간단합니다.



<setvar name="변수명" value="값" /> 이렇게 해주면 끝~

지정한 변수명안에 지정한 값이 들어간다는건 당연한 것이구요^^



자 마지막으로 정말 중요하고도 실수하기 쉬운 변수 설정 순서에대해 알아보겠습니다.



예제를 들어 볼것인데요. 이번엔 x에 one, y에 two라는 값이 들어있다고 가정해 봅시다. 그렇다면



<setvar name="y" value="$(x)" />

<setvar name="x" value="$(y)" />



이것의 값은 무엇이 될까요? 대부분의 분들은 우선 첫번째 문장에서

$(x)의 값은 one 이므로 y는 값이 one으로 바뀌고 두번째 문장에서 $(y)의 값은

아까 바뀐 one이므로 변수 x에 one이 들어간다.. 이렇게 생각하시는 분이 많을 텐데요.

이렇게 되지 않습니다!! WML은 문서 전체를 한번 쭉 읽으면서 변수값을 먼저

실제 값으로 모두 치환한 후에 다시 위에서부터 하나하나 명령이 실행됩니다.

그러므로 위의 예제는 우선



<setvar name="y" value="one" />

<setvar name="x" value="two" /> 로 치환이 된후 setvar가 명령이 행해지게 됩니다.



이점 정말 실수 자주 할만한 부분이니 꼭 잘 알고 계셔아 합니다..



자, 이번 페이지에서는 변수에 대해 알아보았습니다.

조금 길었지만 이 변수의 사용은 매우 중요하니까 꼭 잘 이해하고 계시기 바랍니다^^

 


관련글 더보기