この標準情報(TR)は,1998年6月にWorld Wide Web Consortium(W3C)から公表された Synchronized Multimedia Integration Language,SMIL 1.0勧告を翻訳し, 技術的内容を変更することなく作成した標準情報(TR)である。
この文書は,同期化マルチメディア統合言語(Synchronized Multimedia Integration Language,SMIL,“スマイル”と発音する。)の版1.0を規定する。 SMILは,独立なマルチメディアオブジェクトの集合を, 同期化したマルチメディアプレゼンテーションに統合することを可能にする。 SMILを使うことで,編集者は次のことが可能となる。
この規定の構成は,次のとおりとする。 1.では,この規定の方針を示す。2.では,"smil"要素を定義する。 3.では,SMIL文書のヘッド部に含むことができる要素を定義する。 4.では,SMIL文書の本体部に含むことができる要素を定義する。 特に,4.では,SMILで使用する時間モデルを定義する。 5.では,SMIL DTDを示す。
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記法を使用して定義できない場合, 属性値の定義が要素属性の定義の後に続く。 要素定義の最後に,要素の内容を規定する。
a) 要素属性
"smil"要素は,次の属性をもつことができる。
b) 要素内容
"smil"要素は,次の子どもを含むことができる。
head要素
"head"要素は,表示の時間的な振る舞いに関連しない情報を含む。
a) 要素属性
"head"要素は,次の属性をもつことができる。
b) 要素内容
"head"要素は,次の子どもを含むことができる。
"head"要素は,"meta"要素を幾つでも含むことができ,"layout"要素又は"switch"要素のどちらか一つを含むことができる。
"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) 要素属性
b) 要素内容
layout要素のtype属性が値"text/smil-basic-layout"をもつ場合,それは次の要素を含むことができる。
"layout"要素のtype属性が別の値をもつ場合,その要素は文字データを含む。
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>
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"要素は,次の属性をもつことができる。
"fit"のデフォルト値は,"hidden"とする。
"skip-content"属性の値が"true"であって,
これらの場合の一つが適用される場合,要素の内容は無視される。
その値が"false"であれば,要素の内容は処理される。
"skip-content"のデフォルト値は,"true"とする。
b) 要素内容
"region"は,空要素とする。
root-layout要素
"root-layout"要素は,ルート要素のレイアウト特性の値を決定する。 ルート要素は,ビューポート, つまりSMILプレゼンテーションがレンダリングされるウィンドウ, のサイズを決定する。
文書が複数の"root-layout"要素をもつ場合は,エラーとし,文書は表示されない。
a) 要素属性
"root-layout"要素は,次の属性をもつことができる。
b) 要素内容
"root-layout"は,空要素とする。
"meta"要素は,文書の特性(つまり,編集者,有効期日,キーワードのリストなど) を定義し,値をそれらの特性に割り当てるために利用できる。 各"meta"要素は,単一の特性及び値の対を指定する。
a) 要素属性
"meta"要素は,次の属性をもつことができる。
特性のリストは,拡張可能とする。この規定は,次の特性を定義する。
b) 要素内容
"meta"は,空要素とする。
body要素
"body"要素は,文書の時間及びリンクの振る舞いに関連する情報を含む。 それは"seq"要素を暗黙的に定義する。 "seq"要素は,4.2.2に定義する。"body"要素の時間的セマンティクスの定義は,4.2.4を参照。
a) 要素属性
"body"要素は,次の属性をもつことができる。
b) 要素内容
"body"要素は,次の子どもを含むことができる。
要素の子どもは,時間的にオーバラップすることができる。 子どもが文書上で出現する順番は, それらのプレゼンテーションのタイミングに関して意味をもたない。
a) 要素属性
"par"要素は,次の属性をもつことができる。
その結果の集合Sを,"in scope"要素の集合とする。
<par> <audio id="a" begin="6s" src="audio" /> </par>
<seq> <audio src="audio1" /> <audio begin="5s" src="audio2" /> </seq>
<par> <audio id="a" begin="6s" ... /> <img begin="id(a)(4s)" ... /> </par>
id-ref ::= "id(" id-value ")""endsync"のデフォルト値は,"last"とする。
b) 子ども間の同期について
並行グループの子ども間の同期の正確さは,実装依存とする。
再生遅延,すなわち,
オーディオ,ビデオなどの二つ以上の連続メディア型を"par"要素が含み,
それらの一つが遅れた場合の振る舞いを,
同期の例として考える。
プレーヤは,次に示す同期の振る舞いを行うことができる。
a)厳密な同期 ビデオの遅延の例。オーディオを止めるか,又は 幾つかのビデオフレームを抜かす。正確な振る舞いは,実装依存とする。
b)厳密でない同期
c) 属性値
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 ::= "id(" Event-source ")(" Event ")"
Event-source ::= Id-value
Event ::= "begin" | Clock-val | "end"
使用例: begin="id(x)(begin)"
使用例: begin="id(x)(45s)"
使用例: begin="id(x)(end)"
d) 要素内容
"par"要素は,次の子どもを含むことができる。
これらのすべての要素は,"par"要素の直接の子どもとして複数回現れてもよい。
"seq"要素の子どもは,時系列を形成する。
a) 属性
"seq"要素は,次の属性をもつことができる。
b) 要素内容
"seq"要素は,次の子どもを含むことができる。
animation,audio,img,video,text及び
textstream要素
メディアオブジェクト要素は,メディアオブジェクトをSMILプレゼンテーションへ含めることを可能にする。 メディアオブジェクトは,(URIを使用する)参照によって含められる。
メディアオブジェクトには二つの種類がある。 一つは,本来の継続時間をもつメディアオブジェクト (例えば,ビデオ及びオーディオで"連続メディア"とも呼ばれる。)とし, もう一つは,本来の継続時間をもたないメディアオブジェクト (例えば,テキスト及び画像で,"不連続メディア"とも呼ばれる。)とする。
視覚的メディアオブジェクト,すなわち, 視覚的抽象レンダリング面にレンダリングが行われるメディアオブジェクトに, アンカー及びリンクを張り付けることができる。
メディアオブジェクトをプレーするとき,プレーヤは, メディアオブジェクト要素の名前からメディアオブジェクトの正確な型を導出してはならない。 代わりに,プレーヤは,"type"属性に含まれる型情報, 又はサーバ若しくはオペレーティングシステムによって通信される型情報などの 型についての他の情報源だけに依存しなければならない。
しかし,編集者は,メディアオブジェクトが属するグループ (animation,audio,img,video,text又はtextstream) が要素の名前に反映されていることを確認することが望ましい。 これによって,SMIL文書の可読性を向上させる。 メディアオブジェクトがどのグループに属するか疑問がある場合は, 編集者は,一般的な"ref"要素を使用するのがよい。
a) 要素属性
メディアオブジェクト要素は,次の属性をもつことができる。
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
この属性の値は,メトリク指定子及びそれに続く時間値から構成される。 時間値の構文及びセマンティクスは,メトリク指定子に依存する。 次の形式を許す。
時間値は,時:分:秒:フレーム:サブフレームの形式をもつ。
フレームの値が0の場合,それを省略できる。
サブフレームは,フレームの100分の1の単位で測定される。
例:
clip-begin="smpte=10:12:33:20"
clip-begin="npt=123.45s"
clip-begin="npt=12:05:35.3"
b) 要素内容
メディアオブジェクト要素は,次の要素を含むことができる。
これ以降は,用語"要素"は同期要素だけを意味する。
各要素に対して,暗黙的,明示的, 希望的及び実効的のそれぞれの開始点・継続時間・終了点を定義する。
実効的な開始点・継続時間・終了点は,文書を読む側が認識するものとする。
暗黙的,明示的及び希望的な値は, 実効的値を定義するために使用する補助値とする。 SMIL 1.0で定義された要素に対するこれらの値を計算するための規則を 4.2.4.2に示す。
begin = "明示的開始点の値"
明示的開始点が要素の暗黙的開始点より前に始まる場合はエラーとする。
end = "明示的終了点の値"
dur = "明示的継続時間の値"
4.2.4.1の規則によって規定されない場合, SMIL 1.0の同期要素に対して時間モデルの値がどのように計算されるかを次に示す。
次の記述のうちで,要素と一致する最初の記述を使用する。
d) 要素の希望的開始点の決定
要素の希望的開始点は,4.2.4.1 の規則7を使用することによって決定される。
要素の実効的開始点は, 親要素の実効的終了点がその時間より前でない限り,要素の希望的開始点と等しい。 ただし,要素の実効的開始点が親要素の実効的終了点より前の場合, その要素は全く示されない。
switch要素は,編集者が選択候補の集合を指定することを可能にする。 その集合からただ一つの受理可能な要素を選ぶことができる。 要素が受理可能であるとは,要素がSMIL 1.0要素であって,メディア型が復号でき, 要素のテスト用属性(4.4参照) がすべて"true"と評価される場合とする。
要素は,次のとおりに選択される。 プレーヤは,switch要素の中で出現する順に要素を評価する。 switch要素内のすべての他の要素が除外された時点で, 最初に受理可能な要素が選択される。
したがって,編集者は最も望ましいものから最も望ましくないものへと, 選択候補を順に並べることが望ましい。 さらに,編集者は,相対的にフェールセーフな選択候補を <switch>中の最後の項目として置くのがよい。 その結果,switch内の少なくとも一つの項目が (これが明示的に望まれない限り)選択される。 すべてのテスト用属性が失敗した場合, <switch>内のオブジェクトを任意に選択する実装はしない方がよい。
http URIは内容の折衝を提供することに注意する。 それは,ある意味で"switch"要素を使用することの代替手段となる。
a) 属性
switch要素は,次の属性をもつ。
b) 要素内容
"switch"要素が"body"要素の直接又は間接の子として使用される場合, 次の子どもを含むことができる。
これらのすべての要素は,"switch"要素の子どもとして複数回出現してもよい。
"switch"要素が"head"要素内に使用される場合,次の子を含むことができる。
この規定は,任意の同期要素に加えることができ, システムの可能性及び設定をテストする,テスト用属性のリストを定義する。 概念的には,これらの属性は論理テストを表現する。 要素に指定されたテスト用属性のうちの一つが"false"と評価された場合, この属性をもつ要素は無視される。
次のリストには,"ユーザ設定"の概念が現れる。 一般に,ユーザ設定は,設定ダイアログボックスを使用して, 再生エンジンによって設定される。 しかし,この規定は,これらの設定をユーザからSMILプレーヤへどのように伝えるかまでの制限を加えない。
SMIL 1.0では,次のテスト用属性を定義する。
ユーザ設定によって指定された言語の一つが, このパラメタ値として与えられた言語の一つと等しい場合,"true"と評価する。 ユーザ設定によって指定された言語の一つが, パラメタ値として与えられた言語の接頭辞と完全に等しい場合, "true"と評価する。 ただし,パラメタの形式は,接頭辞に続く最初のタグ文字を"-"とする。
それ以外の場合は,"false"と評価する。
備考 接頭辞一致化規則をこのとおりに利用することは, ユーザが,ある言語タグで指定された一つの言語を理解した場合に, このタグを接頭辞とするタグで指定可能なすべての言語も理解するものとして, 言語タグを言語に割り当てることを意味しない。
接頭辞規則は,その場合,単に接頭辞タグの使用を許可するだけとする。
備考 ユーザに言語設定の選択を許す場合, ユーザが上述の言語一致化の詳細について精通していないことを考慮して, 実装者は適切なガイダンスを提供することが望ましい。 例えば,ユーザが"en-gb"を選択した場合,イギリス英語が利用可能でなければ, ユーザは,何らかの種類の英語の文書が提供されると仮定してもよaB ユーザ設定を行うためのユーザインタフェースは, 最適な一致結果を得るために"en"を加えるというガイダンスを, ユーザに与えることが望ましい。
多くの言語の聴衆のために,複数の言語を挙げるのがよい。 例えば,"ワイタンギ条約"のレンダリングとして, オリジナルのマオリ語及び英語の両方で同時にプレゼンテーションを行う場合, 次を必要とする。
<audio src="foo.rm" system-language="mi, en"/>
しかし,system-languageテスト用属性が置かれたオブジェクト内で, 多言語が与えられているからという理由だけで, それが多言語の聴衆を意図したものということを意味しない。 例えば,"ラテン語入門"などの初心者向け言語入門書がある。 これは,英語を読み書きできる聴衆が使用することを明らかに意図している。 この場合,system-languageテスト用属性は"en"だけを含む方がよい。
備考 いくつかの代替言語オブジェクトが "switch"において取り囲まれ,それらのどれも一致しない場合は, オーディオトラックなしでビデオが表示されるなどの状況となることを, 編集者は認識した方がよい。 そこで,すべての場合において受理可能な"catch-all"選択肢を, switchの終わりに含めることを推奨する。
screen-size-val::=スクリーン高"X"スクリーン幅例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>
...
リンク要素は,オブジェクト間のナビゲーションリンクの記述を可能とする。
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値とする。 素片部分を含むリンクがたどられた場合, リンク先文書によって表現されるプレゼンテーションを, その素片によって指定された要素の実効的開始点へ, ユーザが早送りしたものとして,プレゼンテーションを開始するのがよい。
次の特別な場合が発生する。
"a"要素の機能は,HTML 4.0[HTML40]における "a"要素の機能とほとんど同じとするが,SMILでは,リンクがたどられる場合に, リンク元の時間的な振る舞いを制御する属性"show"を追加する。 同期の目的に対しては,"a"要素は透過的とする。すなわち, その子要素の同期に影響しない。"a"要素は,入れ子にしてはならない。 "a"要素は,href属性をもたなければならない。
a) 属性
"a"要素は,次の属性をもつことができる。
"show"のデフォルト値は,"replace"とする。
b) 要素内容
"a"要素は,次の子どもを含むことができる。
例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>
...
anchor要素
"a"要素の機能は,リンクを完全なメディアオブジェクトと関連付けることだけを可能とするという点で,制限されている。 HTML画像マップは,リンクをオブジェクトの空間的な小部分と関連付けることが役に立つことを示している。 anchor要素は,SMILに対して同様の機能を実現する。
a) 属性
anchor要素は,次の属性をもつことができる。
coords-value ::= left-x "," top-y "," right-x "," bottom-y
例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>
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;
]>
<!--
これは,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
>