저자: 데이비드 심스(David Sims), 역 신동섭
WML(무선 마크업 언어:Wireless Markup Language)은 WAP 포럼 회원들이 제안한 언어로 무선 기기(우리가 일반적으로 말하는 핸드폰과 같은 장치)로 웹 컨텐츠를 전송하기 위해 고안되었다. 이 언어는 HDML(Handheld Device Markup Language)에서 파생되었으며 그 자체는 무선 접속을 위한 W3C(World Wide Web Consortium)의 가이드라인에 근거를 두고 있으며 HTML에 종속된 하위언어라고도 할 수 있다.
HTML처럼 WML은 컨텐츠 포멧과 이들이 표시되는 방법을 정의한다. 이 외에도 문서들이 링크되는 방법과 데이터를 정해진 형태로 모으는 방법을 정의한다. 미래 튜토리얼에서는 WML스크립트 및 Java스크립트와 유사한 ECMA스크립트에 근거한 언어를 보게 될 것이다. 이는 여러분이 정해진 형태로 입력을 점검하는 것과 같은 일을 시작해 볼 수 있도록 해 준다.
이동전화에서 정보를 표시할 수 있는 스크린 크기에는 제한이 있기 때문에 WML은 데이터를 보내기위해 카드(card)들로 이루어진 데크(deck)이라는 개념을 사용한다. 웹 개발자를 위해 이는 몇 개의 섹션이나 웹 페이지로 나누어질 수도 있는 문서 모델에서 몇 개의 카드로 나누어지는 데크 모델에 이르기까지 약간의 사고의 전환을 요구한다. 이와 같은 사고의 전환은 개발자들이 작은 휴대용 디바이스에 어떻게 화면이 다르게 표시되는지 뿐만 아니라 어떻게 기능이 달라야 하는지에 대해서도 생각하게 해준다.
본 기사에서 우리는 여러 가지 에뮬레이터 중 하나를 다운로드하여 WML을 시작하는 방법, Hello World 프로그램을 작성, 이동 전화기 각각의 버튼에 해당하는 기능을 할당하고 연결하는 방법에 대해 살펴볼 것이다.
에뮬레이터 설치
WML코드를 작성하고 테스트를 시작하려면 이동 전화 에뮬레이터가 있어야 한다. 이 에뮬레이터는 어느 곳에서나 다운로드할 수 있다. 사실 에뮬레이터는 작은 응용프로그램으로 스크린 상의 윈도우에서 동작하는 이동 전화로 표시된다. 이 버튼들은 여러분이 전화상에서 쉽게(혹은 어렵게) 항해(navigation)하는 방법을 얻을 수 있도록 해 준다. 그리고 실제 상태의 화면은 다른 전화기에서 동작하는 것과 같이 에뮬레이터마다 다르다. 삼성에서 선보인 신제품의 넓어진 스크린상에서 크게 보이는 것이 모토로라 스타택 의 좁은 스크린상에서는 다소 거칠게 보일 수 있다. (그러나 모든 제품들은 나름대로의 장점이 있다. 가령 스타택은 삼성의 애니콜보다 SAR수치가 더 낮다. 여기서 SAR 수치는 안테나에서 여러분의 뇌로 들어가는지를 전자기 에너지를 측정하는 표준 흡수율(Standard Absorpion Rate)을 말한다.)
쉽게 에뮬레이터를 쉽게 얻을 수 있는 곳은 폰닷컴(Phone.com)과 노키아(Nokia)이다. 폰닷컴의 minibrowser는 미국에서 팔린 PCS전화기에 내장된 가장 인기있는 브라우저이다. 여러분은
폰닷컴의 개발자 프로그램에 참여함으로써 UP.SDK의 일부분으로 그 에뮬레이터를 얻을 수 있다. 노키아 에뮬레이터 경우는
Forum Nokia를 방문하면 얻을 수 있다.
AnyWhereYouGo.com에서 더 많은 에뮬레이터 목록을 볼 수 있다.
일단 에뮬레이터를 다운로드를 했으면 이를 설치한 후 텍스트 편집기를 실행하고 아래 코드를 작성하거나 복사하는 것으로 시작해보자.
Hello wireless world 예제
다음은 WML로 프로그래밍된 기본 예제이다.
1
2
"http://www.wapforum.org/DTD/wml_1.1.xml">
3
4
5
6 Hello Wireless World
7
8
9
첫 번째 라인은 XML 파생 문서라는 것을 선언한다.
두 번째 라인은 문서형태 정의(DTD)가 어디에 있는지를 말해준다. 이 경우 DTD는 WML 1.2 스펙이며 이 스펙은 WAP Forum의 웹사이트에서 발견할 수 있다.
세 번째 라인은 웹 페이지의
테그처럼 문서의 시작을 의미한다. 모든 취지와 목적을 고려한다면 이 테그 또한 이 문서 안에 하나 또는 그 이상의 카드들을 가질 데크가 시작됨을 의미한다.
네 번째 라인은 데크의 첫번째 카드가 시작됨을 의미한다.
다섯 번째에서 일곱 번째 라인까지는 HTML에서 볼 수 있는 구조와 똑같고 여덟 번째와 아홉 번째 라인은 코드가 끝났음을 의미한다. 이것은 XML 파생 문서이기 때문에 모든 태그에 더 많은 주의를 기울이고 이 태그가 모두 닫혀져야 한다는 사실에 주의해야 한다. 예를 들어 완전하지 못한 HTML의 경우
테그를 열어둔 상태로 놓아두어도 큰 상관은 없지만 XML에서는 확실하게 코딩해야 한다.
까다롭게 들릴 수 도 있겠지만 한 번 해보면 아주 간단하다.
카드들 사이 연결하기
자 그럼 이제부터 데크를 살펴보겠다. 각각은 연결된 두 개의 카드들을 가진다. 이를 위해서는 우리는 두 개의 카드를 생성할 것이다. 그리고 그들 각각에게 identity를 부여하고 새로운 두 개념을 소개할 것이다.
- 연결(Linking), 그리고
- 전화기의 버튼에 기능을 할당
이동 전화들은 여러 가지 면에서 서로 많이 다르지만 대부분의 사람들은 다음과 같은 두 개의 기본 버튼을 포함하도록 프로그램을 구현할 것이다. 확인(accept)과 백업이나 종료. 이 예제에서 우리는 이들 버튼 중에서 첫 번째 것(확인)만을 사용할 것이다. 그리고 확인 버튼 위의 에뮬레이터 화면에 텍스트를 표시하기 위해 거기에 "다음(More)"이나 "이전(Back)"을 라벨링 할 것이다.
간단한 텍스트나 코드 편집기로 아래 코드를 복사해서
test.wml로 저장하고 에뮬레이터에서 이 파일을 불러들여라.
Here"s the first card.
Here"s the second card.
Here"s the third card.
버튼에 라벨을 할당하기 위해 우리는 "
do" 개념(다른 프로그래밍 언어로부터 빌려온 함수에 값들과 속성들을 할당하는 방법)을 소개하겠다. 이는 HTML프로그래머들에겐 다소 생소할 것이다.
연결(linking)은 HTML의 포맷과 비슷하다. 그러나 WML을 작성한 사람들이 이것을 변경하기로 결정한 이유에 대해서는 나름대로의 이유가 있다. HTML에서 알고있는 공통 앵커 포멧("
a href")를 사용하는 대신에 WML에서는 좀 더 공통 프로그래밍류에 적합하게 보일 수 있는 "
go"를 사용하기 때문에 링크 텍스트 포멧으로 "
go href. "를 사용하면 된다. 이외에 다른 것들은 HTML과 아주 비슷하다.
WML? HTML? XML은 어떤가!
위에서 본 것과 같이 몇 가지 변동 사항들은 무선 그룹과 유사하게 보이는 프로토콜(그러나 XHTML과 HTTP와 같은 웹 표준과는 조금 다름)과 같이 나아가자고 결정한 이유에 대한 웹 표준 관계자들로부터의 수많은 불평불만 중 빙산의 일각에 지나지 않는다. 여러분은 이러한 비평들 중 일부를 이미 읽었을 수도 있다.
이 부분에 대해서 무선 그룹은 무선 네트워크와 장비 업체들의 특별한 요청으로 표준, 랜드라인(landline) 프로토콜의 수정을 요구된다고 답하고 있다. 그래서 심지어 W3C와 WAP Forum으로 대표되는 두 그룹은 자신들의 표준들을 함께 공유하는 분위기다. 양쪽 모두 한가지에 대해 동의한다. 모든 사람들은 (HTML,WML이나 XHTML보다는) XML포맷으로 데이터를 저장하는 추세로 옮겨가야 하며 고객에게 적절한 포맷과 스타일로 컨텐츠를 제공하기위해 미들웨어를 사용해야 한다.
관련 자료
오라일리 네트워크의 무선 데브센터에는 다음과 같은 내용을 다루는 기사들이 많이 있다. 본 기사는 데이비드 심스가 연재하는 시리즈 기사의 일부로 이 시리즈에서는 WML스크립트를 소개하고 동작(operation)들을 링크하는데 중점을 두어 설명하고 있다.
- JSP를 사용하는 WML이나 HTML페이지들을 제공
- WAP폰으로 법인 인트라넷에 접속할 수 있는 WAP 프로그램
- 제공할 포멧을 결정하고 사용자 에이전트를 점검하는 WAP 게이트웨이
- 커널(오픈 소스 WAP과 SMS게이트웨이) 개요
데이비드 심스(David Sims)는 오라일리 네트워크 편집국장으로 일하고 있다.