Synchronized Multimedia Integration Language (SMIL) 1.0
Specification
한글 번역판
- 이 문서의 원본 URL은
http://www.w3.org/TR/1998/REC-smil-19980615이며,
월드와이드웹컨소시엄(W3C)의 멀티미디어 동기화 작업집단(Synchronized
Multimedia Working Group)에 의해 작성되어 현재 W3C의 권고안 (Recommendation)으로서의 지위를 갖고 있다.
이 문서 원본에 대한 저작권은 월드와이드웹컨소시엄에 있다.
- 이 표준의 공식적인 문서는 월드와이드웹컨소시엄 사이트에 있는 영문판이다.
- 번역판은 번역 과정에서 발생한 오류를 포함할 수 있다.
- (주)멘탈링크가 제공하고 있는 SMIL 한글판은 국내의 어떤
표준관련기구와도 관련이 없다.
- (주)멘탈링크가 제공하고 있는 SMIL 한글판의 저작권은
월드와이드웹컨소시엄의 문서저작권 및 번역 관련 규정을 따른다.
REC-smil-19980615
동기화 멀티미디어 통합 언어
(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
-
Copyright © 1998 W3C (MIT,
INRIA, Keio),
모든 권리는 제한되어 있다. W3C의
책임,
등록상표,
문서 사용 그리고
소프트웨어 면허(lincense)
규정이 적용된다. 이 사이트와의 상호활동은 우리의
공개 그리고
회원
개인정보보호에 대한 언급에 따른다.
이 문서에 대하여
이 문서는 월드와이드웹 컨소시엄의 멀티미디어 동기화 작업집단(WG)이 작성하였다. 작업집단은 다음의 개인을 포함한다:
- 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ïa, 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üst (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)
개요
이 문서는 동기화 멀티미디어 통합 언어 (SMIL 1.0, "smile"로 발음한다.) 제 1판을 설명하고 있다. SMIL은 일련의 개별적
멀티미디어 객체를 동기화된 멀티미디어 표현(presentaion)으로 통합할 수 있도록 한다. SMIL을 사용하여 다음을 할 수 있다.
- 표현의 시간적 행동을 기술한다.
- 화면상에서 표현의 배치를 기술한다.
- 하이퍼링크를 미디어 객체와 결합한다.
이 명세서의 구조는 다음과 같다: 1절은 명세서의 접근방식을 나타낸다. 2절은 "smil" 원소를 정의한다. 3절은 SMIL 문서의
머리말에 포함할 수 있는 원소들을 정의한다. 4절은 SMIL 문서의 몸말에 포함할 수 있는 원소들을 정의한다. 특히 이 절에서는 SMIL에서
사용하는 시간 모델을 정의한다. 5절은 SMIL DTD를 서술한다.
이 문서의 지위
이 문서는 W3C의 권고안으로서 W3C 회원들 및 관계가 있는 다른 모임들이 검토하였고, 감독자가 추천하는 것이다. 이것은 안정된 문서
문서이고, 다른 문서에서 참조하거나 표준적인 참조로 인용할 수 있다. 권고안을 제작에서 W3C의 역할은 명세서에 대한 관심을 끌어내고 그것의
넓은 확산을 촉진 하는 것이다. 이것은 웹의 기능성과 상호운용성을 높인다.
이 권고안에 대한 평은 공개 메일링
리스트 www-smil@w3.org로 보낼 수 있다.
이용할 수 있는 언어
이 명세서의 영어판만이 표준판이다. 하지만, 다른 언어로 번역을 하려면
http://www.w3.org/AudioVideo/SMIL/translations 을 보라.
오류
이 명세서의 알려진 오류 목록은
http://www.w3.org/AudioVideo/SMIL/errata 에 있다.
차례
SMIL 문서는 XML 1.0 문서이다
[XML10]. 독자는 XML 1.0이 정의한 개념과 용어에 익숙할 필요가 있다.
이 명세서는 URN을 사용하여 표현할 수 없을 가능성이 있는 URL에 정의된 특별한 특징에 의존하지 않는다. 따라서, 명세서 전체에 걸쳐
더 일반적인 용어 URI [URI] 를 사용한다.
SMIL 문서의 구문은 5.2절의 DTD에 정의되어
있다. DTD 개념을 사용하여 정의할 수 없는 속성 값은, 그 값을 포함할 수 있는 속성을 사용하는 첫 원소와 함께 정의한다. 그러한 속성 값은
XML 1.0 명세서에 정의된 Extentded Backus-Naur Form(EBNF)을 사용하여 정의한다.
원소 정의의 구조는 다음과 같다: 첫째, 원소의 모든 속성은 알파벳 순서로 정의한다. 속성은 다음과 같이 정의한다: 속성이 명세서의 어떤
원소에서 처음 사용되었다면, 그 원소의 의미는 정의된다. 그 속성이 이미 다른 원소에서 사용되었다면, 명세서는 그것을 사용하는 최초의 원소에
있는 그 속성의 정의를 참조한다. 원소 속성의 정의 다음에는 DTD 개념을 사용하여 구문을 정의할 수 없는 모든 속성 값의 정의가 온다. 원소
정의의 마지막 절은 원소의 내용을 밝힌다.
원소 속성
"smil" 원소는 다음의 속성을 가질 수 있다:
- id
- 이 속성은 문서내의 원소를 고유하게 식별한다. 이것의 값은 XML 식별자이다.
원소 내용
"smil" 원소는 다음의 자식을 가질 수 있다:
- body
- 4.1절에서 정의됨
- head
- 3.1절에서 정의됨
3.1 head
원소
"head" 원소는 표현의 시간적 동작과 관련이 없는 정보를 갖는다.
원소 속성
"head" 원소는 다음의 속성을 가질 수 있다:
- id
- 2절에서 정의됨
원소 내용
"head" 원소는 다음의 자식을 가질 수 있다:
- layout
- 3.2절에서 정의됨
- meta
- 3.4에서 정의됨
- switch
- 4.3에서 정의됨
"head" 원소는 "meta" 원소를 무제한으로 포함할 수 있고, "layout" 원소와 "switch" 원소의 하나를 포함할 수 있다.
3.2layout 원소
"layout" 원소는 문서의 몸말에 있는 원소들이 어떻게 추상적 출력 표면 (시각적 또는 청각적)에 위치할 것인가를 결정한다.
만약 문서가 layout 원소를 갖고 있지 않다면, 몸말 원소의 위치는 구현 나름이다.
SMIL 문서는 "switch" 원소 ( 4.3절에서
정의됨)내에 몇개의 layout 원소로 둘러싼 대체 가능한 다수의 배치를 포함할 수 있다. 이것은 다른 배치 언어를 사용하는, 문서의 배치를
서술하는 예시를 위해 사용할 수 있다.
다음의 예는 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-bisic-layout"이다.
원소 내용
만약 layout 원소의 type 속성이 "text/smil-basic-layout" 값을 가지면, 그것은 다음의 원소를 포함할 수 있다:
- region
- 3.3.1절에 정의됨
- root-layout
- 3.3.2절에 정의됨
만약 "layout" 원소의 type 속성이 다른 값을 갖는 다면, 원소는 문자 데이터를 포함한다.
이 절은 SMIL의 기본배치언어를 정의한다. SMIL 기본배치언어는 CSS2에 정의된 시각적 출력 모델과 일치하고, CSS2 명세서가
정의하는 형식 특성을 재사용하며, 새롭게 "fit" 속성을 도입하였다[CSS2].
독자는 CSS2가 정의한 개념과 용어에 익숙할 필요가 있다.
SML 기본배치는 매체 객체 원소 (4.2.3절에
정의됨)의 배치만을 제어한다. SMIL 기본배치를 SMIL의 다른 원소에 사용하는 것은 허용되지 않는다.
SMIL 기본배치의 형 식별자는 "text/smil-basic-layout"이다.
고정된 특성 값
다음은 스타일쉬트는 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}
이 정의의 결과로, 절대적으로 자리잡힌 모든 원소는 하나의 단일한 블럭안에 포함되며, 이 블럭은 뿌리 원소(smil)의 내용 테두리로
정의된다.
기본 값
SMIL 기본배치는 모든 배치관련 속성에 대해 기본 값을 정의한다. 이것은 CSS2에 있는 대응하는 특성의 초기 값과 일치한다.
만약 저작자가 문서의 모든 매체 객체 원소에 대해 기본 배치 값을 선택하고자 한다면, 문서는 type 속성의 값을
"text/smil-basic-layout"로 하는 빈 layout 원소를 포함하여야 한다. 예는 다음과 같다: :
<layout type="text/smil-basic-layout"></layout>
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
- 이 속성의 사용과 정의는 CSS2 명세서의 "background-color" 특성과 같지만, SMIL 기본배치언어는 "system
color"에 대한 지원을 필요로 하지 않는다는 것이 예외다.
만약 background-color 속성이 없다면 배경은 투명한다.
- fit
- 이 속성은 시각적 매체객체의 고유한 높이과 넓이가 "region" 원소의 속성이 밝히고 있는 높이와 넓이하고 다를 경우, 동작에 대해
밝히고 있다. 이 속성은 CSS2 특성과 1-1 대응하지는 않지만, CSS2로 흉내낼 수 있다.
이 속성은 다음의 값을 가질 수 있다:
- fill
- 객체의 높이와 넓이를 독립적으로 배율을 조정하여 내용이 박스의 테두리에 딱 맞도록 한다.
- hidden
-
- 만약 매체객체의 고유한 높이(넓이)가 "region" 원소에 정의된 높이(넓이) 보다 작으면, 객체를 위쪽(왼쪽) 테두리로부터
시작하여 출력하고 나머지 높이(넓이)를 배경색으로 채운다.
- 만약 매체객체의 고유한 높이(넓이)가 "region" 원소에 정의된 높이(넓이) 보다 크면, 객체를 위쪽(왼쪽) 테두리로부터
시작하여 "region" 원소에 정의된 높이(넓이)에 닿을 때까지 출력하고 높이(넓이)의 아래(오른쪽 바깥)부분은 잘라낸다.
- meet
- 시각적 매체를 그것의 가로세로 비율을 유지하면서 높이 또는 넓이가 height 또는 width 속성의 값에서 밝힌 값과 같을
때까지 배율을 조정하여, 잘리는 내용이 없도록 한다. 객체의 왼-위쪽 모서리가 박스의 위-왼쪽 좌표에 자리잡도록 하고, 오른쪽 또는
밑쪽의 빈 공간은 배경색으로 채운다.
- scroll
- 두루마리 방식은 원소의 출력된 내용이 그것의 경계를 넘어설 때 사용한다.
- slice
- 시각적 매체객체를 그것의 가로세로 비율을 유지하면서 배율을 조정하여 그것의 높이 또는 넓이가 height와 width 속성의
값에서 밝힌 값과 같을 때까지 배율을 조정하여 한다. 이때, 내용의 일부가 잘릴 수도있다. 정확한 상태에 따라, 시각적 매체객체의 수평
또는 수직 조각이 표시된다. 넘어간 길이는 매체객체의 오른쪽으로부터 잘린다. 넘어간 높이는 매체객체의 아래쪽으로부터 잘린다.
"fill"의 기본 값은 "hidden"이다.
- height
- 이 속성의 사용과 정의는 CSS2 명세서에 있는 "height" 특성과 같다. 속성 값은 "percentage" 값, 그리고
CSS2에 정의된 "length" 값의 변형이 될 수 있다. "lenght" 값의 경우, SMIL 기본배치언어는 CSS2에 정의된 것처럼
픽셀 단위만을 지원한다. SMIL 기본배치언어에서 "px" 단위 수식어는 픽셀 값인 경우 생략할 수 있다(CSS2에서는 "px" 수식어가
필요하다).
- id
- 2절에 정의됨
region 원소는, 위치지정 가능한 원소의 region
속성을 region의 id 값으로 정하여, 위치지정 가능한 원소에 적용된다.
"region" 원소에서 "id" 속성은 필수적이다.
- 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 속성의 값은 사용자 프로그램에 의해 다양한 방식으로 출력될 수 있다.
예를 들어, 시각적인 브라우져는 title을 "tool tip"(지시 장치가 객체 위에 정지 했을 때 보이는 짧은 글)으로 표시할 수 있다.
모든 "region" 원소가 의미있는 서술을 포함한 "title" 속성을 갖도록 하는 것을 강력하게 추천한다. 저작
도구는 이 속성이 없는 원소가 SMIL 문서에 포함되지 않도록 해야한다.
- top
- 이 속성의 사용과 정의는 CSS2 명세서에 있는 "top" 특성과 같다. 속성 값은 "height" 속성의 속성 값과 같은 제한을
갖는다.
기본 값은 0이다.
- width
- 이 속성의 사용과 정의는 CSS2 명세서에 있는 "width" 특성과 같다. 속성 값은 "height" 속성의 속성 값과 같은 제한을
갖는다.
- z-index
- 이 속성의 사용과 정의는 CSS2 명세서에 있는 "z-index" 특성과 같지만, 다음의 예외가 있다:
-
- 원소 A와 B가 생성한 두 박스 가 같은 스택 수준에 있다면,
- 원소 A의 표시가 원소 B의 표시보다 늦다면, A의 박스가 B의 박스보다 위에 쌓인다(시간적 순서).
- 원소가 같은 시간에 표시되고, SMIL 문서에서 원소 A가 원소 B보다 나중에 있다면, A의 박스가 B의 박스보다 위에
쌓인다(CSS2에 정의된 문서 트리 순서).
원소 내용
"region"은 빈 원소이다.
"root-layout" 원소는 뿌리 원소의 배치 특성의 값을 결정하며, 차례로 뷰포트 즉, SMIL 표현이 출력될 창의 크기를 결정한다.
만약 문서가 하나 이상의 "root-layout" 원소를 갖는다면, 그것은 오류이며, 문서는 표시되지 않아야 한다.
원소 속성
"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 값만 허용된다.
원소 내용
"root-layout"은 빈 원소이다.
"meta"원소는 문서의 특성(즉, 저자, 만료일, 핵심어 목록 등)을 정의하고 그러한 특성에 값을 할당하는 데 사용한다. 각 "meta"
원소는 하나의 특성/값 쌍을 나타낸다.
원소 속성
"meta" 원소는 다음의 속성을 가질 수 있다:
- content
- 이 속성은 "meta" 원소에 정의된 특성의 값을 나타낸다.
"meta" 원소에서 "content" 속성은 필수적이다.
- id
- 2절에 정의됨
- name
- 이 속성은 "meta" 원소에 정의된 특성을 나타낸다.
"meta" 원소에서 "name" 속성은 필수적이다.
- skip-content
- 3.3.1절에서 정의됨
특성의 목록에는 제한이 없다. 이 명세서는 다음과 같은 특성을 정의한다:
- base
- 이 특성의 값은 문서에서 사용하는 모든 상대적 URI에 대한 기준 URI를 결정한다.
- pics-label or PICS-Label
- 이 특성의 값은 문서에 대한, PICS [PICS]가
정의한 유효한 등급 표시를 나타낸다.
- title
- 이 특성의 값은 표현의 제목을 포함한다.
원소 내용
"meta"는 빈 원소이다.
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 동기화 원소
par 원소의 자식들은 시간에서 중첩될 수 있다. par 원소 내에서 문자적으로 보이는 순서는 자식들의 표현 시점에 대해서 의미를 갖지
않는다.
원소 속성
"par" 원소는 다음과 같은 속성을 가질 수 있다:
- abstract
- 원소에 포함된 내용에 대한 간략한 서술.
- author
- 원소에 포함된 내용의 저자 이름.
- begin
- 이 속성은 원소의 명시적 시작에 대한 시간을 나타낸다. 이것의 의미론에 대해서는
4.2.4절을 보라.
이 속성은 다음 두가지 형식의 값을 가질 수 있다:
- delay-value
- 지연값은 표현 시간을 측정하는 clock-value이다. 표현 시간은 표현의 속도로 나아간다. 이것은 테이프텍크의 계수기에 있는
시간표시처럼 행동한다. 이것은 사용자의 동작이나 재생기 자체에 의해 멈추거나, 줄어들거나 늘어날 수 있다.
지연값의 의미는 그 원소의 조상 원소중 첫번째 동기화 원소(즉, "a" 또는 "switch" 원소인 조상은 무시한다)에 의존한다:
- 만약 조상이 "par" 원소라면, 지연값은 그 원소의 실제시작으로부터의 지연을 정의한다(그림 4.1을 보라).
- 만약 조상이 "seq" 원소( 4.2.2절에
정의됨)라면, 지연값은 동기화 원소중 첫번째 선행자의 실제끝으로부터의 지연을 정의한다.(그림 4.2를 보라).
- event-value
- 어떤 사건이 발생하면 원소가 시작한다(그림 4.3을 보라). 이것의 값은 element-event(아래 정의를 보라)이다.
사건을 발생시키는 원소는 반드시 "in scope"이어야 한다. "in scope" 원소의 집합 S는 다음과 같이 결정된다:
- 원소의 조상중 첫번째 동기화 원소에서 그것의 모든 자식을 구해서 S에 더한다.
- 모든 "a"와 "switch" 원소를 S에서 제거한다. 모든 "a" 원소의 자식을 S에 더하되, "switch" 원소는
제외한다.
결과로 얻어진 집합 S는 "in scope" 원소의 집합이다.
<par>
<audio id="a" begin="6s" src="audio" />
</par>
D
그림 4.1: "par" 원소에서 지연 값의 사용
<seq>
<audio src="audio1" />
<audio begin="5s" src="audio2" />
</seq>
D
그림 4.2: "seq" 원소에서 지연 값의 사용
<par>
<audio id="a" begin="6s" ... />
<img begin="id(a)(4s)" ... />
</par>
D
그림 4.3: 원소 사건 값을 가진 동기화 속성
- copyright
- 원소에 포함된 내용의 저작권 고지.
- dur
- 이 속성은 원소의 명시적 지연을 나타낸다. 이것의 의미론에 대한 정의는
4.2.4절을 보라. 이 속성의
값은 clock value 또는 문자열 "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 식별자이어야
한다. 만약 이 id를 갖는 추상적 표면이 배치 부분에 정의되어 있지 않으면, 이 원소의 형식 특성 값은 기본 배치로 결정된다.
"par" 원소의 "region" 속성은 이 명세서에 정의된 SMIL에 대한 기본배치언어에서 사용할 수 없다. 이것은 다른 배치언어에서
필요할 수도 있기 때문에, 완결성을 목적으로 추가된다.
- 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)를
보라).
D
a) 엄격한 동기화: 화상에서의 지연: 음성 또한 정지되거나, 화상의 프레임중 일부가 버려진다. 정확한 동작은 구현 나름이다.
D
b) 유연한 동기화
그림 4.4: 재생기가 서로 다른 동기화 정책을 사용한 경우, 재생 일정에 지연이 미치는 영향
속성 값
- clock value
- 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]
다음은 적합한 clock value의 예이다:
- 완전한 clock value: 02:30:03 = 2 시간 30 분 3 초
- 부분적 clock value: 02:33 = 2 분 33초
- 시간계산 값:
3h = 3 시간
45min = 45 분
30s = 30 초
5ms = 5 밀리세컨드
분수 x분의 n 자리수는 다음 값을 나타낸다:
x * 1/10**n
예:
00.5s = 5 * 1/10 초 = 500 밀리세컨드
00:00.005 = 5 * 1/1000 초 = 5 밀리세컨드
- element-event value
- element event value는 특정한 동기화 원소의 사건을 나타낸다.
element event는 다음의 구문을 갖는다:
-
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" 원소에서, 시계는 원소의 실제 시작으로부터 경과된 표현 시간을 나타낸다. 매체 객체 원소에 대해, 이것의 의미론은
구현하기 나름이다. 시계는 실제 시작으로부터 경과된 표현 시간을 나타낼 수도 있고, 객체의 매체 시간을 나타낼 수도 있다. 후자는 출력
또는 회선의 지체로 하여, 객체가 표시되기 시작한 다음으로부터 경과된 표현 시간과는 다를 수도 있으며, 추천하는 접근 방식이다.
사건을 발생시키는 원소의 실제 지속기간 값을 초과한 clock value를 사용하는 것은 오류이다.
사용 예: 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 원소의 직접한 자식으로 여러번 나타날 수 있다.
"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절에 정의됨
"seq" 원소의 region 속성은 이 명세서에 정의된 SMIL에 대한 기본배치언어에서 사용할 수 없다. 이것은 다른 배치언어에서 필요할
수도 있기 때문에, 완결성을 목적으로 추가된다.
- 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 매체 객체 원소: ref, animation
,
audio,img, video,text, textstream
원소
매체 객체 원소는 SMIL 표현에 매체 객체를 포함할 수 있도록 한다. 매체 객체는 참조(URI를 사용)를 통해 포함된다.
매체 객체에는 두가지 형식이 있다: 본질적 지속(예를 들면, 동영상, 음성)을 갖는 매체 객체("연속적 매체"라고도 한다)와 본질적
지속(예를 들면, 문자, 화상)을 갖지 않는 매체 객체("불연속적 매체"라고도 한다)가 있다.
시각적 매체 객체 즉, 시각적 추상 출력 표면에 출력되는 매체 객체에는 anchor와 link를 덧붙일 수 있다.
매체를 재생할 때, 재생기는 매체 객체의 정확한 형식을 매체 객체 원소의 이름으로 추론해서는 안된다. 대신, 그것은 오직 "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 속성은 연속적 매체 객체의 sub-clip 시작을 그 매체 객체의 시작으로부터 계산하여 나타낸다.
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 Timestamp
- SMPTE 시간 코드[SMPTE]는
프레임-수준의 접근 정확성을 위해 사용할 수 있다. 미터법 식별자는 다음의 값을 가질 수 있다:
- smpte
- smpte-30-drop
- 이 값은 초당 29.97 프레임을 갖는 "SMPTE 30 drop" 형식의 사용을 나타낸다. 시간 값의 "frame" 부분은
0부터 29의 값이라고 가정한다. 초당 30과 29.97 프레임의 차이는 매 10분을 제외한, 매 1분마다 처음 두 프레임(00과
01 값)을 제거하여 처리한다.
- smpte-25
- 시간 값의 "frame" 부분이 0부터 24의 값이라고 가정한다.
시간 값은 hours:minutes:seconds:frames.subframes의 형식을 갖는다. 만약 프레임 값이 0이면, 그것은
생략된다. subframe은 100분의 1 프레임으로 측정된다.
예:
clip-begin="smpte=10:12:33:20"
- Normal Play Time
- Normal Play Time은 시간을 SMIL 시계 값으로 표현한다. 미터법 식별자는 "npt"이고, 시간 값의 구문은 SMIL
시계 값의 구문과 같다.
예:
clip-begin="npt=123.45s"
clip-begin="npt=12:05:35.3
"
- clip-end
- clip-end 속성은 재생되어야 할 연속적 매체(음성, 동영상 또는 다른 표현같은)의 sub-clip 끝을 나타낸다. 이것은
clip-begin 속성과 같은 속성 값 구문을 사용한다.
만약 "clip-end" 속성의 값이 매체 객체의 지속을 초과하면, 그 값은 무시되고, 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절에 정의됨
다음의 논의에서, "원소"라는 용어는 오직 동기화 원소만을 언급하는 것이다.
각 원소에 대하여, 암시된, 명시된, 요구된, 실제 시작, 지속, 끝을 정의한다.
실제 시작/지속/끝은 문서의 독자가 인지하는 것을 나타낸다.
암시된, 명시된, 요구된 값은 실제 값을 정의하기 위한 보조적인 값이다.
SMIL 1.0의 정의된, 원소에 대해 이것들 각각의 값을 구하는 규칙은 다음 절에 기술되어 있다.
- SMIL의 각 원소는 암시된 시작을 갖는다.
- 각 원소에 원소의 "begin" 속성을 추가하여 명시된 시작을 부여할 수 있다:
begin = "명시된-시작의 값
"
원소의 명시된 시작이 그것의 암시된 시작보다 빠른 것은 오류이다.
- SMIL의 각 원소는 암시된 끝을 갖는다.
- 각 원소에 원소의 "end" 속성을 추가하여 명시된 끝을 부여할 수 있다:
end = "명시된-끝의 값"
- 원소의 암시된 지속은 명시된 끝과 명시된 시작의 차이다.
- 각 원소에 원소의 "dur" 속성을 추가하여 명시된 지속을 부여할 수 있다:
dur = "명시된-지속의 값"
- 원소의 요구된 시작은 명시된 시작이 있다면 그것이고, 그렇지 않다면 암시된 시작과 같다.
- 각 원소는 요구된 끝을 갖는다.
- 원소의 요구된 지속은 요구된 끝과 요구된 시작의 차이다.
- 각 원소는 실제 시작을 갖는다.
- 각 원소는 실제 끝을 갖는다. (주의: 자식 원소의 실제 끝은 절대로 그 부모 원소의 실제 끝보다 늦을 수 없다.)
- 원소의 실제 지속은 실제 끝과 실제 시작의 차이다.
이 절은 4.2.4.1절의
규칙에서 다루어지지 않은 경우, 어떻게 SMIL 1.0 동기화 원소의 시간 모델 값을 결정하는 지를 정의한다.
원소의 암시적 시작 결정
- "body" 원소의 첫 자식의 암시적 시작은 문서가 재생되기 시작할 때이다. 이때는 문서의 범위 바깥이다.
- "par" 원소의 자식의 암시적 시작은 "par" 원소의 실제 시작과 같다.
- "seq" 원소의 첫번째 자식의 암시적 시작은 "seq" 원소의 실제 시작과 같다.
- "seq" 원소의 다른 자식들의 암시적 시작은 "seq" 원소의 이전 자식의 요구된 끝 시간과 같다.
원소의 암시적 끝 결정
원소와 맞는 첫번째 기술이 적용된다:
- "repeat" 속성의 값이 "indefinite"인 원소의 암시적 끝은 그것의 실제 시작 직후이다.
- "repeat" 속성의 값이 "indefinite"가 아닌 원소의 암시적 끝은, 그 원소를 "repeat" 속성없이 언급된 수만큼
자식으로 갖는 seq 원소의 암시적 끝과 같다.
- 연속적 매체 객체를 참조하는 매체 객체 원소의 암시적 끝은 그것의 실제 시작과 그 매체 객체의 본질적 지속의 합이다.
- 문자나 화상같은 불연속적 매체 객체를 참조하는 매체 객체 원소의 암시적 끝은 그것의 실제 시작 직후이다.
- "seq" 원소의 암시적 끝은 그것의 마지막 자식의 요구된 끝과 같다.
- "par" 원소의 암시적 끝은 "endsync" 속성의 값에 따라 다르다. 암시적 끝은 "par" 원소의 실제 시작과 암시적 지속의
합인데, 암시적 지속은 다음과 같이 추론된다:
- 만약 "endsync" 속성의 값이 "last"이거나, "endsync" 속성이 없으면, "par" 원소의 암시적 지속은 자식의
요구된 지속중 최대값이다.
- 만약 "endsync" 속성이 "first"이면, "par" 원소의 암시적 지속은 자식의 요구된 지속중 최소값이다.
- 만약 "endsync" 속성의 값이 id-ref이면, "par" 원소의 암시적 지속은 "id-ref"가 참조하고 있는 자식의
요구된 지속과 같다.
원소의 요구된 끝 결정
- 만약 원소가 명시적 지속과 명시적 끝을 갖고 있으면, 요구된 끝은 다음의 최소값이다:
- 요구된 시작과 명시적 지속의 합; 그리고
- 명시적 끝.
- 만약 원소가 명시적 지속은 갖고 있지만 명시적 끝을 갖고 있지 않다면, 요구된 끝은 요구된 시작과 명시적 지속의 합이다.
- 만약 원소가 명시적 끝은 갖고 있지만 명시적 지속을 갖고 있지 않다면, 요구된 끝은 명시적 끝과 같다.
- 그렇지 않으면, 요구된 끝은 암시적 끝과 같다.
원소의 요구된 시작 결정
원소의 요구된 시작은
4.2.4.1절에 있는 규칙 7을 사용하여 결정한다.
원소의 실제적 시작 결정
원소의 실제적 시작은 부모 원소의 실제적 끝이 이 시간보다 빠르지만 않다면, 원소의 요구된 시작과 같다.
원소의 실제 끝 결정
- body 원소의 마지막 자식의 실제적 끝은 재생기 나름이다. 실제적 끝은 최소한 요구된 끝보다는 늦어야 하지만, 그것이 얼마나 늦을
지는 구현 나름이다.
- "par" 원소의 자식의 실제적 끝은 다음과 같이 추론된다.
- 만약 자식이 "fill" 속성을 갖고, "fill" 속성의 값이 "freeze"라면, 자식 원소의 실제적 끝은 그 부모의 실제적
끝과 같다.
그 원소의 화면 상에서 마지막 상태는 그 원소의 실제적 끝까지 지속된다.
- 만약 자식이 "fill" 속성을 갖고, "fill" 속성의 값이 "remove"라면, 자식 원소의 실제적 끝은 부모의 실제적 끝과
그 원소의 요구된 끝중 최소값이다.
- 만약 자식이 "fill" 속성을 갖지 않고 있다면, 그 자식 원소의 실제적 끝은 그 자식이 명시적 지속이나 끝을 갖고 있는지
아닌지에 따라 결정된다.
- 만약 자식이 명시적 지속이나 끝을 갖고 있다면, 실제적 끝은 그 원소가 "fill" 속성에 "remove" 값을 가진 것처럼
결정된다.
- 만약 자식이 명시적 지속이나 명시적 끝을 갖고 있지 않다면, 실제적 끝은 그 원소가 "fill" 속성에 "freeze" 값을
가진 것처럼 결정된다.
- "seq" 원소의 마지막 자식의 실제적 끝은 "par" 원소의 자식의 실제적 끝과 같은 방법으로 추론된다.
- "seq" 원소의 다른 자식들의 실제적 끝은 다음과 같이 추론된다:
- 만약 자식이 "fill" 속성을 갖고, "fill" 속성의 값이 "freseze"라면, 그 자식 원소의 실제적 끝은 다음 원소의
실제작 시적과 같다.
- 만약 자식이 "fill" 속성을 갖고, "fill" 속성의 값이 "remove"라면, 그 자식 원소의 실제적 끝은 다음 원소의
실제적 시작과 다음 자식 원소의 요구된 끝중 최소값이다.
- 만약 자식 원소가 "fill" 속성을 갖지 않으면, 그 자식 원소의 실제적 끝은 그 자식이 명시적 지속이나 끝을 갖고 있는지
아닌지에 따라 결정된다.
- 만약 자식이 명시적 지속이나 끝을 갖고 있다면, 실제적 끝은 그 원소가 "fill" 속성에 "remove" 값을 가진 것처럼
결정된다.
- 만약 자식이 명시적 지속이나 명시적 끝을 갖고 있지 않다면, 실제적 끝은 그 원소가 "fill" 속성에 "freeze" 값을
가진 것처럼 결정된다.
4.3 switch 원소
switch 원소는 저작자가, 하나의 수용가능한 원소만을 선택할 수 있는, 선택 가능한 원소들의 집합을 밝힐 수 있도록 한다. 원소가
SMIL 1.0이고, 매체-형식이 해독 가능하고, 원소의 모든 검사-속성(4.4절을
보라)이 "true"이면 그 원소는 수용된다.
원소는 다음과 같이 선택된다: 재생기는 switch 원소내에서 나타나는 순서대로 원소들을 평가한다. 첫번째 수용 가능한 원소가 선택되고
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
- Defined in 4.2.1절에 정의됨
- ref
- 4.2.3절에 정의됨
- seq
- 4.2.2절에 정의됨
- switch
- Defined in 4.3절에 정의됨
- text
- 4.2.3절에 정의됨
- textstream
- 4.2.3절에 정의됨
- video
- 4.2.3절에 정의됨
이 모든 원소는 "switch" 원소의 자식으로 여러 번 나타날 수 있다.
만약 "switch" 원소가 "head" 원소내에서 사용된다면, 그것은 다음의 자식을 가질 수 있다:
- layout
- 3.2절에 정의됨
여러 layout 원소가 switch 원소내에 나타날 수 있다.
이 명세서는 모든 동기화 원소에 덧붙여서 시스템의 성능과 설정을 검사할 수 있는 일련의 검사 속성을 정의한다. 개념적으로 이 검사 속성은
부울 검사를 나타낸다. 어떤 원소에 대한 검사 속성중의 하나가 "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"을 추가하도록 안내해야 한다.
다중의 청취자를 고려한 내용에 대해서는 다중의 언어가 나열될 수도 있다. 예를 들어, "Waitangi 조약"이 마오리 원어와 영어로
동시에 나타나는 출력은 다음과 같다:
<audio src="foo.rm" system-language="mi, en"/>
그러나, 객체내에 system-language 검사 속성의 위치에 다중의 언어가 나타나 있는 것이, 그것이 다중 언어의 청취자를 위한
것이라는 것을 의미하지는 않는다. 한 예로 "라틴어 첫 강의" 같은 초보자용 입문서는, 분명히 영어-사용 청취자를 위한 것이다. 이 경우
system-language 검사 속성은 "en"만을 포함하여야 한다.
저작상의 주의: 저작자는 만약 "switch" 안에 몇 개의 선택 가능한 언어 객체가 있고, 그 중 어느 것도 합치되지 않은 경우,
동화상이 음성없이 보일 수 있는 그런 상황이 발생할 수 있다는 것을 알아야 한다. 따라서, 그러한 switch의 끝에 모든 경우에서 수용할
수 있는 "포괄적인" 선택을 포함할 것을 추천한다.
- system-overdub-or-caption
- 이 속성은 만약 사용자가 다중녹음이나 자막을 선택하였을 때, 그 선택이 사용 가능한 지를 결정하는 설정이다. 이 속성은
"caption"과 "overdub" 값을 가질 수 있다. 만약 사용자의 선택이 이 속성 값과 합치하면 "true"가 된다. 합치하지 않으면
"false"가 된다.
- system-required
- 이 속성은 확장 이름을 나타낸다. 만약 확장이 구현에 의해 지원되면 "true"가 되고, 그렇지 않으면 "false"가 된다. 향후
SMIL 개정판에서, 이 속성은 XML namespace[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 하이퍼링크 원소
link 원소는 이동할 수 있는 객체간의 연결을 서술할 수 있도록 한다.
SMIL은 인라인 link 원소만을 지원한다. 연결은 단방향 단일 연결(즉, 모든 연결은 정확히 하나의 원천과 하나의 목적 자원을
갖는다)로 제한된다. SMIL의 모든 연결은 사용자에 의해 작동한다.
포함된 문서에서 연결의 처리
SMIL 문서의 표현은, 그것의 통합 특성으로 하여, 다른(SMIL이 아닌) 응용이나 플러그인을 포함할 수 있다. 예를 들어, SMIL
브라우져는 포함된 HTML 쪽을 표시하기 위해 HTML 플러그인을 사용할 수 있다. 마찬가지로, HTML 브라우져는 HTML 쪽에 포함된
SMIL 문서를 표시하기 위해 SMIL 플러그인을 사용할 수 있다.
그러한 표현에서, 연결은 다른 수준에 있는 문서에 의해 정의될 수 있고, 충돌이 일어날 수 있다. 이러한 경우, 포함하는 문서에 의해
정의된 연결이 포함된 객체에 의해 정의된 연결보다 우선권을 가져야 한다. 이것은 브라우져와 플러그인간의 통신을 필요로 하기 때문에, SMIL
구현은 이 권고에 따르지 않을 수도 있다는 것에 유의하라.
만약 연결이 포함된 SMIL 문서내에 정의되어 있다면, 연결의 이동은 포함된 SMIL 문서에만 영향을 준다.
만약 연결이 SMIL 문서에 포함된 비SMIL문서내에 정의되어 있다면, 연결의 이동은 포함된 문서의 표현에만 영향을 주고, 포함하는
SMIL 문서에는 영향을 주지 않는다. 이 제한은 SMIL 향후 판에서 완화될 수 있다.
주소지칭
SMIL은 이름 단편 식별자와 "#" 연결자를 지원한다. 이것은 SMIL이 현재 HTML에서 사용하고 있는 위치지정자를 지원한다는 것을
의미한다(즉, HTML은 "http://foo.com/some/path#anchor1" 형식의 위치지정자를 사용한다).
SMIL 단편에 대한 연결
SMIL 문서를 가리키는 위치지정자는 단편 부분(즉, http://www.w3.org/test.smi#par1)을 포함할 수 있다. 이
단편 부분은 참조되고 있는 SMIL 문서내에 있는 한 원소의 id 값이다. 만약 연결이 뒤따르는 단편 부분을 포함하고 있다면, 표현은, 사용자가
목적 문서가 나타내는 표현을 단편이 가리키고 있는 원소의 실제적 시작까지 빨리감기를 한 것처럼 시작해야 한다.
다음의 특별한 경우가 발생할 수 있다:
- 연결이 지칭하는 원소가 "repeat" 속성을 가질 수 있다.
- 만약 "repeat" 속성의 값이 N이라면, 원소는 N만큼 반복 재생되어야 한다.
- 만약 "repeat" 속성의 값이 "indefinite"라면, 재생의 끝은 repeat 값이 "indefinite"인 경우에
정의된 규칙에 따른다.
- 연결이 지칭하는 원소가 "repeat" 속성을 가진 다른 원소에 포함되어 있다.
- 만약 "repeat" 속성의 값이 N이라면, 재생은 연결이 지칭하는 원소의 처음에서 시작하여, "repeat" 속성을 가진 원소를
N-1만큼 반복한다.
- 만약, "repeat" 속성의 값이 "indefinite"라면, 재생은 연결이 지칭하는 원소의 처음에서 시작한다. 재생의 끝은
repeat 값이 "indefinite"인 경우에 정의된 규칙에 따른다.
- 연결이 지칭하는 원소가 "switch" 원소의 내용이다: "switch" 원소의 내용인 원소에 대한 연결은 금지되어 있다.
"a" 원소는 HTML 4.0 [HTML40]의
"a" 원소와 매우 유사한 기능에서 매우 비슷하다. SMIL은 연결을 따라갔을 때 원천의 시간적 행위를 제어하는 "show" 속성을 덧붙였다.
동기화 목적에 대해 "a" 원소는 투명하다. 즉, 그것은 그 자식 원소의 동기화에 영향을 주지 않는다. "a" 원소는 중첩될 수 없다. "a"
원소는 반드시 href 속성을 가져야 한다.
속성
"a" 원소는 다음의 속성을 가질 수 있다:
- id
- 2절에 정의됨
- href
- 이 속성은 연결 목적지의 URI를 포함하고 있다.
"a" 원소에서 "herf" 속성은 필수적이다.
- show
- 이 속성은 연결을 따라갔을 때, 연결을 포함한 원천 문서의 행위를 제어한다. 이것은 다음 값중 하나를 가질 수 있다.
- "replace": 현재의 표현은 현재의 상태에서 멈추고 목적 자원으로 대체된다. 만약, 재생기가 히스토리 기능을 제공한다면,
사용자가 원래 표현으로 되돌아 왔을 때 그것이 정지되었을 때의 상태로부터 재개할 수 있다.
- "new": 목적 자원의 표현이 원천 자원에 영향을 주지 않고 새로운 문맥에서 시작한다.
- "pause": 원천 표현은 현재의 상태에서 멈추고, 목적 자원이 새로운 문맥에서 시작한다. 목적 자원의 재생이 끝나면, 원천
표현이 그것이 정되었을 때의 상태로부터 재개한다.
"show"의 기본 값은 "replace"이다.
- title
- 3.3.1절에 정의됨
모든 "a" 원소가 의미있는 서술을 포함한 "title" 속성을 갖도록 하는 것을 강력하게 추천한다. 저작 도구는 이 속성이 없는 원소가
SMIL 문서에 포함되지 않도록 해야한다.
Element Content
"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가 id "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>
...
"a" 원소의 완전한 매체 객체를 연결과 연관시키는 것으로 기능이 제한되어 있다. HTML 이미지맵은 객체의 공간적인 일부분을 연결과
연관시키는 것이 유용하다는 것을 보여준다. anchor 원소는 SMIL에서 그것과 유사한 기능을 실현한다:
- anchor 원소는 "href" 속성을 사용하여, 연결의 목적지를 매체 객체의 공간적이고 시간적인 일부분에 연결할 수 있도록
한다(이에 비해, "a" 원소는 연결과 완전한 매체 객체를 연관시키는 것만을 허용한다).
- anchor 원소는 "id" 속성을 이용하여, 매체 객체의 일부분을 연결의 목적지로 만들 수 있도록 한다.
- anchor 원소는 "coords" 속성을 이용하여, 객체를 공간적인 부분으로 나눌 수 있도록 한다.
- anchor 원소는 "begin"과 "end" 속성을 이용하여 객체를 시간적인 부분으로 나눌 수 있도록 한다. begin과 end
속성의 값은 매체 객체의 시작에 상대적이다.
속성
anchor 원소는 다음과 같은 속성을 가질 수 있다:
- begin
- 4.2.1절에 정의됨
- coords
- 이 속성의 값은 시각적 매체 객체의 표시 영역내에 있는 사각형을 나타낸다. 이 속성의 의미와 구문은 연결이 사각형과 관련되었을 때,
HTML 이미지맵의 coords 속성과 유사하다. 사각형은 4개의 length 값으로 나타낸다: 처음 두 값은 사각형의 왼쪽 위 모서리의
좌표를 나타낸다. 두번째 두 값은 사각형의 오른쪽 아래 모서리의 좌표를 나타낸다. 좌표는 시각적 매체 객체의 왼쪽 위 모서리의 좌표에
상대적이다(그림 4.5를 보라). 만약 좌표가 백분율 값이면, 그것은 매체 객체 표시 영역의 전체 width 또는 height에 상대적이다.
오류가 있는 coords 값을 가진 속성은 무시된다(right-x가 left-x보다 작거나 같다, bottom-y가 top-y보다 작거나
같다). 만약 coords 속성이 정의한 사각형이 매체 객체가 점유한 영역보다 크다면, 초과하는 height와 width는 매체 객체의
경계에서 잘려진다.
coords 속성의 값은 다음의 구문을 갖는다:
coords-value ::= left-x "," top-y "," right-x "," bottom-y
D
Figure 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에 포함된 동영상 객체의 중간으로의 연결을 포함하고 있다. 이것은 표현 B를 동영상의
5초부터 시작하여 재생한다(즉, 표현은 마치 사용자가 전체 표현을 "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문서는 선택적으로 그 문서에서 사용하는 문서형정의(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 문서형정의(DTD)이다.
Date: 1998/06/15 08:56:30
Authors:
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
">
<!--=================== 전환 인자 어트리뷰트 =======================-->
<!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
">
<!--=================== 채우기 어트리뷰트 ====================================-->
<!ENTITY % fill-attribute "
fill (remove|freeze) 'remove'
">
<!--=================== 병렬 엘러먼트 ==============================-->
<!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;
>
<!--=================== 직렬 엘러먼트 ============================-->
<!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;
>
<!--=================== 전환 엘러먼트 ================================-->
<!-- head에서 switch는 layout 원소만을 포함할 수 있고, body에서는
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
>
참조
- [CSS2]
- "Cascading Style Sheets, level 2", B. Bos, H. Lie, C. Lilley, I. Jacobs,
12 May 1998.
- http://www.w3.org/TR/REC-CSS2/
에서 얻을 수 있다.
- [HTML40]
- "HTML 4.0 Specification", D. Raggett, A. Le Hors, I. Jacobs, 24 April
1998.
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.
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
http://www.w3.org/TR/REC-PICS-labels-961031에서 얻을 수 있다.
- [RFC1738]
- "Uniform Resource Locators", T. Berners-Lee, L. Masinter, and M. McCahill,
December 1994.
ftp://ftp.isi.edu/in-notes/rfc1738.txt에서 얻을 수 있다.
- [RFC1766]
- "Tags for the Identification of Languages", H. Alvestrand, March 1995.
ftp://ftp.isi.edu/in-notes/rfc1766.txt에서 얻을 수 있다.
- [RFC1808]
- "Relative Uniform Resource Locators", R. Fielding, June 1995.
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.
ftp://ftp.isi.edu/in-notes/rfc2045.txt에서 얻을 수 있다. 이 RFC는 RFC1521, RFC1522
그리고 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.
http://www.ics.uci.edu/pub/ietf/uri/draft-fielding-uri-syntax-02.txt에서 얻을
수 있다. 이 작업은 진행중이며,
[RFC1738]과 [RFC1808]을
개정할 것으로 예상된다.
- [XML10]
- "Extensible Markup Language (XML) 1.0", T. Bray, J. Paoli, C.M. Sperberg-McQueen,
editors, 10 February 1998.
http://www.w3.org/TR/REC-xml에서 얻을 수
있다.
(비규범)
향후에 SMIL 1.0은 다른 3WC 권고안 또는 개인적 확장에 의해 확장될 수 있다.
이러한 확장을 위해, 다음의 규칙을 준수할 것을 추천한다:
- 확장에서 도입된 모든 엘러먼트는 그것의 내용을 SMIL 1.0 재생기가 처리할 가능성이 있다면, 반드시 "skip-content"
어트리뷰트(3.3.1절에 정의됨)를 가져야 한다.
- 개인적인 확장은 XML namespace 명세서의 구문을 사용하여 도입해야 한다.
SMIL 1.0 재생기가 이 두 규칙을 준수하는 확장을 포함한 문서를 다룰 수 있도록 준비할 것을 권고한다.
확장은, 일단 그러한 방식이 W3C 권고안이 되면, XML namespace 방식을 사용하여 다루어야 한다. 나머지 절에서, W3C
노트[NAMESPACE]에 정의된 XML namespace에 대한 구문과 의미는 오직 예시를 위한 목적으로만 사용될 것이다.
다음과 같은 경우가 일어날 수 있다:
- 문서가 빈 접두사를 정의하는 SMIL 1.0 명세서에 대한 namespace 선언을 포함하고 있다. 이러한 경우, 비 SMIL 1.0
엘러먼트와 어트리뷰트는 그것들이 XML namespace를 사용하여 선언된 경우에만 문서에 허용된다. 문서는 SMIL 1.0에 대한
문서형선언을 포함하지 않을 수도 있다. 만약 그렇다면, 그것은 유효하지 않다.
다음의 예에서, 엘러먼트 "new:a"는 적법한 확장이다. 엘러먼트 "mytags:a"와 "b"는 XML namespace를 사용하여
선언되지 않았으므로 구문 오류이다.
<?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>
- 문서가 어떤 문서형선언도 포함하지 않고, 1.0 이상의 SMIL 판에 대한 문서형선언 또는 1.0 이상의 SMIL 명세서에 대한
namespace 선언을 포함하고 있다. 그러한 namespace 선언을 인지할 수 있는 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"로 선언된 엘러먼트가 내용을 가질 수 있도록 할 수 있다.
- 이 내용을 무시하거나 처리하는 것은 이전에는 empty였던 엘러먼트의 "skip-content" 어트리뷰트 값에 달려있다. 만약
"false"로 설정되었다면, 내용을 처리한다.
- 알 수 없는 어트리뷰트
- 알 수 없는 어트리뷰트는 무시한다.
- 알 수 없는 어트리뷰트 값
- 알 수 없는 어트리뷰트 값을 가진 어트리뷰트는 무시한다.
- 문서가 SMIL 1.0에 대한 문서형선언을 포함하고 있다. 이러한 경우, XML namespace 선언을 이용하였더라도 어떤 비-SMIL
1.0 엘러먼트를 포함하지 않을 수 있다. 이것은 그러한 확장이 문서를 유효하지 않도록 하기 때문이다.
XML namespace 방식을 SMIL 엘러먼트와 어트리뷰트를 다른 XML 기반의 문서에 포함하기 위해 사용할 때, 다음과 같은
namespace 식별자를 사용할 것을 권고한다: http://www.w3.org/TR/REC-smil