Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801), страница 156
Текст из файла (страница 156)
В этом небольшом апплете метод ратпа переопределяет метод раап!, определенный по умолчанию в классе Арр1ет из пакета Оача.аррте(, и отображает надпись йе110. Иог!бц 12.2.4. ХМ$. НТМ1 как приложение ВСМ1. имеет фиксированный набор семантических правил для каждого элемента. Как было сказано ранее, существуют конфликты между семантикой содержимого документа (например, элементами заголовков, абзацев, списков) и результатами представления (иапрпмер, шрифтами, цветами, высотой и шириной объектов). Для устранения этого несоответствия в конце 90-х гг, Консорциум ХХт!Х?% (ХХтЗС) разработал расширяемый язык разметки (Ехтеатя(Ые Магкпр (апйпаяе, ХМ1 ) как возможную замену НТМ1.
для отображения тчеЬ-страииц. ХМ(. — это еще один экземпляр ЯСМ(.. Документ ХМ! состоит из множества элементов, использующих синтаксис ЯСМ1. <е1енеп! Пкя>. Как и в случае с докумситамп ВСМ(., объявление типа документа (РТР) содержит описание семантики кажлого типа элементов. Тем не менее, как и в случае с НТМ1, некоторые из элементов становятся стандартными и многие документы ХМ( могут обрабатываться без наличия впепшего РТР. Документ ХМ1. начинается с <?хаа1 Хг1Иегатопйинбег ?> и состоит из вложенных разделов элементов вида «ккя> текст </икя>. Элементы без завершающих тегов задаются в виде <кяя/>. Многие концепции НТМЬбыли перенесены в ХМЕ. ()К!.-адреса(уииве(тсальные указатели ресурса) 11ТМ! превращались в ХМ1.
в универсальные идентификиторы ресурса (()п1(огш Кеяопгсе 1депг1(1ег, () К1), которые определяются в ХМ 1. как простые ссылки (яппр1е 11пйа): <а хпц 1апа="атвр1е" Пает="обычный Пттр вйы'> Элементы состоят из разметки и собственно содержимого. Существует шесть типов разметки. 1. Элементы, Этот тип знаком иам по НТМ1. и определяется как <пааае> текст </паве>.
2, Атрибуты. Атрибуты располагаются в начальном тете элемента. В приве- дениолт выше примере с !ЛКЬ атрибутом является Пге(="обычный ПЬ(р 0кЬ". 562 Глава 12. Сетевое программирование 3. Ссылки яа сущности. Символы, подобные <, имеют специальное значение в ХМ[.. Поэтому, когда в докумсите требуется такой символ, используемый в своем обычном значении, оп задаегся с помошью ссылки насущность, в данном случае иа У Г:. Например, В] Е; зьа гс> равносильно <ВЕагг>.
Для некоторых других символов также имеются ссылки иа сущности. 4. Комментарии. Комментарии задаются следующим образом: <!-- текст -->. 5. Инопрукции по обработке. Эти инструкции задаются как <? приложение-получатель инструкции?>. Приложение-получательдолжиовыполиятьтеииструкции, которые оио распознает, и игнорировать остальные.
Инструкции по обработке являются механизмом для передачи специфической информации о протоколах приложению, которое обрабатывает ХМ1.-страиицу. 6. СОЛТА. Это символы, которые игнорируются в процессе разметки и передаются непосредственно приложению. Например, текст в <! (СВАТА(теист]]> передается Непосредственно приложеишо. Основное различие между ХМ1. и НТМ1. заключается в том, что для документов ХМ1. с помощью элемента <! 00СТУРЕ.,> может быть задано опрелслспие типа документа (РТР). Это позволяет залать синтаксис и семантику для элемеитов документа ХМ]., которые ие являются просто значениями по умолчанию для соответствуюших тегов, как в случае НТМ1.. Например, ч'еЬ-стравила, написанная иа НТМ1., может быть определена в ХМ1. с использованием РТР: <РЗССТУРЕ НТНЕ РЦВЕ!С "ШП1 донуиента со специфнкацнинн НТНС' > В кажлой области деятсльиости (например, в банковских электроииых системах, вэлектроиной коммерции, вбиблиотечиыхбазахдаииых) можно определить РТР, которое задает семантику той информации, которую пеобхолимо обрабатывать.
Это позволит обрабатывать специфические для двиной области ч еЬ-страиицы ХМ 1. эффективнее, чем при использовании более простого формата НТМ1.. 12.3. Рекомендуемая литература Подробное описание Ровьзсбр( можно найти в Справочном руководстве кю языку Розгзсг?рг [7]. Об использовании ТЕХрассказывает автор этого языка [66[, а расширение 1.АТЕХ разработанное Лампортом, описано в [69[. Более полное описание сетевых технологий вы иайдетс в [34], а дополнительную информацию по ве[и разработкам — в [16[.
12.4. Задачи и упражнения 1. Сколько проходов потребуется ТпТВХдля создания этой книги? Следуетучитывать, что в этой книге имеется оглавление, главы с заголовками различных уровней и предметный указатель. Какие данные создацотся при каждом прохоле? Какое максимальное количество прохолов необходимо? 2. Напишите программу иа Розгзсг1рс, которая печатает обьявлсиие, рекламирующее курс лекций, в котором используется эта книга. Ваше объявле- 12.4. Задачи и упражнения 563 ние должно содержать несколько строчек текста и как минимум пять рисунков. 3.
Предложите несколько способов сжатия файла Розтзсбрг для его передачи с использованием меньшего количества байтов. 4. Опишите несколько примеров смешивания в НТМ1 семантического содержимою шеЬ-страницы и ее представления на экране дисплея. 5. Каковы преимугцества и недостатки использования языка Розгзсг1рг вместо НТМ1 как языка отображения ъ еЬ-страниц? 6. Почему Рег! хорошо подходит для создания сценариев СО1? Почему выбор С для атой цели неудачен? Приложение.
Обзоры языков В этой книге мы акцентировали внимание на синтаксисе и семантике тринадцати различных нотаций: А))а, С, С+а-, ГОРСТКАХ, НТМ1., ) ауа, 11ВР, М1, Рааса), Рег), Ровсеспрц Рго!ой и Вва!!Са!!с. 11зык НТМ). был достаточно хорошо описан в главе 12. В данном приложении мы представляем примеры программ на остальных двенадцати языках, которые менее подробно рассматривались в этой книге, а также приводим основы щгцтаксиса и семантики, необходимые для написания простых программ на каждом из этих языков. П.1. Ада Пример с пояснениями В листинге П.1 приведен пример программы суммирования элементов массива. Здесь мы используем инкапсуляцию, обсспечиваему)о пакетами языка Ас!а, чтобы реализовать сокрытие информации.
Для входных данных 412345123450 программа печатает следующие результаты: 1234 бам = )а 1 2 3 4 5 50М =. 15 Листинг П.1. Пример суммирования элементов массива на языке дна 1 расааде АггауСа)с и 2 Суре Мупааа 1а рг1ча)е. 3 Гопсм оп зов гесогп апгедег: 4 ргосеооге аесча)(агдн и 1п1едег): 5 рг1чате б и ге: сопасапс:= 99. ) Суре вуаггау ш аггау( )..в~ее) о) 1ПСедег, 8 Суре Муаага и гесогс 9 ча); вуаггау.
10 еу 1пгедег = а; П епв гесоге; 12 ч: Мупаса; 13 епп; 14 распаде Ьоау АггауСа)с и П.Т. Аба 565 15 ТЦПСС(ОП 5ЦВ ГЕСЦГП )ПСЕОЕГ 15 16 Севр 5пседег: П -- Тело функцнн 5цв 18 Ьед5п 19 севр ;= О. 20 Тог 1 5п 1..Ч.57 1оор 21 Совр .- Севр + ч.ча1(1): 22 епб 1оор; 23 Ч.57 ' 0: 24 гесцгп севр 25 епб 5цв: 26 ргосебцге 5еСча1(агдм п тгедег) 55 27 Ьед!п 28 ч 57,= Ч.
57Ч1. 29 ч.ча1(Ч.57) := агд; 30 епб ееСча); епб: 31 нлСЬ ТехС 1О; цее ТехС 1О; 32 н5Ш АггеуСа1с: цле Аггауса)с: 33 ргосебцге ва5п 55 34 й в. 5п(едег; 35 Ьед1п -- начало главной лросраннн ва5п 36 деС(й). нт)е х О )оор 38 Тог 3 5п 1. Л )оор 39 де( Ол ), рцс(в, 3) . 40 легче)(в); 41 епб 1оор; 42 пен 15пе: рнС("5ОМ -"); 43 рцС(АггауСа1с.ьцв.4).
44 пен 15пе; демй) 45 епб 1оор: 46 епб: Строка 1. Спецификация пакета АггауСа1с, который собирает массив ланпых для этой программы, Все детали о пакете АггауСа1с, которые должны быть известны за пределами этого пакета, следует задать в этой спецификации. Строка 2. Тип данных )(уОаса будет известен за пределами данного пакета. Однако этот тип определен как рг) чаге, а значит, можно объявлять объекты типа МуОаса и передавать их функциям, описанным только внутри пакета АггауСа1с.
Строки 3 — 4. Здесь определяются подпрограммы 5цв и 5егча). Указаны только сигнатуры двух подпрограмм, чтобы разрешить компиляцию вызовов этих подпрограмм из других пакетов. Строка р. Ключевое слово рг) часе обозначает, что вся последующая информация в этой спецификации пакета не может использоваться в подпрограммах, определенных за пределами пакета АггауСЬ1С. Строка 6. Имя 517е определяется как константа, равная 99.
Область видимости данной константы ограничивается пакетом АггауСа1с. Страхи 8 — 12. Описываются локальные данные пакета, а именно Мубага и ч. Строка 14. Здесь начинается реализация пакета АггауСО1с, где задаются детали реализации каждой подпрограммы, объявленной в спецификации пакета. Строка 17. Комментарии в языке Ас)а начинаются с символов -- и продолжаются до конца строки. Строки 18-25.
Блок Ьед) и является телом функции 5цв. 666 Приложение. Обзоры языков Строки 20-22. Итерационный процесс управляется оператором!сор. Существует несколько его вариантов. В данной подпрограмме используется вариант цикла Тог, который повторно выполняет тело цикла, пока переменная цикла ! принимает последовательные значсния от 1 до ч. зд Заметим, что псременная > не была объявлена, но опа неявно объявляется как локальная перел>синая, действующая внутри оператора цикла.