Опубликован: 19.05.2006 | Уровень: для всех | Доступ: платный
Лекция 13:

Объекты, Изображения и Аплеты

Правила представления объектов

ПА должны интерпретировать элемент OBJECT в соответствии со следующими правилами приоритета:

  1. ПА должен сначала попытаться отобразить объект. Он не должен отображать содержимое элементов, но обязан проверить элементы на предмет наличия каких-либо прямых потомков, которые являются элементами PARAM (см. "инициализация объекта" ) или элементами MAP (см. "клиентские карты изображений" ).
  2. Если ПА не может по каким-либо причинам отобразить объект (не сконфигурирован, недостаточно ресурсов, неверная архитектура и т.д.), он обязан попытаться отобразить его ( объекта ) содержимое.

Авторы не должны включать содержимое в элементы OBJECT, появляющиеся в элементе HEAD.

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

<P><OBJECT classid="http://www.miamachina.it/analogclock.py">
</OBJECT>

Обратите внимание, что часы будут отображены сразу, как только ПА интерпретирует это объявление OBJECT. Можно отсрочить отображение объекта, первоначально объявив его (описано ниже).

Авторы должны дополнить это объявление включением альтернативного текста как содержимого OBJECT на тот случай, если ПА не сможет отобразить часы.

<P><OBJECT classid="http://www.miamachina.it/analogclock.py">
An animated clock.
</OBJECT>

Важным следствием дизайна элементов OBJECT является то, что он предоставляет механизм альтернативного представления объектов ; каждое объявление внедрённого OBJECT может специфицировать альтернативные типы содержимого. Если ПА не может отобразить самый внешний OBJECT, он пытается отобразить содержимое, которое может быть другим элементом OBJECT и т.д.

В следующем примере мы внедряем несколько объявлений OBJECT, чтобы проиллюстрировать, как работают альтернативные представления.

ПА будет пытаться отобразить первый элемент OBJECT, который он сможет, в следующем порядке:

  1. аплет Earth, написанный на языке Python,
  2. MPEG-анимацию Earth,
  3. GIF-рисунок Earth,
  4. альтернативный текст.
<P>                 <!-- Сначала пытается выполнить аплет Python -->
<OBJECT title="The Earth as seen from space" 
        classid="http://www.observer.mars/TheEarth.py">
                    <!-- В противном случае, MPEG video -->
  <OBJECT data="TheEarth.mpeg" type="application/mpeg">
                    <!-- В противном случае, рисунок GIF -->
    <OBJECT data="TheEarth.gif" type="image/gif">
                    <!-- В противном случае отображает текст -->
     The <STRONG>Earth</STRONG> as seen from space.
    </OBJECT>
  </OBJECT>
</OBJECT>

Самое внешнее объявление специфицирует аплет, который не требует дополнительных данных или начальных значений. Второе объявление специфицирует анимацию MPEG и, поскольку не определяется размещение программы обработки MPEG, обращается к ПА для обработки анимации. Мы также установили атрибут type, чтобы ПА, "знающий", что он не может обработать MPEG, не загружал "TheEarth.mpeg" из сети.

Третье объявление специфицирует размещение файла GIF и определяет альтернативный текст на тот случай, если все остальные механизмы не сработают.

Инлайн или внешние данные. Отображаемые данные могут быть получены двумя путями: инлайн (т.е. из самого документа ) и из внешнего источника. Хотя предыдущий метод обычно приводит к более быстрому отображению, это не всегда бывает удобно при выводе данных большого объёма.

Вот пример, иллюстрирующий, как инлайн-данные могут быть поданы в OBJECT:

<P>
<OBJECT id="clock1"
        classid="clsid:663C8FEF-1EF9-11CF-A3DB-080036F12502"
        data="data:application/x-oleobject;base64, ...base64 data...">
    A clock.
</OBJECT>

Информацию о размере объекта, выравнивании и рамках см. в "визуальном представлении объектов, изображений и аплетов" .

Инициализация объекта: элемент PARAM

<!ELEMENT PARAM - O EMPTY              -- именованное значение свойства -->
<!ATTLIST PARAM
  id          ID             #ПРЕДПОЛАГАЕТСЯ  -- уникальный id документа --
  name        CDATA          #НЕОБХОДИМ       -- имя свойства --
  value       CDATA          #ПРЕДПОЛАГАЕТСЯ  -- значение свойства --
  valuetype   (DATA|REF|OBJECT) DATA           -- как интерпретировать значение --
  type        %ContentType;  #ПРЕДПОЛАГАЕТСЯ  -- тип содержимого
						для значения, если valuetype=ref --
  >
Начальный тег: необходим, Конечный тег: запрещён

Определения атрибутов

name = cdata

Определяет имя параметра этапа выполнения, принимаемого вставленным объектом. Является ли имя свойства чувствительным к регистру, зависит от конкретной реализации объекта.

value = cdata

Определяет значение параметра этапа выполнения, специфицированного в name. Значение свойства не важно для HTML; эти значения определяются объектом при запросе.

valuetype = data|ref|object [CI]

Специфицирует тип атрибута value. Возможные значения:

  • data: Значение по умолчанию. Означает, что определённое в value значение будет вычислено и передано в реализацию объекта как строка.
  • ref: Значением value является URI, указывающий на ресурс, где хранятся значения этапа выполнения. Это позволяет поддерживать утилиты идентификации URI, заданного в качестве параметра. URI должен быть передан объекту как есть, т.е. без обработки.
  • object: Значением value является идентификатор, ссылающийся на объявление OBJECT в этом же документе. Идентификатор должен быть значением атрибута id, установленного для объявленного элемента OBJECT.

type = content-type [CI]

Этот атрибут определяет тип содержимого ресурса, на который указывает атрибут value, только в том случае, когда valuetype установлен в "ref". Этот атрибут, таким образом, устанавливает для ПА тип значений, которые будут найдены по URI, указанному в value.

Атрибут, определённый в другом месте

  • id (идентификатор документа )

Элементы PARAM определяют набор значений, которые могут потребоваться объекту на этапе выполнения. Элементы PARAM могут появляться в содержимом элементов OBJECT или APPLET в любом количестве, в любом порядке, но должны размещаться в начале содержимого элементов OBJECT или APPLET.

Синтаксис имён и значений должен быть понятен в данной реализации объекта. Данный документ не определяет ни то, как ПА должны запрашивать пары имя/значение, ни то, как ПА должны интерпретировать имена параметров, которые появляются дважды.

Мы возвращаемся к примеру с "часами", чтобы проиллюстрировать использование PARAM:

предположим, что аплет может принять два параметра этапа выполнения, определяющих его начальные ширину и высоту. Мы можем установить начальные размеры 40x40 пикселов с помощью двух элементов PARAM.

<P><OBJECT classid="http://www.miamachina.it/analogclock.py">
<PARAM name="height" value="40" valuetype="data">
<PARAM name="width" value="40" valuetype="data">
This user agent cannot render Python applications.
</OBJECT>

В следующем примере, данные этапа выполнения для параметра "Init_values" определены как внешний ресурс (файл GIF). Значение атрибута valuetype, таким образом, установлено в "ref", а value - это URI, указывающий на ресурс.

<P><OBJECT classid="http://www.gifstuff.com/gifappli"
       standby="Loading Elvis...">
<PARAM name="Init_values"
       value="./images/elvis.gif"
       valuetype="ref">
</OBJECT>

Обратите внимание, что мы установили также атрибут standby для того чтобы ПА мог отобразить сообщение, пока загружается механизм представления.

Если элемент OBJECT отображён, ПА должен искать содержимое только тех элементов PARAM, которые являются прямыми потомками и "снабдить" ими OBJECT.

Так, в следующем примере, если "obj1" отображён, "param1" применяется к "obj1" (а не к "obj2"). Если "obj1" не отображён, а "obj2" отображён, "param1" игнорируется, а "param2" применяется к "obj2". Если ни один OBJECT не отображён, ни один PARAM не применяется.

<P>
<OBJECT id="obj1">
   <PARAM name="param1">
   <OBJECT id="obj2">
      <PARAM name="param2">
   </OBJECT>
</OBJECT>
Ирина Кириллова
Ирина Кириллова

Нажимаю на ссылку на дополнительный материал и дополнение к информации-меня возвращает на первую страницу лекции. Подскажите, что делать? Или дополнительный материал платный?

Наталья Алмаева
Наталья Алмаева
Россия
Светлана Казьмина
Светлана Казьмина
Россия, Волгодонск