Пособие по написанию WAP-сайтов

Подробнее о приложении SmartHouse.hdml



Подробнее о приложении SmartHouse.hdml

Подобно приложению SmartHouse.wml, приложение SmartHouse.hdml отображаетсообщение, извещающее пользователя о том, что он подсоединен к интерфейсудома, и второе сообщение, которое приглашает подтвердить, хочет ли он работать далее. Файл SmartHouse.hdml содержит следующий исходный код:

&ltHDML Version=3.0 Markable=True TTL=0&gt

&ltDisplay Name=Start&gt

&ltAction Type=Accept Task=GO Method=Post PostData=-1&-1&-1&-1&-1 Dest=../waplibcgi/UpdateHouseHDML.pl&gt

&ltCenter&gtSmart House&ltbr&gt &ltLine&gtConnected.&ltbr&gt&ltbr&gt Get current status?

&lt/Display&gt

&lt/HDML&gt

Первый элемент внутри деки сообщает браузеру (или другим программистам) отом, какая версия языка HDML используется приложением. Далее, выражениеMarkable=True сообщает браузеру, что он может установить закладку в исходнойдеке, a TTL=0 сообщает о невозможности кэширования.

Для отображения сообщений приложение использует элемент <Display>. Внутри <Display> используется элемент <Action> для определения имени и места

нахождения сценария, который приложение запустит, как только пользователь вответ на запрос выберет продолжение работы. Как вы видите, приложение передает -1 в качестве значения параметра сценарию языка Perl, что говорит о первом его запуске и необходимости сгенерировать случайную последовательностьустановок ON/OFF. Для имитирования оборудования в доме используется сценарий языка Perl UpdateHouseHDML.pl, содержимое которого подобно сценарию UpdateHouseWML.pl, заисключением двух значительных отличий. Во-первых, приложение создает новую деку формата HDML, используя элементы <Choice> и <СЕ> для отображениянового состояния и установки последующих изменений, как показано ниже:

$Deck = "Content-type: text/x-hdml

&ltHDML Version=3.0 Markable=True TTL=0&gt

&ltChoice Name=House&gt

&ltAction Type=Accept Label=OnOff&gt

&ltCenter&gtSmart House

$CEBedroom $CEKitchen $CELiving $CEOffice $CEOutside

&lt/Choice&gt

&lt/HDML&gt";

print $Deck;

Второе отличие заключается в формировании элементов <СЕ>. Когда запускаетсясценарий UpdateHouseHDML.pl, ему в качестве аргумента передается случайноечисло. Это присходит в связи с особенностями работы системы кэшированияпамяти. Как вы видите, каждый раз, когда пользователь производит выбор, сценарий UpdateHouseHDML.pl вызывает сам себя для выполнения обработки данных. Даже несмотря на установленное в ноль значение TTL, которое показывает,что дека не может быть никогда перезагружена из кэша, когда дека вызывает самасебя, она всегда перезагружается из кэша. Посредством присвоения случайногозначения аргументу, браузер интерпретирует полученную информацию как другую деку и загружает ее с сервера.





Содержание раздела