7.では,SMIL メディアオブジェクトモジュールを定義する。 このモジュールは,BasicMediaモジュール及びBasicMediaモジュール上に構築された付加機能をもつ五つのモジュール(MediaClipping,MediaClipMarkers,MediaParam,MediaAccessibility及びMediaDescription)で構成される。 これらのモジュールは,メディアオブジェクトを記述するのに使われる要素及び属性を含む。 加えて,メディアオブジェクトとして使用可能なBrushMedia要素が提供される。 これらの要素及び属性は一連のモジュール内で定義されているので,他のマーク付け言語の設計者は,それらの言語の中にメディアオブジェクトを含める必要がある場合,SMILメディアモジュールを再利用できる。
SMIL 1.0のメディアオブジェクト要素については,(SMIL)作業グループの要求として出された付加機能が提供されている。これらの差異は,付録 A及び付録 Bで説明される。
このモジュールは,SMILプレーヤの基本機能を定義する。それは,機能的にSMIL 1.0のメディアオブジェクト規定に非常に近い。
メディアオブジェクト要素は,SMILプレゼンテーションにメディアオブジェクトを含むことを許可する。 メディアオブジェクトは,(URIを使い)参照によって含められる。次のメディア要素が,7.3.1で定義される。
これらのメディア要素は,すべて意味的に別個なものとする。 メディアオブジェクトを再生している場合,プレーヤはメディアオブジェクトの正確な型をメディアオブジェクト要素の名前から導出してはならない。 その代わりに,type属性に含まれている型情報,又はサーバ若しくはオペレーティングシステムによって通知された型情報といった,型についての他の情報源だけに頼らなければならない。
しかし,制作者は,メディアオブジェクトが属するグループ(animation,audio,img,video,text又はtextstream)が要素名に反映されるようにすることが望ましい。 これは,SMIL文書の読みやすさを増すためとする。メディアオブジェクトのグループについて不明な場合,制作者は,一般的な"ref"要素を使用することが望ましい。
ここで定義されたanimation要素を,SMIL 2.0アニメーションモジュールで定義された要素と混同しないことが望ましい。 このモジュールで定義されたanimation要素は,参照によってアニメーション(例えば,ベクタ画像アニメーション)を含むために使われる。 これは,他の要素の属性及び特性のアニメーションに対して行内構文を提供するアニメーションモジュールで定義された要素とは対照的なものとする。
アンカ及びリンクを,視覚的メディアオブジェクト,つまり,視覚的な抽象レンダリング面に表示されるメディアオブジェクトに付加させることができる。
SMIL BasicMediaモジュールを実装している言語は,どのような属性をメディアオブジェクトに付加してよいかを定義しなければならない。SMIL BasicMediaモジュールを実装するすべての言語において,メディアオブジェクト要素は,次の属性をもつことができる。
URLによって示された内容が多くのデータフォーマットで利用可能な場合,実装は,その複数フォーマットのどれが使用されるかに影響を与えるためにtype値を利用してもよい。 例えば,HTTP内容折衝実装したサーバ上に,クライアントが,折衝における優先度を要求するためにtype属性を使用してもよい。
この規定で列挙されなかったプロトコルに関しては,実装は,次の規則を用いなければならない。メディアが,メディアファイルにカプセル化され,配送するために設計されたプロトコル経由でSMIL利用者エージェントに完全なファイルとしてそのまま届けられる場合,type属性値は,メディア型の他の可能な情報源に優先されることが望ましい。 メディアを識別しながらメディアを配信するプロトコル(例えば,メディアの指定する型を利用するか,又はそれに依存する方法でメディアを配信するプロトコル)に対しては,type属性のアプリケーションは,この規定では定義されない。
要素内容
SMIL BasicMediaモジュールを活用する言語はメディアオブジェクト要素の子どもとして作用してもよい要素の完全な集合を定義しなければならない。 現在,BasicMediaモジュールで定義されているメディアオブジェクトの子どもとして必須のものはない。しかし,BasicMediaモジュールを活用する言語は,この規定以外のところで要件を課してもよい。
上位のプロファイルが,XMLBase機能[XMLBase]をサポートする場合,メディアオブジェクト要素のsrc属性及びlongdesc属性の値は,関係するXMLBase URI接頭辞の文脈で解釈されなければならない。
7.4は,SMIL MediaParamモジュール定義を構成する要素及び属性を定義する。MediaParamモジュールで定義された要素及び属性を実装する言語は,BasicMediaと同様に,次に定義されたすべての要素及び属性を実装しなければならない。
param要素は,実行時のメディアオブジェクトに要求されてもよい値の集合を指定する。 任意の数のparam要素が,任意の順序でメディアオブジェクト要素の内容に現れてよい。しかし,包含するメディアオブジェクト要素の内容の最初に置かれなくてはならない。
名前の構文及び値は、オブジェクトの実装によって理解されるものと想定する。 この規定は,利用者エージェントが名前及び値の対を取り出す方法,又は二度現われるパラメタ名を解釈する方法については指定しない。
例
<ref src="http://www.example.com/herbert.face"> <param name="mood" value="surly" valuetype="data"/> <param name="accessories" value="baseball-cap,nose-ring" valuetype="data"/> </ref>
BasicMediaに定義されている要素属性に加えて,メディアオブジェクト要素は,次に定義されている属性及び属性拡張をもつ事ができる。 これらの要素を含むか含まないかは,言語プロファイルの選択に任される。
erase="whenDone"は,デフォルトの値とする。これが指定される(又は暗示される)場合,適用された任意のタイミングの終了点でメディア除去が起こる。
erase="never"は,表示領域が再利用されるまで(又は表示領域が既に他のメディアオブジェクトによって使われている場合に),メディアの最後の状態が表示される続けるよう定義される。 この要素を統合する任意のプロファイルは,"表示領域"が何を意味するのかを定義し,さらにその相互作用を定義しなければならない。 本来的なハイパリンク(例えば,Flash,HTMLなど)及び明示的なハイパリンク(例えば,area,aなど)は,ハイパリンクが表示されている限り,活性化された状態のままとする。 タイミングが要素に対して再適用される場合,erase=neverの効果は失われる。 例えば,要素がSMIL Timing and Synchronization moduleによって再始動させられる場合,その要素は,再始動する直前にクリアされる。
例:
<par> <seq> <par> <img src="image1.jpg" region="foo1" fill="freeze" erase="never" .../> <audio src="audio1.au"/> </par> <par> <img src="image2.jpg" region="foo2" fill="freeze" erase="never" .../> <audio src="audio2.au"/> </par> ... <par> <img src="imageN.jpg" region="fooN" fill="freeze" erase="never" .../> <audio src="audioN.au"/> </par> </seq> </par>
この例では,各々の画像が続けて表示され,プレゼンテーションが終了するまで表示された状態のままとなる。
値
これがどの様に使われるかの例としては,多くのアニメーション化されたGIFが,本来的に不定回数を繰り返すようになっていることがある。 mediaRepeat="strip"を解釈するアプリケーションは,参照されるたびにアニメーション化されたGIFが本来的に繰り返す振る舞いを制作者が削除できるようにする。この結果,GIFに埋め込まれた繰返し値にかかわらず,アニメーションは一度だけ表示される。
mediaRepeatがSMILタイミングモジュールの属性と一緒に使われる場合,この属性が最初に適用され,その結果として,その繰返しの振る舞いは,repeatCount及びrepeatDurといったSMILタイミングモジュールの属性と共に制御できることになる。
Values:
erase属性を統合する任意のプロファイルは,"表示領域"の意味するところ,及びさらにその相互作用を定義しなければならない。 詳細は,eraseの定義を参照すること。
param要素上のtype属性及びvaluetype属性のサポートされる使用は,統合を行うプロファイルによって指定されなければならない。 プロファイルがこれを指定しない場合,type属性及びvaluetype属性は,そのプロファイルにおいて無視される。
7.5は,SMIL MediaClippingモジュール定義を構成する属性を定義する。MediaClippingモジュールで定義された属性を実装する言語は,BasicMediaと同様に,次に定義されたすべての属性を実装しなければならない。
Clip-value-MediaClipping ::= [ Metric "=" ] ( Clock-val | Smpte-val ) Metric ::= Smpte-type | "npt" Smpte-type ::= "smpte" | "smpte-30-drop" | "smpte-25" Smpte-val ::= Hours ":" Minutes ":" Seconds [ ":" Frames [ "." Subframes ]] Hours ::= Digit+ /* see XML 1.0 for a definition of ´Digit´*/ Minutes ::= Digit Digit; range from 00 to 59 Seconds ::= Digit Digit; range from 00 to 59 Frames ::= Digit Digit; smpte range = 00-29, smpte-30-drop range = 00-29, smpte-25 range = 00-24 Subframes ::= Digit Digit; smpte range = 00-01, smpte-30-drop range = 00-01, smpte-25 range = 00-01
備考 水準1拡張のための追加のBNFは,後で定義される
この属性の値は,メトリク指定子,及びその後に続く時間値で構成される。時間値の構文及びセマンティクスは,メトリク指定子に依存する。 次のフォーマットが許可される。
時間値は,時間:分:秒:フレーム.下位フレームという形式をもつ。
下位フレーム値が0の場合,それは省略してもよい。下位フレームは,フレームの100分の1単位で測定されている。
例
clipBegin="smpte=10:12:33:20"
clipBegin="npt=123.45s"
clipBegin="npt=12:05:35.3
"
メトリク指定子が与えられない場合,"npt="のデフォルトが仮定される。
SMILタイミングモジュールのタイミング属性と共に使用される場合,この属性は,どのSMILタイミングモジュール属性よりも前に適用される。
clipBeginは,SMIL 1.0との互換性のために,clip-beginとして表してもよい。SMIL 2.0言語プロファイルをサポートするソフトウェアは,clipBegin及びclip-beginの両方を扱わなければならない。一方,SMIL MediaClippingモジュールだけをサポートするソフトウェアは,clipBeginだけをサポートすればよい。要素がclipBegin及びclip-begin属性の両方を含んでいる場合,clip-beginよりもclipBeginが優先される。
例
<audio src="radio.wav" clip-begin="5s" clipBegin="10s" />
clip-begin属性は無視されるので,クリップは,音声の5秒目ではなく,10秒目に開始する。 厳密なSMIL 1.0実装では,clipBegin属性が認識されないので,音声の5秒目に開始する。 この話題に関するさらに多くの議論については,SMIL 1.0メディアオブジェクト属性に対する変更を参照すること。
この話題に関するさらに多くの議論については,SMIL 1.0メディアオブジェクト属性に対する変更を参照すること。
7.6は,SMIL MediaClipMarkersモジュール定義を構成する属性拡張を定義する。MediaClipMarkersモジュールで定義された要素及び属性を実装する言語は,BasicMedia及びMediaClippingと同様に,次に定義されたすべての要素及び属性を実装しなければならない。
Clip-value-MediaClipMarkers ::= Clip-value-MediaClipping |
"marker" "=" URI-reference
/* "URI-reference" is defined in [URI] */
例
録音されたラジオ放送が,ディスクジョッキーによるアナウンスによって分けられた一連の歌で構成されているものと仮定する。
音声フォーマットは,マークされた時点をサポートしており,各々の歌又はアナウンスの開始点は,番号Xを使ってsongX又はdjXとしてそれぞれマークされている。
メトリク指定子"marker"を用いて最初の曲を抽出するには,次の音声メディア要素を使うことができる。
<audio clipBegin="marker=#song1" clipEnd="marker=#dj1" />
7.7は,SMIL BrushMediaモジュール定義を構成する要素及び属性を定義する。 BrushMediaモジュールの要素及び属性を実装する言語は,次に定義されるすべての要素及び属性を実装しなければならない。
brush要素は,メディアオブジェクトの場所を,塗りつぶす色又は他のパタンで描画することを許可する軽量のメディアオブジェクト要素とする。 したがって,メディアオブジェクトに関連付けられたすべての属性は,brushにも適用してよい。 メディアオブジェクトについての情報すべてがその要素それ自体の属性で指定されているので,src属性は,無視され,必須ではない。
BrushMediaモジュールを含むプロファイルは,brush要素においてcolor属性の値inheritを使用するときのセマンティクスを提供しなければならない。 inheritがすべての文脈で意味をもつわけではないので,プロファイルは,この値の使用を禁止することを選択してもよい。 そのようなセマンティクスを定義していないプロファイルに対しては,brush要素のcolor属性にinheritの値を指定することは禁止される。
7.8では,SMIL MediaAccessibilityモジュール定義を構成する要素及び属性を定義する。 MediaAccessibilityモジュールの要素及び属性を実装する言語は,MediaDescriptionと同様に,次に定義されるすべての要素及び属性を実装しなければならない。
すべてのメディアオブジェクト要素が,簡潔な意味のある説明を含む"alt"属性をもつことを強く推奨する。 制作ツールは,この属性なしにいかなる要素もSMIL文書に導入されることがないよう保証することが望ましい。
この属性の値は,CDATAテキスト文字列とする。
alt属性,title属性又はlongdesc属性を含む要素は,次の規則に従って,支援的な技術によって読み上げられる。
例
<par> <video id="carvideo" src="car.rm" region="videoregion" title="Car video" alt="Illustration of relativistic time dilation and length contraction." longdesc="carvideodesc.html" readIndex="3"/> <audio id="caraudio" src="caraudio.rm" region="videoregion" title="Car presentation voiceover" begin="bar.begin"/> <animation id="cardiagram" src="car.svg" region="animregion" title="Diagram of the car" readIndex="2"/> <img id="scvad" src="scv.png" region="videoregion" title="Advertisement for Sugar Coated Vegetables" readIndex="1"/> </par>
この例では,タイトル(title属性の値)を読み上げる支援的な装置は,(最も低いreadIndex値"1"をもっている)"scvad"要素のタイトルを最初に読み上げ,続いて,"cardiagram"要素のタイトルを,続いて"carvideo"要素のタイトルを,そして最後に(暗黙的なreadIndex値"1"をもっている)"caraudio"要素のタイトルを読み上げることが望ましい。
7.9では,SMIL MediaDescriptionモジュール定義を構成する要素及び属性を定義する。 MediaDescriptionモジュールの要素及び属性を実装する言語は,次に定義されるすべての要素及び属性を実装しなければならない。
RDFでの適切なSMILメタデータのマーク付けを使用する場合には,この属性は非推奨とする。例えば,この属性は,Dublin Core Metadata Initiative[DC]によって定義されている"description"属性にうまく対応付けることができる。
この属性の値は,CDATAテキスト文字列とする。
この属性の値は,CDATAテキスト文字列とする。
xml:langは,一つの重要な点で,試験を行うsystem-language属性とは異なる。 system-languageは,特定の関連付けられた振る舞いを伴う試験属性であるのに対し,xml:langは,内容の言語についての情報を提供するが,実装がその情報を使って何を行うかには依存しない(詳細はSMIL Content Control Moduleのsystem-languageを参照)。
clipBegin及びclip-begin,並びにclipEnd及びclip-endに関して,SMIL 2.0は,SMIL 1.0で定義されている構文に対して,次の変更を定義している。
clip-begin及びclip-endといったハイフンを使った属性名を用いることは,それらの属性を操作するためにスクリプト言語及びDOMを用いるときに問題が起きる。 したがって,この規定では,SMIL 1.0のclip-begin及びclip-endに代わる同等の属性として,属性名clipBegin及びclipEndを追加する。ハイフンを使った属性名は,非推奨とする。
制作者は,この規定で定義されている新しいクリップ化の構文及び機能("marker",デフォルトのメトリクなど)を用いるがSMIL 1.0ソフトウェアによってもまだ扱うことのできるSMIL 2.0プレゼンテーションを書くために,二つのアプローチを用いることができる。 制作者は,最初に,新しい機能を用いたハイフンを使わない新しい属性を使用し,そのテキストの後の方にSMIL 1.0に適合したクリップ化属性を付加することができる。
例:
<audio src="radio.wav" clipBegin="marker=song1" clipEnd="marker=moderator1" clip-begin="npt=0s" clip-end="npt=3:50" />
推奨されているSMIL 1.0 [SMIL10]の拡張性規則を実装しているSMIL 1.0プレーヤは,新しい機能を用いているクリップ属性を無視する。これは,その属性がSMIL 1.0の一部ではないことによる。 反対に,SMIL 2.0プレーヤは,テキストの後の方に現れるSMIL 1.0構文を用いるクリップ属性を無視する。
二つ目のアプローチは,次のステップを用いる。
例:
<smil xmlns:smil2="http://www.w3.org/2001/SMIL20/Language"> ... <switch> <audio src="radio.wav" clipBegin="marker=song1" clipEnd="marker=moderator1" system-required="smil2" /> <audio src="radio.wav" clip-begin="npt=0s" clip-end="npt=3:50" /> </switch>
SMIL 1.0は,メディア要素の子要素としてanchorを唯一許可していた。このanchor(現在,リンク付けモジュールで定義されている。)に加え,paramが,SMILメディアオブジェクトの子どもとして許可されている。さらに,他の新しい子どもがホスト言語によって定義されてもよい。
新しいparam要素は,メディアオブジェクトにメディア指定属性を付加する一般化された機構を提供する。
新しいbrush要素は,メディアに関連付けられていない塗りつぶし色メディアオブジェクトの指定を許可する。