Los Angeles Chinese Learning Center, providing private Chinese Mandarin classes, Chinese tutors, Mandarin interpreter and translators, China investment report, investment opportunity report, China intelligence report, information on Chinese herbal medicines in Los Angeles
Corporate Services Other Services
Private Instruction Invest in China
Curriculum FAQ
Business Culture Health Education
Textbooks Our Staff
Hours and Location Contact Us
 

Synchronized Multimedia Integration Language (SMIL) 1.0

本文档是W3C建议SMIL 1.0(1998年6月15日)的中文版,其中可能有错误和不妥之处。

英文版是唯一的正式版,位于:

http://www.w3.org/TR/1998/REC-smil-19980615

本文档位于:

http://www.w3.org/TR/REC-smil/REC-smil-19980615-cn.html

译者:

著作权声明位于:http://www.w3.org/Consortium/Legal/copyright-documents.html

Copyright  ©  1998 W3C (MITINRIA Keio ), All Rights Reserved. W3C liability, trademark document use and software licensing rules apply.

W3C REC-smil-19980615-cn


 

同步多媒体合成语言(SMIL) 1.0 规范

W3C建议 1998年6月15日

 

本版本:
http://www.w3.org/TR/1998/REC-smil-19980615
最新版本:
http://www.w3.org/TR/REC-smil
上一版本:
http://www.w3.org/TR/1998/PR-smil-19980409
 

关于本文档

本文档由World Wide Web Consortium的同步多媒体工作组提供。工作组包括下列成员:

  • Stephan Bugaj, Lucent/Bell Labs
  • Dick Bulterman, CWI
  • Bruce Butterfield, RealNetworks
  • Wo Chang, NIST
  • Guy Fouquet, Alcatel
  • Christian Gran, GMD
  • Mark Hakkinen, The Productivity Works
  • Lynda Hardman, CWI
  • Peter Hoddie, Apple
  • Klaus Hofrichter, GMD
  • Philipp Hoschka, W3C
  • Jack Jansen, CWI
  • George Kerscher, DAISY Consortium
  • Rob Lanphier, RealNetworks
  • Nabil Layaïda, INRIA
  • Stephanie Leif, RealNetworks
  • Sjoerd Mullender, CWI
  • Didier Pillet, CNET/DSM
  • Anup Rao, Netscape
  • Lloyd Rutledge, CWI
  • Patrick Soquet, Havas
  • Warner ten Kate, Philips
  • Jacco van Ossenbruggen, CWI
  • Michael Vernick, Lucent/Bell Labs
  • Jin Yu, DEC

致谢:除了工作组成员之外,还有下列各位为SMIL付出了各自的努力: Bert Bos (W3C), Dan Connolly (W3C), Patrick Deunhouwer (Philips), Martin Dürst (W3C), Al  Gilman, Håkon Lie (W3C), Chris Lilley (W3C), Curtis Reynolds (RealNetworks), Michael Riesman, Curtis Reynolds (RealNetworks), Henning Schulzrinne (Columbia University) and Koga Youichirou (W3C).

编辑:Philipp Hoschka, W3C (hoschka@w3.org)

摘要

本文档规定了同步多媒体合成语言的版本1(SMIL 1.0,发“smile”的音)。SMIL能够将一组独立的多媒体对象合成为同步的多媒体演示。一个创作者可以用SMIL

  1. 描述演示的时序行为
  2. 屏幕上演示的布局
  3. 将媒体对象与超链接相关联

本规范的结构如下:第一部分给出了规范的表述方法。第二部分定义了“smil”元素。第三部分定义了可以包含在SMIL文件头中的元素。第四部分定义了可以包含在SMIL文件体中的元素。特别地,这部分定义了SMIL中使用的时间模型。第五部分描述了SMIL DTD。

本文档的状态

本文档已由W3C组织成员和其他相关各方审阅,并已被组织理事批准为W3C建议。这是一个稳定的文档,可以用作参考材料,也可以作为其他文档的正式参考文献。W3C在建议制定过程中的作用是吸引对本规范的注意并促进它的广泛使用。这能增强Web的功能和互操作性。

对本规范的评注可以发往公共邮件列表 www-smil@w3.org.

语言版本

英文版是唯一的正式版。其他语言的翻译位于http://www.w3.org/AudioVideo/SMIL/translations.

勘误表

本规范的已知错误列表可以在http://www.w3.org/AudioVideo/SMIL/errata找到.

目录

1 规范的表述方法

SMIL文件是XML 1.0文件[XML10]。要求读者熟悉XML 1.0中定义的概念和术语。

在URL中定义的一些特性有可能无法用URN表示,本规范不基于这些特性。因此,本规范中统一使用更通用的术语URI[URI]

SMIL文件的语法由5.2节中的DTD定义。不能用DTD记法定义的属性值和第一个使用能以它为值的属性的元素一起定义。这些属性值用XML 1.0中定义的扩展范巴科斯范式(EBNF)定义。

元素定义的结构如下:首先,以字母顺序定义此元素的所有属性。属性用如下方法定义:如果此属性是第一次在本规范中被某个元素使用,则定义此属性的语义。如果此属性已被另一个元素使用,规范中引用第一个使用此属性的元素中此属性的定义。元素属性定义之后是任何不能用DTD记法定义其语法的属性值的定义。元素定义的最后部分规定了元素内容。

2 smil元素

元素属性

“smil”元素可以有下列属性:

id
此属性在一个文件中唯一地标识一个元素。它的值是一个XML标识符。

元素内容

“smil”元素可以包含下列子元素:

body
4.1节中定义
head
3.1节中定义

3 文件头

3.1 head元素

“head”元素包含与演示的时序行为无关的信息。

元素属性

“head”元素可以有下列属性:

id
第2节中定义

元素内容

“head”元素可以包含下列子元素:

layout
3.2节中定义
meta
3.4节中定义
switch
4.3节中定义

“head”元素可以包含任意多个“meta”元素,并可以包含一个“layout”元素或一个“switch”元素。

3.2 layout元素

“layout”元素决定了文件体中的元素是如何在一个“抽象表示面”(视频的或音频的)上定位的。

如果文件中没有layout元素,文件体中元素的定位与实现相关。

一个SMIL文件可以通过将多个layout元素封装在一个“switch”元素(在4.3节中定义)中而包含多个可选的布局。举例来说,这可以用于使用不同的布局描述语言来描述文件的布局。

下面的例子说明了如何用CSS2代替SMIL基本布局语言(在3.3节中定义):

<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>

(注意在这个例子中,两个可选布局的结果相同)

元素属性

id
第2节中定义
type
此属性规定了layout元素中使用的布局语言。如果播放器不能理解这种语言,它必须跳过下一个“</layout>”标签之前的所有内容。type属性的缺省值是“text/smil-basic-layout”。

元素内容

如果layout元素的type属性具有值“text/smil-basic-layout”,它可以包含下列元素:

region
3.3.1节中定义
root-layout
3.3.2节中定义

如果“layout”元素的type属性具有其他值,元素中包含字符数据。

3.3 SMIL基本布局语言

这一节定义用于SMIL的基本布局语言。SMIL基本布局与CSS2中定义的视觉表示模型相一致,它重用了CSS2规范中定义的格式化属性,同时引入了新的“fit”属性[CSS2]。要求读者熟悉CSS2中定义的概念和术语。

SMIL基本布局只控制媒体对象元素(在4.2.3节中定义)的布局。用于其他SMIL元素是非法的。

SMIL基本布局的类型标识符是“text/smil-basic-layout”。

固定的属性值

下面的样式表(stylesheet)定义了在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}

注意作为这些定义的结果之一,所有以绝对方式定位的元素(animation,img,ref,text,textstream和video)被包含在以根元素(smil)内容边界定义的单个包含块中。

缺省值

SMIL基本布局定义了所有与布局相关的属性的缺省值。它们与CCS2中相应属性的初始值一致。

如果创作者想给文件中的所有媒体对象元素选择缺省的布局值,文件中必须包含一个类型为“text/smil-basic-layout”的空layout元素,如:

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

3.3.1 region元素

region元素控制媒体对象元素的位置,大小和缩放。

在下面作为例子的片断中,一个text元素被定位于距离显示窗口上边界5个象素远的位置:

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

元素属性

“region”元素可以有下列属性:

background-color
除了SMIL基本布局不要求支持“系统颜色”外,此属性的定义和使用与CSS2规范中的“background-color”属性相同。
如果没有background-color属性,采用透明的背景。
fit
此属性规定了可视媒体对象的真正高度和宽度不同于“region”元素中height和width属性所规定的值时的行为。此属性没有直接对应的CSS2属性,但是可以在CSS2中模拟。
此属性可以有下列值:
fill
独立地缩放对象的高度和宽度,使之正好与方框的各边相接。
hidden
  • 如果媒体对象元素的真正高度(宽度)小于“region”元素中定义的高度(宽度),从上边界(左边界)开始显示,余下的高度(宽度)用背景色填充。
  • 如果媒体对象元素的真正高度(宽度)大于“region”元素中定义的高度(宽度),从上边界(左边界)开始显示,直到“region”元素中定义的值为止,切去在此高度(宽度)之下(之右)的对象的部分。
meet
保持长宽比缩放可视媒体对象,直到它的高度或宽度等于规定的高度或宽度,不切去其内容。对象的左上角置于方框的左上角,左边或下边的空余空间用背景色填充。
scroll
当元素要显示的内容超出边界时,提供滚动机制。
slice
保持长宽比缩放可视媒体对象,直到它的高度或宽度等于规定的高度或宽度,一部分内容可能会被切去。取决于实际情况,可以显示可视媒体对象的水平或垂直的一部分。切去媒体对象右边超出的宽度。切去媒体对象底部超出的高度。

“fit”的缺省值是“hidden”。

height
此属性的定义和使用与CSS2规范中的“height”属性相同。属性值可以是“百分数”值,也可以是CSS2中“length”值的一种变化形式。对于“length”值,SMIL基本布局仅支持以CSS2中定义的象素为单位。它允许省略象素值中的“px”限定符(CSS2要求有“px”限定符)。
id
第2节中定义。
通过将有位置概念的元素的region属性设为一个region元素的id值,可以将此region元素作用于此有位置概念的元素。
“id”属性是“region”元素的必需属性。
left
此属性的定义和使用与CSS2规范中的“left”属性相同。属性值有与“height”属性相同的限制。
缺省值是0。
skip-content
引入此属性是为了SMIL以后的可扩展性(参见附录)。它在下述两种情况下被解释:
  • 如果在SMIL的未来版本中引入了一个新元素,而此元素能以SMIL 1.0元素作为其元素内容,“skip-content”属性控制一个SMIL 1.0播放器是否处理其内容。
  • 如果SMIL版本1.0中的一个空元素在未来的SMIL版本中不再为空,“skip-content”控制一个SMIL 1.0播放器是否忽略其内容,或是导致一个语法错误。

如果“skip-content”属性的值是“true”,且以上的两种情况之一适用,那么元素内容被忽略。如果值为“false”,元素内容被处理。
“skip-content”的缺省值是“true”。

title
此属性提供了其所在元素的参考信息。title属性的值可以被用户代理(user agent)以各种不同的方式解释。例如,可视浏览器经常将其作为“工具提示”(当定点设备停在一个对象之上时出现的一个简短的消息)。
强烈建议所有的“region”元素都有“title”属性,且其属性值是一个有意义的描述。创作工具应该保证SMIL文件中引入的每一个元素都具有此属性。
top
此属性的定义和使用与CSS2规范中的“top”属性相同。属性值有与“height”属性相同的限制。
缺省值是0。
width
此属性的定义和使用与CSS2规范中的“width”属性相同。属性值有与“height”属性相同的限制。
z-index
此属性的定义和使用与CSS2规范中的“z-index”属性相同,下列情况例外:
  • 如果元素A和元素B产生的两个方框有相同的堆栈层次:
    1. 如果元素A的显示迟于元素B的显示,A的方框迭加于B的方框之上(时间次序)。
    2. 如果元素的显示在同一时间开始,而元素A在SMIL文件文本中迟于元素B出现,A的方框迭加于B的方框之上(按CSS2中定义的文件树次序)。

元素内容

“region”是一个空元素。

3.3.2 root-layout元素

“root-layout”元素决定根元素的布局属性值,根元素的这些值又决定了视口(viewport,如SMIL演示播放的窗口)的大小。

如果文件包含一个以上“root-layout”元素,是一个错误,此文件不应被显示。

元素属性

“root-layout”可以有下列属性:

background-color
3.3.1节中定义
height
3.3.1节中定义。
设定根元素的高度。只允许表示长度的值。
id
第2节中定义
skip-content
3.3.1节中定义
title
3.3.1节中定义
width
3.3.1节中定义。
设定根元素的宽度。只允许表示长度的值。

元素内容

“root-layout”是一个空元素。

3.4 meta元素

“meta”元素可以用于定义文件的属性(如,作者,截止日期,关键字表,等等)并给这些属性赋值。每一个“meta”元素规定一个属性/属性值对。

元素属性

“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
此属性的值包含了演示的标题。

元素内容

“meta”是一个空元素。

4 文件体

4.1 body元素

“body”元素包含与此文件的时序和链接行为有关的信息。它隐含地定义了一个“seq”元素(在4.2.2节中定义,“body”元素的时序语义定义参见4.2.4节)。

元素属性

“body”元素可以有下列属性:

id
第2节中定义

元素内容

“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元素

par元素的子元素可以在时间上重叠。par中子元素的文本次序对它们演示的次序没有意义。

元素属性

“par”元素可以有下列属性:

abstract
元素所包含内容的简短描述。
author
元素内容作者的名字。
begin
此属性规定了元素显式开始的时间。其语义参见4.2.4节
此属性可以包含下列两类值:
延时值
延时值是用于计量演示时间的时钟值。演示时间以演示播放的速度增加。它的行为如同录像播放设备上计数器的时间数码。它可以被用户或播放器停止,减少或增加。
延时值的语义取决于此元素的第一个为同步元素(即,祖元素中的“a”元素和“switch”元素被忽略)的祖元素:
  • 如果此祖元素是一个“par”元素,此属性值定义了从元素的实际开始起的一个延时(参见图4.1)。
  • 如果此祖元素是一个“seq”元素(在4.2.2中定义),此属性值定义了从第一个为同步元素的词法前趋的实际结束起的一个延时(参见图4.2)。
事件值
当某些特定事件发生时此元素开始(参见图4.3)。属性的值是一个元素事件(参见下面的定义)。
产生事件的元素必须“在作用域内”。“在作用域内”的元素的集合S如下决定:
  1. 将此元素的第一个为同步元素的祖元素的所有子元素加入S中。
  2. 从S中去掉所有“a”元素和“switch”元素。将所有“a”元素的子元素加入S中,子元素是“switch”的情况例外。

得到的集合S即“在作用域内”的元素的集合。

 


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

delay in 'par' element D

 


图4.1: 在“par”元素中使用延时值。


<seq>
  <audio src="audio1" />
  <audio begin="5s" src="audio2" />
</seq>

delay in 'seq' element D


图4.2: 在“seq”元素中使用延时值


<par>
  <audio id="a" begin="6s" ... />
  <img  begin="id(a)(4s)" ... />
</par>

element with event value D

 


图4.3:值为元素事件值的同步属性

copyright
元素所包含内容的版权声明。
dur
此属性规定了元素的显式时长。其语义的定义参见4.2.4节。此属性可以是一个时钟值或字符串“indefinite”。
end
此属性规定了元素的显式结束。其语义的定义参见4.2.4节。此属性可以包含与“begin”属性相同的属性值类型。
endsync
此属性的语义定义参见4.2.4节。此属性可以有下列取值:
  • first
    此属性值的语义定义参见4.2.4节
  • id-ref
    此属性值有如下的语法:

    id-ref ::= "id(" id-value ")"
    其中“id-value”必须是一个合法的XML标识符。
    此属性值的语义定义参见4.2.4节
  • last
    此属性值的语义定义参见4.2.4节

“endsync”的缺省值是“last”。

id
第2节中定义
region
此属性指定了在文件布局部分定义一个抽象表示面(视频的或音频的)。它的值必须是一个XML标识符。如果在布局部分没有定义表示面,此元素的格式化属性的值由缺省布局决定。
本规范中定义的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”属性,且其属性值是一个有意义的描述。创作工具应该保证SMIL文件中引入的每一个元素都具有此属性。

关于子元素间同步的注解

在一个同步组中子元素的同步精确度与实现相关。以回放中的时延,即,“par”元素包含两种或多种连续媒体类型如视频或音频时的行为,作为同步的例子,其中的一个会出现时延。
播放器可以有两种同步行为:

硬同步
播放器将“par”元素的所有子元素与一个共同时钟同步(参见图4.4 a)。
软同步
“par”元素的每个子元素有自己的时钟,独立于“par”元素中其他子元素的时钟运行(参见图4.4 b)。

 


hard synchronization D

a) 硬同步:视频中的延时:或是停止音频,或是视频掉帧。确切的行为与实现有关。

soft synchronization D

b) 软同步

 


图4.4:使用不同同步策略的播放器中延时在播放进度中的效果

属性值

时钟值
时钟值有如下的语法:
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]

下面是一些合法的时钟值的例子:

  • 完整的时钟值:02:30:03 = 2小时30分3秒
  • 部分的时钟值:02:33 = 2分33秒
  • 计时值:
    3h = 3小时
    45min = 45分
    30s = 30秒
    5ms = 5毫秒


有n位的一个小数表示下列值:

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
在元素的实际开始处产生此事件。
用法举例:begin="id(x)(begin)"
clock-val
当与某元素相关联的时钟到达某个特定值时产生此事件。这个时钟在元素实际开始时从0开始。对于“par”和“seq”元素,此时钟给出了从元素实际开始计起的演示时间。对于媒体对象元素,它的语义与实现相关。可以给出从元素实际开始时计起的演示时间,也可以给出对象的媒体时间。后者可因显示时延或网络时延等原因不同于对象开始显示后所经过的演示时间。后者是推荐的方法。
使用超出产生此事件的元素的实际时长的时钟值是一个错误。

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

end
在元素的实际结束处产生此事件。
用法举例:begin="id(x)(end)"

元素内容

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”元素的子元素构成一个时间序列。

属性

“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”属性,且其属性值是一个有意义的描述。创作工具应该保证SMIL文件中引入的每一个元素都具有此属性。

元素内容

“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,texttextstream元素

媒体对象元素允许在SMIL演示中包括进媒体对象。媒体对象通过引用包含(用URI)。

有两类媒体对象:有时长概念的媒体对象(如视频,音频)(也称为“连续媒体”)和没有时长概念的媒体对象(如文本,图像)(也称为“离散媒体”)。

可以给可视媒体对象,即显示在可视抽象表示面上的媒体对象,加上链接,也可以将其作为链接的终点。

播放器在回放媒体对象时,绝不能从媒体对象元素的名字推断其实际类型。它必须完全依赖于其他有关类型的信息,如type属性中包含的类型信息或由服务器或操作系统给出的类型信息。

然而创作者应该确保元素名字反映出了媒体对象所属的组(animation,audio,img,video,text或textstream)。这是为了增加SMIL文件的可读性。当作者不确定应属于哪一组时,他应该使用通用的“ref”元素。

元素属性

媒体对象元素可以有下列属性:

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帧的差别的处理是跳掉每分钟的头两帧(索引为00和01),为10整数倍的分钟除外。
smpte-25
时间值的“frames”域可以取值0到24。

时间值的格式为时:分:秒:帧:子帧。如果帧的值为0,可以被省略。子帧以帧的百分之一为单位。
例子:
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节中定义
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”属性,且其属性值是一个有意义的描述。创作工具应该保证SMIL文件中引入的每一个元素都具有此属性。
type
用“src”属性引用的媒体对象的MIME类型。

元素内容

媒体对象元素可以包含下列元素:

anchor
4.5.2节中定义

4.2.4 SMIL时间模型

4.2.4.1 时间模型中的各个值

在下面的讨论中,术语“元素”仅指同步元素。

对于每一个元素我们定义其隐式,显式,期望和实际的开始,时长和结束。

实际开始/时长/结束指文件读者的实际所见。

隐式,显式和期望值是用于定义实际值的辅助值。

计算元素的各个定义在SMIL 1.0中的值的规则在下一节中描述。

  1. SMIL中的每个元素都有一个隐式开始
  2. 通过给元素加上“begin”属性可以给每个元素指定一个显式开始

    begin = "显式开始的值"

    如果元素的显式开始早于隐式开始,是一个错误。

  3. SMIL的每一个元素有一个隐式开始
  4. 通过给元素加上“end”属性可以给每个元素指定一个显式结束

    end = "显式结束的值"

  5. 元素的隐式时长是隐式结束和隐式开始间的差值。
  6. 通过给元素加上“dur”属性可以给每个元素指定一个显式时长

    dur = "显式时长的值"

  7. 如果给出了显式开始的话,元素的期望开始等于显式开始,否则期望开始等于隐式开始。
  8. 每个元素有一个期望结束
  9. 元素的期望时长是期望结束和期望开始间的差值。
  10. 每个元素有一个实际开始
  11. 每个元素有一个实际结束。(注意:子元素的实际结束不能晚于父元素的实际结束。)
  12. 元素的实际时长是实际结束和实际开始间的差值。
4.2.4.2 确定SMIL 1.0元素的各个时间模型值

本节定义了在没有被4.2.4.1节中的规则所包括的情况下,如何计算SMIL 1.0的同步元素的时间模型值。

确定元素的隐式开始

  • “body”元素第一个子元素的隐式开始是文件开始播放的时间。这个时间的具体含义超出了本文档的范围。
  • “par”元素的子元素的隐式开始等于“par”元素的实际开始。
  • “seq”元素第一个子元素的隐式开始等于“seq”元素的实际开始。
  • “seq”元素的其他任何子元素的隐式开始等于“seq”元素中前一个子元素的期望结束时间。

确定元素的隐式结束

使用第一个与元素相匹配的描述:

  • 如果一个元素有一个取值为“indefinite”的“repeat”属性,此元素的隐式结束紧跟它的实际开始。
  • 如果一个元素有一个取值不同于“indefinite”的“repeat”属性,此元素的隐式结束相当于一个seq元素的隐式结束,该seq元素包含有所述数量的去掉“repeat”属性的此元素作为子元素。
  • 引用连续媒体对象的媒体对象元素的隐式结束等于元素的实际开始加上此媒体对象的真正时长。
  • 引用文本和图像等离散媒体对象的媒体对象元素的隐式结束紧跟它的实际开始。
  • “seq”元素的隐式结束等于它最后一个子元素的期望结束。
  • “par”元素的隐式结束与“endsync”属性的取值有关,其隐式结束等于“par”元素的实际开始加上隐式时长。隐式时长可以如下导出:
    • 如果“endsync”属性的值是“last”,或者没有“endsync”属性,“par”元素的隐式时长是其子元素的期望时长的最大值。
    • 如果“endsync”的值是“first”,“par”元素的隐式时长是其子元素的期望时长的最小值。
    • 如果“endsync”的值是一个标识引用,“par”元素的隐式时长等于所引用的子元素的期望时长。

确定元素的期望结束

  • 如果元素既有显式时长和显式结束,期望结束是下列值中的最小值:
    • 期望开始和显式时长的和
    • 显式结束
  • 如果元素有显式时长但没有显式结束,期望结束是期望开始和显式时长的和。
  • 如果元素有显式结束但没有显式时长,期望结束等于显式结束。
  • 否则,期望结束等于隐式结束。

确定元素的期望开始

元素的期望开始由4.2.4.1节中的规则7确定。

确定元素的实际开始

元素的实际开始等于元素的期望开始,除非其父元素的实际结束早于此期望开始,在这种情况下,此元素不被显示。

确定元素的实际结束

  • body元素最后一个子元素的实际结束与播放器有关。实际结束至少不早于期望结束,但晚多长与实现相关。
  • “par”元素的子元素的实际结束可以如下导出:
    • 如果子元素有“fill”属性,且其值为“freeze”,此子元素的实际结束等于父元素的实际结束。
      此子元素的最后状态保留在屏幕上,直到此子元素的实际结束。
    • 如果子元素有“fill”属性,且其值为“remove”,此子元素的实际结束是父元素实际结束和此子元素期望结束中的最小值。
    • 如果子元素没有“fill”属性,此子元素的实际结束取决于它是否有一个显式时长或显式结束。
      • 如果此子元素有显式时长或显式结束,那么它被看成具有值为“remove”的“fill”属性,实际结束依此而定。
      • 如果此元素既没有显式时长,也没有显式结束,那么它被看成具有值为“freeze”的“fill”属性,实际结束依此而定。
  • “seq”元素最后一个子元素的实际结束的确定方法与“par”元素最后一个子元素的实际结束的确定方法相同。
  • 任何其他“seq”的子元素可以如下得出:
    • 如果此子元素有“fill”属性,且其值为“freeze”,它的实际结束等于下一个元素的实际开始。
    • 如果此子元素有“fill”属性,且其值为“remove”,它的实际结束是下一个元素的实际开始和下一个子元素的期望结束两者中的最小值。
    • 如果子元素没有“fill”属性,子元素的实际结束取决于此子元素是否有显式时长或显式结束。
      • 如果此子元素有显式时长或显式结束,那么它被看成具有值为“remove”的“fill”属性,实际结束依此而定。
      • 如果此子元素既没有显式时长,也没有显式结束,那么它被看成具有值为“freeze”的“fill”属性,实际结束依此而定。

4.3 switch元素

switch元素允许创作者规定一个可选的元素集合,只能从中选取一个可接受的元素。当一个元素是一个SMIL 1.0元素,它的媒体类型可以被解码,并且它所有的检测属性(参见4.4节)都得出值“true”时,称此元素是可接受的。

选择元素的过程如下:播放器依它们在switch元素中出现的次序逐个计算这些元素,选择第一个可接受的元素,其余元素被摈弃。

因此,作者应该按期望值从高到低排序这些可选元素。另外,作者应该在“switch”元素的最后放置一个相对保险的元素以保证<switch>中至少有一个元素会被选中(除非明确不想要)。在所有元素的检测属性都失败时,实现不应任意挑选<switch>中的一个对象。

注意http URI提供了内容协商机制,在某些情况下可以用于替代“switch”元素。

属性

“switch”元素可以有下列属性:

id
第2节中定义
title
3.3.1节中定义。
强烈建议所有的“switch”元素都有“title”属性,且其属性值是一个有意义的描述。创作工具应该保证SMIL文件中引入的每一个元素都具有此属性。

元素内容

如果“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”时,结果为“true”。其值为“off”时,结果为“false”。
system-language
此属性是一个以逗号分隔的语言名的列表,语言名在[RFC1766]中定义。

如果用户喜好中指出的语言之一正好等于此参数中给出的一种语言,或者用户喜好中指出的语言之一正好等于此参数中给出的一种语言的前缀而此前缀后的第一个字母是“-”,结果为“true”。

否则结果为“false”。

注意:这种前缀匹配规则的使用并不意味着语言标签的指定方式使得下述情况总是成立:当用户理解以某个标签表示的语言时,他也能理解所有以此标签作为前缀的语言。

前缀规则仅是允许了在出现这种情况时前缀标签的使用。

实现注意事项:当允许用户选择语言喜好时,实现者应该考虑到用户不熟悉上述语言匹配的细节,因而应该提供适当的引导。举例来说,用户也许会认为选择“en-gb”时,当英国英语不可用时,他们会得到另外某种英语。用户喜好设置的用户界面应该引导用户加上“en”以得到最好的匹配行为。

试图面向多种语言观众的内容可以列出多种语言。例如,播放同时显示原版毛利语和英语的“Treaty of Waitangi”时,可以用:

 

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

但是,仅仅因为有system-language检测属性的对象中有多种语言并不能说明它是面向多种语言观众的。例如一个初学者的识字课本,如“A First Lesson in Latin”,它显然是面向英语观众的。在这种情况下,system-language检测属性应该只包括“en”。

创作者注意事项:创作者应该意识到如果“switch”中包含了多种可选语言对象而无一匹配时,可能会导致播放的视频不伴随任何音轨的情况。因此建议在这样的switch的最后包括一个“保险”选择,此选择在任何情况下都是可接受的。

system-overdub-or-caption
此属性作为一个设置,确定如果可选的话,用户喜好配音还是字幕。此属性可以有值“caption”和“overdub”。如果用户喜好匹配此属性值,结果为“true”。如果不匹配的话结果为“false”。
system-required
此属性指定了一个扩展的名字。如果具体实现支持此扩展,结果为“true”,否则结果为“false”。在SMIL的未来版本中,此属性会是一个XML名字空间[NAMESPACES]
system-screen-size
其值有如下的语法:
screen-size-val ::= screen-height"X"screen-width
各个值是象素值,而且必须是一个大于0的整数。如果SMIL回放引擎能够以给定的大小播放,结果为“true”。如果SMIL回放引擎只能在更小的尺寸播放,结果为“false”。
system-screen-depth
此属性以位为单位规定了显示某元素所需的屏幕调色板的深度。属性值必须大于0。典型的值有1,8,24...。如果SMIL回放引擎能够以给定的深度播放图像或视频,结果为“true”。如果SMIL回放引擎只能在更小的深度播放,结果为“false”。

例子

1) 在不同的比特率中选择

通常情况下,实现可能希望允许通过使用“system-bitrate”参数来选择不同的元素。媒体播放器每次查看一个“选择”(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中的所有链接由用户激活。

内嵌文件中的链接的处理

由于其合成性,SMIL文件的演示可能会涉及其他(非SMIL)应用和插件。例如,SMIL浏览器可能会使用一个HTML插件去显示内嵌的HTML页。反过来,HTML浏览器可能会用一个SMIL插件显示HTML页中内嵌的SMIL文件。

在这样的演示中,可以在文件不同的层次定义链接,有可能会产生冲突。在这种情况下,包含文件中定义的链接优先于内嵌对象中定义的联接。注意因为这可能会要求浏览器和插件间的通信,SMIL的实现可能选择不遵循本规范。

如果链接在内嵌的SMIL文件中定义,此链接只影响这个内嵌的SMIL文件。

如果链接在SMIL文件中内嵌的非SMIL文件中定义,链接只影响内嵌文件的播放而不影响SMIL包含文件的播放。此限制在以后的SMIL版本中可能会取消。

寻址

SMIL支持命名片断标识符和'#'连接符。这意味着SMIL支持当前在HTML中使用的定位符(例如,它使用“http://foo.com/some/path#anchor1”形式的定位符)。

连接到SMIL片断

指向SMIL文件的定位符可以包含片断部分(例如,http://www.w3.org/test.smi#par1)。片断部分是一个标识符值,标识了所引用的SMIL文件中的一个元素。如果激活一个包含了片断部分的链接,演示应该从片断所指元素的实际开始那儿开始播放,就如同是将目标文件快进到那儿一样。

可能发生下列特殊情况:

  1. 链接所指的元素有“repeat”属性。
    1. 如果“repeat”属性的值是N,播放N次此元素。
    2. 如果“repeat”属性的值是“indefinite”,回放的结束由针对“indefinite”重复值定义的规则决定。
  2. 链接所指元素被包含在另一个有“repeat”属性的元素中。
    1. 如果“repeat”属性的值是N,回放在链接所指元素的开头开始,然后重复播放N-1次包含“repeat”属性的元素。
    2. 如果“repeat”属性的值是“indefinite”,回放在链接所指元素的开头开始。回放的结束由针对“indefinite”重复值定义的规则决定。
  3. 链接所指元素是一个“switch”元素的内容:不允许链接所指元素为“switch”元素的内容。

4.5.1 a元素

“a”元素的功能与HTML 4.0[HTML40]中“a”元素的功能非常相似。SMIL增加了一个属性“show”用于在激活链接时控制源的时序行为。出于同步的考虑,“a”元素是透明的,即,它不影响它的子元素的同步。“a”元素不应该嵌套。“a”元素必须有href属性。

属性

“a”元素可以有下列属性:

id
第2节中定义
href
此属性包含了链接终点的URI。
“href”属性是“a”元素必需的。
show
此元素在激活链接时,控制包含此链接的源文件的行为。它可以有下列值:
  • “replace”: 当前的演示暂停在当前状态,被链接终点的资源所代替。如果播放器提供了一种历史记录机制,当用户返回到源文件时,源演示从暂停的状态恢复播放。
  • “new”:目的资源的播放在一个新的上下文中开始,不影响源资源。
  • “pause”:当前的演示暂停在当前状态,目的资源在一个新的上下文中开始。当目的资源的显示结束后,源演示从暂停的状态恢复播放。

“show”的缺省值是“replace”。

title
3.3.1节中定义
强烈建议所有的“a”元素都有“title”属性,且其属性值是一个有意义的描述。创作工具应该保证SMIL文件中引入的每一个元素都具有此属性。

元素内容

“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>

例子中的第二行可以替换成指向任何有效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中的image map已经说明了将链接与一个对象的空间局部相关联是有用的。anchor元素为SMIL实现了类似的功能:

  1. anchor使用的“href”属性允许以媒体对象的空间和时间局部作为链接的终点。(相比之下,“a”元素只允许将链接和完整的媒体对象相关联)。
  2. anchor元素用“id”属性将媒体对象的局部作为链接的终点。
  3. anchor元素允许用“coords”将对象分成空间局部。
  4. anchor元素允许用“begin”和“end”属性将对象分成时间局部。begin和end属性的值相对于媒体对象的开始。

属性

“anchor”元素可以有下列属性:

begin
4.2.1节中定义
coords
此属性在一个可视媒体对象的演示区域定义了一个矩形。如果链接与一个矩形区域相关联,此属性的语法和语义类似于HTML中image map的coords属性。矩形用四个长度值来说明:头两个值说明了矩形左上角的坐标。后两个值说明了矩形右下角的坐标。坐标值相对于可视媒体对象的左上角(参见图4.5)。如果坐标以百分数的形式给出,则是相对于媒体对象显示区域的整个宽和高而言。
包含错误坐标的属性被忽略(right-x小于或等于left-x,bottom-y小于或等于top-y)。如果坐标值定义的矩形超出了媒体对象覆盖的范围,超出的宽度和高度在媒体对象的边界被切去。
coords属性值的语法如下:
 
coords-value ::= left-x "," top-y "," right-x "," bottom-y

 


semantics of coords attribute D

 


图4.5: “coords”属性的语义

end
4.2.1节中定义
id
第2节中定义
show
4.5.1节中定义
skip-content
3.3.1节中定义
title
3.3.1节中定义
强烈建议所有的“anchor”元素都有“title”属性,且其属性值是一个有意义的描述。创作工具应该保证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可以包括一个可选文件类型声明用于指出此文件所用的文件类型定义(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

<!--

    This is the XML document type definition (DTD) for SMIL 1.0.

    Date: 1998/06/15 08:56:30

    Authors: 
        Jacco van Ossenbruggen <jrvosse@cwi.nl> 
        Sjoerd Mullender       <sjoerd@cwi.nl>
        
    Further information about SMIL is available at:

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

-->

<!-- Generally useful entities -->
<!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 Document =====================================-->
<!--
     The root element SMIL contains all other elements.
-->
<!ELEMENT smil (head?,body?)>
<!ATTLIST smil
        %id-attr;
>

<!--=================== The Document Head =================================-->
<!ENTITY % layout-section "layout|switch">

<!ENTITY % head-element "(meta*,((%layout-section;), meta*))?">

<!ELEMENT head %head-element;>
<!ATTLIST head %id-attr;>


<!--=================== Layout Element ====================================-->
<!--
     Layout contains the region and root-layout elements defined by
     smil-basic-layout or other elements defined an external layout 
     mechanism.
-->
<!ELEMENT layout ANY>
<!ATTLIST layout
        %id-attr;
        type CDATA      "text/smil-basic-layout"
>


<!--=================== Region Element ===================================-->
<!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 ================================-->
<!ELEMENT root-layout EMPTY>
<!ATTLIST root-layout
        %id-attr;
        %title-attr;
        %viewport-attrs;
        %skip-attr;
>


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

<!--=================== The Document Body =================================-->
<!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;>

<!--=================== Synchronization Attributes ========================-->
<!ENTITY % sync-attributes "
        begin   CDATA   #IMPLIED
        end     CDATA   #IMPLIED
">

<!--=================== Switch Parameter Attributes =======================-->
<!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 Attribute ====================================-->
<!ENTITY % fill-attribute "
        fill    (remove|freeze)    'remove'
">


<!--=================== The Parallel Element ==============================-->
<!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;
>

<!--=================== The Sequential Element ============================-->
<!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;
>

<!--=================== The Switch Element ================================-->
<!-- In the head, a switch may contain only layout elements,
     in the body, only container elements. However, this
     constraint cannot be expressed in the DTD (?), so
     we allow both:
-->
<!ENTITY % switch-content "layout|(%container-content;)">
<!ELEMENT switch (%switch-content;)*>
<!ATTLIST switch
        %id-attr;
        %title-attr;
>

<!--=================== Media Object Elements =============================-->
<!-- SMIL only defines the structure. The real media data is
     referenced by the src attribute of the media objects.
-->

<!-- Furthermore, they have the following attributes as defined
     in the SMIL specification:
-->
<!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;
">

<!--
     Most info is in the attributes, media objects are empty or
     contain associated link elements:
-->
<!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;>

<!--=================== Link Elements =====================================-->

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


<!--=================== Inline Link Element ===============================-->
<!ELEMENT a (%schedule;|switch)*>
<!ATTLIST a
        %smil-link-attributes;
>


<!--=================== Associated Link Element ===========================-->
<!ELEMENT anchor EMPTY>
<!ATTLIST anchor
        %skip-attr;
        %smil-link-attributes;
        %sync-attributes;
        coords          CDATA                   #IMPLIED
>

参考文献

[CSS2]
"Cascading Style Sheets, level 2", B. Bos, H. Lie, C. Lilley, I. Jacobs, 12 May 1998.
Available at http://www.w3.org/TR/REC-CSS2/.
[HTML40]
"HTML 4.0 Specification", D. Raggett, A. Le Hors, I. Jacobs, 24 April 1998.
Available at http://www.w3.org/TR/REC-html40.
[ISO/IEC 10646]
ISO (International Organization for Standardization). ISO/IEC 10646-1993 (E). Information technology -- Universal Multiple-Octet Coded Character Set (UCS) -- Part 1: Architecture and Basic Multilingual Plane. [Geneva]: International Organization for Standardization, 1993 (plus amendments AM 1 through AM 7).
[NAMESPACES]
"Namespaces in XML", T. Bray, D. Hollander, A. Layman, 27 March 1998
W3C working draft. Available at http://www.w3.org/TR/WD-xml-names.
[PICS]
"PICS 1.1 Label Distribution -- Label Syntax and Communication Protocols", 31 October 1996, T. Krauskopf, J. Miller, P. Resnick, W. Trees
Available at http://www.w3.org/TR/REC-PICS-labels-961031
[RFC1738]
"Uniform Resource Locators", T. Berners-Lee, L. Masinter, and M. McCahill, December 1994.
Available at ftp://ftp.isi.edu/in-notes/rfc1738.txt.
[RFC1766]
"Tags for the Identification of Languages", H. Alvestrand, March 1995.
Available at ftp://ftp.isi.edu/in-notes/rfc1766.txt.
[RFC1808]
"Relative Uniform Resource Locators", R. Fielding, June 1995.
Available at ftp://ftp.isi.edu/in-notes/rfc1808.txt.
[RFC2045]
"Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies", N. Freed and N. Borenstein, November 1996.
Available at ftp://ftp.isi.edu/in-notes/rfc2045.txt. Note that this RFC obsoletes RFC1521, RFC1522, and RFC1590.
[SMPTE]
"Time and Control Codes for 24, 25 or 30 Frame-Per-Second Motion-Picture Systems - RP 136-1995".  Society of Motion Picture & Television Engineers.
[URI]
"Uniform Resource Identifiers (URI): Generic Syntax and Semantics", T. Berners-Lee, R. Fielding, L. Masinter, 4 March 1998.
Available at http://www.ics.uci.edu/pub/ietf/uri/draft-fielding-uri-syntax-02.txt. This is a work in progress that is expected to update [RFC1738] and [RFC1808].
[XML10]
"Extensible Markup Language (XML) 1.0", T. Bray, J. Paoli, C.M. Sperberg-McQueen, editors, 10 February 1998.
Available at http://www.w3.org/TR/REC-xml

附录

扩展SMIL 1.0

(非正式)

SMIL 1.0可能会在将来被另一个W3C建议所扩展,或是出现专用扩展。

建议这些扩展遵循下列规则:

  • 所有在扩展中引入的元素必须有“skip-content”属性(在3.3.1节中定义),如果它们的内容有可能被SMIL 1.0播放器处理的话。
  • 专用扩展必须用XML名字空间规范的语法引入。

建议SMIL 1.0播放器应准备好处理包含遵循这两个规则的扩展的文件。

一旦XML名字空间机制成为W3C建议,扩展应该用此机制处理。在本节的余下部分,W3C记录[NAMESPACE]中定义的XML名字空间的语法和语义只用于说明性的目的。

可能会出现下列情况:

  1. 文件中包含SMIL 1.0规范的名字空间声明,定义了一个空前缀。在这种情况下,非SMIL 1.0元素和属性只在声明为使用XML名字空间时才能出现在文件中。文件不应包含SMIL 1.0的文件类型声明。如果它包含了,那么它是无效的。
    下面的例子中,元素“new:a”是一个合法的扩展。元素“mytags:a”和“b”是语法错误,因为它们没有使用XML名字空间声明。
    <?xml:namespace ns="http://www.acme.com/new-smil" prefix="new" ?>
    <?xml:namespace ns="http://www.w3.org/TR/PR-smil" ?>
    <smil>
      <body>
        <par>
          <new:a>
          ...
          </new:a>
          <mytags:a ... />
            ...
          </mytags:a>
          <b>
           ...
          </b>
        </par>
       </body>
     </smil>
    
  2. 文件不包括文件类型声明,或是它包含高于版本1的SMIL文件类型声明,或是它包含高于版本1的SMIL规范的名字空间声明。为了能使SMIL 1.0播放器能够识别这样一个名字空间声明,建议未来SMIL版本的URI以http://www.w3.org/TR/REC-smil开头,后跟更多的字符,如版本号。
    在这种情况下,SMIL 1.0播放器应该假设它在处理一个版本高于1.0的SMIL文件。
    可能发生下列情况:
    未知元素
    未知元素被忽略
    未知元素可能包含由SMIL 1.0元素组成的内容。这样的内容是否被忽略取决于“skip-content”属性的值。如果属性被设为“true”,或是没有此属性,内容被忽略。如果它被设为“false”,内容被处理。
    元素内容被声明为“empty”
    未来版本的SMIL也许会允许SMIL 1.0中声明为“empty”的元素包含内容。
    这样的内容是否被忽略取决于原为空元素的元素中“skip-content”属性的值。如果属性被设为“true”,内容不被处理。如果它被设为“false”,内容被处理。
    未知属性
    未知属性被忽略
    未知属性值
    包含未知属性值的属性被忽略。
  3. 文件包含一个SMIL 1.0文件类型声明。在这种情况下,它不应包含任何非SMIL 1.0的元素,即使它们被声明为使用XML名字空间。这是因为这些扩展可能会使文件无效。

将SMIL 1.0作为扩展使用

当XML名字空间机制被用于包含其他基于XML的文件中的SMIL元素和属性时,建议使用下面的名字空间标识符:http://www.w3.org/TR/REC-smil

 

 
All contents copyright ? Los Angeles Chinese Learning Center, unless otherwise noted. Website Hosting and Promotion  Cortiloss, Cortislim, Enzyte, Ogoplex, 5 HTP, Chitosan, Stacker 2, Stacker 3, Stamina, Zantrex