본문 바로가기

WML

wml programming tip

출처 : http://wizand.springnote.com/pages/45365

그런데 두번째 select를 011 최신형 왑폰으로 확인해본 결과
----------------
on/off

상위
--------------
위와 같이 나오며 아무것도 할 수가 없네요..

----------------
정리한 글
-----------------

국내 이동사업자
011wml
016/018 me
017/019 hdml

011은 swml SK wml을 씁니다. 약간 스펙이 wml가 다릅니다.

017,019에서 hdml 을 지원한다구 단지 hdml만 되는건 아님니다.
그건 권장사항입니다.

물론 그쪽 CP로 들어가려면 hdml로 작성하셔야 겠지요.
하지만 wml화일도 컨버젼을 해줍니다.

wml 화일을 hdml 형식에 맞게 바꿔서 보여주게 됩니다.

물론 UP4.X 대 버젼에서 사용되는 태그나 문법형식은 지원하지 않습니다.
UP3.X 대 버젼에 맞게 작성된 wml 화일은 무난히 작동합니다.
그리고 011의 WAP은 에릭슨계열의 GateWay 를 사용하기 때문에

UP 쪽과 약간의 차이를 보입니다. (do, select, 키 제어.등등)

많은 차이는 없습니다.

011 browser에서 postfield 지원한다.

네플에서는 문제가있어 지원되지 않을 수 있다.
핸뽕에서는 postfield가 제대로 넘어가는데 네플에서는

공백(Null값)이 넘어간다.

----------------------------------------------------------
[참고] 각 통신사별 언어, 브라우저, 그리고 시뮬레이터 알림

- 019 EZ-I
탑재브라우저 : Phone.com 의 UP 왑브라우저.
언어 : WML1.0, WML Script1.0 (1.1버전은 안됩니다)
HDML (웬만하면 HDML 사용하세요 Phone.com 것임)
시뮬레이터 : UP 4.0 사용하면 무난
시뮬레이터와 핸폰과의 결과비교 : 거의 비슷

- 011 n-TOP
언어 : WML, WML Script
시뮬레이터 : UP 4.0 사용하면 안됩니다. 결과가 다릅니다.
가장 비슷한 시뮬레이터는 네플에서 제작한 시뮬레이터
시뮬과 폰의 결과는 60-70% 정도 비슷합니다.

- 017 : 011과 똑같을꺼라고 생각됩니다.

- 016, 018 : 공개된 ME 시뮬 쓰세요.
016, 018은 왑브라우저가 아니라 ME 브라우저가 탑재되어 있습니다.
코딩은 HTML 과 똑같습니다.

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

--------------------------------------------
011에서 selcet가 먹히지가 않네요.

커서키를 아래위로 움직여서 메뉴를선택하는것은 되지만
숫자키만으로 메뉴를 이동하는것은 안되네요.

그리고 up에서는 1,2,3 번호가 자동으로 부여되는데 011에서

select는 라디오버튼처럼 보이네요.
do type="accept" 대신에 011은
<do type="vnd.next"> <do type="vnd.prev"> <do type="vnd.up">쓰면

된다고 해서 구현해보니 accept랑 똑같이 보이더군요.

예제1)
<p>리스트입니다.<br/></p>
<do type="vnd.skmn1" label="첫번째">
<go href="first.wml"/>
</do>
<do type="vnd.skmn2" label="두번째">
<go href="second.wml"/>
</do>

예제2)
<card id="top">
<do type="vnd.skmn1" label="전송">
<go href="./login.php4?user_id="$id"/>
</do>
<p><input title="ID" type="text" name="id" format="*f" value=""/></p>
</card>

select 태그와 같은 결과를 확인할 수 있는 예제)

<p>
<do type="vnd.skmn1" label="공용주소록">
<go href="URL1">
</do>
<do type="vnd.skmn2" label="개인주소록">
<go href="URL2">
</do>
<do type="vnd.skmn3" label="일정관리">
<go href="URL3"/>
</do>
<do type="vnd.skmn4" label="전사공지사항">
<go href="URL4"/>
</do>
</p>

Tip) vnd.up의 사용이 카드덱에서 newcontext="true"로해서 안되었더군요.
-----------------------------------------------------------------
SK의 브라우저 및 LG의 일부 브라우저(AUR)는

UP와 100%호환이 되지 않습니다.

특히 select문 부분은 아주 골치 아프죠.
<do type="vnd.skmn1"> </do> 를 이용해서

select문과 비슷해보이게 구현하는게 오히려 더 보기 좋을 수도 있습니다.

SKT의 n-top은 현재 AUR browser를 사용하고 있는 것으로 알고 있습니다.
그런데 LGT의 ez-i의 경우는 UP-browser를 사용하고 있어서

<select> <option>을 사용하면 1, 2, 3 이렇게 자동적으로 키패드의

숫자와 맵핑이 됩니다.
그러나 n-top은 그렇게 안나오는군요.

하지만 n-top의 메뉴구성을 보면 숫자와 키맵핑이 되어있는 것을

볼수 있습니다.
이는 spec외에 자체적인 WAP-spec을 규정하여 사용하고 있기

때문입니다.

질문)
<do type="vnd.skmn1" label="나의정보">
<go href="my_info.asp"></go></do>
<do type="vnd.skmn2" label="메뉴1"></do>
<do type="vnd.skmn3" label="메뉴2"></do>
<do type="vnd.skmn4" label="메뉴3"></do>

이런식으로 만들어서 테스트를 했는데 화면에서의 메뉴는 OK, 나의정보만 나오는군요..

1.나의정보
2.메뉴1
3.메뉴2
4.메뉴4
[선택]

답변)
<Select>를 사용한 경우의 휴대폰 인터페이스가 <do>태그의 Type="vnd.skmn1~9"를 사용한것과는 조금 다르다.
<Select>를 사용한 경우
multiple="true"인 경우는 동그란 특수문자 있죠? 그것이 리스트 앞에 붙구요.
multiple="false"인 경우는 "체크박스" 비슷한 것이 붙습니다.
문제는 휴대폰 마다 인터페이스가 다르다는 것입니다.
그리고 skmn 방식을 사용하시면 앞에 숫자가 붙습니다.

1.나의 정보
2.메뉴1
3.메뉴2
4.메뉴3

과 같이요.
질문에서 안나온다고 한 부분은요. <go> 태그를 붙이지 않았기 때문입니다.
<do> 다음에는 <go> <refresh> <prev> <noop> 중에 하나가 꼭 와야 한답니다...
이것이 WML의 문법입니다.

-----------------------------------------------
011 sky폴더 기기를 기준으로 말씀 드리면,
<do type="vnd.up" Label="처음화면"><go href="default.wml"/></do>
<do type="vnd.prev" Label="이전화면"><prev/></do>
<do type="vnd.next" Label="다음화면"><go href="next.wml"/></do>
이렇게 작성했을때 기기 좌측면버튼의 상단부터 키맵핑이 됩니다.
(ㅇ)처음화면
(|>)이전화면
(A )다음화면

--------------------------------------
<option>기능이란게 리스트 앞에 숫자가 붙어서 해당 숫자판을 누르면 그 메뉴를 선택한 것이 되어 링크된 페이지로 들어가는거잖아요.
sk폰에서는 <option>기능을 사용하면 화면이 제대로 나오지 않거든요. 그래서 다른 방법으로 <option>기능을 구현해서 쓰고 있어요.
db에서 불러오는 자료를 다음과 같이 써서 번호를 붙여주죠.
php로 구현한 예제로, 제목을 누르면 내용이 나오는 겁니다..

/**************************************************************************/
<do type='vnd.skmn<?$i?>' label='[$row[sTitle]]'>
--> label안의 부분이 선택될때 이동하게 되는 부분..<a ..>와 사이부분 이랄까?
<go href='./publicbull.php3' method='post'>
-->값을 넘길때 get방식이면 안넘어가더라구요.
<postfield name='step' value='1' />
<postfield name='uid' value='$uid' /> --> 넘어가는 값들..
</go>
</do>
/************************************************************************/

물론 변수i값은 처리를 통해 페이지당 9 이상 안넘어가게 하고요. 이렇게 하면 <option> 쓴것처럼 리스트 앞에 1,2,..번호가 붙고 번호를 누르면
해당 메뉴가 가리키는 페이지로 이동을 하게 됩니다. 이렇게 하려니 label부분에 text외에 다른것은 오지 못하더라구요.
-------------------------------

WAP에서 글씨가 흘러가게 하는 태그는 다음과 같습니다.
WML : <p mode="nowrap">안녕하세요. 권성인입니다.</p>

물론,,, 핸드폰의 가로 액정사이즈 보다 긴 문장이어야 합니다.
그렇지 않은 경우는 Scroll 되지 않슴다..

--------------------------------
<%Response.ContentType="text/vnd.wap.wml;charset=KS_C_5601-1987"%>
<?xml version="1.0"?><!DOCTYPE wml PUBLIC "-//WAPFORM/DTD WML_1.1/EN"
"http://www.wapforum.org/dtd/wml_1.1.xml">
<wml>
<card>
.........
</card>
</wml>

-----------------------------------------------------------------
각 통신사별의 무선인터넷 개발 Spec.

국내의 무선인터넷 휴대폰은 WAP과 ME 그리고 삼성의 Anyweb 브라우져
3가지 모델로 나눌수 있습니다.

------------------------------------------------------
<?xml version="1.0" encoding="KS_C_5601-1987" ?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD wml 1.1//EM" "http://www.wapforum.org/DTD/wml.xml">

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

-----------------------------------------------------
011에서는 전화걸기를 할때 아래와 같이 사용하고 있습니다.
<do type="vnd.call" label="전화걸기"><go href="wtai://wp/mc;0111234567"/></do>

그리고, 017, 019에서는
<select>
<option onpick="wtai://wp/mc;0171234567">전화걸기</option>
</select>
http://www.wapis.co.kr/bbs/board.html?start=150&mode=&field=&s_que=&code=QnA

--------------------------------------------------
## 011 폰에서의 쿠키 ##

WAP 폰의 경우 원래 폰 자체에는 세션 지원을 위한 쿠키에 관련된 부분이 없습니다.
대신 WAP Gateway에서 대신 쿠키를 관리해주어서 세션이 유지될 수 있도록 합니다.

그러나, !!!
애석하게도 011에서 사용하고 있는 WAP Gateway는 쿠키를 처리해 주지 못합니다. 따라서 쿠키 방식으로 세션을 사용하시지는 못합니다. 대신, URLRedirect 라는 방식으로 세션을 처리하시면 사용하실 수 있습니다.
그리고 011에서도 일부 WAP Gateway를 UP 사 것으로 교체한 것으로 들었는데, 이 Gateway의 경우 쿠키를 제대로 지원합니다.


## 011 폰에서의 이동버튼 ##

011 실제폰에서는 이전, 다음 등의 버튼 <do type="accept"> 등의 tag 들이 실제 버튼이 아니라 화면상에 링크처럼 표시됩니다. ^^;
<do type='vnd.next'> <do type='vnd.prev'> 형식으로 쓰시면 됩니다.

-------------------------------------------------------
011에서 지원되는 sk_wml의 do_type 값
현재 단말에서 지원되는 sk_wml의 do_type 은

상위 : vnd.up
다음 : vnd.next
이전 : vnd.prev
숫자 : vnd.skmn<i>

등이 있습니다.

WML에서 vnd.으로 시작하는 건 아무거나 상관없습니다
또한 vnd.skmn1은 1에 대한 accesskey를 의미하는 것 아닙니다
임의의 do tag에 vnd.skmn3을 설정하구
그 다음에 오는 do tag에 vnd.skmn1을 설정하구 테스트하면,
1번키의 do event는 vnd.skmn3으로 설정한 do의 task를 실행하는 걸 확인하실 수 있을 겁니다

---------------------------------------------------
[011] 핸드폰 번호 알아내기
minum=Request.ServerVariables ("HTTP_COOKIE")

minum = Mid(minum,instrRev(minum,"=")+1)
minum = left(minum,instrRev(minum,";")-1)


011의 게이트웨이를 통해 전송되는 단말의 쿠키값 중
key_name이 min에 대한 값을 참조하시기 바랍니다

----------------------------------------------------
cache 문제 해결?

남 기범입니다.

많은 분들이 cache 문제때문에 머리를 긁적이시는 것 같군요.

cache에 남아 있어서, 정상적으로 원하는 내용이 동작하지 않습니까?

다음과 같은 소스 코드를 참고하시기 바랍니다.

<ASP 일경우>
Response.AddHeader "Cache-Control", "no-cache"
Response.AddHeader "Expires", "0"
Response.AddHeader "Pragma", "no-cache"

<HTTP 일경우>
<meta http-equiv="Cache-Control" content="no-cache"/>
<meta http-equiv="Expires" content="0"/>
<meta http-equiv="Pragma" content="no-cache"/>

이상입니다.

----------------------------------------------------------
헤더정보를 보면 핸드폰의 ID가 넘어오니까 그걸 가지고 인증을 하면 되죠.
핸드폰 단말기마다 ID가 다르므로 인증에 관해서라면 쿠키나 세션을 쓰지 않고 이 것만가지고 충분할걸요.

$011 = getenv(HTTP_USER_AGENT);
하셔서 헤더정보 전체를 가져오셔도 될테고. 접속한 전화기의 핸드폰 번호만 가져오고 싶다면 그냥 $MIN 을 출력하시면 됩니다.
$MIN 에는 클라이언트 전화기의 전화번호가 저장 되어지는 군요.

======================================
011 에 대한 내용입니다. (중복)

<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head>
<!--Forward Refresh-->
<meta http-equiv="Cache-Control" content="max-age=no-cache" forua="true"/>
<!--Backward Refresh-->
<meta http-equiv="Cache-Control" content="must-revalidate" forua="true"/>
</head>

-------------------------------------------------
011에서 지원되는 sk_wml의 do_type 값
현재 단말에서 지원되는 sk_wml의 do_type은 (애니콜 폴더 SCH A8800에서 확인)

상위 : vnd.up ==> 왑폰의 메뉴 버튼에 상위란 단어가 표시되며, 이동한다. label을 기록하면 않된다.
다음 : vnd.next ==> 왑폰의 라벨을 기록하면 오른쪽 화살표와 함께 라벨의 이름이 기록된다.
이전 : vnd.prev ==> vnd.next와 같다.
숫자 : vnd.skmn<i>

등이 있습니다.

-------------------------------------------------
WML Cache Control

1. 파일(Deck)에 대한 Cache Control
1) WML <meta> 태그 속성을 이용
<head>
<!--Forward Refresh-->
<meta http-equiv="Cache-Control" content="max-age=no-cache" forua="true"/>

<!--Backward Refresh-->
<meta http-equiv="Cache-Control" content="must-revalidate" forua="true"/>
</head>
[주의 사항] must-revalidate 메타 태그는 UP.Browser 4.0 이상에서만 지원됩니다. (에릭슨 시뮬 등에서는 사용할 수 없습니다.)


2. 사용자의 입력(input)값에 대한 Cache Clear
(Deck에 대한 Cache Control 선언으로는 사용자 입력의 변수값 Cache를 삭제할 수 없습니다.)

1) <card>의 newcontext 속성을 이용
<wml>
<head>
<meta http-equiv="Cache-Control" content="max-age=no-cache" forua="true"/>
<meta http-equiv="Cache-Control" content="must-revalidate" forua="true"/>
</head>
<card newcontext="true">

<!-- card를 reload할 때마다 모든 변수값에 대한 cache를 clear합니다 -->

</card>
</wml>

-------------------------------------------------
<do type='vnd.skmn<?$i?>' label='[$row[sTitle]]'>
--> label안의 부분이 선택될때 이동하게 되는 부분..<a ..>와 사이부분 이랄까?
<go href='./publicbull.php3' method='post'>
-->값을 넘길때 get방식이면 안넘어가더라구요.
<postfield name='step' value='1' />
<postfield name='uid' value='$uid' /> --> 넘어가는 값들..
</go>
</do>
-------------------------------------------------
1. <a> 태그
링크
들어가기<br/>
Call
전화걸기<br/>
변수넘기기
들어가기<br/> Get방식(Post 안됨)

2. <anchor>태그
링크
<anchor title="확인">들어가기<br/><go href"a.wml" title="확인"/></anchor>
Call
<anchor title="call">전화걸기<br/><go href="wtai://wp/mc;027976491"/></anchor>
변수넘기기(get 방식)
<anchor title="확인">들어가기<br/><go href="a.asp?id=$(id)"/></anchor>
변수넘기기(post 방식)
<anchor title="확인">들어가기<br/><go href="a.asp" method="post"><postfield name="id" value="$(id)"/></go></anchor>

-------------------------------------------

저도 초보라 자세하게는 설명드리기가 어렵습니다만...
모바일에선 html과 다른 문법을가진 마크업랭귀지를 사용합니다.
대표적으로
011-->wml
107,109-->hdml
016,018-->mhtml
대충이렇게 사용돼고 있지요..
왜그러냐하면 폰은 특성상 (작은사이즈,적은메모리?,기타등등)의 이유로
폰에적합 마크업언어를 탄행하게 ?것이죠.
국내 참고 사이트 입니다.
제가 자주 애용하는 곳이죠..
http://www.wapis.co.kr/
http://mobile.daesangit.com/mobile/
http://mosca.co.kr/
http://wap.pe.kr/
http://wireless.webmania.co.kr/

'WML' 카테고리의 다른 글

Apache용 마임타입(MIMETYPE) 설정 사항  (0) 2011.10.18