object 要素

since: 31st/Aug./2001; last modified: 16th/Sep./2001

object 要素タイプはオブジェクト・モジュールに含まれており、 XHTML 1.1 の内容モデルでは、内容セット Inline に含まれ、DTD では %InlSpecial.class; 、 %HeadOpts.mix; に含まれます。従って、例えば p 要素タイプや head 要素タイプ の子要素として定義されています。

名前object
分類Inline
意味generic embedded object
日本語埋め込みオブジェクト

object 要素タイプは、文書に様々なタイプのオブジェクトを埋め込む為のものです。画像データしか埋め込めない img 要素タイプとは一線を隔します。 HTML では文書を埋め込む為の iframe 要素タイプやアプレットを読み込む為の applet 要素タイプが定義されていましたが、 XHTML 1.1 では廃止されています。

Object モジュール [拙訳]
object, param
要素 属性 最小内容モデル
object Common, archive (URIs), classid (URI), codebase (URI), codetype (ContentType), data (URI), declare ("declare"), height (Length), name (CDATA), standby (Text), tabindex (Number), type (ContentType), width (Length) (PCDATA | Flow | param)*
param id (ID), name* (CDATA), type (ContentType), value (CDATA), valuetype ("data"* | "ref" | "object") EMPTY

実装: DTD

object 要素には詳細な情報を与えることが可能ですが、一般に次の情報が必要です;

埋め込むオブジェクトの実装 (implementation)
レンダリング対象のデータ
オブジェクトの実行時に必要なパラメタ

要素の構造

object 要素タイプで定義されている内容は、文字データ (PCDATA) か、全てのブロックレベル、テキストレベルの要素タイプ (Flow)です。これらに加えて、 param 要素が定義されています。

ユーザエージェントは、まず object 要素で指定されているオブジェクトの実行を試みます。できない場合は、当該要素の内容をレンダリングし始めます。

オブジェクト実行に必要な初期値などのパラメタは、当該 object 要素の内容に param 要素を用いて記述します。

head 要素の内容は、通常はレンダリングされませんから、 head 要素の内容に記述する場合は、 object 要素に、通常のレンダリング可能なオブジェクト含めてはなりません。一般にはフレーム文書間でのオブジェクトの共有を実現しますが、 XHTML 1.1 ではフレーム文書はサポートしていないので、ここでは割愛します。

object 要素の属性

Common
一般的な属性の集合です。
archive = URIs
classid = URI
codebase = URI
codetype = ContentType
data = URI
declare="declare"
type = ContentType
standby = Text
name = CDATA
height, width = Length

サンプル

画像の埋め込み

<body>
<p>ほんサイトのバナ-です:
<object data="../../indexb.png" type="image/png">
これはリンク用のバナ-画像です。
</object>
</p>
</body>

img 要素でも実現できます。現状では、 img 要素のほうが安定度が高いでしょう。

本サイトのバナ-です:これはリンク用のバナ-画像です。

object 要素の内容は、オブジェクトが実行できない場合にレンダリング(解釈・描画)されます。例えば、上記サンプルのように object 要素が、 p 要素の内容に記述されている場合は、 object 要素の子要素は p 要素の孫要素でもあるので、 object 要素の内容は、文字データかテキストレベルの要素でなければなりません。

文書の埋め込み

<p>XHTML 文書の挿入の例;
<object data="./index.html" type="text/html"
   height="200" width="400">
ここに表示されるのは代替テキストです。</object>
</p>

HTML 4 では iframe という要素がサポートされていましたが、廃止されて、 object 要素でしか実現できません。

XHTML 文書の挿入の例; ここに表示されるのは代替テキストです。

OBJECT 要素の入れ子

object 要素の内容は、指定されたオブジェクトが実行できなかった場合にだけ読まれます。したがって、 OBJECT 要素の内容に次善的なオブジェクトを指定することにも意味があります。

例えば、製作者の意図が最も表現できるフォーマットが MPEG 動画だったとします。ユーザがこれを利用できない場合は、 PNG 画像を用意し、これも利用できなければ GIF 画像を用意すると云う場合は、次のように記述します;

<div>
<object data="./spectra.mpeg" type="video/mpeg">
  <object data="./spectra.png" type="image/png">
    <object data="./spectra.jpeg" type="image/jpeg">
      <p>【注意】グラフが読みこめませんでした。</p>
    </object>
  </object>
</object>
<p><a href="./spectra.mpeg">動画</a>、
<a href="./spectra.png">PNG 画像</a>、
<a href="./spectra.jpeg">JPEG 画像</a>が用意してあります。</p>
</div>

上の例では、ブラウザはまず、 spectra.mpeg をロードして実行しようとし、これに失敗すると次に spectra.png を実行しようとします。これにも失敗すると spectra.jpeg を実行しようとします。全て失敗すると、最終的には p 要素の内容を表示します。

param 要素の働き

当該オブジェクトの実行にパラメタが必要な場合は、 param 要素で与えます。パラメタ名は name 属性で与え、その値は value 属性で与えます。

param 要素の属性

name = CDATA
value = CDATA
valuetype = data|ref|object
value 属性値の型を指定すします:
type = ContentType
この属性は、valuetype 属性が "ref" に設定されている場合にだけ意味を持ち、value 属性が指し示すリソースのデータタイプを指定する。

サンプル

当該オブジェクトの初期値指定

次の例では、当該オブジェクトに、パラメタ "height" と "width" を与えており、その値はそれぞれ、 40 ピクセルと 80 ピクセルです:

<p><object classid="http://www.miamachina.it/analogclock.py">
	<param name="height" value="40" valuetype="data">
	<param name="width" value="80" valuetype="data">
	御利用のユーザエージェントは Python アプリケーションをレンダリングできません。
</object>

param 要素の作用範囲

また、 object 要素は、直接の子要素である param 要素しか検索しません。したがって、次の例では、 obj1 は param1 しか用いませんし、 param2 は obj2 にしか作用しません。

<p><object id="obj1">
  <param name="param1">
  <object id="obj2">
     <param name="param2">
  </object>
</object>

Flash の埋め込み

次のサンプルの Flash データは、 「Flash 工房」さんから頂きました。

<p><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
  type="application/x-shockwave-flash"
  codebase="http://active.macromedia.com/flash2/cabs/swflash.cab#version=4,0,0,0"
  id="Welcome" width="300" height="100">
  <param name="movie" value="./Flash/w_06.swf" />
  <param name="quality" value="high" />
  <param name="bgcolor" value="#ffffff" />
  このオブジェクトは、
  <a href="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">Flash のサンプル</a>です。
</object></p>

現状では、 MIME type が独自拡張になっています。

このオブジェクトは、 Flash のサンプルです。

このサンプルは、 XHTML として正しいものです。実際に利用する際は、 独自拡張要素の embed 要素を内容に含めるなどして、後方互換を図るべきでしょう。

Flash に関する詳細は、 Macromedia のテクニカルノートを参照ください。

尚、ここで利用した Flash は、 Flash 工房さんより拝借しました。

一般的注意点

  1. 埋め込みオブジェクトは文書構成上有用なレイアウトですが、オブジェクトのデータ・サイズが大きい場合は注意が必要です。低速回線利用者、旧環境利用者などには、オブジェクトを含む文書自信の閲覧が困難になることもあります。サイズが大きなデータは埋めこむのではなく、ユーザが自分の意思でアクセスできるように、リンクで用意しておくべきでしょう。
  2. object 要素は未だ実装が安定していません。画像は img 要素を利用した方が安全でしょう。できるだけ多くの環境のユーザに情報が伝わるように配慮する必要があります。

OBJECT 要素による Plug-in、 Java APLLET の利用、イメージマップの作成などに付いてはここでは紹介しませんでした。何れ稿を改めて紹介したいと思います。

Java に関しては、本サイトに入門コンテンツを用意してあります。興味があれば御利用ください。


Copyright © 2001, SUGAI, Manabu. All rights reserved. 著作権は放棄していません。
SEO [PR] ”š‘¬!–³—¿ƒuƒƒO –³—¿ƒz[ƒ€ƒy[ƒWŠJÝ –³—¿ƒ‰ƒCƒu•ú‘—