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, 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 要素には詳細な情報を与えることが可能ですが、一般に次の情報が必要です;
classid 属性の値に data 属性で指定したデータを処理するプログラムの URI を示す。data 属性の値にデータの URI を指定する。object 要素タイプで定義されている内容は、文字データ (PCDATA)
か、全てのブロックレベル、テキストレベルの要素タイプ (Flow)です。これらに加えて、
param 要素が定義されています。
ユーザエージェントは、まず object
要素で指定されているオブジェクトの実行を試みます。できない場合は、当該要素の内容をレンダリングし始めます。
オブジェクト実行に必要な初期値などのパラメタは、当該 object 要素の内容に param
要素を用いて記述します。
head 要素の内容は、通常はレンダリングされませんから、 head
要素の内容に記述する場合は、 object
要素に、通常のレンダリング可能なオブジェクト含めてはなりません。一般にはフレーム文書間でのオブジェクトの共有を実現しますが、 XHTML 1.1
ではフレーム文書はサポートしていないので、ここでは割愛します。
object 要素の属性archive = URIsclassid 属性や data
属性が指定するオブジェクトに関連するリソースを含むアーカイブ群を示す。codebase 属性を基準 URI とします。classid = URIdata
属性と一緒に、或いは代わりに用いても構いません。codebase = URIclassid 属性、data 属性、 archive
属性で指定される相対URIを解決するための 基準パスを指定します。codetype = ContentTypeclassid 属性が指定するオブジェクトを
ダウンロードするとき、想定されるデータタイプを指定します。
| データタイプ | リソースの種別 |
|---|---|
| text/html | HTML 文書 |
| text/xml | XML 文書 |
| text/css | CSS 文書 |
| text/plain | 単純テキスト文書 |
| image/png | PNG 画像 |
| image/jpeg | JPEG 画像 |
| image/gif | GIF 画像 |
| audio/basic | ミニマムレベルの音声 |
| video/mpeg | MPEG フォーマットの画像 |
| application/pdf | PDF フォーマットの文書 |
| application/java | Javaフォーマットのプログラム |
type 属性の値となります。data = URIcodebase 属性値を基準 URI
として解決されます。declare="declare"object 要素が宣言であるとみなします。type = ContentTypedata 属性が指定する データのデータタイプを指定します。standby = Textname = CDATAheight, 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 要素の内容に次善的なオブジェクトを指定することにも意味があります。
例えば、製作者の意図が最も表現できるフォーマットが 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 = CDATAvalue 属性で与えます。value = CDATAname 属性で指定された名前のパラメタ値を指定します。valuetype = data|ref|objectvalue 属性値の型を指定すします:
value
属性で指定された値が、文字列として評価されオブジェクト実装に渡される。ref: value
属性で指定された値が、実行時値を保存しているリソースの URI 。これにより、対応ツールは、与えられたURIをパラメータであると識別できる。object: value 属性で指定された値が、同一文書にあるobject
宣言を参照する識別子であることを意味する。 この識別子は、宣言されたobject 要素に設定されているid
属性の値と同値でなければならない。type = ContentTypevaluetype 属性が "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 工房」さんから頂きました。
<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 が独自拡張になっています。
このサンプルは、 XHTML として正しいものです。実際に利用する際は、 独自拡張要素の embed
要素を内容に含めるなどして、後方互換を図るべきでしょう。
Flash に関する詳細は、 Macromedia のテクニカルノートを参照ください。
尚、ここで利用した Flash は、 Flash 工房さんより拝借しました。
OBJECT 要素による Plug-in、 Java APLLET の利用、イメージマップの作成などに付いてはここでは紹介しませんでした。何れ稿を改めて紹介したいと思います。
Java に関しては、本サイトに入門コンテンツを用意してあります。興味があれば御利用ください。