ИНФОРМАЦИЯ,    ДИЗАЙН,    ПЕРЕВОДЫ,    РЕКЛАМА   .   .   .
w a p - с а й т
Информационный портал
Сегодня:  
admin@aranea.ru
+79068922256

  aranea.ru || Спецификация HTML 4.01 | 13. Элементы Object, Image и Applet

13. Элементы Object, Image и Applet

13.3. Общее включение: элемент OBJECT

13.3.1. Правила для представления объектов
13.3.2. Инициализация объекта: элемент PARAM
13.3.3. Глобальные схемы имен для объектов
13.3.4. Объявление и реализация объектов
<!ELEMENT OBJECT - - (PARAM | %flow;)*
 -- generic embedded object -->
<!ATTLIST OBJECT
  %attrs;                              -- %coreattrs, %i18n, %events --
  declare     (declare)      #IMPLIED  -- declare but don't instantiate flag --
  classid     %URI;          #IMPLIED  -- identifies an implementation --
  codebase    %URI;          #IMPLIED  -- base URI for classid, data, archive--
  data        %URI;          #IMPLIED  -- reference to object's data --
  type        %ContentType;  #IMPLIED  -- content type for data --
  codetype    %ContentType;  #IMPLIED  -- content type for code --
  archive     CDATA          #IMPLIED  -- space-separated list of URIs --
  standby     %Text;         #IMPLIED  -- message to show while loading --
  height      %Length;       #IMPLIED  -- override height --
  width       %Length;       #IMPLIED  -- override width --
  usemap      %URI;          #IMPLIED  -- use client-side image map --
  name        CDATA          #IMPLIED  -- submit as part of form --
  tabindex    NUMBER         #IMPLIED  -- position in tabbing order --
  >

Начальный тег: обязательный, конечный тег: обязательный

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

classid = uri [CT]
Этот атрибут может использоваться для определения места выполнения объекта через URI. Он может использоваться вместе, или как альтернатива к атрибуту data, в зависимости от типа вовлеченного объекта.
codebase = uri [CT]
Этот атрибут определяет базовый путь, используемый для разрешения относительных адресов URI, определенных атрибутами classid, data и archive. Когда он отсутствует, его значение по умолчанию является базовым URI текущего документа.
codetype = content-type [CI]
Этот атрибут определяет тип содержания данных, ожидаемых, когда загружается объект, определенный в classid. Этот атрибут является факультативным, но рекомендуемым, когда определяется classid, поскольку он позволяет устройству вывода избежать загрузки информации для неподдерживаемых типов содержания. Когда он отсутствует, то по умолчанию имеет значение атрибута type.
data = uri [CT]
Этот атрибут может использоваться для определения места данных объекта; например, данных изображения для объекта, определяющего изображения; или в общем смысле, серийная форма объекта, которая может использоваться для его пересоздания. Если он дается как относительный URI, то его следует интерпретировать относительно атрибута codebase.
type = content-type [CI]
Этот атрибут определяет тип содержания для данных, установленных атрибутом data. Этот атрибут является факультативным, но рекомендуемым, когда определяется data, так как он позволяет устройству вывода избежать загрузки информации неподдерживаемых типов содержания. Если значение этого атрибута отличается от HTTP Content-Type, возвращенного сервером, когда извлекают объект, то HTTP Content-Type имеет преимущество.
archive = uri-list [CT]
Этот атрибут может использоваться для определения списка URI, разделенных пробелами, для архива, содержащего ресурсы, относящиеся к объекту с ресурсами, установленными атрибутами classid и data. Предварительная загрузка архива обычно приводит в результате к уменьшению времени загрузки объектов. Архивы, определенные как относительные адреса URI, следует интерпретировать относительно атрибута codebase.
declare [CI]
Когда присутствует этот булевый атрибут, то он делает определение текущего OBJECT только декларацией. Объект должен подвергаться обработке последовательным определением OBJECT, ссылающегося на эту декларацию.
standby = text [CS]
Этот атрибут определяет сообщение, которое устройство вывода может выводить, когда загружается выполнение и данные объекта.

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

  • id, class
  • lang, dir
  • title
  • style
  • onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup
  • tabindex
  • usemap
  • name
  • align, width, height, border, hspace, vspace

Большинство устройств вывода имеют встроенные механизмы для вывода обычных типов данных, таких как текст, изображения GIF, цвета, шрифты и немного графических элементов. Для вывода типов данных, которые они не поддерживают естественным образом, устройства вывода запускают внешние прикладные программы. Элемент OBJECT позволяет авторам контролировать, следует ли данные выводить внешне, или с помощью какой-то программы, определенной автором, которая выводит данные внутри устройства вывода.

В общем случае авторы могут захотеть определить три типа информации:

  • Исполнение включенных объектов. Например, если включенный объект является апплетом часов, то автор должен указать место выполняемого кода апплета.
  • Данные для вывода. Например, если включенный объект – программа, которая представляет данные о шрифтах, то автор должен указать местоположение таких данных.
  • Дополнительные значения, необходимые для выполнения объекта. Например, некоторые апплеты могут потребовать начальных значений для параметров.
  • Элемент OBJECT позволяет авторам определять все три типа данных, но авторы могут не захотеть определять все три сразу. Некоторые объекты могут не требовать данные (например, самостоятельный апплет, который выполняет маленькую анимацию). Другие могут не требовать инициализацию во время выполнения. А другие могут не требовать дополнительной информации для исполнения, т.е. устройство вывода само может уже знать, как визуализировать такой тип данных (например, изображения GIF).

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

    Элемент OBJECT может также появиться в содержании элемента HEAD. Поскольку устройства вывода обычно не представляют элементы в разделе HEAD, то авторам следует обеспечить, чтобы любые элементы OBJECT в HEAD не определяли содержание, которое может выводиться. Обратитесь к разделу по разделению данных фреймов для получения примера включения элемента OBJECT в элемент HEAD.

    Обратитесь к разделу по управлению формами для получения информации об элементах OBJECT в формах.

    Этот документ не определяет поведение элементов OBJECT, которые используют оба атрибута, classid для идентификации выполнения и data для определения данных для выполнения. Для обеспечения мобильности, авторам следует использовать элемент PARAM для сообщения выполнению, где извлекать дополнительные данные.

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

    Устройству вывода необходимо интерпретировать элемент OBJECT в соответствии со следующими правилами преимущества:

    1. Устройство вывода должно сначала попытаться вывести объект. Ему не следует выводить содержание элемента, но оно должно проверить его тогда, когда элемент содержит любые прямые дочерние элементы, которые являются элементами PARAM (смотрите инициализацию объекта) или элементы MAP (смотрите клиентские карты изображения (client-side image 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>                 <!-- First, try the Python applet -->
    <OBJECT title="The Earth as seen from space" 
            classid="http://www.observer.mars/TheEarth.py">
                        <!-- Else, try the MPEG video -->
      <OBJECT data="TheEarth.mpeg" type="application/mpeg">
                        <!-- Else, try the GIF image -->
        <OBJECT data="TheEarth.gif" type="image/gif">
                        <!-- Else render the text -->
         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>
    

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

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

    <!ELEMENT PARAM - O EMPTY              -- named property value -->
    <!ATTLIST PARAM
      id          ID             #IMPLIED  -- document-wide unique id --
      name        CDATA          #REQUIRED -- property name --
      value       CDATA          #IMPLIED  -- property value --
      valuetype   (DATA|REF|OBJECT) DATA   -- How to interpret value --
      type        %ContentType;  #IMPLIED  -- content type for value
                                              when 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: предположим, что апплет способен манипулировать двумя параметрами выполнения программы, которые определяют его начальную высоту и ширину. Мы можем установить начальные размеры как 40 x 40 пикселей с двумя элементами 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>
    

    13.3.3 Глобальные схемы имен для объектов

    Положение выполнения объекта указано адресом URI. Как мы обсудили в разделе о введении в URI, первый сегмент абсолютного URI определяет схему установки имен, используемую для переноса данных, установленных адресом URI. Для HTML-документов такой схемой часто является "http". Некоторые апплеты могли бы использовать другие схемы установки имен. Например, когда определяется апплет Java, авторы могут использовать URI, которые начинаются с "java", а для апплета ActiveX, авторы могут использовать "clsid".

    В следующем примере, мы вставляем апплет Java в HTML-документ.

    <P><OBJECT classid="java:program.start">
    </OBJECT>
    

    Устанавливая атрибут codetype, устройство вывода может решать, извлекать ли прикладную программу Java, если оно способно выполнить последнюю.

    <OBJECT codetype="application/java-archive"
            classid="java:program.start">
    </OBJECT>
    

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

    <OBJECT codetype="application/java-archive"
            classid="java:program.start">
            codebase="http://foooo.bar.com/java/myimplementation/"
    </OBJECT>
    

    Следующий пример определяет (атрибутом classid) объект ActiveX через URI, который начинается со схемы имен "clsid". Атрибут data локализует данные для представления (другие часы).

    <P><OBJECT classid="clsid:663C8FEF-1EF9-11CF-A3DB-080036F12502"
            data="http://www.acme.com/ole/clock.stm">
    This application is not supported.
    </OBJECT>
    

    13.3.4 Объявление и реализация объектов

    Предыдущие примеры только проиллюстрировали изолированные определения объектов. Когда документ содержит более одного примера одного и того же объекта, можно отделить декларацию объекта от его реализации. Осуществление этого включает несколько альтернатив:

    • Данные можно извлечь из сети устройством вывода один раз (во время объявления) и повторно использовать для каждой реализации.
    • Можно подвергать обработке объект из места, отличного от места, где объявляется объект, например, из ссылки.
    • Можно определить объекты как данные времени выполнения программы для других объектов.

    Для объявления объекта, чтобы он не выполнялся, когда читается устройством вывода, установите булевый атрибут declare в элементе OBJECT. В то же время авторы должны идентифицировать объявление с помощью установки атрибута id с уникальным значением в элементе OBJECT. Последняя реализация объекта будет ссылаться на этот идентификатор.

    Объявленный элемент OBJECT должен появляться в документе перед первым примером такого OBJECT.

    Объект с атрибутом declare обрабатывается каждый раз, а элемент, который ссылается на такой объект, требует вывода (например, ссылка, которая обращается к объекту, активируется; объект, который ссылается на него, активируется, и т.д.).

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

    <P><OBJECT declare
            id="earth.declaration" 
            data="TheEarth.mpeg" 
            type="application/mpeg">
       The <STRONG>Earth</STRONG> as seen from space.
    </OBJECT>
    ...later in the document...
    <P>A neat <A href="#earth.declaration"> animation of The Earth!</A>
    

    Следующий пример иллюстрирует, как определять значения времени выполнения для других объектов. В этом примере мы посылаем текст (поэму) в гипотетический механизм просмотра поэм. Объект распознает параметр выполнения под названием "font" (скажем, для визуализации текста поэмы определенным шрифтом). Значение для этого параметра само является объектом, который вставляет (но не выводит) объект шрифта. Связь между объектом шрифта и объектом программы просмотра поэм достигается (1) присвоением атрибуту id значение "tribune", декларация объекта шрифта, (2) обращением к нему от элемента PARAM объекта программы просмотра поэмы (с valuetype и value).

    <P><OBJECT declare
         id="tribune"
         type="application/x-webfont"
         data="tribune.gif">
    </OBJECT>
    ...view the poem in KublaKhan.txt here...
    <P><OBJECT classid="http://foo.bar.com/poem_viewer" 
               data="KublaKhan.txt">
    <PARAM name="font" valuetype="object" value="#tribune">
    <P>You're missing a really cool poem viewer ...
    </OBJECT>
    

    Устройства вывода, которые не поддерживают атрибут declare, должны выводить содержание объявления элемента OBJECT.


    ← Назад | Вперед →
Copyright © 2006 -  aranea.ru