標準情報(TR)  TR X 0014:1999


同期化マルチメディア統合言語 (SMIL) 1.0

Synchronized Multimedia Integration Language,SMIL 1.0



序文

この標準情報(TR)は,1998年6月にWorld Wide Web Consortium(W3C)から公表された Synchronized Multimedia Integration Language,SMIL 1.0勧告を翻訳し, 技術的内容を変更することなく作成した標準情報(TR)である。

0. 一般

0.1 適用範囲

この文書は,同期化マルチメディア統合言語(Synchronized Multimedia Integration Language,SMIL,“スマイル”と発音する。)の版1.0を規定する。 SMILは,独立なマルチメディアオブジェクトの集合を, 同期化したマルチメディアプレゼンテーションに統合することを可能にする。 SMILを使うことで,編集者は次のことが可能となる。

この規定の構成は,次のとおりとする。 1.では,この規定の方針を示す。2.では,"smil"要素を定義する。 3.では,SMIL文書のヘッド部に含むことができる要素を定義する。 4.では,SMIL文書の本体部に含むことができる要素を定義する。 特に,4.では,SMILで使用する時間モデルを定義する。 5.では,SMIL DTDを示す。

0.2 引用規定

1. 規定の方針

SMIL文書は,XML 1.0の文書[XML10]とする。 XML 1.0が定義する概念及び用語を,前提として使用する。

この規定は,URNを使って潜在的には表現できないURLで定義された特別な特徴には依存しない。 そこで,より一般的な用語URI[URI]を,この規定を通して使用する。

SMIL文書の構文は,5.2のDTDで定義する。 DTD記法を使って定義できない属性値の構文は,その属性値を含むことが可能な属性を使用する最初の要素と共に定義する。 その属性値の構文は,XML 1.0規定で定義された拡張BNF(Extended Backus-Naur Form,EBNF)を使って定義する。

要素定義は,次のとおりに構造化する。 まず,要素のすべての属性を,アルファベットの順番に定義する。 属性は,次の方法で定義する。 属性がこの規定の要素によって初めて使用される場合,その属性の意味を定義する。 属性が既に他の要素によって使用されている場合,この規定では, その属性を使用した最初の要素における属性の定義を参照する。 属性値の構文がDTD記法を使用して定義できない場合, 属性値の定義が要素属性の定義の後に続く。 要素定義の最後に,要素の内容を規定する。

2. smil要素

a) 要素属性

"smil"要素は,次の属性をもつことができる。

id
この属性は,文書中の要素を一意に識別する。その値は,XML識別子とする。

b) 要素内容

"smil"要素は,次の子どもを含むことができる。

body
4.1に定義する。
head
3.1に定義する。

3. 文書ヘッド

3.1 head要素

"head"要素は,表示の時間的な振る舞いに関連しない情報を含む。

a) 要素属性

"head"要素は,次の属性をもつことができる。

id
2に定義する。

b) 要素内容

"head"要素は,次の子どもを含むことができる。

layout
3.2に定義する。
meta
3.4に定義する。
switch
4.3に定義する。

"head"要素は,"meta"要素を幾つでも含むことができ,"layout"要素又は"switch"要素のどちらか一つを含むことができる。

3.2 layout要素

"layout"要素は,文書の本体の要素を文書の(視覚的な又は聴覚的な)抽象レンダリング面上にどのように位置付けるかを決定する。

文書がlayout要素を含まなければ,body要素の位置付けは実装依存とする。

smil文書は,"switch"要素(4.3に定義する。)の中に複数の layout要素を入れることによって,複数の別レイアウトを含むことができる。 これは,例えば,異なるレイアウト言語を用いて文書レイアウトを記述するために利用できる。

SMIL基本レイアウト言語(3.3に定義する。) に対する代替言語として,CSS2をどのように利用できるかを,次に例示する。

<smil>
  <head>
    <switch>
     <layout type="text/css">
        [region="r"] { top: 20px; left: 20px }
     </layout>
     <layout>
       <region id="r" top="20" left="20" />
     </layout>
   </switch>
   </head>
   <body>
     <seq>
       <img region="r" src="http://www.w3.org/test" dur="10s" />
     </seq>
   </body>
</smil>

この例では,二つの代替となるレイアウトが同一のレイアウトに帰着することに注意。

a) 要素属性

id
2.に定義する。
type
この属性は,どのレイアウト言語をレイアウト要素の中で用いるかを指定する。 プレーヤがこの言語を理解できない場合には,プレーヤは, 次の"</layout>"タグまで,すべての内容をとばさなければならない。 type属性のデフォルト値は,"text/smil-basic-layout"とする。

b) 要素内容

layout要素のtype属性が値"text/smil-basic-layout"をもつ場合,それは次の要素を含むことができる。

region
3.3.1に定義する。
root-layout
3.3.2に定義する。

"layout"要素のtype属性が別の値をもつ場合,その要素は文字データを含む。

3.3 SMIL基本レイアウト言語

SMIL基本レイアウト言語を3.3で規定する。 SMIL基本レイアウト言語は,CSS2で規定する視覚的レンダリングモデルと一貫性を保つ。 SMIL基本レイアウト言語は,CSS2規定が規定するフォーマット付け特性を再使用し, 新たに"fit"属性を導入する[CSS2]。 CSS2が規定する概念及び用語を,前提として使用する。

SMIL基本レイアウトは,4.2.3 に規定するメディアオブジェクト要素のレイアウトだけを制御する。 他のSMIL要素に対してSMIL基本レイアウトを使用することは,文法に反する。

SMIL基本レイアウトに関するtype識別子は,"text/smil-basic-layout"とする。

a) 固定特性値

次のスタイルシートは,SMIL基本レイアウトにおいて妥当なCSS2特性"display" 及び"position"の値を規定する。これらの特性値は,固定されている。

a           {display:block}
anchor      {display:block}
animation   {display: block;
             position: absolute}
body        {display: block}
head        {display: none}
img         {display: block;
             position: absolute}
layout      {display: none}
meta        {display: none}
par         {display: block}
region      {display: none}
ref	    {display: block;
             position: absolute}
root-layout {display: none}
seq         {display: block}
smil        {display: block}
switch      {display:block}
text        {display: block;
             position: absolute}
textstream  {display: block;
             position: absolute}
video       {display: block;
             position: absolute}

これらの定義の結果,absoluteと位置決めされたすべての要素 (animation, img, ref, text, textstream及びvideo)は,ルート要素(smil) の内容端によって定義される単一の含むブロックの中に含まれることに注意。

b) デフォルト値

SMIL基本レイアウトは,すべてのレイアウト関連属性のデフォルト値を規定する。 これらは,CSS2における対応する特性の初期値に一致する。

文書中のすべてのメディアオブジェクト要素に関するデフォルトレイアウト値の選択を編集者が望む場合には, 文書は,型"text/smil-basic-layout"をもつ次に示す空layout要素を含まなければならない。

<layout type="text/smil-basic-layout"></layout>

3.3.1 region要素

region要素は,メディアオブジェクト要素の位置,サイズ及び倍率を制御する。

次の素片例では,テキスト要素の位置が,レンダリングウィンドウの上部境界から 5画素の距離に設定される。

<smil>
  <head>
    <layout>
      <region id="a" top="5" />
    </layout>
  </head>
  <body>
    <text region="a" src="text.html" dur="10s" />
  </body>
</smil>

a) 要素属性

"region"要素は,次の属性をもつことができる。

background-color
この属性の利用及び定義は,SMIL基本レイアウトが"system colors" のサポートを必要としないことを除いて,CSS2の規定における "background-color"特性に一致する。
background-color属性がない場合,背景は透明とする。
fit
この属性は,視覚的なメディアオブジェクトの本来の高さ及び幅が, "region"要素における高さ及び幅の属性によって規定される値と異なる場合, その振る舞いを規定する。 この属性は,CSS2特性へ1対1に対応させることはできないが, CSS2でシミュレートできる。
この属性は,次の値をもつことができる。

fill
オブジェクトの高さ及び幅を独立に変倍して,内容をボックスのすべての幅にちょうど接させる。
hidden
  • メディアオブジェクト要素の本来の高さ(幅)が "region"要素において規定される高さ(幅)より小さい場合, 上(左)端から始めてオブジェクトをレンダリングし, 残りの高さ(幅)を背景色で埋める。
  • メディアオブジェクト要素の本来の高さ(幅)が "region"要素において規定される高さ(幅)より大きい場合, 上(左)端から始めてオブジェクトを"region" 要素において定義される高さ(幅)に達するまでレンダリングし, その高さ(幅)の下(右)のオブジェクトの部分を切り抜く。
meet
アスペクト比を保ったまま,その高さ又は幅が, 高さ又は幅の属性によって規定される値に等しくなるまで, 可視的メディアオブジェクトを変倍するが,内容は切り抜かない。 オブジェクトの左上隅は,ボックスの左上の座標に位置付けられ, 右又は下の空スペースは背景色で埋める。
scroll
要素のレンダリング済み内容がその境界を越える場合, スクロール機構を呼び出す。
slice
アスペクト比を保ったまま視覚的メディアオブジェクトを拡大・縮小して, 高さ及び幅をheight属性及びwidth属性によって指定された値に等しくするが, 内容の一部は切り抜いてもよい。 状況に応じて,視覚的メディアオブジェクトの水平スライス又は垂直スライスのどちらかを表示する。 オーバフローした幅は,メディアオブジェクトの右から切り抜く。 オーバフローした高さは,メディアオブジェクトの下から切り抜く。

"fit"のデフォルト値は,"hidden"とする。

height
この属性の利用及び定義は,CSS2規定における"height"特性と同一とする。 属性値は,"percentage"値をとることができ,CSS2が規定する"length" 値の変形とする。"length"値については,SMIL基本レイアウトは, CSS2が規定する画素単位だけをサポートする。 それで,画素値において"px"単位限定子を省略できる。 ("px"限定子は,CSS2においては必す(須)とする。)
id
2に定義する。
region要素は,配置可能要素のregion属性をその region要素のid値に設定することによって, 配置可能要素に適用される。
"id"属性は,"region"要素について必す(須)とする。
left
この属性の利用及び定義は,CSS2規定における"left"特性と同一とする。 属性値は,"height"属性の属性値と同じ制約をもつ。
デフォルト値は,0とする。
skip-content
この属性は,SMILの将来の拡張可能性( 附属書A参照)のために導入する。 これは,次の二つの場合に解釈される。

"skip-content"属性の値が"true"であって, これらの場合の一つが適用される場合,要素の内容は無視される。 その値が"false"であれば,要素の内容は処理される。
"skip-content"のデフォルト値は,"true"とする。

title
この属性は,その属性が設定された要素に関する諮問情報を提供する。 ユーザエージェントは,多様な方法でtitle属性の値をレンダリングしてよい。 例えば視覚的ブラウザは,titleを"tool tip" (ポインティングデバイスがオブジェクト上で止まるときに表れる 短いメッセージ)として表示することが多い。
すべての"region"要素は,意味のある記述を伴う "title"属性をもつことを強く推奨する。 編集ツールは,この属性をもたない要素がSMIL文書に導入できないことを保証することが望ましい。
top
この属性の利用及び定義は,CSS2規定における"top"特性と同一とする。 属性値は,"height"属性の属性値と同じ制約をもつ。
デフォルト値は,0とする。
width
この属性の利用及び定義は,CSS2規定における"width"特性と同一とする。 属性値は,"height"属性の属性値と同じ制約をもつ。
z-index
この属性の利用及び定義は,次の例外を除き,CSS2規定における"z-index"特性と同一とする。

b) 要素内容

"region"は,空要素とする。

3.3.2 root-layout要素

"root-layout"要素は,ルート要素のレイアウト特性の値を決定する。 ルート要素は,ビューポート, つまりSMILプレゼンテーションがレンダリングされるウィンドウ, のサイズを決定する。

文書が複数の"root-layout"要素をもつ場合は,エラーとし,文書は表示されない。

a) 要素属性

"root-layout"要素は,次の属性をもつことができる。

background-color
3.3.1に定義する。
height
3.3.1に定義する。
ルート要素の高さを設定する。length値だけが許可される。
id
2.に定義する。
skip-content
3.3.1に定義する。
title
3.3.1に定義する。
width
3.3.1に定義する。
ルート要素の高さを設定する。length値だけが許可される。

b) 要素内容

"root-layout"は,空要素とする。

3.4 meta要素

"meta"要素は,文書の特性(つまり,編集者,有効期日,キーワードのリストなど) を定義し,値をそれらの特性に割り当てるために利用できる。 各"meta"要素は,単一の特性及び値の対を指定する。

a) 要素属性

"meta"要素は,次の属性をもつことができる。

content
この属性は,meta要素で定義する特性の値を指定する。
"content"属性は,"meta"要素のために必す(須)とする。
id
2.に定義する。
name
この属性は,meta要素で定義する特性を識別する。
"name"属性は,"meta"要素のために必す(須)とする。
skip-content
3.3.1に定義する。

特性のリストは,拡張可能とする。この規定は,次の特性を定義する。

base
この特性の値は,文書で用いるすべての相対URIに関する基底URIを決定する。
pics-label又はPICS-Label
この特性の値は,PICS[PICS] が規定する文書用の妥当格付けラベルを指定する。
title
この特性の値は,プレゼンテーションのタイトルを含む。

b) 要素内容

"meta"は,空要素とする。

4. 文書本体

4.1 body要素

"body"要素は,文書の時間及びリンクの振る舞いに関連する情報を含む。 それは"seq"要素を暗黙的に定義する。 "seq"要素は,4.2.2に定義する。"body"要素の時間的セマンティクスの定義は,4.2.4を参照。

a) 要素属性

"body"要素は,次の属性をもつことができる。

id
2.に定義する。

b) 要素内容

"body"要素は,次の子どもを含むことができる。

a
4.5.1に定義する。
animation
4.2.3に定義する。
audio
4.2.3に定義する。
img
4.2.3に定義する。
par
4.2.1に定義する。
ref
4.2.3に定義する。
seq
4.2.2に定義する。
switch
4.3に定義する。
text
4.2.3に定義する。
textstream
4.2.3に定義する。
video
4.2.3に定義する。

4.2 同期要素

4.2.1 par要素

要素の子どもは,時間的にオーバラップすることができる。 子どもが文書上で出現する順番は, それらのプレゼンテーションのタイミングに関して意味をもたない。

a) 要素属性

"par"要素は,次の属性をもつことができる。

abstract
要素に含まれる内容の詳細な記述。
author
要素に含まれる内容の編集者の名前。
begin
この属性は,要素の明示的開始点を指定する。 そのセマンティクスの定義は, 4.2.4を参照。
この属性は,次の2種類の値を含むことができる。

delay-value
遅延値は,プレゼンテーション時間を測定するクロック値とする。 プレゼンテーション時間は,プレゼンテーションのスピードで進む。 それは,テープデッキのカウンタに表示されるタイムコードと同じに振る舞う。 ユーザ動作又はプレーヤ自体によって, プレゼンテーション時間は,止まり,減り,増えることができる。
遅延時間のセマンティクスは,次に示すとおりに, 要素の先祖の最初の同期要素に依存する。すなわち,先祖が"a"又は"switch"要素の場合は 無視される。
  • 先祖が"par"要素ならば, 遅延値は,その要素の実効的開始点からの遅れを定義する (図4.1参照)。
  • 先祖が(4.2.2に定義する)"seq"要素ならば, 遅延値は,直前の先行要素となる同期要素の実効的終了点からの遅れを定義する (図4.2参照)。
event-value
イベントが発生した時,要素は開始する(図4.3参照)。 その値は,element-event[c)に示す定義を参照]とする。
イベントを生成する要素は,"in scope"でなければならない。 "in scope"要素の集合Sは,次のとおりに決定する。
  1. 先祖の最初の同期要素のすべての子どもをSに追加する。
  2. Sからすべての"a"要素及び"switch"要素を削除する。 "a"要素の子どもで,"switch"要素以外のすべて要素をSに追加する。

その結果の集合Sを,"in scope"要素の集合とする。


<par>
  <audio id="a" begin="6s" src="audio" />
</par>

delay in 'par' element


図4.1 "par"要素での遅延値の使用
<seq>
  <audio src="audio1" />
  <audio begin="5s" src="audio2" />
</seq>

delay in 'seq' element


図4.2 "seq"要素での遅延値の使用
<par>
  <audio id="a" begin="6s" ... />
  <img  begin="id(a)(4s)" ... />
</par>

element with event value


図4.3 要素イベント値をもつ同期属性
copyright
要素に含まれる内容の著作権表示。
dur
この属性は,要素の明示的継続時間を指定する。 そのセマンティクスの定義は,4.2.4を参照。 属性の値は,クロック値又は文字列"indefinite"とする。
end
この属性は,要素の明示的終了点を指定する。 そのセマンティクスの定義は,4.2.4を参照。 "begin"属性と同じ型の属性値を含むことができる。
endsync
この属性のセマンティクスの定義は, 4.2.4を参照。 この属性は,次の値をもつことができる。

"endsync"のデフォルト値は,"last"とする。

id
2.に定義する。
region
この属性は, 文書のlayout節で定義された(視覚的又は聴覚的)抽象レンダリング面を指定する。 属性の値は,XML識別子でなければならない。 このidをもつレンダリング面がlayout節に定義されていない場合は, この要素のフォーマット付け特性の値は,デフォルトレイアウトによって 決まる。
この規定で定義されたSMIL基本レイアウト言語は, "par"要素の"region"属性を使用できない。 他のレイアウト言語がこれを要求してもよいので, 完全を期するためにこの文を追加する。
repeat
この値のセマンティクスの定義は, 4.2.4を参照。 属性の値は,整数又は文字列"indefinite"とする。 デフォルト値は,1とする。
system-bitrate
4.4に定義する。
system-captions
4.4に定義する。
system-language
4.4に定義する。
system-overdub-or-caption
4.4に定義する。
system-required
4.4に定義する。
system-screen-size
4.4に定義する。
system-screen-depth
4.4に定義する。
title
3.3.1に定義する。
すべての"par"要素は, 意味のある記述を伴う"title"属性をもつことを強く推奨する。 編集ツールは,"title"属性をもたない要素がSMIL文書に導入されないことを保証するのが望ましい。

b) 子ども間の同期について

並行グループの子ども間の同期の正確さは,実装依存とする。 再生遅延,すなわち, オーディオ,ビデオなどの二つ以上の連続メディア型を"par"要素が含み, それらの一つが遅れた場合の振る舞いを, 同期の例として考える。
プレーヤは,次に示す同期の振る舞いを行うことができる。

厳密な同期
プレーヤは,"par"要素の子どもを共通のクロックに同期させる (図4.4 a)参照)。
厳密でない同期
"par"要素の各々の子はそれ自体のクロックをもち, "par"要素の他の子どものクロックとは独立に動く(図4.4 b)参照)。


hard synchronization

a)厳密な同期 ビデオの遅延の例。オーディオを止めるか,又は 幾つかのビデオフレームを抜かす。正確な振る舞いは,実装依存とする。

soft synchronization

b)厳密でない同期


図4.4 異なる同期方策を使用するプレーヤに対する プレースケジュール遅延の効果

c) 属性値

clock value
クロック値は,次の構文をもつ。
Clock-val             ::= Full-clock-val | Partial-clock-val | Timecount-val
Full-clock-val        ::= Hours ":" Minutes ":" Seconds ("." Fraction)?
Partial-clock-val     ::= Minutes ":" Seconds ("." Fraction)?
Timecount-val         ::= Timecount ("." Fraction)?
                          ("h" | "min" | "s" | "ms")? ; デフォルトは"s"。
Hours                 ::= 2DIGIT; 任意の正の数。
Minutes               ::= 2DIGIT; 範囲は00から59まで。
Seconds               ::= 2DIGIT; 範囲は00から59まで。
Fraction	      ::= DIGIT+
Timecount             ::= DIGIT+
2DIGIT		      ::= DIGIT DIGIT
DIGIT		      ::= [0-9]

次に,文法に合ったクロック値の例を示す。

n個の数字からなる"Fraction"のxは,次の値を表す。

x * 1/10**n



00.5s = 5 * 1/10 秒 = 500 ミリ秒
00:00.005 = 5 * 1/1000 秒 = 5 ミリ秒

element-event value
要素イベントの値は,同期要素における特定のイベントを指定する。
要素イベントは,次の構文をもつ。
Element-event     ::= "id(" Event-source ")(" Event ")"
Event-source      ::= Id-value
Event             ::= "begin" | Clock-val | "end"
次のイベントを定義する。
begin
このイベントは,要素の実効的開始点で生成される。

使用例: begin="id(x)(begin)"

clock-val
要素に関連付けられたクロックが特定の値に達したとき,このイベントが生成される。 クロックは,要素の実効的開始点において,0で開始する。 "par"要素及び"seq"要素に対しては, クロックは,要素の実効的開始点から経過したプレゼンテーション時間を与える。 メディアオブジェクト要素に対しては,セマンティクスは,実装依存とする。 クロックは,実効的開始点から経過したプレゼンテーション時間を与えるか, 又はオブジェクトのメディア時間を与える。 後者は,例えば,レンダリング遅延又はネットワーク遅延のために, オブジェクトの表示が始まった時から経過したプレゼンテーション時間とは異ってもよい。 後者を推奨するアプローチとする。
イベントを生成する要素の実効的継続時間の値を超えたクロック値を使用するのは, エラーとする。

使用例: begin="id(x)(45s)"

end
このイベントは,要素の実効的終了点で生成される。

使用例: begin="id(x)(end)"

d) 要素内容

"par"要素は,次の子どもを含むことができる。

a
4.5.1に定義する。
animation
4.2.3に定義する。
audio
4.2.3に定義する。
img
4.2.3に定義する。
par
4.2.1に定義する。
ref
4.2.3に定義する。
seq
4.2.2に定義する。
switch
4.3に定義する。
text
4.2.3に定義する。
textstream
4.2.3に定義する。
video
4.2.3に定義する。

これらのすべての要素は,"par"要素の直接の子どもとして複数回現れてもよい。

4.2.2 seq要素

"seq"要素の子どもは,時系列を形成する。

a) 属性

"seq"要素は,次の属性をもつことができる。

abstract
4.2.1に定義する。
author
4.2.1に定義する。
begin
4.2.1に定義する。
copyright
4.2.1に定義する。
dur
4.2.1に定義する。
end
4.2.1に定義する。
id
2.に定義する。
region
4.2.1に定義する。
この規定で定義されたSMIL基本レイアウト言語は, "seq"要素のregion属性を使用できない。 他のレイアウト言語がこれを要求してもよいので, 完全を期するためにこの文を追加する。
repeat
4.2.1に定義する。
system-bitrate
4.4に定義する。
system-captions
4.4に定義する。
system-language
4.4に定義する。
system-overdub-or-caption
4.4に定義する。
system-required
4.4に定義する。
system-screen-size
4.4に定義する。
system-screen-depth
4.4に定義する。
title
3.3.1に定義する。
すべての"seq"要素が, 意味のある記述を伴う"title"属性をもつことを強く推奨する。 編集ツールは,"title"属性をもたない要素がSMIL文書に導入できないことを保証するのが望ましい。

b) 要素内容

"seq"要素は,次の子どもを含むことができる。

a
4.5.1に定義する。
animation
4.2.3に定義する。
audio
4.2.3に定義する。
img
4.2.3に定義する。
par
4.2.1に定義する。
ref
4.2.3に定義する。
seq
4.2.2に定義する。
switch
4.3に定義する。
text
4.2.3に定義する。
textstream
4.2.3に定義する。
video
4.2.3に定義する。

4.2.3 メディアオブジェクト要素: refanimationaudio,imgvideo,text及び textstream要素

メディアオブジェクト要素は,メディアオブジェクトをSMILプレゼンテーションへ含めることを可能にする。 メディアオブジェクトは,(URIを使用する)参照によって含められる。

メディアオブジェクトには二つの種類がある。 一つは,本来の継続時間をもつメディアオブジェクト (例えば,ビデオ及びオーディオで"連続メディア"とも呼ばれる。)とし, もう一つは,本来の継続時間をもたないメディアオブジェクト (例えば,テキスト及び画像で,"不連続メディア"とも呼ばれる。)とする。

視覚的メディアオブジェクト,すなわち, 視覚的抽象レンダリング面にレンダリングが行われるメディアオブジェクトに, アンカー及びリンクを張り付けることができる。

メディアオブジェクトをプレーするとき,プレーヤは, メディアオブジェクト要素の名前からメディアオブジェクトの正確な型を導出してはならない。 代わりに,プレーヤは,"type"属性に含まれる型情報, 又はサーバ若しくはオペレーティングシステムによって通信される型情報などの 型についての他の情報源だけに依存しなければならない。

しかし,編集者は,メディアオブジェクトが属するグループ (animation,audio,img,video,text又はtextstream) が要素の名前に反映されていることを確認することが望ましい。 これによって,SMIL文書の可読性を向上させる。 メディアオブジェクトがどのグループに属するか疑問がある場合は, 編集者は,一般的な"ref"要素を使用するのがよい。

a) 要素属性

メディアオブジェクト要素は,次の属性をもつことができる。

abstract
4.2.1に定義する。
alt
特定のメディアオブジェクトを表示できないユーザエージェントのために, この属性は,代替テキストを指定する。 すべてのメディアオブジェクト要素が, 意味のある記述をともなった"alt"属性をもつことを強く推奨する。 編集ツールは,この属性をもたない要素がSMIL文書に挿入できないことを保証するのが望ましい。
author
4.2.1に定義する。
begin
4.2.1に定義する。
clip-begin
clip-begin属性は,メディアオブジェクトの始まりからのオフセットとして, 連続メディアオブジェクトの部分クリップの開始を指定する。
clip-begin属性の値は,次の構文をもつ。
Clip-time-value   ::= 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             ::= 2DIGIT
Minutes           ::= 2DIGIT
Seconds           ::= 2DIGIT
Frames            ::= 2DIGIT
Subframes         ::= 2DIGIT

この属性の値は,メトリク指定子及びそれに続く時間値から構成される。 時間値の構文及びセマンティクスは,メトリク指定子に依存する。 次の形式を許す。

SMPTEタイムスタンプ
SMPTEタイムコード[SMPTE]は, フレームレベルのアクセス精度のために使用できる。 メトリク指定子は,次の値をもつことができる。
smpte
smpte-30-drop
これらの値は,29.97フレーム/秒の"SMPTE 30 drop" 形式を使用することを示す。 時間値の"frames"フィールドは,0から29までの値と仮定できる。 30フレーム/秒と29.97フレーム/秒との違いは, 10分ごとを除いて, 各分の最初の2フレームインデクス(値が00及び01)を抜かす ことによって処理される。
smpte-25
時間指定における"frames"フィールドは,0から24までの値と仮定できる。

時間値は,時:分:秒:フレーム:サブフレームの形式をもつ。 フレームの値が0の場合,それを省略できる。 サブフレームは,フレームの100分の1の単位で測定される。
例:
clip-begin="smpte=10:12:33:20"

標準プレー時間
標準プレー時間は,SMILクロック値で時間を表現する。 メトリク指定子は"npt"であって, 時間値の構文は,SMILクロック値の構文と同一とする。
例:
clip-begin="npt=123.45s"
clip-begin="npt=12:05:35.3
"
clip-end
clip-end属性は, プレーする(オーディオ,ビデオ又は他のプレゼンテーションの) 連続メディアオブジェクトの部分クリップの終了点を指定する。 それは,clip-begin属性と同じ属性値構文を使用する。 "clip-end"属性の値がメディアオブジェクトの継続時間を超えた場合,その値は無視され, クリップエンドは,メディアオブジェクトの実効的終了点と等しくなる。
copyright
4.2.1に定義する。
dur
4.2.1に定義する。
end
4.2.1に定義する。
fill
この属性のセマンティクスの定義は4.2.4を参照。 この属性は,"remove"及び"freeze"の値をもつことができる。
id
2.に定義する。
longdesc
この属性は,メディアオブジェクトの記述へのリンク(URI)を指定する。 この記述は,alt属性によって与えれた短い記述を補足するのが望ましい。 メディアオブジェクトが関連付けられたアンカーをもつ場合, この属性は,アンカーの内容についての情報を提供するのがよい。
region
4.2.1に定義する。
repeat
4.2.1に定義する。
src
src属性の値は,メディアオブジェクトのURIとする。
system-bitrate
4.4に定義する。
system-captions
4.4に定義する。
system-language
4.4に定義する。
system-overdub-or-caption
4.4に定義する。
system-required
4.4に定義する。
system-screen-size
4.4に定義する。
system-screen-depth
4.4に定義する。
title
3.3.1に定義する。
すべてのメディアオブジェクト要素が, 意味のある記述を伴う"title"属性をもつことを強く推奨する。 編集ツールは,"title"属性をもたない要素がSMIL文書に導入できないことを保証するのが望ましい。
type
"src"属性によって参照されるメディアオブジェクトのMIME型。

b) 要素内容

メディアオブジェクト要素は,次の要素を含むことができる。

anchor
4.5.2に定義する。

4.2.4 SMIL時間モデル

4.2.4.1 時間モデル値

これ以降は,用語"要素"は同期要素だけを意味する。

各要素に対して,暗黙的,明示的, 希望的及び実効的のそれぞれの開始点・継続時間・終了点を定義する。

実効的な開始点・継続時間・終了点は,文書を読む側が認識するものとする。

暗黙的,明示的及び希望的な値は, 実効的値を定義するために使用する補助値とする。 SMIL 1.0で定義された要素に対するこれらの値を計算するための規則を 4.2.4.2に示す。

4.2.4.2 SMIL 1.0要素に対する時間モデル値の決定

4.2.4.1の規則によって規定されない場合, SMIL 1.0の同期要素に対して時間モデルの値がどのように計算されるかを次に示す。

a) 要素の暗黙的開始点の決定

b) 要素の暗黙的終了点の決定

次の記述のうちで,要素と一致する最初の記述を使用する。

c) 要素の希望的終了点の決定

d) 要素の希望的開始点の決定

要素の希望的開始点は,4.2.4.1 の規則7を使用することによって決定される。

e) 要素の実効的開始点の決定

要素の実効的開始点は, 親要素の実効的終了点がその時間より前でない限り,要素の希望的開始点と等しい。 ただし,要素の実効的開始点が親要素の実効的終了点より前の場合, その要素は全く示されない。

f) 要素の実効的終了点の決定

4.3 switch要素

switch要素は,編集者が選択候補の集合を指定することを可能にする。 その集合からただ一つの受理可能な要素を選ぶことができる。 要素が受理可能であるとは,要素がSMIL 1.0要素であって,メディア型が復号でき, 要素のテスト用属性(4.4参照) がすべて"true"と評価される場合とする。

要素は,次のとおりに選択される。 プレーヤは,switch要素の中で出現する順に要素を評価する。 switch要素内のすべての他の要素が除外された時点で, 最初に受理可能な要素が選択される。

したがって,編集者は最も望ましいものから最も望ましくないものへと, 選択候補を順に並べることが望ましい。 さらに,編集者は,相対的にフェールセーフな選択候補を <switch>中の最後の項目として置くのがよい。 その結果,switch内の少なくとも一つの項目が (これが明示的に望まれない限り)選択される。 すべてのテスト用属性が失敗した場合, <switch>内のオブジェクトを任意に選択する実装はしない方がよい。

http URIは内容の折衝を提供することに注意する。 それは,ある意味で"switch"要素を使用することの代替手段となる。

a) 属性

switch要素は,次の属性をもつ。

id
2.に定義する。
title
3.3.1に定義する。
すべてのswitch要素は, 意味のある記述を伴う"title"属性をもつことを強く推奨する。 編集ツールは,"title"属性をもたない要素がSMIL文書に導入できないことを保証するのが望ましい。

b) 要素内容

"switch"要素が"body"要素の直接又は間接の子として使用される場合, 次の子どもを含むことができる。

a
4.5.1に定義する。
animation
4.2.3に定義する。
audio
4.2.3に定義する。
img
4.2.3に定義する。
par
4.2.1に定義する。
ref
4.2.3に定義する。
seq
4.2.2に定義する。
switch
4.3に定義する。
text
4.2.3に定義する。
textstream
4.2.3に定義する。
video
4.2.3に定義する。

これらのすべての要素は,"switch"要素の子どもとして複数回出現してもよい。

"switch"要素が"head"要素内に使用される場合,次の子を含むことができる。

layout
3.2に定義する。
switch要素内において複数のlayout要素が出現してもよい。

4.4 テスト用属性

この規定は,任意の同期要素に加えることができ, システムの可能性及び設定をテストする,テスト用属性のリストを定義する。 概念的には,これらの属性は論理テストを表現する。 要素に指定されたテスト用属性のうちの一つが"false"と評価された場合, この属性をもつ要素は無視される。

次のリストには,"ユーザ設定"の概念が現れる。 一般に,ユーザ設定は,設定ダイアログボックスを使用して, 再生エンジンによって設定される。 しかし,この規定は,これらの設定をユーザからSMILプレーヤへどのように伝えるかまでの制限を加えない。

SMIL 1.0では,次のテスト用属性を定義する。

system-bitrate
この属性は,システムで利用可能な,大体の帯域幅をビット/秒で指定する。 帯域幅の測定はアプリケーション固有とする。 つまり,アプリケーションは,終端間の接続に基づく精密な測定, 又はユーザによって制御される単純で静的な設定を使用してもよい。 後者の例では,ユーザのネットワーク接続に基づいて選択することもできる。 モデムユーザにおける典型的な値は,14400,28800,56000ビット/秒などである。 利用可能なシステムビットレートが,与えられた値と同じかそれ以上の場合, "true"と評価する。 利用可能なシステムビットレートが,与えられた値未満の場合, "false"と評価する。
属性は,0より大きい任意の整数値とする。 値が,実装で定義された最大の帯域幅値を超過する場合,属性は, 常に"false"と評価する。
system-captions
この属性は,(聴覚障害をもつ聴衆,又は読解を学習する目的で情報を要求若しくは必要とする聴衆を意図した) プレゼンテーション音声部分と同等の冗長なテキストと, 多くの聴衆を意図したテキストとを編集者が区別することを可能にする。 ユーザが閉じ見出し情報を見たいことを指示した場合,この属性は, 値"on"をもち,ユーザがその情報を見たくないことを指示した場合, 値"off"をもつ。この値が"on"の場合,"ture"と評価し,"off"の場合, "false"と評価する。
system-language
この属性値は,[RFC1766]に定義される言語名をコンマで区切ったリストとする。

ユーザ設定によって指定された言語の一つが, このパラメタ値として与えられた言語の一つと等しい場合,"true"と評価する。 ユーザ設定によって指定された言語の一つが, パラメタ値として与えられた言語の接頭辞と完全に等しい場合, "true"と評価する。 ただし,パラメタの形式は,接頭辞に続く最初のタグ文字を"-"とする。

それ以外の場合は,"false"と評価する。

備考 接頭辞一致化規則をこのとおりに利用することは, ユーザが,ある言語タグで指定された一つの言語を理解した場合に, このタグを接頭辞とするタグで指定可能なすべての言語も理解するものとして, 言語タグを言語に割り当てることを意味しない。

接頭辞規則は,その場合,単に接頭辞タグの使用を許可するだけとする。

備考 ユーザに言語設定の選択を許す場合, ユーザが上述の言語一致化の詳細について精通していないことを考慮して, 実装者は適切なガイダンスを提供することが望ましい。 例えば,ユーザが"en-gb"を選択した場合,イギリス英語が利用可能でなければ, ユーザは,何らかの種類の英語の文書が提供されると仮定してもよaB ユーザ設定を行うためのユーザインタフェースは, 最適な一致結果を得るために"en"を加えるというガイダンスを, ユーザに与えることが望ましい。

多くの言語の聴衆のために,複数の言語を挙げるのがよい。 例えば,"ワイタンギ条約"のレンダリングとして, オリジナルのマオリ語及び英語の両方で同時にプレゼンテーションを行う場合, 次を必要とする。

            <audio src="foo.rm" system-language="mi, en"/>

しかし,system-languageテスト用属性が置かれたオブジェクト内で, 多言語が与えられているからという理由だけで, それが多言語の聴衆を意図したものということを意味しない。 例えば,"ラテン語入門"などの初心者向け言語入門書がある。 これは,英語を読み書きできる聴衆が使用することを明らかに意図している。 この場合,system-languageテスト用属性は"en"だけを含む方がよい。

備考 いくつかの代替言語オブジェクトが "switch"において取り囲まれ,それらのどれも一致しない場合は, オーディオトラックなしでビデオが表示されるなどの状況となることを, 編集者は認識した方がよい。 そこで,すべての場合において受理可能な"catch-all"選択肢を, switchの終わりに含めることを推奨する。

system-overdub-or-caption
この属性は,差替え又はキャプションのオプションが利用可能な場合, ユーザがオプションを望むかどうか決める設定とする。 属性は,値"caption"及び"overdub"をもつことができる。 ユーザ設定がこの属性値と一致する場合,"true"と評価する。 それらが一致しない場合,"false"と評価する。
system-required
この属性は,拡張の名前を指定する。 この拡張が実装によってサポートされる場合,"true"と評価し, それ以外は,"false"と評価する。 SMILの将来の版では,XML名前空間[NAMESPACES] がこの属性値として予定されている。
system-screen-size
属性値は,次の構文をもつ。
screen-size-val::=スクリーン高"X"スクリーン幅
これらの各々は画素値であって,0より大きな整数値でなければならない。 SMIL再生エンジンが, 与えられたサイズのプレゼンテーションを表示することができる場合, "ture"と評価する。SMIL再生エンジンが, より小さなプレゼンテーションしか表示することができない場合, "false"と評価する。
system-screen-depth
この属性は,要素を表示するために必要なスクリーンのカラーパレット長をビット単位で指定する。 この値は,0より大きくなければならない。 典型的な値は,1,8,24などである。 SMIL再生エンジンが,与えられたカラー長の画像又はビデオを表示できる場合,"true"と評価する。 SMIL再生エンジンが,より小さなカラー長の画像又はビデオしか表示できない場合,"false"と評価する。

例1. 異なるビットレートの内容の選択

通常のシナリオでは,要素の"system-bitrate"パラメタによって, 実装に選択を判断させたいと思ってもよaB メディアプレーヤは, メディアプレーヤとメディアサーバとの接続に関する既知の特性を与える受理可能なビットレートを求めるために, 各々の"選択肢"(switch内の要素)を一度に一つずつ評価する。

...
<par>
  <text .../>
  <switch>
    <par system-bitrate="40000">
    ...
    </par>
    <par system-bitrate="24000">
    ...
    </par>
    <par system-bitrate="10000">
    ........
    </par>
  </switch>
</par>
...

例2. 異なるビットレートのオーディオ資源の選択

switch内の要素は,要素の任意の組合せでもよい。 例えば,代替のオーディオトラックを指定するだけでもよい。

...
<switch>
   <audio src="joe-audio-better-quality" system-bitrate="16000" />
   <audio src="joe-audio" system-bitrate="8000" />
</switch>
...

例3. 異なる言語のオーディオ資源の選択

次の例では,オーディオ資源が,フランス語及び英語で利用できる。 ユーザの好む言語に基づいて,プレーヤは,これらのオーディオ資源のうちの一つを選ぶことができる。

...
<switch>
   <audio src="joe-audio-french" system-language="fr"/>
   <audio src="joe-audio-english" system-language="en"/>
</switch>
...

例4. 異なるスクリーン用に記述された内容の選択

次の例では,プレゼンテーションは, 異なる解像度及びビット長をもつスクリーン用に設計された選択候補を含んでいる。 スクリーンに固有な特性に基づき,プレーヤは,選択候補のうちの一つを選ぶことができる。

...
<par>
  <text .../>
  <switch>
    <par system-screen-size="1280X1024" system-screen-depth="16">
    ........
    </par>
    <par system-screen-size="640X480" system-screen-depth="32">
    ...
    </par>
    <par system-screen-size="640X480" system-screen-depth="16">
    ...
    </par>
  </switch>
</par>
...

例5. 株式相場表示装置からの見出しトラックの区別

次の例では,ユーザが見出しの表示を望んだ場合だけ,見出しが表示される。

...
<seq>
  <par>
    <audio      src="audio.rm"/>
    <video      src="video.rm"/>
    <textstream src="stockticker.rtx"/>
    <textstream src="closed-caps.rtx" system-captions="on"/>
  </par>
</seq>
...

例6. 差替え及び見出しトラックにおける言語の選択

次の例では,フランス語の映画が,英語,ドイツ語及びオランダ語の差替え 並びに見出しトラックを利用できる。 次のSMIL素片はこれを表し,ユーザが好む選択候補に切り替える。

...
<par>
  <switch>
    <audio src="movie-aud-en.rm" system-language="en"
                system-overdub-or-caption="overdub"/>
    <audio src="movie-aud-de.rm" system-language="de"
                system-overdub-or-caption="overdub"/>
    <audio src="movie-aud-nl.rm" system-language="nl"
                system-overdub-or-caption="overdub"/>
     <!-- French for everyone else -->
     <audio src="movie-aud-fr.rm"/>
   </switch>
   <video src="movie-vid.rm"/>
   <switch>
     <textstream src="movie-caps-en.rtx" system-language="en"
                 system-overdub-or-caption="caption"/>
     <textstream src="movie-caps-de.rtx" system-language="de"
                system-overdub-or-caption="caption"/>
     <textstream src="movie-caps-nl.rtx" system-language="nl"
                 system-overdub-or-caption="caption"/>
     <!-- French captions for those that really want them -->
     <textstream src="movie-caps-fr.rtx" system-captions="on"/>
   </switch>
</par>
...

4.5 ハイパリンク要素

リンク要素は,オブジェクト間のナビゲーションリンクの記述を可能とする。

SMILは,行内リンク要素だけを提供する。 リンクは,単方向で単頭のリンクに制限される。つまり,すべてのリンクは唯一つの リンク元及びリンク先の資源をもつ。 ユーザは,SMILの中のすべてのリンクをたどることができる。

a) 埋込み文書中のリンクの取扱い

統合的性質によって,SMIL文書のプレゼンテーションは他の (非SMIL)アプリケーション又はプラグインを含んでもよい。 例えば,SMILブラウザは,埋込まれたHTMLページを表示するために HTMLプラグインを使用してもよい。 逆に,HTMLブラウザは,HTMLページに埋め込まれたSMIL文書を表示するために SMILプラグインを使用してもよい。

これらのプレゼンテーションでは,リンクは異なるレベルの文書によって 定義されるので,矛盾が発生することもある。 この場合,含む文書によって定義されたリンクは,埋込みオブジェトによって 定義されたリンクより優先するのが望ましい。 これはブラウザとプラグインとの通信を要求するので, この規定に従わないことをSMILの実装が選択してもよい ことに注意する。

埋込まれたSMIL文書内にリンクが定義されている場合, リンクのたどりは,埋込まれたSMIL文書だけに影響する。

SMIL文書に埋め込まれている非SMIL文書内にリンクが定義されている場合, リンクのたどりは,埋込み文書のプレゼンテーションに影響するだけであって, SMIL文書に含まれるプレゼンテーションには影響しない。 この制限は,SMILの将来の版で緩和されるかもしれない。

b) アドレス付け

SMILは,名前素片識別子及び'#'結合子をサポートする。 これは,SMILがHTMLで現在使用しているロケータをサポートすることを意味する。 例えば,HTMLは"http://foo.com/some/path#anchor1"の形式のロケータを使用する。

c) SMIL文書の素片へのリンク

SMIL文書を指すロケータは,文書の素片部分を含んでもよい。 例えば,http://www.w3.org/test.smi#par1など。 素片部分は,参照されるSMIL文書中の要素の一つを識別するid値とする。 素片部分を含むリンクがたどられた場合, リンク先文書によって表現されるプレゼンテーションを, その素片によって指定された要素の実効的開始点へ, ユーザが早送りしたものとして,プレゼンテーションを開始するのがよい。

次の特別な場合が発生する。

4.5.1 a要素

"a"要素の機能は,HTML 4.0[HTML40]における "a"要素の機能とほとんど同じとするが,SMILでは,リンクがたどられる場合に, リンク元の時間的な振る舞いを制御する属性"show"を追加する。 同期の目的に対しては,"a"要素は透過的とする。すなわち, その子要素の同期に影響しない。"a"要素は,入れ子にしてはならない。 "a"要素は,href属性をもたなければならない。

a) 属性

"a"要素は,次の属性をもつことができる。

id
2.に定義する。
href
この属性は,リンク先のURIを含む。
"a"要素に対して,"href"が要求される。
show
この属性は,リンクがたどられる場合に, そのリンクを含むリンク元の文書の振る舞いを制御する。 次の値の一つをもつことができる。

"show"のデフォルト値は,"replace"とする。

title
3.3.1に定義する。
すべての"a"要素は,意味のある記述を伴う"title"属性をもつことを強く推奨する。 編集ツールは,この属性をもたない要素がSMIL文書に導入できないことを保証するのが望ましい。

b) 要素内容

"a"要素は,次の子どもを含むことができる。

animation
4.2.3に定義する。
audio
4.2.3に定義する。
img
4.2.3に定義する。
par
4.2.1に定義する。
ref
4.2.3に定義する。
seq
4.2.2に定義する。
switch
4.3に定義する。
text
4.2.3に定義する。
textstream
4.2.3に定義する。
video
4.2.3に定義する。

例1.

次のリンクは,プレー中のプレゼンテーションを置き換え,新しいプレゼンテーションを始める。

<a href="http://www.cwi.nl/somewhereelse.smi">
     <video src="rtsp://foo.com/graph.imf" region="l_window"/>
</a>

この例において,2行目は,SMILプレゼンテーションの任意の妥当な部分木への参照で 置き換えることができる。

例2.

次のリンクは,プレー中のプレゼンテーションに加えて,新しいプレゼンテーションを始める。

<a href="http://www.cwi.nl/somewhereelse.smi" show="new">
     <video src="rtsp://foo.com/graph.imf" region="l_window"/>
</a>

例えば,これによって,SMILプレーヤが,HTMLブラウザを起動することが可能となる。

例3.

次のリンクは,新しいプレゼンテーションを始め,プレー中のプレゼンテーションを一時停止する。

<a href="http://www.cwi.nl/somewhereelse.smi" show="pause">
     <video src="rtsp://foo.com/graph.imf" region="l_window"/>
</a>

例4.

次の例は,プレゼンテーションA内の要素から他のプレゼンテーションBの中へのリンクを含む。 これによって,プレゼンテーションBは,識別子"next"をもつ実効的開始点から始まる。

プレゼンテーション A:

     <a href="http://www.cwi.nl/presentationB#next">
       <video src="rtsp://foo.com/graph.imf"/>
     </a>

プレゼンテーション B (http://www.cwi.nl/presentation):

      ...
      <seq>
        <video src="rtsp://foo.com/graph.imf"/>
        <par>
          <video src="rtsp://foo.com/timbl.rm" region="l_window"/>
          <video id="next" src="rtsp://foo.com/v1.rm" region="r_window"/>
                    ^^^^^^^^^
          <text src="rtsp://foo.com/caption1.html" region="l_2_title"/>
          <text src="rtsp://foo.com/caption2.rtx" region="r_2_title"/>
        </par>
      </seq>
      ...

4.5.2 anchor要素

"a"要素の機能は,リンクを完全なメディアオブジェクトと関連付けることだけを可能とするという点で,制限されている。 HTML画像マップは,リンクをオブジェクトの空間的な小部分と関連付けることが役に立つことを示している。 anchor要素は,SMILに対して同様の機能を実現する。

a) 属性

anchor要素は,次の属性をもつことができる。

begin
4.2.1に定義する。
coords
この属性の値は,視覚的メディアオブジェクトの表示領域内の長方形を指定する。 この属性の構文及びセマンティクスは,リンクが長方形の形と関連付けられている場合には, HTML画像マップにおけるcoords属性に類似する。長方形は,四つの長さの値で指定する。 最初の二つの値は,長方形の上左隅の座標を指定する。2番目の二つの値は, 長方形の下右隅の座標を指定する。座標は,視覚的メディアオブジェクトの上左隅に相対的とする (図4.5参照)。 座標がパーセント値で指定される場合は, メディアオブジェクト表示領域の全体の幅及び高さに相対的とする。
誤まったcoords値をもつ属性は,無視する。例えば,left-xより小さい又は等しいright-x, top-yより小さい又は等しいbottom-yなどは無視する。coords属性が定義する長方形が, メディアオブジェクトが覆う領域を超える場合には,超過した高さ及び幅は, メディアオブジェクトの境界で切り抜く。
coords属性の値は,次の構文をもつ。
coords-value ::= left-x "," top-y "," right-x "," bottom-y


semantics of coords attribute
図4.5 "coords"属性のセマンティクス
end
4.2.1に定義する。
href
4.5.1に定義する。
id
2.に定義する。
show
4.5.1に定義する。
skip-content
3.3.1に定義する。
title
3.3.1に定義する。
すべてのanchor要素は,意味のある記述を伴う"tittle"属性をもつことを強く推奨する。 編集ツールは,この属性をもたない要素を,SMIL文書に導入できないと保証するのが望ましい。

例1. リンクと空間的な小部分との関連付け

次の例では,ビデオクリップが占めるスクリーン空間を二つの部分空間に分離する。 異なるリンクをこれらの部分空間のそれぞれと関連付ける。

<video src="http://www.w3.org/CoolStuff">
  <anchor href="http://www.w3.org/AudioVideo" coords="0%,0%,50%,50%"/>
  <anchor href="http://www.w3.org/Style"      coords="50%,50%,100%,100%"/>
</video>

例2. リンクと時間的な小部分との関連付け

次の例では,ビデオクリップの継続期間を二つの部分間隔に分離する。 異なるリンクをこれらの部分間隔のそれぞれと関連付ける。

<video src="http://www.w3.org/CoolStuff">
  <anchor href="http://www.w3.org/AudioVideo" begin="0s" end="5s"/>
  <anchor href="http://www.w3.org/Style"      begin="5s" end="10s"/>
</video>

例3. オブジェクトの小部分へのジャンプ

次の例は,プレゼンテーションAにおける要素から他のプレゼンテーションBに含まれるビデオオブジェクトの中へのリンクを含む。 これによって,ビデオの5秒目からプレゼンテーションBが始まる。 すなわち,"CoolStuff"ビデオにおいて指定した素片が開始する点まで, ユーザがプレゼンテーション全体を早送りしたものとして,プレゼンテーションは始まる。

プレゼンテーション A:

<a href="http://www.cwi.nl/mm/presentationB#tim">
   <video id="graph" src="rtsp://foo.com/graph.imf" region="l_window"/>
</a>

プレゼンテーション B:

<video src="http://www.w3.org/CoolStuff">
  <anchor id="joe" begin="0s" end="5s"/>
  <anchor id="tim" begin="5s" end="10s"/>
</video>

例4. リンクの異なる使用の結合

次の例は,関連するリンクの異なる使用を結合する方法を示す。

プレゼンテーション A:

<a href="http://www.cwi.nl/mm/presentationB#tim">
  <video id="graph" src="rtsp://foo.com/graph.imf" region="l_window"/>
</a>

プレゼンテーション B:

<video src="http://www.w3.org/CoolStuff">
  <anchor id="joe" begin="0s" end="5s" coords="0%,0%,50%,50%"
          href="http://www.w3.org/"/>
  <anchor id="tim" begin="5s" end="10s" coords="0%,0%,50%,50%"
          href="http://www.w3.org/Tim"/>
</video>

5. SMIL DTD

5.1 XMLとの関係

SMIL 1.0文書は,文書型宣言を含んでも含まなくてもよい。 ここで,文書型宣言は,これを含む文書に対して使用する文書型定義(Document Type Definition又はDTD) を命名する。SMILに対しては,文書型宣言は次のとおりとすることが望ましい。ただし, 二重引用符は,一重引用符で置き換えることができる。

<!DOCTYPE smil PUBLIC "-//W3C//DTD SMIL 1.0//EN"
               "http://www.w3.org/TR/REC-smil/SMIL10.dtd">

XML 1.0規定は,例えば,実体宣言の新しい集合を追加するために, <!DOCTYPE>要素を使用してDTDを拡張する方法を提供する。 多くのSMILプレーヤは,これをサポートしないと思われるので. SMIL文書の編集者は,この機能を使用してはならない。

次は,SMILでは文法に反する。

<!DOCTYPE smil PUBLIC "-//W3C//DTD SMIL 1.0//EN"
               "http://www.w3.org/TR/REC-smil/SMIL10.dtd" [
<!ENTITY % AcmeCorpSymbols PUBLIC
     "-//Acme Corp//ENTITIES Corporate Symbols//EN"
     "http://www.acme.com/corp_symbols.xml"
>
%AcmeCorpSymbols;
]>

5.2 DTD

<!--
    これは,SMIL 1.0に対するXML文書型定義(Document Type Definition 又は DTD)とする。

    日付: 1998/06/15 08:56:30
    編集者:
        Jacco van Ossenbruggen <jrvosse@cwi.nl>
        Sjoerd Mullender       <sjoerd@cwi.nl>

    SMILについての詳細な情報は次から入手可能である。

          http://www.w3.org/AudioVideo/

-->

<!-- 一般的に役に立つ実体 -->
<!ENTITY % id-attr "id ID #IMPLIED">
<!ENTITY % title-attr "title CDATA #IMPLIED">
<!ENTITY % skip-attr "skip-content (true|false) 'true'">
<!ENTITY % desc-attr "
        %title-attr;
        abstract        CDATA   #IMPLIED
        author          CDATA   #IMPLIED
        copyright       CDATA   #IMPLIED
">

<!--=================== SMIL文書 =====================================-->
<!--
     ルート要素SMILは,すべての他の要素を含む。
-->
<!ELEMENT smil (head?,body?)>
<!ATTLIST smil
        %id-attr;
>

<!--=================== 文書ヘッダ =================================-->
<!ENTITY % layout-section "layout|switch">
<!ENTITY % head-element "(meta*,((%layout-section;), meta*))?">
<!ELEMENT head %head-element;>
<!ATTLIST head %id-attr;>

<!--=================== layout要素 ====================================-->
<!--
     layoutは,smil-basic-layoutで定義されるregion要素及びroot-layout要素,又は
     外部レイアウト機構で定義されるその他の要素を含む。

-->
<!ELEMENT layout ANY>
<!ATTLIST layout
        %id-attr;
        type CDATA      "text/smil-basic-layout"
>

<!--=================== Region要素 ===================================-->
<!ENTITY % viewport-attrs "
        height              CDATA    #IMPLIED
        width               CDATA    #IMPLIED
        background-color    CDATA    #IMPLIED
">

<!ELEMENT region EMPTY>
<!ATTLIST region
        %id-attr;
        %title-attr;
        %viewport-attrs;
        left                CDATA    "0"
        top                 CDATA    "0"
        z-index             CDATA    "0"
        fit                 (hidden|fill|meet|scroll|slice)    "hidden"
        %skip-attr;
>

<!--=================== Root-layout要素 ================================-->
<!ELEMENT root-layout EMPTY>
<!ATTLIST root-layout
        %id-attr;
        %title-attr;
        %viewport-attrs;
        %skip-attr;
>

<!--=================== Meta要素 =======================================-->
<!ELEMENT meta EMPTY>
<!ATTLIST meta
        name    NMTOKEN #REQUIRED
        content CDATA   #REQUIRED
        %skip-attr;
>

<!--=================== 文書本体 =================================-->
<!ENTITY % media-object "audio|video|text|img|animation|textstream|ref">
<!ENTITY % schedule "par|seq|(%media-object;)">
<!ENTITY % inline-link "a">
<!ENTITY % assoc-link "anchor">
<!ENTITY % link "%inline-link;">
<!ENTITY % container-content "(%schedule;)|switch|(%link;)">
<!ENTITY % body-content "(%container-content;)">
<!ELEMENT body (%body-content;)*>
<!ATTLIST body %id-attr;>

<!--=================== 同期属性 ========================-->
<!ENTITY % sync-attributes "
        begin   CDATA   #IMPLIED
        end     CDATA   #IMPLIED
">

<!--=================== Switch パラメタ属性 =======================-->
<!ENTITY % system-attribute "
        system-bitrate             CDATA                #IMPLIED
        system-language            CDATA                #IMPLIED
        system-required            NMTOKEN              #IMPLIED
        system-screen-size         CDATA                #IMPLIED
        system-screen-depth        CDATA                #IMPLIED
        system-captions            (on|off)             #IMPLIED
        system-overdub-or-caption  (caption|overdub)    #IMPLIED
">

<!--=================== Fill属性 ====================================-->
<!ENTITY % fill-attribute "
        fill    (remove|freeze)    'remove'
">


<!--=================== Parallel要素 ==============================-->
<!ENTITY % par-content "%container-content;">
<!ELEMENT par    (%par-content;)*>
<!ATTLIST par
        %id-attr;
        %desc-attr;
        endsync CDATA           "last"
        dur     CDATA           #IMPLIED
        repeat  CDATA           "1"
        region  IDREF           #IMPLIED
        %sync-attributes;
        %system-attribute;
>

<!--=================== Sequential要素 ============================-->
<!ENTITY % seq-content "%container-content;">
<!ELEMENT seq    (%seq-content;)*>
<!ATTLIST seq
        %id-attr;
        %desc-attr;
        dur     CDATA           #IMPLIED
        repeat  CDATA           "1"
        region  IDREF           #IMPLIED
        %sync-attributes;
        %system-attribute;
>

<!--=================== Switch要素 ================================-->
<!--
     ヘッダ部分では,switchは,layout要素だけを含めばよく,本体部分では,
     container要素だけを含めばよい。しかし,この制約は,DTD(?)では
     表現できない。それで,両方とも可能とする。
-->
<!ENTITY % switch-content "layout|(%container-content;)">
<!ELEMENT switch (%switch-content;)*>
<!ATTLIST switch
        %id-attr;
        %title-attr;
>

<!--=================== メディアオブジェクト要素 =============================-->
<!--
     SMILは,構造だけを定義する。実際のメディアデータは,メディアオブジェクト
     のsrc属性で参照する。
-->

<!--
     さらに,メディアオブジェクトは,SMIL規定で定義されるとおりに次の属性を
     もつ。
-->
<!ENTITY % mo-attributes "
        %id-attr;
        %desc-attr;
        region     IDREF           #IMPLIED
        alt        CDATA           #IMPLIED
        longdesc   CDATA           #IMPLIED
        src        CDATA           #IMPLIED
        type       CDATA           #IMPLIED
        dur        CDATA           #IMPLIED
        repeat     CDATA           '1'
        %fill-attribute;
        %sync-attributes;
        %system-attribute;
">

<!--
     大部分の情報は,属性内に存在する。メディアオブジェクトは,空であるか,又は
     関連するlink要素を含む。
-->
<!ENTITY % mo-content "(%assoc-link;)*">
<!ENTITY % clip-attrs "
        clip-begin      CDATA   #IMPLIED
        clip-end        CDATA   #IMPLIED
">

<!ELEMENT ref           %mo-content;>
<!ELEMENT audio         %mo-content;>
<!ELEMENT img           %mo-content;>
<!ELEMENT video         %mo-content;>
<!ELEMENT text          %mo-content;>
<!ELEMENT textstream    %mo-content;>
<!ELEMENT animation     %mo-content;>

<!ATTLIST ref           %mo-attributes; %clip-attrs;>
<!ATTLIST audio         %mo-attributes; %clip-attrs;>
<!ATTLIST video         %mo-attributes; %clip-attrs;>
<!ATTLIST animation     %mo-attributes; %clip-attrs;>
<!ATTLIST textstream    %mo-attributes; %clip-attrs;>
<!ATTLIST text          %mo-attributes;>
<!ATTLIST img           %mo-attributes;>

<!--=================== リンク要素 =====================================-->
<!ENTITY % smil-link-attributes "
        %id-attr;
        %title-attr;
        href            CDATA                   #REQUIRED
        show            (replace|new|pause)     'replace'
">

<!--=================== 行内リンク要素 ===============================-->
<!ELEMENT a (%schedule;|switch)*>
<!ATTLIST a
        %smil-link-attributes;
>

<!--=================== 関連付けリンク要素 ===========================-->
<!ELEMENT anchor EMPTY>
<!ATTLIST anchor
        %skip-attr;
        %smil-link-attributes;
        %sync-attributes;
        coords          CDATA                   #IMPLIED
>