Глава 2.

Введение в WML

Язык разметки для беспроводных устройств WML создан для описания пользовательского интерфейса на устройствах с ограниченными возможностями представления данных, например, мобильных телефонах с маленьким экраном, карманных компьютерах.

2.1. Родословная WML

WML основан на расширяемом языке разметки XML (Extensible Markup Language), который предлагает стандартизованный подход к описанию данных. Если вы знакомы с HTML, то найдете много знакомого и в WML. Это неудивительно, так как и XML, и HTML имеют общего предка — абстрактный язык разметки SGML (Standard Generalized Markup Language). Такое обилие языков разметки удобно для наглядности представить в виде своего рода "генеалогического дерева" языков разметки (Рис. 2.1).

 

Рис. 2.1. "Генеалогическое дерево" языков разметки

Рассмотрим XML более подробно, так как в дальнейшем это сильно упростит понимание WML.

2.2. Структура XML-документа


XML-документ — это обычный текстовый документ, который начинается с ИНСТРУКЦИИ <?xml version="l.0"?>.

Она говорит о том, что данный текстовый файл содержит документ в формате XML версии 1.0.

Замечание

Обратите внимание, что по стандарту перед этой инструкцией не должно быть никаких дополнительных символов, в том числе пробелов и переводов строки. Их наличие может затруднить работу программы, которая обрабатывает XML-документы (ее называют XML-процессором).

Так как XML-документ — это обычный текстовый документ, создавать его можно, используя любой текстовый редактор, например, Microsoft Notepad.

2.2.1. Элементы и теги

XML-документ состоит из текста, окруженного специальными метками — тегами (tags), размещаемыми в угловых скобках. Основной структурной единицей языка XML является элемент (element). Элементы могут содержать внутри себя текст, а также другие элементы. В тексте элементы записываются с помощью открывающего и закрывающего тегов:

<tag> текст и другие элементы </tag>

Если элемент ничего не содержит, он называется пустым и записывается так: </tag> .

Элемент, который включает в себя другие элементы, называют родителем, а элементы, которые в него входят — дочерними элементами. Элемент может одновременно быть родителем для одних элементов и дочерним для других.

Стандарт XML дает определение правильно сформированного (well-formed) документа. В таком документе все открывающие теги должны быть закрыты, и элементы не должны пересекаться. Также должен существовать корневой элемент, содержащий все остальные элементы. Так, следующий фрагмент является ошибочным из-за пересечения элементов, хотя все теги и закрыты:

<parent>

    <child>

</parent>

    </child>

Его можно исправить, если разместить элемент <child> целиком внутри элемента <parent>:

<parent>

    <child>

    </child>

</parent>

Следующий документ не имеет корневого элемента и потому также не подпадает под определение правильно сформированного:

<?xml version="1.0"?>

<father>

    <child/>

</father>

<mother>

    <child/>

</mother>

Исправить ситуацию можно так:

<?xml version="1.0"?>

<family>

    <father>

        <child/>

    </father>

    <mother>

        <child/>

    </mother>

</family>

2.2.2. Атрибуты

Элемент может иметь свойства, которые описываются с помощью атрибутов. Атрибуты находятся внутри открывающего тега и представляют собой набор пар "имя=значение". Значение атрибутов заключается в кавычки (") или апострофы (').

Вот пример записи атрибутов:

<button width="50" height="20" caption="Press Me!"> текст </button>

В случае, когда открывающий тег одновременно является и закрывающим, альтернативы размещению атрибутов внутри тэга нет:

<agent first-name='James' last-name='Bond' code='007'/>

Язык XML чувствителен к регистру букв, поэтому тег

<tag attrib="value"/>

отличается от тега

<Tag Attrib="value"/>

В XML все элементы имеют два предопределенных атрибута: id и class. Первый из них содержит уникальный идентификатор элемента в данном документе. Атрибут class позволяет отнести элемент к тому или иному классу элементов.

Предупреждение

Многие Web-браузеры, интерпретируя HTML, снисходительно относятся к незакрытым тегам, отсутствию кавычек у значений атрибутов и тому подобным вещам. В XML вообще и в WML в частности, вам придется забыть об этих "вольностях" и быть предельно дисциплинированным, поскольку XML-процессоры относятся к синтаксису документа очень строго. Один незакрытый тег может вызвать ошибку при обработке всего документа. К сожалению, большинство ошибок связано именно с несоблюдением следующих простых правил:

• закрывайте теги;

• заключайте значения атрибутов в кавычки или апострофы;

• следите за тем, чтобы элементы не пересекались.

2.2.3. Комментарии

В тексте документа могут встречаться комментарии. Они начинаются с символов

<!-- и заканчиваются символами -->. Комментарии бывают однострочными и многострочными:

<!-- Это однострочный комментарий -->

<!-- А здесь

комментарий занимает

несколько строк

-->

Комментарии помогают читателю лучше понять структуру документа.

Замечание

Хорошо написанные комментарии вместе с выравниванием тегов сэкономят много сил и времени при попытке разобраться, что же это вы написали два месяца назад. В этой книге мы используем стиль, при котором дочерние элементы имеют больший отступ от левого края, чем их родители:

<grandparent>

   <parent>

      <child/>

   </parent>

</grandparent>

2.2.4. Подстановки

Для того чтобы вставить в текст документа специальные символы, которых может и не быть в раскладке клавиатуры, используют так называемые подстановки. Они записываются как &#число; где число — это код символа в Unicode.

Например, чтобы вставить в текст знак английского фунта стерлингов J, который имеет код 163, необходимо написать £. Обратите внимание на точку с запятой после числа, она является неотъемлемой частью подстановки. Код символа можно записать в шестнадцатеричном виде. В этом случае перед ним ставится символ 'x':

&#хШестнадцатеричныйКод;

Например, русская буква "Я", имеющая десятичный Unicode-код 1071, может быть представлена подстановкой &x42F;

Поскольку угловые скобки '<' и '>', а также некоторые другие символы используются в служебных целях, они не могут встречаться непосредственно в тексте документа. Для того чтобы вставить их в текст, можно воспользоваться именованными подстановками (табл. 2.1).

                  Таблица 2. 1. Именованные подстановки

Имя подстановки

Код

Примечание

quot

&#34;

Кавычки

amp

&#38;#38;

Амперсанд

apos

&#39;

Апостроф

lt

&#60;

Знак "меньше"

gt

&#62;

Знак "больше"

nbsp

&#160;

Неразрывный пробел

shy

&#173;

Возможный перенос

Именованные подстановки делают текст XML-документа более понятным для человека. Согласитесь, что строка "Smith &amp; Co" значительно легче читается, чем "Smith &#38;#38; Со".

2.2.5. Тип документа

XML дает возможность описать любые данные с помощью элементов и атрибутов. Чтобы упростить этот процесс, вам дается право придумывать любые элементы и атрибуты и выстраивать из них любую иерархию.

Кстати, в действительности вы никогда не увидите документ, написанный на "чистом" XML, так как его просто не может быть. XML сам по себе — метаязык, полная абстракция, правила игры: "я не знаю, ЧТО вы хотите описывать, но могу предложить способ, КАК это можно сделать".

Обычно, чтобы описать какие-либо данные, вам надо создать свой язык, основанный на XML. Описав его элементы и атрибуты, а также отношения между ними в определении документа (Document Type Definition, DTD), вы можете его потом использовать как своего рода "грамматику" вашего языка. Если в документе есть ссылка на DTD, то XML-процессор будет использовать DTD для проверки правильности документа. Документ, который соответствует правилам указанного в нем DTD, называется допустимым (valid).

Допустимость документа подразумевает, что документ является правильно сформированным. Обратное может быть неверно, правильно сформированный документ может и не соответствовать своему DTD (тогда это считается ошибкой).

Разумеется, вам не обязательно придется "изобретать велосипед" — возможно, язык, который вам нужен, уже существует и DTD для него написан.

Сайт управляется системой uCoz