4. SMIL 2.0内容制御モジュール

4.1 導入

4.では,SMIL 2.0内容制御モジュールを定義する。これらのモジュールは,実行時内容選択及び最適化された内容配布を提供する要素及び属性を含む。SMIL内容制御の機能は,次の四つのモジュールにわたって分割される。

すべての内容制御の要素及び属性がモジュールの中で定義されるので,他のマーク付け言語の設計者は,言語の中にメディア内容制御を含める必要がある場合には,モジュールごとにこの機能を再使用できる。

CustomTestAttributesモジュールにおける機能は,BasicContentControlモジュールの機能の上に構築される。そこで,CustomTestAttributesモジュールを実装するプロファイルは,BasicContentControlモジュールも実装しなければならない。PrefetchControlモジュール及びSkipContentControlモジュールは,(その使用に関して)前提条件をもたない。

内容制御のためのモジュール記述の中には,"利用者の好み"の概念が存在してよいものもある。利用者の好みは,通常は,好みを指定するダイアログボックスを使用して再生エンジンによって設定されるが,この規定は,それら好みが利用者からSMILプレーヤまでどのように伝えられるかについて制限しない。

内容制御属性が評価される時点は,実装依存とする。属性は,複数回評価されてもよい。動的な再評価は,許されるが,必須ではない。

4.2 SMIL 2.0 BasicContentControlモジュール

4.2.1 SMIL 2.0 BasicContentControlモジュールの概要

SMIL 1.0は,ある条件がtrue(真)の場合に限り要素を処理するために,"試験属性"機構を提供する。この条件とは,例えば,利用者によって指定された言語の好みがメディアオブジェクトのそれと一致する場合などである。一つ以上のテスト属性が,メディアオブジェクト参照又はタイミング構造要素に現われてもよい。ある属性がtrueと評価される場合,(その属性を)含む要素は再生され,属性がfalseと評価される場合,含む要素は無視される。SMIL 1.0は,文書の部分の集合がが代替可能なものの集まりであって,ある条件を満たす最初のものが選ばれることが望ましいということを表現するために,switch要素も提供する。これは,音声ファイルの異なる言語の版が利用可能であって,クライアントがそれらのうちの一つを選択してもよいことを表現するために有用となる。

SMIL 2.0 BasicContentモジュールは,SMIL 1.0からの試験属性機能を含み,新しいシステム試験属性をサポートすることによってそれを拡張する。4.は,定義済みシステム試験属性,switch要素及び試験属性行内配置の使用を記述する。試験属性を拡張するための機構は,CustomTestAttributesモジュールの中で提示される。

定義済みシステム試験属性

この規定は,言語設計者によって許可されるとおりに,言語要素に追加できる試験属性のリストを定義する。SMIL 1.0では,これらの要素は,同期要素及びメディア要素とする。概念的には,これらの属性は,論理値試験を表現する。一つの要素のために指定される試験属性のいずれもがfalseと評価される場合,この属性をもつ要素は無視される。

SMIL 2.0は,SMIL 1.0システム属性の完全な集合をサポートする。SMIL 1.0と互換性のあるシステム試験属性は,次による。

system-overdub-or-captionを除いて,これらの属性の名前は,SMIL 2.0のcamelCase規約(1)を反映するために変更されたことに注意すること。SMIL 1.0のハイフン付けされた名前は,この規定のこの版では非推奨とする。

注1  複数の単語を連結して新たな一つの語を表現する場合に,連結した語の最初の元になる各単語以外の最初のアルファベットを大文字とし,それ以外のアルファベットはすべて小文字とする規約のことをいっている。例えば,"camelCase"は,"camel"+"case"だが,これらを連結する場合に,2番目の元になる単語の"case"の最初のアルファベットである"c"を大文字とし,それ以外は小文字になっている。同様に"systemScreenDepth"では,"system"+"screen"+"depth"だが,2番目及び3番目の元になる単語の最初のアルファベットである"s"及び"d"が大文字となっており,それ以外は小文字となっている。

SMIL 2.0で新しいものは,システム環境の追加的特質を定義するシステム試験属性とする。これらは,次による。

各属性の完全な定義は,属性定義で与えられる。

switch要素

switch要素は,制作者に,受理可能な要素の最初だけが選択される代替要素の集合を指定することを可能にする。

switchの使用例は,次による。

  ...
  <par>
    <video src="anchor.mpg" ... />
    <switch>
      <audio src="dutchHQ.aiff" systemBitrate="56000" ... />
      <audio src="dutchMQ.aiff" systemBitrate="28800" ... />
      <audio src="dutchLQ.aiff" ... />
    </switch>
  </par> 
  ...

この例では,一つの音声オブジェクトが,ビデオオブジェクトに伴って選択される。システムビット率が56000以上の場合,オブジェクトdutchHQ.aiffが選択される。システムビット率が少なくとも28800であって56000未満の場合,オブジェクトdutchMQ.aiffが選択される。他のオブジェクトが選択されない場合には,代替のdutchLQ.aiffが選択される。これは,それが試験属性をもたず(したがって,常に受理可能になる。),他の試験属性がtrueと評価されなかったことによる。

制作者は,最も望ましいものから最も望ましくないものへと,代替選択肢を並べることが望ましい。さらに,制作者は,switchの中の最後の項目として相対的に安全装置といえる選択肢を置きたいと思ってもよい。こうすることで,switch内の少なくとも一つの項目が(それが明示的に望まれないのでない限りは)選択される。

幾つかのネットワークプロトコル,例えば,HTTP,RTSPなど,は,内容折衝をサポートすることに注意すること。これは,ある場合には,switch要素の使用の代替となるかもしれない。

システム試験属性値の設定を決定するのは,SMIL 2.0プレーヤの責任とする。それら設定は,構成設定に基づいて静的に決定されてもよいし,動的に決定(又は再評価)されてもよい。これは,プレーヤの実装に依存する。プレーヤは,無作為にswitchのメンバを選択してはならない。

システム試験属性の行内での使用

要素選択におけるより多くの柔軟性を可能とするために,試験属性を,switch要素の外部で使用してもよい。

行内試験属性の使用についての次の例では,利用者がキャプションをONにしたい場合だけ,キャプションが表示される。

 ...
 <par>
    <audio src="audio.rm"/>
    <video src="video.rm"/>
    <textstream src="stockticker.rt"/>
    <textstream src="closed-caps.rt" systemCaptions="on"/>
 </par>
 ...
 

行内構成要素によって示される代替選択肢は,switch文の集合として表現できる。しかし,結果として生じるswitchは,サイズが膨大になる可能性がある。行内試験機構を使用するには,適用する内容の指定を簡単にすることが重要となる。特に,多くの独立な代替が存在する場合にはそうである。しかし,試験属性を行内で使用する場合には,(switchの内部にある試験属性なしに要素を定義するなど,)安全装置代替機構が存在しないことには注意すること。

switch及び試験属性の使用例

  1. 異なる合計ビット率をもつ内容における選択

    共通的なシナリオにおいて,実装は,要素上のsystemBitrate属性によって,選択を可能にしたいとしてもよい。SMIL 2.0プレーヤは,受理可能なビット率の値を捜して,switch内の要素の各々を一度に一つ評価する。

     ...
     <par>
        <text .../>
        <switch>
           <par systemBitrate="40000">
           ...
           </par>
           <par systemBitrate="24000">
           ...
           </par> 
           <par systemBitrate="10000">
           ... 
           </par> 
        </switch> 
     </par> 
     ...

    この例では,(移動端末の場合など)システムビット率が10000未満と決定された場合,par構成要素は含まれないことになる。

  2. 異なるビット率をもつ音声資源における選択

    switch内の要素は,要素の任意の組合せであってもよい。例えば,次のとおりに,代替音声トラックを指定できる。

     ...
     <switch>
        <audio src="joe-audio-better-quality" systemBitrate="16000" /> 
        <audio src="joe-audio" />
     </switch>
     ... 

    システムビット率が16000未満の場合,標準品質音声が,デフォルトによって提示される。

  3. 異なる言語による音声資源における選択

    次の例において,音声資源は,オランダ語及び英語の両方で利用可能になっている。利用者の好む言語に基づいて,プレーヤは,これらの音声資源のうちの一つを選ぶことができる。

     ...
     <switch>
        <audio src="joe-audio-nederlands" systemLanguage="nl"/>
        <audio src="joe-audio-english" systemLanguage="en"/>
     </switch>
     ... 

    この例では,システム言語設定がオランダ語又は英語以外の場合には,音声は提示されない。ある選択をデフォルトとするためには,その選択をリストの中の最後の項目とし,試験属性を含まないとすることが望ましい。次の例では,英語がデフォルトとして使用されている。

     ...
     <switch>
        <audio src="joe-audio-nederlands" systemLanguage="nl"/>
        <audio src="joe-audio-english" />
     </switch>
     ... 
  4. 異なるスクリーン用に書かれた内容における選択

    次の例において,プレゼンテーションは,異なる解像度及びビット深さをもつスクリーン用に設計された代替部分を含む。スクリーンの特定の特質に依存して,プレーヤは,試験属性がtrueと評価されるすべてのうちの最初の代替を使用しなければならない。

     ...
     <par>
        <text .../>
        <switch>
           <par systemScreenSize="1024X1280" systemScreenDepth="16">
           ...
           </par>
           <par systemScreenSize="480X640" systemScreenDepth="32">
           ...
           </par> 
           <par systemScreenSize="480X640" systemScreenDepth="16"> 
           ... 
           </par> 
        </switch> 
     </par> 
     ...
  5. 行内使用による複数のオプションのサポート

    次の例は,0個以上のメディアオブジェクトが付随するビデオを示す。システム言語がオランダ語又は英語のいずれかに設定されている場合,適切な音声オブジェクトが再生される。さらに,システム言語がオランダ語又は英語のいずれかに設定され,systemCaptionsもonに設定された場合,適切なテキストファイルも表示される。

      ...
      <par>
        <video src="anchor.mpg" ... />
        <audio src="dutch.aiff"   systemLanguage="nl"  ... />
        <audio src="english.aiff" systemLanguage="en" ... />
        <text  src="dutch.html"   systemLanguage="nl" systemCaption="on"... />
        <text  src="english.html" systemLanguage="en" systemCaption="on"... />
      </par> 
      ...

    システム言語がオランダ語又は英語以外に設定される場合,(ビデオ以外)のオブジェクトはレンダリングされない。行内評価のために試験属性を使用する場合には,すべての場合に捕捉される(catch-all)デフォルト機構が存在しないことに注意すること。

  6. 吹替え及び字幕のトラックの言語の選択

    次の例において,フランス語の映画は,英語,ドイツ語及びオランダ語の吹替え及び字幕のトラックを利用可能とする。次のSMILの一部は,これを表現し,利用者が好む代替選択肢に切り替える。

     ...
     <par>
        <switch>
           <audio src="movie-aud-en.rm" systemLanguage="en"
                 systemOverdubOrSubtitle="overdub"/>
           <audio src="movie-aud-de.rm" systemLanguage="de"
                 systemOverdubOrSubtitle="overdub"/>
           <audio src="movie-aud-nl.rm" systemLanguage="nl"
                 systemOverdubOrSubtitle="overdub"/>
           <!-- French for everyone else --> 
           <audio src="movie-aud-fr.rm"/>
        </switch> 
        <video src="movie-vid.rm"/>
        <switch> 
           <textstream src="movie-sub-en.rt" systemLanguage="en" 
                 systemOverdubOrSubtitle="subtitle"/>
           <textstream src="movie-sub-de.rt" systemLanguage="de"
                 systemOverdubOrSubtitle="subtitle"/> 
           <textstream src="movie-sub-nl.rt" systemLanguage="nl"
                 systemOverdubOrSubtitle="subtitle"/> 
           <!-- French captions for those that really want them --> 
           <textstream src="movie-caps-fr.rt" systemCaptions="on"/>
        </switch> 
     </par> 
     ...

4.2.2 要素及び属性

SMIL 2.0 BasicContentControlは,switch要素,及び定義済みシステム試験属性の集合を定義する。

switch要素

switch要素は,制作者が代替要素の集合を指定のを可能にする。要素は,次のとおりに選択される。プレーヤは,switch要素に出現する順番に要素を評価する。最初の受理可能な要素が,switch内のすべての他の要素を排他して選択される。実装は,すべての子要素に対する試験属性が失敗した場合には,switch内のオブジェクトを任意に選択してはならない。

要素の属性

この要素は,プロファイルにおけるすべての要素に要求された属性以外の属性をもたない。

要素の内容

要素の内容は,言語実装依存とする。

SMIL 2.0言語プロファイルにおいて,switchbody要素の直接又は間接の子として使用される場合,それは,どんなメディアオブジェクト又はタイミング構造コンテナを含んでもよいし,又は入れ子にされたswitch要素を含んでもよい。これらの要素はすべて,switchの内部に複数回出現してもよい。switchhead要素の直接又は間接の子として使用される場合,それは,一つ以上のlayout要素を含んでもよい。

定義済み試験属性

SMIL 2.0は,次のシステム試験属性を定義する。要素のために指定された試験属性のうちのいずれもがfalseと評価される場合,この属性をもつ要素は,無視される。SMIL 1.0からのほとんどのハイフン付けされた試験属性名は非推奨とし,現在のSMILのcamelCase規約を使用する名前のほうがよいとすることに注意すること。これについては,非推奨とされたSMIL 1.0の名前を,望ましい名前の後に括弧に入れて示す。

systemAudioDesc
値: on | off
この試験属性は,音声記述がレンダリングされることが望ましいかどうかを指定する。これは,制作者に,systemCaptionsがテキストキャプションを提供するのと同じ方法で音声記述をサポートする能力を提供することを意図している。systemAudioDescの値は,一つのメディアオブジェクトの(幾つかの)オーディオ記述が利用可能な場合,それを受け取ることに対する利用者の好みと連携してオブジェクトのレンダリングを制御するために使用される。onの値は,利用可能な場合に,その記述のレンダリングが好ましいことを示す。offの値は,それら記述のレンダリングが好ましくないことを示す。
制作者は,制作者が音声記述を望むことを利用者が示した場合,制作者がレンダリングしたい要素だけにsystemAudioDesc = onとすることが望ましい。制作者は,制作者が音声記述を望まないことを利用者が示した場合,制作者がレンダリングしたい要素だけにsystemAudioDesc = offとすることが望ましい。
利用者の好みがこの属性値と一致する場合,trueと評価する。それらが一致しない場合,falseと評価する。
systemBitrate (system-bitrate)
値: システムに利用可能な,ビット/秒 単位の,おおよその帯域幅
帯域幅の測定は,アプリケーションに特定的とする。すなわち,アプリケーションは,端点間接続についての高度な測定を使用してもよいし,利用者によって制御される単純な静的な設定を使用してもよい。後者の場合には,これは,例えば,ネットワークへの利用者の接続に基づいて選択を行うために使用できる。モデム利用者のための典型的な値としては,14400ビット/秒,28800ビット/秒,56000ビット/秒などがある。利用可能なシステムビット率が与えられた値以上の場合,trueと評価する。利用可能なシステムビット率が与えられた値未満の場合,falseと評価する。
属性は,0より大きい任意の整数値を仮定できる。値が実装定義の最大帯域幅値を超える場合,属性は,常に,falseと評価される。
systemCaptions (system-captions)
値: on | off
この属性は,制作者にプレゼンテーションの音声部分の等価な冗長テキストを指定することを可能にする。使用例としては,聴力に異常のある聴衆者,読むことを学んでいる者,又はこの情報を望む若しくは必要とする人に対応することがある。
利用者の好みがこの属性値と一致する場合,trueと評価する。一致しない場合,falseと評価する。
systemComponent
値: 一つ以上の空白で区切られたURIを含むXML CDATA文字列
各URIは,再生システムの構成要素,例えば,利用者エージェントの構成要素又は機能,音声チャネルの番号,符号復号器,ハードウェアMPEGデコーダなどを識別する。URIは,実装依存とする。各実装は,実装依存の構成要素の存在を識別及び解決するために使用できる構成要素のURIのリストを公表することを推奨される。
結果として生じる値がtrueの場合,trueと評価する。そうでない場合は,falseと評価する。
systemCPU
値: XML NMTOKEN [XML10]
この試験属性は,利用者エージェントが動作してもよいCPUを指定する。実装は,プライバシのためにシステム値をunknownに設定する機能を利用者に許さなければならない。
次のリストは,この試験属性に対して提案された値を含む。alpha,arm,arm32,hppa1.1,m68k,mips,ppc,rs6000,vax,x86,及びunknown。実装が,追加の名前をサポートしてもよい。

備考 これらの値は,mozillaプロジェクトによって定義された_PR_SI_ARCHITECTURE定数に由来している。

利用者の好みがこの属性値と一致する場合,trueと評価する。それらが一致しない場合,falseと評価する。値は,大文字・小文字を区別する。
systemLanguage (system-language)
値: [RFC1766]で定義されるとおりの言語名のコンマで区切られたリスト
この属性は,利用者の好みによって示された言語の一つが,このパラメタの値の中で与えられた言語の一つと正確に等しい場合(これを場合(1)とする。),又は利用者の好みによって示された言語の一つが,後ろに接頭辞を従える最初のタグ文字が"-"となるような,このパラメタの値の中で与えられた言語の一つの接頭辞に正確に一致する場合(これを場合(2)とする。),trueと評価される。そうでない場合,falseと評価される。例えば,一般的な英語が利用者の好みにおいて指定される場合,それは,場合(1)によって"en",及び場合(2)によって"en-gb"(イギリス英語)の両方に一致する。しかし,イギリス英語が利用者の好みにおいて指定される場合には,それは,場合(1)によって"en-gb"だけに一致する。
ヌル又は空文字列が指定される場合,試験属性は,falseと評価される。

systemLanguage属性及び非推奨のsystem-language属性の構文は,([XML10]で定義されるとおりの)EBNF記法を使用して,XML名前空間接頭辞[XML-NS]のリストとして,','文字によって区切って,次のとおりに定義される。

systemLanguageArgumentValue ::= (languageTag (S? ',' S? languageTag)*)?

ここで,許可される空白は"S"として示され,('S'のための[XML10]の定義から取られ,)次のとおりに定義される。

S ::= (#x20 | #x9 | #xD | #xA)+

実装についての備考 言語の好みの選択を利用者に利用可能にする場合,実装者は,大部分の利用者がここで記述したとおりの言語照合の詳細には精通していないことを考慮するほうがよく,適切なガイダンスを提供することが望ましい。例えば,利用者は,"en-gb"を選択することによって,イギリス英語が利用可能でない場合に,何らかの英語文書を利用できると間違って仮定してしまうかもしれない。利用者の好みを設定するための利用者インタフェースは,最良の一致を得るためには"en"を追加するように利用者を導くことが望ましい。

systemOperatingSystem
値: XML NMTOKEN [XML10]
この試験属性は,利用者エージェントが動作してもよいオペレーティングシステムを指定する。実装は,プライバシのために利用者の好みをunknownに設定する機能を利用者に許さなければならない。
次のリストは,この試験属性に対して提案された値を含む。aix,beos,bsdi,dgux,freebsd,hpux,irix,linux,macos,ncr,nec,netbsd,nextstep,nto,openbsd,openvms,os2,osf,palmos,qnx,sinix,rhapsody,sco,solaris,sonly,sunos,unixware,win16,win32,win9x,winnt,wince,及びunknown。実装が,追加の名前をサポートしてもよい。

備考 これらの値は,mozillaプロジェクトによって定義された_PR_SI_SYSNAME定数に由来している。

利用者の好みがこの属性値と一致する場合,trueと評価する。それらが一致しない場合,falseと評価する。値は,大文字・小文字を区別する。
systemOverdubOrSubtitle
値: overdub | subtitle
この属性は,字幕又は吹替えがレンダリングされるかどうかを指定する。overdub(吹替え)は,ある音声トラックの他の音声トラック用の代わりのために選択し,subtitle(字幕)は,音声トラックで使用されている言語以外の言語のテキストの表示を利用者が望むことを意味する。
利用者の好みがこの属性値と一致する場合,trueと評価する。それらが一致しない場合,falseと評価する。
system-overdub-or-caption
値: caption | overdub
この試験属性は,非推奨とし,systemOverdubOrSubtitle及びsystemCaptionsを使用することが望ましい。
この属性は,オプションが利用可能な場合,利用者が吹替え又は字幕を好むかどうかを決定する設定とする。
利用者の好みがこの属性値と一致する場合,trueと評価する。それらが一致しない場合,falseと評価する。
systemRequired (system-required)
値: 名前空間接頭辞言語拡張のリスト
この属性は,新しい要素又は属性のための拡張機構を提供する。リストの中の拡張のすべてが実装によってサポートされる場合,trueと評価する。そうでない場合,falseと評価する。systemRequired属性及び非推奨のsystem-required属性の構文は,([XML10]で定義されるとおりの)EBNF記法を使用して,'+'文字で区切られたXML名前空間接頭辞[XML-NS]のリストとして定義される。
systemRequiredArgumentValue := NMTOKEN (S? '+' S? NMTOKEN)*
ここで,許可される空白は"S"として示され,('S'のための[XML10]の定義から取られて,)次のとおりに定義される。
S ::= (#x20 | #x9 | #xD | #xA)+
systemScreenDepth (system-screen-depth)
値: 0より大きな数
この属性は,要素の表示のために要求されるビット単位のスクリーン色パレットの深さを指定する。典型的な値は,1,4,8,24,又は32とする。
再生エンジンが与えられた色の深さをもつ画像又はビデオを表示できる場合,trueと評価する。再生エンジンがより小さな色の深さをもつ画像又はビデオだけを表示できる場合,falseと評価する。
systemScreenSize (system-screen-size)
値: スクリーンサイズ
属性値は,次の構文をもつ。
  screen-size ::= screen-height "X" screen-width
これらの各々は,画素値であって,0をより大きい整数値でなければならない。
再生エンジンが与えられたサイズのプレゼンテーションを表示できる場合,trueと評価する。再生エンジンがより小さなプレゼンテーションだけを表示できる場合,falseと評価する。

各々の定義済み試験属性のための設定を決定することは,SMIL 2.0プレーヤの責任とする。これらの値は,静的な構成設定によって決定されてもよいし,動作時中に動的に評価されてもよい。それらの設定及び再評価の振る舞いは,実装依存とする。

SMILのこの版に対しては,falseと評価される指定された試験属性をもつ要素,又は選択されないswitch内の要素は,無視されるものと考えられ,文書の中に指定されていないものとして振る舞う。これらの要素へのいかなる参照は,要素が文書の中に存在しないものとみなす。特に,要素へのいかなるID参照も,そのIDをもつ要素が存在しないものとして動作する。このモジュールを統合する言語は,これらの無視される要素に関係した何らかの付加的な振る舞いを指定しなければならない。SMIL 2.0 Languageプロファイルでは,無効なIDを参照するタイミング属性は,不定であるとして取り扱われる。

備考 制作者は,無視される要素を扱うためのこのモデルが,SMILの将来の版において改訂され,関係するセマンティクスも変更されるかもしれないことに注意することが望ましい。これらの変更は,試験属性及び/又はswitch要素の構文解析時の(又は等価性の)評価だけをサポートする実装に影響しないほうがよい。しかし,試験属性及び/又はswitch要素の動的再評価(すなわち,文書のプレゼンテーションが行われている間の再評価)のセマンティクスは,SMILのこの版では定義されない。これは,将来の版において示される。

備考 制作者は,幾つかの代替要素がswitchの中に含まれ,それらのどれもがtrueと評価されない場合,メディアオブジェクトを一つ以上の付随するオブジェクトなしで表示するような状況になってもよいことを理解することが望ましい。そのために,switchの最後にすべての場合において受理可能な"catch-all"選択を含むことが推奨される。

4.2.3 BasicContentControlモジュールのための統合要件

このモジュールにおける機能は,他のSMIL 2.0モジュールの中で定義される機能に基づいて構築されない。

4.2.4 BasicContentControlモジュールのための文書型定義(DTD)

SMIL内容制御モジュールについては,完全なDTDを参照すること。

4.3 SMIL 2.0 CustomTestAttributesモジュール

4.3.1 SMIL 2.0 CustomTestAttributesモジュールの概要

SMIL BasicContentControlモジュールにおける定義済みシステム試験属性の使用は,モジュールの定義内で固定される属性に基づく選択機構を提供する。CustomTestAttributeモジュールは,制作者定義のカスタム試験属性の定義を用いて,この機能を拡張する。カスタム試験属性は,プレゼンテーション制作者が特定の文書の中で使用するための制作者自身による試験属性を定義することを可能にする。カスタム試験属性は,uid属性を使用して,アプリケーション文書間で共有されてもよい。

システム試験属性を用いる場合のように,カスタム試験属性は,タイミング構造及びメディアオブジェクトの要素内で使用できる。カスタム試験属性がtrueと評価される場合,それを含む要素は活性化され,カスタム試験属性がfalseと評価される場合,それを含む要素は無視される。SMILのこの版では,無視される要素は,それがソース文書の一部でないものとして,扱われる。その結果,無視されるノードのIDを参照するあらゆる要素も,実効的には,無効のIDを参照することになる。このモジュールを統合する言語は,これらの無視される要素と関係する何らかの付加的な振る舞いを指定しなければならない。

カスタム試験属性は,アプリケーション及び/又は文書に特定なので,属性定義及び属性設定を可能にするための機構を必要とする。属性定義は,customAttributes要素及びcustomTest要素によって行われる。カスタム試験属性の初期状態は,defaultState属性を用いて制作者の制作時に設定でき,true又はfalseのどちらかの値をとる。このモジュールは,これらの機構を使用する属性の動作時再設定をさせないための能力を制作者に与える値hiddenを,override属性に提供する。

属性の状態は,次の三つの方法のうちの一つで変更できる。

  1. プレーヤへの配布の前に,文書ソースの中のデフォルト状態の属性の値を修正することによる方法。
  2. customTestに対する動作時値を非参照とするために,uid属性の中で与えられた一意識別子を使用することによる方法。
  3. 動作時に文書プレーヤを通じて利用者(又は利用者エージェント)に提示されるインタフェースによる方法。

カスタム試験属性と関連する値を設定及び修正するための正確な規則は,値設定のための規則で与えられる。

実装は,方法2及び方法3のいずれか又は両方をサポートしてもよいし,どちらもサポートしなくてもよい。方法2がサポートされる場合,uidの中のURI値は,単に一意識別子とし,その動作時値がウェブ上で取得されなければならないことを示唆しない。値は,局所的に記憶及び取得されてもよく,uidによって識別されるだけでもよい。これを行う正確な方法は,実装依存とする。方法3がサポートされる場合,カスタム試験属性機能は,カスタム試験属性の直接的利用者操作のために特定のUIサポートを要求するわけではない。

使用例

次の例は,SMIL 2.0 Languageプロファイル文書内でカスタム試験属性が適用できる一つの方法を示す。

<smil>
  <head>
    <layout>
       <!-- define projection regions -->
    </layout>
    <customAttributes>
      <customTest id="west-coast" title="West Coast Edition" 
        defaultState="false" override="visible"  
        uid="http://defs.example.org/user-settings/west-coast" />
      <customTest id="east-coast" title="East Coast Edition" 
        defaultState="false" override="visible" 
        uid="http://defs.example.org/user-settings/east-coast" />
      <customTest id="far-north"  title="Northern Edition"
        defaultState="false" override="visible"
        uid="http://defs.example.org/user-settings/far-north" />
      <customTest id="the-rest"   title="National Edition"
        defaultState="true"  override="hidden" />
    </customAttributes>
  </head>
  <body>
    ...
    <par>
      <img src="background.png" region="a"/>
      <video src="story_1v.rm" region="b" />
      <switch>
        <audio src="story_1w.rm" region="c" customTest="west-coast"/>
        <audio src="story_1e.rm" region="c" customTest="east-coast"/>
        <audio src="story_1n.rm" region="c" customTest="far-north"/>
        <audio src="story_1r.rm" region="c" customTest="the-rest"/>
      </switch>
    </par>
    ...
  </body>
</smil>

ヘッド部におけるcustomAttributes要素は,利用可能なカスタム試験属性の定義を含む。customTest要素によって定義される各々のカスタム試験属性は,識別子及び(利用可能な場合には利用者エージェントが属性をラベル付けするために使用できる)タイトル,さらに,(オプションの)初期状態定義,この属性に対する値設定のための一意識別子を含むUID,及び上書きフラグを含んでいる。

"west-coast","east-coast"及び"far-north"と命名されたカスタム試験変数は,falseのデフォルトレンダリング状態を用いて定義される。それらは,各々,それぞれの変数のための局所設定を定義するために使用されるURIへの参照を含む。

カスタム試験変数"the-rest"は,trueのデフォルトレンダリング設定を用いて定義される。

body内部で,SMILのswitch構造は,様々なカスタム試験属性の値に依存するプレゼンテーションの中に取り込むメディアオブジェクトを選択するために使用される。trueの値を含む最初のオブジェクトがレンダリングされるが,この例では,最後の選択肢が常にtrueと解決されるので,他のオブジェクトがtrueと解決されない場合,最後の選択肢がレンダリングされる。

この例はカスタム試験属性のswitchに基づく使用を示しているが,この機能は,行内使用の試験属性としても適用できる。

値設定のための規則

カスタム試験属性に関連する値の設定は,次のとおりに行われる。

  1. 初期設定は,defaultState属性が存在する場合には,その値から得られる。デフォルト状態が明示的に定義されない場合,falseの値が使用される。
  2. 次に,URI機構が実装によってサポートされる場合,uid属性によって定義されるURIが,関連するidをもつカスタム試験属性に対して永続的な値が定義されているかどうか確かめるために検査される。そのような値が存在する場合,その値が,文書の中で定義されたデフォルト状態の代わりに使用される。そうでない場合には,既存の初期状態が保持される。
  3. 次に,(SMIL DOM,プレーヤGUI又は何らかの他の手段のいずれかによる)UIに基づく機構が利用可能であって,値が利用者によって設定された場合,カスタム試験属性に関連する値は,利用者指定の値に設定される。利用者の好みが定義されていない場合,UIDに基づく値又は文書テキストからのデフォルト値のいずれかが,(その順番で,)使用される。

カスタム試験属性の利用者設定はURI設定に優先することに注意すること。利用者が属性のための値を指定しなかった場合,URI設定が優先する。定義済みシステム試験属性を用いる場合のように,この評価は,実装定義の方法で発生する。値は,動的に(再)評価されてもよいが,これは必須ではない。すべての実装が属性のuid又はUIの設定をサポートする必要はないことにも注意すること。

4.3.2 要素及び属性

4.3.2は,SMIL CustomTestAttributesモジュールにおいて機能を構築する要素及び属性を定義する。customAttributes要素及びcustomTest要素は,カスタム試験属性変数を定義するために使用し,customTest属性は,それを含む要素の評価を制御するために,メディアオブジェクト及びタイミング構造の参照において行内で使用する。

customAttributes要素

customAttributes要素は,カスタム試験属性の各々の定義を含む。含まれる要素は,switch文の中で,又は文書中の行内試験属性として使用できる制作者指定の試験属性の集まりを定義する。

要素の属性

この要素は,プロファイルの中のすべての要素に要求される属性以外の属性をもたない。

要素の内容

customAttributes要素は,一つ以上のcustomTest要素を含んでもよい。

customTest要素

customTest要素は,switch要素の中で,又はメディアオブジェクト及びタイミング構造の要素における行内で,試験引数として使用される制作者指定の名前を定義する。customTest要素は,文書ヘッド部の一部を構成するcustomAttributes要素を示す箇条内で定義される。

要素の属性
defaultState
値: true | false
名前付けされたカスタム試験変数のための初期状態が,この属性の値で与えられる。指定されない場合,falseをデフォルトとする。
名前付けされたカスタム試験変数のための動作時状態は,uid及び/又は(存在する場合には)override属性処理のための規則に従って設定してもよい。値は,大文字・小文字を区別しない。
override
値: visible | hidden
この属性は,カスタム試験変数の初期状態を上書きする能力を通常の利用者に提示するかどうか,又はその選択を特にこのアクセスを希望する利用者のために予約するのがよいかどうかを,制作者が選択することを可能にする。override属性の値がvisibleの場合,利用者エージェントは,直接に,SMIL DOM,又は他のある機構のいずれかによってそのカスタム試験変数値をデフォルト構成で設定する手段を,利用者に利用可能にすることが望ましい。override属性の値がhiddenの場合,利用者エージェントは,利用者がこのアクセスを希望することを示していない場合,カスタム属性値を設定する手段を,利用者に示さないほうがよい。値は,大文字・小文字を区別しない。デフォルト値は,hiddenとする。
uid
値: URI
URIは,永続的な使用のために関連するカスタム試験を識別する。利用者エージェントは,カスタム試験属性に関連付けられた値を記憶及び取得するキーとしてこれを使用し,プライバシ及びセキュリティの問題を考慮するように注意することが望ましい。override属性によって許されている場合,uid属性による設定への解決された参照は,カスタム試験値の初期設定を定義する。この値は,override属性によって許されている場合,利用者及び/又は利用者エージェントによって上書きされてもよい。この属性の強化は,動作時環境の責任とする。

備考 URIと関連する実際の評価機構は,実装依存とする。それは,局所ファイル又はレジストリの中の単純な検索から,能力の高いデータベースによる安全な参照まで,多様であることができ,実装によって提供される他の構成設定によって影響を受けてもよい。

要素の内容

なし。

customTest属性

customAttributes要素及びcustomTest要素に加えて,このモジュールは,言語設計者によって,メディアオブジェクト及びタイミング構造の選択を要求する要素に適用できるcustomTest属性を提供する。すべての操作上の観点からは,カスタム試験属性は,基本内容制御(BasicContentControl)モジュールの定義済みシステム試験属性機能に類似している。

customTest
値: XML識別子のリスト
customTest要素の中で定義される識別子は,試験属性として評価される変数を定義する。変数がすべてtrueと評価される場合,関連する要素が評価される。そうでない場合は,関連する要素及びその内容は評価されない(スキップされる)。値がcustomTest要素の識別子と一致しないcustomTest属性は,falseと評価される。

customTestの構文は,([XML10]で定義されるとおりの)EBNF記法を使用して,"+"記号によって区切ったcustomTest要素識別子参照のリストとして,定義される。

CustomTestArgumentValue := IDREF (S? '+' S? IDREF)*
ここで,許可される空白は,"S"として示され,('S'のための[XML10]の定義から取ってきて,)次のとおりに定義される。
S ::= (#x20 | #x9 | #xD | #xA)+

4.3.3 CustomTestAttributesモジュールのための統合要件

このモジュールにおける機能は,BasicContentControlモジュールにおいて定義された機能の上に構築される。BasicContentControlモジュールは,CustomTestAttributeモジュールの取込みのために必須な前提条件とする。

カスタム試験要素及び属性を実装するプロファイルは,一意なXML識別子をcustomTest要素と関連付ける方法を提供しなければならず,その結果として,customTest属性によって使用できる。プロファイルは,記述的なテキストをcustomTest要素と関連付ける方法を提供することが望ましい。これは,GUI又は利用者に対して表示されてもよい他の選択機構で使用してもよい。SMIL 2.0 Languageプロファイルに対しては,要素のid属性及びtitle属性が,この目的のために役に立つ。

4.3.4 CustomTestAttributesモジュールのための文書型定義(DTD)

SMIL内容制御モジュールのための完全なDTDを参照すること。

4.4 SMIL 2.0 PrefetchControlモジュール

4.4.1 SMIL 2.0 PrefetchControlモジュールの概要

このモジュールは,文書のレンダリング性能を改善する手法における,サーバからの内容の取得を制御するために使用できる要素及び属性を定義する。

この要素は,利用者エージェントに対して,メディア資源が今後使用されるということ,及び文書再生をより滑らかにするために資源の一部又は全部を事前に取得することを制作者が望んでいるということの提案又はヒントを与える。利用者エージェントは,prefetch要素を無視できる。しかし無視すると,資源が必要とされるときに,文書再生において中断が発生する可能性がある。この要素は,制作ツール又は経験豊かな制作者に,利用可能な帯域幅又は時間がある場合,資源の取得をスケジューリングする能力を与える。prefetch要素は,XML文書の本体内に含まれ,そのスケジューリングは,明示的なタイミングが存在しない場合には,その字句的な順番に基づいて行われる。

備考 動的に内容を変更するURLからデータを先読みすることは,危険な場合がある。資源全体を先読みしない場合,残りのデータを求める後続の要求が,より新しい資源からのデータを得てしまう可能性がある。利用者エージェントは,内容に適用される適切なキャッシュ化指令,例えば,HTTPにおけるno-cache(キャッシュなし) 822 ヘッダ,を尊重することが望ましい。より特定的には,キャッシュ不可として印付けされた内容は,再生されるごとに,再取得しなければならない。キャッシュ可能な内容は使用前に先読みすることができ,先読みした結果は将来の使用のためにキャッシュされる。

  1. ビデオが終了した直後に表示できるように,画像を先読みする。
     <smil xmlns="http://www.w3.org/2001/SMIL20/PR/Language"> 
       <body> 
         <seq>
           <par>
             <prefetch id="endimage"
                src="http://www.example.org/logo.gif"/>
             <text id="interlude"
                src="http://www.example.org/pleasewait.html" fill="freeze"/>
           </par>
           <video id="main-event" src="rtsp://www.example.org/video.mpg"/> 
           <img src="http://www.example.org/logo.gif" dur="5s"/>  
        </seq> 
       </body> 
     </smil> 

    この例は,テキストオブジェクトのレンダリングと平行した先読みをともなって始動する。テキストは離散メディアであって,ただちに終了する。prefetch要素は,デフォルトで利用可能な帯域すべてを使って画像全体を先読みし,画像がダウンロードされた時,prefetch要素は終了する。それは<par>を終了し,ビデオが再生を開始する。ビデオが終了する時,画像が表示される。

  2. ボタン用の画像を先読みする。その結果,画面切替えが,末端利用者のためにすぐに発生する。
     <html>
     <body>
         <prefetch id="upimage" src="http://www.example.org/up.gif"/>
         <prefetch id="downimage" src="http://www.example.org/down.gif"/>
         ....
         <!-- script will change the graphic on rollover -->
         <img src="http://www.example.org/up.gif"/>
       </body>
     </html>

4.4.2 要素及び属性

prefetch要素

prefetchは,サーバからプレーヤへのメディアオブジェクトの転送のスケジューリングに影響を与える機構を制作者に与える。

文書は,prefetch要素が無視されても,まだ再生されなければならない,しかし,文書のプレゼンテーションにおいて再バッファ処理及び一時停止が発生するかもしれない。prefetch要素のための先読みが無視された場合でも,その要素におけるタイミングは,まだ考慮される。例えば,prefetch要素がdur="5s"をもつ場合,prefetch要素のタイミングに依存する要素は,先読みに5秒かかったものとして振る舞う。

先読み操作が実装によってサポートされている場合,prefetch要素の本来的持続時間は,メディア取得の持続時間とし,先読みがサポートされていない場合,0とする。

prefetch要素が繰り返される場合,親要素における再始動又は繰返しのために,先読み操作は,再び発生することが望ましい。このことは,例えば,各要求にともない内容が変化するURLへのバナー広告のために先読みが行われる場合,"取得"データが適切に表示されることを保証する。

要素の属性

prefetch要素は,次の属性をサポートする。

mediaSize
値: bytes-value | percent-value
取得する資源の量を資源のファイルサイズの関数として定義する。サイズを知らずに資源全体を取得するためには,100%を指定する。デフォルトは,100%とする。
mediaTime
値: clock-value | percent-value
取得する資源の量を資源の持続時間の関数として定義する。持続時間を知らずに資源全体を取得するためには,100%を指定する。デフォルトは,100%とする。
離散メディア(text/html又はimage/pngといった時間に基づかないメディア)に対してこの属性を使用する場合には,資源全体が取得される。
bandwidth
値: bitrate-value | percent-value
利用者エージェントが先読みを行う場合に使用することが望ましいネットワーク帯域幅の大きさを定義する。利用可能なすべてを使うためには,100%を指定する。デフォルトは,100%とする。

"0%"の値をもつ属性は,無視され,属性が指定されていないものとして取り扱われる。

mediaSize及びmediaTime の両方が指定される場合,mediaSizeが使用され,mediaTimeは無視される。

メディアオブジェクトにおけるclipBegin又はclipEndが先読みとは異なっている場合,実装は取得されたデータ使用できるが,結果は最適化されていなくてもよい。

属性値の構文
bytes-value
bytes-value値は,次の構文をもつ。

bytes-value ::= Digit+; 任意の正の数

percent-value
percent-val値は,次の構文をもつ。

percent-value ::= Digit+ "%"; 0〜100の範囲の中の任意の正の数

clock-value
clock-value値は,次の構文をもつ。
Clock-val         ::= ( Hms-val | Smpte-val )
Smpte-val         ::= ( Smpte-type )? Hours ":" Minutes ":" Seconds 
                      ( ":" Frames ( "." Subframes )? )?
Smpte-type        ::= "smpte" | "smpte-30-drop" | "smpte-25"
Hms-val           ::= ( "npt=" )? (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)? (Metric)?
Metric            ::= "h" | "min" | "s" | "ms"
Hours             ::= DIGIT+; 任意の正の数
Minutes           ::= 2DIGIT; 00〜59の範囲
Seconds           ::= 2DIGIT; 00〜59の範囲
Frames            ::= 2DIGIT; @@ range?
Subframes         ::= 2DIGIT; @@ range?
Fraction          ::= DIGIT+
Timecount         ::= DIGIT+
2DIGIT            ::= DIGIT DIGIT
DIGIT             ::= [0-9]

Timecount値に対して,デフォルトの単位(Metric)は,"s"(秒)とする。

bitrate-value
bitrate-value値は,秒毎のビット数を指定する。それは,次の構文をもつ。

bitrate-value ::= Digit+; 任意の正の数

4.4.3 PrefetchControlモジュールのための統合要件

PrefetchControlモジュールを統合するプロファイルは,取得されるメディアを指定するために必要な属性を追加しなければならない。一般に,これらは,メディア要素それ自体における属性と同じ資源指定属性になる。さらに,プロファイルは,prefetch要素のタイミングを制御するために必要な属性を追加しなければならない。

4.4.4 PrefetchControlモジュールのための文書型定義(DTD)

SMIL内容制御モジュールのための完全なDTDを参照すること。

4.5 SMIL 2.0 SkipContentControlモジュール

4.5.1 SMIL 2.0 SkipContentControlモジュールの概要

このモジュールは,一つの属性,skip-content属性,を含む。その属性は,この属性が出現する要素の評価を選択的に制御するために使用できる。この属性は,SMILの将来の拡張性のために導入される。機能は,SMIL 1.0から変わっていない。

4.5.2 要素及び属性

要素の定義

SkipContentControlモジュールは,いかなる要素の定義も含まない。

skip-content属性

skip-content
値: true | false
この属性は,要素の内容が評価されるか又はスキップされることが望ましいかを制御する。
  • 新しい要素が,言語の以前の版からのマーク付けを要素内容として許す言語の将来の版において導入される場合skip-content属性は,この内容が利用者エージェントによって処理されるかどうかを制御する。
  • 言語のある版における空要素が,将来のSMILの版で空ではなくなる場合,skip-content属性は,この内容が,利用者エージェントによって無視されるか,又は構文エラーを生じるかを制御する。
skip-content属性の値がtrueであって,上で示した場合の一つが適用されるとき,要素の内容は無視される。値がfalseの場合,要素の内容は処理される。
skip-contentのためのデフォルト値は,trueとする。

4.5.3 SkipContentControlモジュールのための統合要件

この拡張機構を可能にするためにどの要素がskip-content属性をもつかを指定することは,言語プロファイルの責任とする。