Este documento é uma versão traduzida da Synchronized Multimedia Integration Language (SMIL) 1.0 Specification, do W3C, podendo conter erros de tradução. A versão normativa, no idioma inglês, pode ser encontrada no endereço:

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

Esta tradução da versão inglesa encontra-se no endereço:
http://www.utad.pt/~leonelm/w3ctranslations/smil/.
Tradutor:
Leonel Morgado <leonelm@bigfoot.com>

W3C REC-smil-19980615


Especificação de Synchronized Multimedia Integration Language 1.0 (SMIL)

Recomendação da W3C - 15 de Junho de 1998

Esta versão:
http://www.w3.org/TR/1998/REC-smil-19980615
Última versão:
http://www.w3.org/TR/REC-smil
Versão anterior:
http://www.w3.org/TR/1998/PR-smil-19980409

Copyright © 1998 W3C (MIT, INRIA, Keio), todos os direitos reservados. Aplicam-se a este documento todas as normas da W3C relativas a licenciamento de software, utilização de documentos, marcas e responsabilidades. A utilização deste sítio é efectuada ao abrigo dos nossos compromissos de privacidade para com os membros e para com o público.

Acerca deste documento

Este documento foi elaborado pelo Grupo de Trabalho (GT) do World Wide Web Consortium dedicado ao Multimédia Sincronizado. O GT incluía os seguintes indivíduos:

Agradecimentos: além dos membros do grupo de trabalho, contribuíram para o esforço de desenvolvimento de 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) e Koga Youichirou  (W3C).

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

Resumo

Este documento especifica a versão 1 de SMIL - Synchronized Multimedia Integration Language (pronúncia: "smáile"). SMIL permite integrar um conjunto de objectos multimédia independentes numa apresentação multimédia sincronizada. Utilizando SMIL, um autor pode:

  1. descrever o comportamento temporal da apresentação;
  2. descrever a disposição da apresentação num ecrã;
  3. associar hiperligações a objectos multimédia.

A presente especificação encontra-se estruturada da seguinte forma: a secção 1 apresenta a abordagem utilizada. A secção 2 define o elemento "smil". A secção 3 define os elementos que podem constar do cabeçalho de um documento em SMIL. A secção 4 define os elementos que podem constar do corpo de um documento em SMIL. Mais concretamente, esta secção define o modelo temporal utilizado em SMIL. A secção 5 descreve o DTD de SMIL.

Situação do presente documento

Este documento foi analisado pelos membros do W3C e por outras partes interessadas, tendo sido aprovado pelo Director como Recomendação do W3C. É um documento estável e pode ser utilizado como material de referência e citado noutro documento na qualidade de referência normativa. O papel do W3C, ao efectuar a Recomendação, consiste em atrair as atenções sobre a presente especificação e promover a respectiva utilização. Esta especificação melhora a funcionalidade e interoperabilidade da Web.

Idiomas disponíveis

A versão deste documento no idioma inglês é a única que é normativa. Contudo, consulte http://www.w3.org/AudioVideo/SMIL/translations para obtenção de informações relativamente a versões noutros idiomas.

Erratas

A lista de erros desta especificação, detectados até ao momento, está disponível em http://www.w3.org/AudioVideo/SMIL/errata.

Índice

1 Abordagem da especificação

Os documentos em SMIL são documentos em XML 1.0 [XML10]. Pressupõe-se que o leitor esteja familiarizado com os termos e conceitos definidos para XML 1.0.
Esta especificação não entra em linha de conta com funcionalidades definidas em URL que potencialmente não possam ser expressas através de URN. Por este motivo, o termo genérico URI [URI] é utilizado ao longo da especificação.
A sintaxe dos documentos em SMIL é a definida no DTD da secção 5.2. A sintaxe de um valor de atributo que não possa ser definida através da notação do DTD é definida em simultâneo com o primeiro elemento, empregando um atributo que contenha o valor em causa. A sintaxe de tais valores é definida através do emprego da forma expandida de Backus-Naur (EBNF - Extended Backus-Naur Form), definida na especificação de XML 1.0.
Para cada elemento, a respectiva definição está estruturada da seguinte forma: em primeiro lugar, definem-se todos os atributos dos elemento, por ordem alfabética. Um atributo é definido do seguinte modo: se for a primeira vez que é utilizado nesta especificação por um elemento, define-se a semântica do atributo. Se já tiver sido utilizado por outro elemento, a especificação faz referência à definição existente no primeiro elemento que o utilizou. À definição dos atributos do elemento segue-se a definição de eventuais valores de atributos cuja sintaxe não possa ser definida através da notação do DTD. A última secção da definição de um elemento especifica o conteúdo do elemento.

2 O elemento smil

Atributos do elemento

O elemento "smil" (código SMIL) pode possuir o seguinte atributo:

id
Este atributo identifica univocamente um elemento dentro de um documento. O respectivo valor é um identificador de XML.

Conteúdo do elemento

O elemento "smil" pode conter os seguintes dependentes:

body
Definido na secção 4.1.
head
Definido na secção 3.1.

3 O cabeçalho do documento

3.1 O elemento head

O elemento "head" (cabeçalho) contém informação desassociada do comportamento temporal da apresentação.

Atributos do elemento

O elemento "head" pode possuir o seguinte atributo:

id
Definido na secção 2.

Conteúdo do elemento

O elemento "head" pode conter os seguintes dependentes:

layout
Definido na secção 3.2.
meta
Definido na secção 3.4.
switch
Definido na secção 4.3.

O elemento "head" pode conter qualquer número de elementos "meta"; pode igualmente conter um elemento "layout" ou um elemento "switch".

3.2 O elemento layout

O elemento "layout" (disposição) especifica o posicionamento dos elementos constituintes do corpo do documento, quando colocados numa superfície de reprodução abstracta (seja ela visual ou acústica).

Se um documento não contiver um elemento "layout", o posicionamento dos elementos do corpo é dependente da implementação.

Um documento em SMIL pode conter várias disposições alternativas, agrupando vários elementos "layout" dentro de um elemento "switch" (definido na secção 4.3). Isto permite, por exemplo, descrever a disposição do documento por meio de diferentes linguagens de disposição.

O exemplo que se segue mostra como utilizar CSS2 em alternativa à linguagem básica de SMIL para disposição (definida na secção 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>

>(Repare-se que neste exemplo ambas as alternativas de disposição apresentam o mesmo resultado final.)

Atributos do elemento

id
Definido na secção 2.
type
Este atributo especifica qual a linguagem de disposição que é utilizada no elemento "layout". Se o reprodutor não compreender esta linguagem, deverá omitir todo o conteúdo até se deparar com a próxima marca "</layout>". O valor predefinido do atributo "type" é "text/smil-basic-layout".

Conteúdo do elemento

Se o atributo "type" do elemento "layout" tiver o valor "text/smil-basic-layout", contém os seguintes elementos:

region
Definido na secção 3.3.1.
root-layout
Definido na secção 3.3.2.

Se o atributo "type" do elemento "layout" tiver qualquer outro valor, o elemento contém dados sobre a forma de caracteres.

3.3 Linguagem básica de SMIL para disposição

Esta secção define uma linguagem básica de disposição para SMIL. A disposição básica de SMIL é consistente com o modelo de reprodução visual definido para CSS2, reutilizando as propriedades de formatação definidas pela especificação CSS2, introduzindo como novidade o atributo "fit" [CSS2]. Pressupõe-se que o leitor está familiarizado com os termos e conceitos definidos na CSS2.

A disposição básica de SMIL controla unicamente a disposição dos elementos que sejam objectos multimédia (definidos na secção 4.2.3). A utilização da disposição básica de SMIL para outros elementos de SMIL não é válida.

O identificador de tipo para a disposição básica de SMIL é "text/smil-basic-layout".

Valores de propriedade fixos

A folha de estilos que se segue define os valores das propriedades de CSS2 "display" e "position" que permanecem válidos na disposição básica de SMIL. Os seguintes valores de propriedade são fixos:

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}

Repare-se que, como consequência destas definições, todos os elementos com posicionamento em termos absolutos (animation, img, ref, text, textstream e video) são contidos num único bloco definido pelo limite de conteúdo do elemento-raiz (smil).

Valores predefinidos

A disposição básica de SMIL define valores predefinidos para todos os atributos relacionados com a disposição. Tais valores são consistentes com os valores iniciais das propriedades correspondentes em CSS2.

Se o autor deseja seleccionar os valores de disposição predefinidos para todos os elementos de um documento que sejam objectos multimédia, o documento tem de conter um elemento de disposição vazio do tipo "text/smil-basic-layout", como por exemplo:

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

3.3.1 O elemento region

O elemento "region" (região) controla a posição, tamanho e escala dos elementos que são objectos multimédia.

No fragmento de exemplo que se segue, a posição de um elemento de texto é definida como sendo a uma distância de 5 pixels do limite superior da janela de reprodução:

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

Atributos do elemento

O elemento "region" pode possuir os seguintes atributos:

background-color
A utilização e definição deste atributo processam-se de forma idêntica às que se empregam para a propriedade "background-color" da especificação CSS2, com a excepção de que a disposição básica de SMIL não exige suporte para as "cores do sistema".
Se o atributo de cor de fundo estiver ausente, o fundo será transparente.
fit
Este atributo especifica o comportamento no caso de a altura e a largura intrínsecas de um objecto multimédia visual serem diferentes dos valores especificados pelos atributos de altura e largura do elemento "region". Este atributo não é reflectido a 100% por uma propriedade CSS2, mas pode ser simulado em CSS2.
Este atributo pode tomar os seguintes valores:
fill
Dimensiona a altura e largura do objecto independentemente, por forma a que o conteúdo toque todas as extremidades da caixa.
hidden
  • Se a altura (largura) intrínseca do elemento que é um objecto multimédia for inferior à altura (largura) definida no elemento "region", o objecto é reproduzido a partir da extremidade superior (esquerda) e a altura (largura) restante é preenchida com a cor de fundo.
  • Se a altura (largura) intrínseca do elemento que é um objecto multimédia for superior à altura (largura) definida no elemento "region", o objecto é reproduzido a partir da extremidade superior (esquerda) até se alcançar a altura (largura) definida no elemento "region", sendo omitidas as partes do objecto que ficarem abaixo (à direita).
meet
Dimensiona o objecto multimédia visual mantendo proporcionais as respectivas dimensões, até que a altura ou largura seja igual ao valor especificado pelos atributos de altura ou largura, sem omitir qualquer parte do conteúdo. O canto superior esquerdo do objecto é posicionado nas coordenadas superiores esquerdas da caixa, enquanto que o espaço vazio à direita ou abaixo é preenchido com a cor de fundo.
scroll
Deve ser chamado um mecanismo de deslocamento sempre que o conteúdo do elemento reproduzido exceda os respectivos limites.
slice
Dimensiona o objecto multimédia visual, mantendo proporcionais as respectivas dimensões, por forma a que a altura e largura sejam iguais aos valores especificados pelos atributos de altura e largura, embora parte do conteúdo possa ser omitida. Conforme a situação concreta, é apresentada uma fatia horizontal ou vertical do objecto multimédia visual. A largura excedentária é omitida a partir do lado direito do objecto multimédia. A altura excedentária é omitida a partir da base do objecto multimédia.

O valor predefinido para "fit" é "hidden".

height
A utilização e definição deste atributo processam-se de forma idêntica às que se empregam para a propriedade "height" da especificação CSS2. Os valores dos atributos podem ser "percentuais" ou uma variante dos valores de "length" definidos na CSS2. No caso dos valores de "length", a disposição básica de SMIL suporta unicamente pixels como unidades, tal como se define na CSS2. Tal facto permite omitir o qualificador de unidades, "px", que identifica valores em pixels (na CSS2, é necessário utilizar o qualificador "px").
id
Definido na secção 2.
Um elemento de região é aplicado a um elemento posicionável definindo o atributo region desse elemento com o valor de id da região.
O atributo "id" é necessário nos elementos "region".
left
A utilização e definição deste atributo processam-se de forma idêntica às que se empregam para a propriedade "left" da especificação CSS2. Os valores dos atributos estão sujeitos às mesmas restrições que os valores do atributo "height".
O valor predefinido é zero.
skip-content
Este atributo é introduzido para futura expansão de SMIL (ver o apêndice). É interpretado nos dois casos que se seguem:

Se o valor do atributo "skip-content" for "true" (verdadeiro) e estivermos perante um dos casos indicados acima, o conteúdo do elemento é ignorado. Se o valor for "false", o conteúdo do elemento é processado.
O valor predefinido para "skip-content" é "true".

title
Este atributo disponibiliza informação indicativa acerca do elemento para o qual seja definido. Os valores do atributo de título podem ser reproduzidos de várias formas por agentes do utilizador. É frequente, por exemplo, os navegadores visuais apresentarem o título como uma "sugestão" (uma mensagem curta que aparece quando o dispositivo apontador se detém sobre um objecto por alguns momentos).
Recomenda-se vivamente que todos os elementos "region" tenham um atributo "title" com uma descrição com significado. As ferramentas de desenvolvimento devem garantir que nenhum elemento possa ser introduzido num documento em SMIL sem possuir este atributo.
top
A utilização e definição deste atributo processam-se de forma idêntica às que se empregam para a propriedade "top" da especificação CSS2. Os valores dos atributos estão sujeitos às mesmas restrições que os valores do atributo "height".
O valor predefinido é zero.
width
A utilização e definição deste atributo processam-se de forma idêntica às que se empregam para a propriedade "width" da especificação CSS2. Os valores dos atributos estão sujeitos às mesmas restrições que os valores do atributo "height".
z-index
A utilização e definição deste atributo processam-se de forma idêntica às que se empregam para a propriedade "z-index" da especificação CSS2, com a seguinte excepção:

Conteúdo do elemento

"region" é um elemento vazio.

3.3.2 O elemento root-layout

O elemento "root-layout" (disposição da raiz) especifica o valor das propriedades de disposição do elemento-raiz, que por sua vez especifica o tamanho da área de visualização - a janela onde é reproduzida a apresentação em SMIL.

Se um documento contém mais do que um elemento "root-layout", trata-se de um erro, pelo que nesta situação o documento não pode ser apresentado.

Atributos do elemento

O elemento "root-layout" pode possuir os seguintes atributos:

background-color
Definido na secção 3.3.1.
height
Definido na secção 3.3.1.
Define a altura do elemento-raiz. Só são permitidos valores de comprimento.
id
Definido na secção 2.
skip-content
Definido na secção 3.3.1.
title
Definido na secção 3.3.1.
width
Definido na secção 3.3.1.
Define a largura do elemento-raiz. Só são permitidos valores de comprimento.

Conteúdo do elemento

"root-layout" é um elemento vazio.

3.4 O elemento meta

O elemento "meta" pode ser utilizado para definir propriedades de um elemento (por exemplo: o autor, a data de validade, uma lista de palavras-chave, etc.) e atribuir-lhes valores. Cada elemento "meta" especifica um só par propriedade/valor.

Atributos do elemento

O elemento "meta" pode possuir os seguintes atributos:

content
Este atributo especifica o valor da propriedade definida no elemento "meta".
É necessário utilizar o atributo "content" nos elementos "meta".
id
Definido na secção 2.
name
Este atributo identifica a propriedade definida no elemento "meta".
É necessário utilizar o atributo "name" nos elementos "meta".
skip-content
Definido na secção 3.3.1.

A lista de propriedades não é exclusiva, podendo ser alargada. A presente especificação define as seguintes propriedades:

base
O valor desta propriedade especifica o URI que serve de base para todos os URI relativos utilizados no documento.
pics-label ou PICS-Label
O valor desta propriedade especifica uma identificação de classificação válida para o documento, segundo a determinação da PICS [PICS].
title
O valor desta propriedade contém o título da apresentação.

Conteúdo do elemento

"meta" é um elemento vazio.

4 O corpo do documento

4.1 O elemento body

O elemento "body" (corpo) contém informação associada ao comportamento temporal e relacional do documento. Define implicitamente um elemento "seq" (definido na secção 4.2.2; consulte a secção 4.2.4 para encontrar uma definição da semântica temporal do elemento "body").

Atributos do elemento

O elemento "body" pode possuir o seguinte atributo:

id
Definido na secção 2.

Conteúdo do elemento

O elemento "body" pode possuir os seguintes dependentes:

a
Definido na secção 4.5.1.
animation
Definido na secção 4.2.3.
audio
Definido na secção 4.2.3.
img
Definido na secção 4.2.3.
par
Definido na secção 4.2.1.
ref
Definido na secção 4.2.3.
seq
Definido na secção 4.2.2.
switch
Definido na secção 4.3.
text
Definido na secção 4.2.3.
textstream
Definido na secção 4.2.3.
video
Definido na secção 4.2.3.

4.2 Elementos de sincronização

4.2.1 O elemento par

Os dependentes do elemento "par" (paralelo) podem sobrepor-se no tempo. A ordem textual pela qual são expressos os dependentes de um elemento "par" não acarreta qualquer significado relativamente à temporização da respectiva apresentação.

Atributos do elemento

O elemento "par" pode possuir os seguintes atributos:

abstract
Uma descrição resumida do conteúdo do elemento.
author
O nome do autor do conteúdo do elemento.
begin
Este atributo especifica explicitamente o momento em que começa um elemento. Consulte a secção 4.2.4 para encontrar uma definição da semântica deste atributo.
O atributo pode conter os dois tipos de valores que se seguem:
valor de atraso
Um valor de atraso é um valor de relógio que mede o tempo de apresentação. O tempo de apresentação avança à velocidade da apresentação. Comporta-se como o código temporal associado ao contador de um gravador de cassetes. Pode ser parado, diminuído ou aumentado tanto por acção do utilizador como pelo próprio reprodutor.
A semântica de um valor de atraso depende do primeiro antecessor do elemento que seja um elemento de sincronização (ou seja,.antecessores que sejam elementos dos tipos "a" ou "switch" são ignorados):
  • Se esse antecessor for um elemento "par", o valor define um atraso relativamente ao início concreto do elemento (consulte a figura 4.1).
  • Se esse antecessor for um elemento "seq" (definido na secção 4.2.2), o valor define um atraso relativamente ao final concreto do primeiro predecessor lexical que seja uma elemento de sincronização (consulte a figura 4.2).
valor de acontecimento
O elemento tem início quando ocorre um determinado acontecimento (consulte a figura 4.3). O respectivo valor é um acontecimento-elemento (consulte a definição, mais abaixo).
O elemento que gera o acontecimento tem de estar "próximo". O conjunto P, de elementos "próximos", determina-se da seguinte forma:
  1. Tome todos os dependentes do primeiro antecessor do elemento, que seja um elemento de sincronização, acrescentando-os a P.
  2. Remova de P todos os elementos "a" e "switch". Acrescente a P os dependentes de todos os elementos "a", salvo se forem elementos "switch".

O conjunto P resultante é o conjunto de elementos "próximos".


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

atraso num elemento 'par' D


Figura 4.1: Utilização de um valor de atraso num elemento "par"


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

atraso num elemento 'seq' D


Figura 4.2: Utilização de um valor de atraso num elemento "seq"


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

elemento com valor de acontecimento D


Figura 4.3: Atributo de sincronização com elemento com valor de acontecimento

copyright
A mensagem de copyright e direitos de autor do conteúdo do elemento.
dur
Este atributo especifica explicitamente a duração de um elemento. Consulte a secção 4.2.4 para encontrar uma explicação da respectiva semântica. O valor do atributo pode ser um valor de relógio ou a cadeia de texto "indefinite" (indefinida).
end
Este atributo especifica explicitamente o final de um elemento. Consulte a secção 4.2.4 para encontrar uma explicação da respectiva semântica. O atributo pode conter os mesmos tipos de valores que o atributo "begin".
endsync
Para obter uma definição da semântica deste atributo, consulte a secção 4.2.4. O atributo pode tomar os seguintes valores:

O valor predefinido para "endsync" é "last".

id
Definido na secção 2.
region
Este atributo especifica uma superfície de reprodução abstracta (seja ela visual ou acústica), definida na secção de disposição do documento. É necessário que o valor deste atributo seja um identificador XML. Se na secção de disposição não estiver definida nenhuma superfície de reprodução com esta identificação (id), os valores das propriedades de formatação deste elemento são determinados pela disposição predefinida.
O atributo "region" dos elementos "par" não pode ser utilizado pela linguagem básica do SMIL para disposição, definida nesta especificação. Acrescenta-se para completar o quadro geral, visto que pode ser necessário a outras linguagens de disposição.
repeat
Para obter uma definição da semântica deste valor, consulte a secção 4.2.4. O valor do atributo pode ser um inteiro ou a cadeia de texto "indefinite" (indefinidamente). O valor predefinido é 1.
system-bitrate
Definido na secção 4.4.
system-captions
Definido na secção 4.4.
system-language
Definido na secção 4.4.
system-overdub-or-caption
Definido na secção 4.4.
system-required
Definido na secção 4.4.
system-screen-size
Definido na secção 4.4.
system-screen-depth
Definido na secção 4.4.
title
Definido na secção 3.3.1.
Recomenda-se vivamente que todos os elementos "par" possuam um atributo "title",  com uma descrição com significado. As ferramentas de desenvolvimento devem garantir que nenhum elemento possa ser introduzido num documento em SMIL sem possuir este atributo.

Comentários relativos à sincronização entre dependentes

A precisão da sincronização entre os dependentes de um grupo paralelo depende da aplicação. Tome-se o exemplo da sincronização entre atrasos de reprodução, ou seja, o comportamento que ocorre quando um elemento "par" dois (ou mais) tipos de conteúdo contínuo, como áudio ou vídeo, ocorrendo um atraso num deles.
Um reprodutor pode apresentar os seguintes comportamentos de sincronização:

Sincronização geral
O reprodutor sincroniza os dependentes do elemento "par" através de um relógio comum (consultar a figura 4.4 a)).
Sincronização individual
Cada dependente do elemento "par" possui um relógio próprio, independente dos relógios dos restantes dependentes do elemento "par" (consulte a figura 4.4 b)).

sincronização geral D

a) Sincronização geral: ocorre um atraso no vídeo: ou o áudio pára ou se perdem algumas imagens do vídeo. O comportamento concreto depende da implementação.

sincronização individual D

b) Sincronização individual


Figura 4.4: Efeito de um atraso durante a reprodução, em reprodutores com diferentes métodos de sincronização

Valores de atributos

valor de relógio
Os valores de relógio possuem a seguinte sintaxe:
Valor-de-relógio      ::= Valor-completo | Valor-parcial | Valor-da-contagem
Valor-completo        ::= Horas ":" Minutos ":" Segundos ("." Fracção)?
Valor-parcial	      ::= Minutos ":" Segundos ("." Fracção)?
Valor-da-contagem     ::= Contagem-do-tempo ("." Fracção)?
                          ("h" | "min" | "s" | "ms")? ; o valor predefinido é "s"
Horas                 ::= 2DIGITOS; qualquer número positivo
Minutos               ::= 2DIGITOS; desde 00 até 59
Segundos              ::= 2DIGITOS; desde 00 até 59
Fracção		      ::= DIGITO+
Contagem-do-tempo     ::= DIGITO+
2DIGITOS	      ::= DIGITO DIGITO
DIGITO		      ::= [0-9]

Seguem-se exemplos de valores de relógio válidos:


Uma fracção x com n dígitos representa o seguinte valor:

x * 1/10**n

Exemplos:

00.5s = 5 * 1/10 segundos = 500 milissegundos
00:00.005 = 5 * 1/1000 segundos = 5 milissegundos

valor de acontecimento-elemento
Um valor de acontecimento-elemento especifica um acontecimento concreto num elemento de sincronização.
Um acontecimento-elemento possui a seguinte sintaxe:
Acontecimento-elemento     ::= "id(" Origem-do-acontecimento ")(" Acontecimento ")"
Origem-do-acontecimento    ::= Valor-de-Id
Acontecimento              ::= "begin" | Valor-de-relógio | "end"

Encontram-se definidos os seguintes acontecimentos:
begin
Este acontecimento é gerado quando efectivamente se inicia um elemento.
Exemplo de utilização: begin="id(x)(begin)"
clock-val
Este acontecimento é gerado quando um relógio associado a um elemento alcança um determinado valor. Tal relógio começa a contar do 0 desde o efectivo início do elemento. No caso dos elementos "par" e "seq", o relógio conta o tempo de apresentação decorrido desde o início efectivo do elemento. Nos elementos do tipo objecto multimédia, a semântica é dependente da implementação. O relógio pode indicar o tempo de apresentação decorrido desde o início efectivo, mas pode igualmente indicar o tempo durante o qual teve lugar a execução do objecto multimédia. Neste último caso, esse tempo pode ser diferente do tempo de apresentação decorrido desde o início da apresentação do elemento, por vários motivos tais como atrasos de reprodução ou da rede. Esta é a abordagem recomendada.
É considerado um erro a utilização de um valor de relógio que exceda o verdadeiro valor da duração do elemento que gerou o acontecimento.

Exemplo de utilização: begin="id(x)(45s)"

end
Este evento é gerado quando efectivamente um elemento chega ao respectivo final.
Exemplo de utilização: begin="id(x)(end)"

Conteúdo do elemento

O elemento "par" pode conter os seguintes dependentes:

a
Definido na secção 4.5.1.
animation
Definido na secção 4.2.3.
audio
Definido na secção 4.2.3.
img
Definido na secção 4.2.3.
par
Definido na secção 4.2.1.
ref
Definido na secção 4.2.3.
seq
Definido na secção 4.2.2.
switch
Definido na secção 4.3.
text
Definido na secção 4.2.3.
textstream
Definido na secção 4.2.3.
video
Definido na secção 4.2.3.

Todos estes elementos podem aparecer várias vezes como dependentes directos de um elemento "par".

4.2.2 O elemento seq

Os dependentes de um elemento "seq" (sequência) constituem uma sequência temporal.

Atributos

O elemento seq pode possuir os seguintes atributos:

abstract
Definido na secção 4.2.1.
author
Definido na secção 4.2.1.
begin
Definido na secção 4.2.1.
copyright
Definido na secção 4.2.1.
dur
Definido na secção 4.2.1.
end
Definido na secção 4.2.1.
id
Definido na secção 2.
region
Definido na secção 4.2.1.
O atributo "region" dos elementos "seq"  não pode ser utilizado pela linguagem básica do SMIL para disposição, definida nesta especificação. Acrescenta-se para completar o quadro geral, visto que pode ser necessário a outras linguagens de disposição.
repeat
Definido na secção 4.2.1.
system-bitrate
Definido na secção 4.4.
system-captions
Definido na secção 4.4.
system-language
Definido na secção 4.4.
system-overdub-or-caption
Definido na secção 4.4.
system-required
Definido na secção 4.4.
system-screen-size
Definido na secção 4.4.
system-screen-depth
Definido na secção 4.4.
title
Definido na secção 3.3.1.
Recomenda-se vivamente que todos os elementos "seq" possuam um atributo "title",  com uma descrição com significado. As ferramentas de desenvolvimento devem garantir que nenhum elemento possa ser introduzido num documento em SMIL sem possuir este atributo.

Conteúdo do elemento

O elemento "seq" pode conter os seguintes dependentes:

a
Definido na secção 4.5.1.
animation
Definido na secção 4.2.3.
audio
Definido na secção 4.2.3.
img
Definido na secção 4.2.3.
par
Definido na secção 4.2.1.
ref
Definido na secção 4.2.3.
seq
Definido na secção 4.2.2.
switch
Definido na secção 4.3.
text
Definido na secção 4.2.3.
textstream
Definido na secção 4.2.3.
video
Definido na secção 4.2.3.

4.2.3 Elementos do tipo objecto multimédia: Os elementos ref, animationaudio, imgvideo, text e textstream

Os elementos que são objectos multimédia possibilitam a inclusão de objectos multimédia numa apresentação em SMIL. Os objectos multimédia são incluídos por referência (através de um URI).

Há dois tipos de objectos multimédia: objectos multimédia com uma duração intrínseca (ex.: vídeo, áudio) (a que também se chama "multimédia contínuo") e objectos multimédia sem duração intrínseca (ex.: texto, imagem) (a que também se chama "multimédia discreto").

Podem-se associar âncoras e ligações aos objectos multimédia visuais, ou seja, objectos multimédia reproduzidos numa superfície visual abstracta de reprodução.

Ao reproduzir um objecto multimédia, o reprodutor não deve determinar o tipo concreto de objecto multimédia a partir do nome do elemento. Deve sim basear-se exclusivamente noutras fontes de informação, tais como a informação de tipo contida no atributo "type" ou a informação de tipo que lhe seja comunicada pelo servidor ou pelo sistema operativo.

No entanto, os autores devem certificar-se de que o grupo a que pertencer o objecto multimédia ("animation", "audio", "img", "video", "text" ou "textstream") se reflicta no nome do elemento. Deve assim ser para maior facilidade de leitura do documento em SMIL. Em situações de dúvida quanto ao agrupamento de um objecto multimédia, os autores devem utilizar o elemento genérico "ref".

Atributos do elemento

Os elementos que são objectos multimédia podem possuir os seguintes atributos:

abstract
Definido na secção 4.2.1.
alt
Quando os agentes do utilizador não conseguem apresentar um tipo de objecto multimédia em particular, este atributo especifica texto em alternativa. Recomenda-se vivamente que todos os elementos que sejam objectos multimédia possuam um atributo "alt", com uma descrição com significado. As ferramentas de desenvolvimento devem garantir que nenhum elemento possa ser introduzido num documento em SMIL sem possuir este atributo.
author
Definido na secção 4.2.1.
begin
Definido na secção 4.2.1.
clip-begin
O atributo clip-begin especifica o início de uma subsecção de um objecto de multimédia contínuo, relativamente ao início do objecto multimédia.
Os valores do atributo clip-begin possuem a seguinte sintaxe:
Valor-temporal-para-secção    ::= Métrica "=" ( Valor-de-relógio | Valor-smpte )
Métrica		              ::= Tipo-smpte | "npt"
Tipo-smpte        	      ::= "smpte" | "smpte-30-drop" | "smpte-25"
Valor-smpte       	      ::= Horas ":" Minutos ":" Segundos 
                                  [ ":" Imagens [ "." Sub-imagens ]]
Horas            	      ::= 2DIGITOS
Minutos       		      ::= 2DIGITOS
Segundos  	              ::= 2DIGITOS
Imagens           	      ::= 2DIGITOS
Sub-imagens       	      ::= 2DIGITOS

O valor deste atributo consiste numa especificação de métrica, seguido por um valor temporal cuja sintaxe e semântica depende da especificação métrica. São permitidos os seguintes formatos:

Marca temporal SMPTE
Os códigos temporais SMPTE [SMPTE] podem ser utilizados para precisão de acesso a nível de imagem. A especificação métrica pode tomar os seguintes valores:
smpte
smpte-30-drop
Estes valores indicam que é utilizado o formato "SMPTE 30 drop", de 29.97 imagens por segundo. O campo "Imagens" no valor temporal pode tomar valores de 0 até 29. A diferença entre 30 e 29.97 imagens por segundo é processada por omissão dos dois índices de imagem iniciais de cada minuto (os valores 00 e 01), excepto nos minutos múltiplos de 10.
smpte-25
O campo "Imagens" da especificação temporal pode tomar os valores de 0 até 24.

O valor temporal possui o formato horas:minutos:segundos:imagns.sub-imagens. Se o valor de imagens for zero, pode ser omitido. As sub-imagens são medidas em termo de um centésimo de uma imagem.
Exemplos:
clip-begin="smpte=10:12:33:20"

Tempo normal de reprodução
O formato de tempo normal de reprodução exprime o tempo sob a forma de valores de relógio de SMIL. A especificação de métrica é "npt", sendo que a sintaxe do valor temporal é idêntica à sintaxe dos valores de relógio de SMIL.
Exemplos:
clip-begin="npt=123.45s"
clip-begin="npt=12:05:35.3
"
clip-end
O atributo clip-end especifica o final de uma subsecção de um objecto de multimédia contínuo (como áudio, vídeo ou outra apresentação) a reproduzir. Utiliza uma sintaxe de valores de atributos idêntica à do atributo clip-begin.
Se o valor do atributo "clip-end" for superior à duração do objecto multimédia, tal valor é ignorado, definindo-se o final da secção como sendo o final concreto do objecto multimédia.
copyright
Definido na secção 4.2.1.
dur
Definido na secção 4.2.1.
end
Definido na secção 4.2.1.
fill
Para obter uma definição da semântica deste atributo, consulte a secção 4.2.4. O atributo pode tomar os valores "remove" (remover) e "freeze" (congelar).
id
Definido na secção 2.
longdesc
Este atributo especifica uma ligação (URI) a uma descrição extensa do objecto multimédia. Tal descrição deve suplementar a descrição resumida que é fornecida através do atributo "alt". Quando o objecto multimédia possui âncoras associadas, este atributo deve fornecer informação acerca do conteúdo da âncora.
region
Definido na secção 4.2.1.
src
O valor do atributo "src" é o URI do objecto multimédia.
system-bitrate
Definido na secção 4.4.
system-captions
Definido na secção 4.4.
system-language
Definido na secção 4.4.
system-overdub-or-caption
Definido na secção 4.4.
system-required
Definido na secção 4.4.
system-screen-size
Definido na secção 4.4.
system-screen-depth
Definido na secção 4.4.
title
Definido na secção 3.3.1.
Recomenda-se vivamente que todos os elementos que sejam objectos multimédia possuam um atributo "title",  com uma descrição com significado. As ferramentas de desenvolvimento devem garantir que nenhum elemento possa ser introduzido num documento em SMIL sem possuir este atributo.
type
Tipo MIME do objecto multimédia referenciado pelo atributo "src".

Conteúdo do elemento

Os elementos que são objectos multimédia podem conter o seguinte elemento:

anchor
Definido na secção 4.5.2.

4.2.4 Modelo temporal em SMIL

4.2.4.1 Valores do Modelo Temporal

Na explanação que se segue, o termo "elemento" refere-se exclusivamente aos elementos de sincronização.

Para cada elemento são definidos o início, duração e final implícitos, explícitos, desejados e concretos.

O início/duração/final concreto especifica a percepção do leitor do documento.

Os valores implícitos, explícitos e desejados são valores auxiliares que se utilizam para definir os valores concretos.

As regras de cálculo de cada um destes valores, no caso dos elementos definidos em SMIL 1.0, são descritas na próxima secção.

  1. Em SMIL, cada elemento possui um início implícito.
  2. A cada elemento pode ser atribuído um início explícito, acrescentando ao elemento um atributo "begin":

    begin = "valor do início explícito"

    É considerado um erro explicitar um início anterior ao início implícito do elemento.

  3. Em SMIL, cada elemento possui um final implícito.
  4. A cada elemento pode ser atribuído um final explícito, acrescentando ao elemento um atributo "end":

    end = "valor do final explícito"

  5. A duração implícita de um elemento é a diferença entre o seu final e início implícitos.
  6. Em SMIL, a cada elemento pode ser atribuída uma duração explícita, acrescentando ao elemento um atributo "dur":

    dur = "valor da duração explícita"

  7. O início desejado de um elemento é igual ao início explícito, se este for fornecido; se não for fornecido, é igual ao início implícito.
  8. Cada elemento possui um final desejado.
  9. A duração desejada para um elemento é a diferença entre o final e o início desejados.
  10. Cada elemento possui um início concreto.
  11. Cada elemento possui um final concreto. (Nota: o final concreto de um elemento dependente nunca pode ser posterior ao final concreto do respectivo supra-elemento.)
  12. A duração concreta de um elemento é a diferença entre o final e o início concretos.
4.2.4.2 Determinar os valores do modelo temporal para os elementos de SMIL 1.0

Esta secção define o método de cálculo dos valores do modelo temporal para os elementos de sincronização de SMIL 1.0, nos casos não abrangidos pelas regras da secção 4.2.4.1.

Determinar o início implícito de um elemento

Determinar o final implícito de um elemento

A primeira descrição que corresponder ao caso do elemento é a que deve ser utilizada:

Determinar o final desejado de um elemento

Determinar o início desejado de um elemento

O início desejado de um elemento é determinado pela regra 7 da secção 4.2.4.1.

Determinar o início concreto de um elemento

O início concreto de um elemento é o respectivo início desejado, excepto quando o final concreto do supra-elemento é anterior a esse momento, sendo que neste caso o elemento não chega a ser apresentado.

Determinar o final concreto de um elemento

4.3 O elemento switch

O elemento "switch" (comutador) possibilita a um autor especificar um conjunto de elementos alternativos de entre os quais apenas um elemento aceitável deve ser escolhido. Um elemento é considerado aceitável se for um elemento de SMIL 1.0, o tipo de dados puder ser descodificado e a avaliação de todos os atributos de teste (consultar a secção 4.4) do elemento resultar em "true".

Um elemento é seleccionado da seguinte forma: o reprodutor avalia os elementos pela ordem em que ocorrem no elemento "switch". O primeiro elemento aceitável é seleccionado, por exclusão dos restantes elementos do comutador.

Assim, os autores devem ordenar as alternativas da mais para a menos desejável. Mais, devem colocar uma alternativa relativamente à prova de falhas como último item de <switch> para que pelo menos um dos items do comutador seja escolhido (a menos que tal seja algo que, explicitamente, não é desejado). As implementação NÃO devem seleccionar arbitrariamente um dos objectos do <switch> quando os atributos de teste de todos falham.

Repare-se que os URI do HTTP permitem efectuar negociação de conteúdos, o que em alguns caso pode funcionar como alternativa ao elemento "switch".

Atributos

O elemento "switch" pode possuir os seguintes atributos:

id
Definido na secção 2.
title
Definido na secção 3.3.1.
Recomenda-se vivamente que todos os elementos do comutador possuam um elemento "title",  com uma descrição com significado. As ferramentas de desenvolvimento devem garantir que nenhum elemento possa ser introduzido num documento em SMIL sem possuir este atributo.

Conteúdo do elemento

Se o elemento "switch" for utilizado como dependente directo ou indirecto de um elemento "body", pode conter os seguintes dependentes:

a
Definido na secção 4.5.1.
animation
Definido na secção 4.2.3.
audio
Definido na secção 4.2.3.
img
Definido na secção 4.2.3.
par
Definido na secção 4.2.1.
ref
Definido na secção 4.2.3.
seq
Definido na secção 4.2.2.
switch
Definido na secção 4.3.
text
Definido na secção 4.2.3.
textstream
Definido na secção 4.2.3.
video
Definido na secção 4.2.3.

Todos estes elementos podem aparecer várias vezes como dependentes de um elemento "switch".

Se o elemento "switch" for utilizado dentro de um elemento "head", pode conter o seguinte dependente:

layout
Definido na secção 3.2.
Podem existir vários elementos "layout" dentro do mesmo elemento "switch".

4.4 Atributos de teste

Esta especificação define uma lista de atributos de teste que podem ser acrescentados a qualquer elemento de sincronização, para testar as capacidades e definições do sistema. De uma forma conceptual, estes atributos representam testes lógicos. Quando um dos atributos de teste especificado para um elemento resulta em "false" (falso), o elemento que possui esse atributo é ignorado.

Na lista abaixo, pode surgir o conceito de "preferência do utilizador". Em geral, as preferências do utilizador são definidas pelo sistema de reprodução, utilizando uma caixa de diálogo de preferências. No entanto, esta especificação não coloca quaisquer restrições quanto à forma de comunicação dessas preferências ao reprodutor de SMIL por parte do utilizador.

Em SMIL 1.0 encontram-se definidos os seguintes atributos de teste:

system-bitrate
Este atributo especifica a largura de banda aproximada, em termos de bits por segundo disponíveis para o sistema. A medição da largura de banda é específica para cada aplicação, pois as aplicações tanto podem empregar medições sofisticadas da conectividade ponto-a-ponto como simples definições estáticas controladas pelo utilizador. Este último caso poderia ser utilizado, por exemplo, para efectuar uma escolha com base no tipo de ligação dos utilizadores à rede. Os valores mais característicos para os utilizadores de modems seriam 14400, 28800, 56000 bit/s, etc. É avaliado como "true" se a taxa de bits disponível no sistema for igual ou superior ao valor especificado. É avaliado como "false" se a taxa de bits disponível no sistema for inferior ao valor especificado.
O atributo pode tomar qualquer valor inteiro superior a 0. Se o valor exceder qualquer valor máximo de largura de banda definido pela implementação, este atributo é sempre avaliado como "false".
system-captions
Este atributo permite aos autores distinguir entre um equivalente textual redundante das componentes áudio da apresentação (destinado a público com deficiências auditivas ou em processo de aprendizagem da leitura e que deseja ou precisa desta informação) e texto destinado a um público vasto. O atributo pode tomar o valor "on" (activo) se o utilizador tiver expresso o desejo de ver informação sobre a forma de legendagem, tomando o valor "off"(desactivado) se o utilizador tiver indicado que não deseja ver esse tipo de informação. É avaliado como "true" se o valor for "on", como "false" se o valor for "off".
system-language
O valor do atributo é uma lista, separada por vírgulas, de nomes de idiomas, conforme definidos em [RFC1766].

É avaliado como "true" se um dos idiomas indicados pelas preferências do utilizador for exactamente igual a um dos idiomas presentes no valor deste parâmetro, mas também se um dos idiomas indicados pelas preferências do utilizador for exactamente igual ao prefixo de um dos idiomas presentes no valor deste parâmetro quando o primeiro carácter de marca a seguir ao prefixo for "-".

Nos restantes caso é avaliado como "false".

Nota: esta utilização de uma regra de correspondência de prefixos não implica que as marcas de idiomas sejam atribuídas aos idiomas por forma a que no caso de um utilizador compreender um idioma com uma determinada marca, possa também compreender todos os idiomas com marcas para os quais esta marca seja um prefixo.

A regra do prefixo permite simplesmente utilizar as marcas de prefixo, se tal for necessário.

Nota de implementação: ao efectuar a escolha das preferências linguísticas disponíveis ao utilizador, os implementadores devem tomar em linha de conta o facto de que os utilizadores não estão familiarizados com as questões de correspondência de idiomas acima descritas, pelo que lhes deve ser fornecida assistência adequada. A título de exemplo: os utilizadores poderão assumir que ao seleccionar "en-gb", obterão qualquer tipo de documento em inglês, no caso de não haver uma versão disponível em inglês britânico. O interface de utilizador para definição das preferências do utilizador deve indicar ao utilizador a necessidade de acrescentar "en" para obter a melhor correspondência possível.

PODEM ser listados vários idiomas, quando o conteúdo se destina a públicos variados. Por exemplo: para apresentar uma versão do "Tratado de Waitangi", simultaneamente nas versões originais em maori e em inglês, seria necessário:

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

No entanto, o facto de existirem vários idiomas num objecto no qual seja colocado o atributo de teste "system-language" não significa que se destine a públicos de vários idiomas. Como exemplo temos a aprendizagem de idiomas para principiantes, como "A Minha Primeira Lição de Latim", que se destina claramente a um público com conhecimentos de português. Neste caso, o atributo de teste "system-language" deve incluir apenas "pt".

Nota aos autores: deve-se ter presente que se vários idiomas alternativos forem encapsulados num elemento "switch", sem que nenhum deles obtenha uma correspondência, tal poderá conduzir a situações tais como um vídeo ser apresentado, mas sem som. Assim, recomenda-se que seja incluída uma opção "vale-tudo" no final de um desses comutadores, que seja sempre aceitável.

system-overdub-or-caption
Este atributo é uma definição que especifica se os utilizadores preferem dobragem ou legendagem, se houver opção. O atributo pode tomar os valores "caption" (legendas) ou "overdub" (dobragem). É avaliado como "true" se a preferência do utilizador corresponder ao valor do atributo. Caso contrário, é avaliado como "false".
system-required
Este atributo especifica o nome de uma expansão. É avaliado como "true" se a expansão é suportada pela implementação; caso contrário, é avaliado como "false". Numa versão futura de SMIL, o valor deste atributo será uma espaço de nomes XML [NAMESPACES].
system-screen-size
Os valores do atributo possuem a seguinte sintaxe:
valor-tamanho-do-ecrã ::= altura-do-ecrã"X"largura-do-ecrã
Cada um destes valores é expresso em pixels, devendo ser valores inteiros superiores a 0.  É avaliado como "true" se o sistema de reprodução de SMIL for capaz de apresentar uma apresentação com o tamanho indicado. É avaliado como "false" se o sistema de reprodução de SMIL só for capaz de apresentar uma apresentação mais pequena.
system-screen-depth
Este atributo especifica, em número de bits, a precisão da paleta de cores do ecrã necessária para apresentar o elemento. O valor deve ser superior a 0. Os valores mais característicos são 1, 8, 24 .... É avaliado como "true" se o sistema de reprodução de SMIL for capaz de apresentar imagens ou vídeo com a precisão de cor indicada. É avaliado como "false" se o sistema de reprodução de SMIL só for capaz de apresentar imagens ou vídeo com precisões de cor inferiores.

Exemplos

1) Escolher entre conteúdos com taxas de bits diferentes

É cenário comum as implementações desejarem permitir a selecção através da inclusão nos elementos de um parâmetro "system-bitrate". O reprodutor multimédia avalia uma "opção" (elementos dentro do comutador) de cada vez, em busca de uma taxa de bits aceitável para as características conhecidas da ligação entre o reprodutor multimédia e o servidor multimédia.

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

2) Escolher entre recursos de áudio com taxas de bits diferentes

Os elementos no interior do comutador podem constituir uma qualquer combinação de elementos. Por exemplo: pode-se simplesmente especificar uma faixa de áudio alternativa:

...
<switch>
   <audio src="áudio-do-zé-boa-qualidade" system-bitrate="16000" />
   <audio src="áudio-do-zé" system-bitrate="8000" />
</switch>
...

3)Escolher entre recursos de áudio em idiomas diferentes

No exemplo que se segue, um recurso de áudio está disponível tanto em francês como em inglês. Com base no idioma preferido pelo utilizador, o reprodutor pode escolher um dos recursos de áudio.

...
<switch>
   <audio src="áudio-do-zé-francês" system-language="fr"/>
   <audio src="áudio-do-zé-inglês" system-language="en"/>
</switch>
...

4) Escolher entre conteúdo escrito a pensar em ecrãs diferentes

No exemplo que se segue, a apresentação contém partes alternativas, concebidas para ecrãs com resoluções e precisão de cor diferentes. Conforme as características particulares do ecrã, o reprodutor pode escolher uma das alternativas.

...
<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) Não misturar a faixa das legendas com indicadores de cotações

No exemplo que se segue, as legendas só aparecem se o utilizador as desejar.

...
<seq>
  <par>
    <audio      src="audio.rm"/>
    <video      src="video.rm"/>
    <textstream src="cotações.rtx"/>
    <textstream src="legendas.rtx" system-captions="on"/>
  </par>
</seq>
...

6) Escolher o idioma das dobragem e das legendas

No exemplo que se segue, um filme em francês encontra-se disponível com dobragem e legendas em inglês, alemão e holandês. O segmento de SMIL que se apresenta de seguida exprime esta situação, activando as alternativas preferidas pelo utilizador.

...
<par>
  <switch>
    <audio src="filme-aud-ing.rm" system-language="en"
                system-overdub-or-caption="overdub"/>
    <audio src="filme-aud-alm.rm" system-language="de"
                system-overdub-or-caption="overdub"/>
    <audio src="filme-aud-hol.rm" system-language="nl"
                system-overdub-or-caption="overdub"/>
     <!-- Para todos os restantes, francês -->
     <audio src="filme-aud-fr.rm"/>
   </switch>
   <video src="filme-vid.rm"/>
   <switch>
     <textstream src="filme-legs-ing.rtx" system-language="en"
                 system-overdub-or-caption="caption"/>
     <textstream src="filme-legs-alm.rtx" system-language="de"
                system-overdub-or-caption="caption"/>
     <textstream src="filme-legs-hol.rtx" system-language="nl"
                 system-overdub-or-caption="caption"/>
     <!-- Legendas em francês para quem as desejar -->
     <textstream src="filme-legs-fr.rtx" system-captions="on"/>
   </switch>
</par>
...

4.5 Elementos de hiperligação

Os elementos de ligação permitem descrever ligações de navegação entre objectos.

Em SMIL só existem elementos de ligação inseridos nas linhas. As ligações estão limitadas a ligações unidireccionais um-para-um (ou seja, todas as ligações têm unicamente um recurso de origem e um de destino). Todas as ligações de SMIL são activadas pelo utilizador.

Tratamento de ligações em documentos incorporados

Devido a ser de natureza integradora, a apresentação de um documento em SMIL pode recorrer a outras aplicações ou suplementos (não-SMIL). Por exemplo: um navegador de SMIL pode utilizar um suplemento de HTML para apresentar uma página em HTML incorporada. Por sua vez, um navegador HTML poderá utilizar um suplemento de SMIL para apresentar, incorporado numa página em HTML, um documento em SMIL.

Neste tipo de apresentações, as ligações podem ser definidas pelos documentos a diferentes níveis, dando origem a conflitos. Neste caso, a ligação definida pelo documento-contentor toma precedência sobre a ligação definida pelo objecto incorporado. Repare-se que uma vez que isto pode exigir comunicação entre o navegador e o suplemento, as implementações de SMIL podem optar por não seguir esta recomendação.

Se uma ligação estiver definida num documento em SMIL, incorporado, o percorrer dessa ligação só afecta o documento em SMIL que está incorporado.

Se uma ligação estiver definida num documento não-SMIL que esteja incorporado num documento em SMIL, o percorrer dessa ligação só pode afectar a apresentação do objecto incorporado, nunca a do documento em SMIL que o contém. Este restrição poderá ser eliminada em versões futuras de SMIL.

Endereçamento

Em SMIL existe suporte para identificadores com fragmentos de nomes e o conector '#'. Isto significa que os posicionadores suportados em SMIL são idênticos aos que se utilizam actualmente em HTML (ou seja, utiliza posicionadores na forma "http://foo.pt/algo/caminho#ponto1").

Ligar a fragmentos em SMIL

Um posicionador que aponta para um documento em SMIL pode conter uma parte fragmentária (por ex.: http://www.w3.org/test.smi#par1). A parte fragmentária é um valor de identificação que identifica um dos elementos no interior do documento em SMIL que é referenciado. Se uma ligação que contenha uma parte fragmentária for percorrida, a apresentação deve iniciar-se como se o utilizador tivesse avançado rapidamente pela apresentação representada pelo documento de destino até chegar ao início concreto do elemento designado pelo fragmento.

Podem ocorrer os seguintes casos especiais:

  1. O elemento endereçado pela ligação possui um atributo "repeat".
    1. Se o valor do atributo "repeat" for N, são reproduzidas toas as N repetições do elemento.
    2. Se o valor do atributo "repeat" for "indefinite", a reprodução termina de acordo com as regras definidas para o valor de repetição "indefinite".
  2. O elemento endereçado pela ligação está contido noutro elemento que contém um atributo "repeat".
    1. Se o valor do atributo "repeat" for N, a reprodução inicia-se no início do elemento endereçado pela ligação, seguido por N-1 repetições do elemento que contém o atributo"repeat".
    2. Se o valor do atributo "repeat" for "indefinite", a reprodução inicia-se no início do elemento endereçado pela ligação. A reprodução termina de acordo com as regras definidas para o valor de repetição "indefinite".
  3. O elemento endereçado pela ligação é parte do conteúdo de um elemento "switch": não é permitido efectuar uma ligação a elementos que façam parte do conteúdo de elementos "switch".

4.5.1 O elemento a

A funcionalidade do elemento "a" é muito semelhante à do elemento "a" de HTML 4.0 [HTML40] . Em SMIL acrescenta-se um atributo"show" que controla o comportamento temporal da origem quando se percorre a ligação. Para efeitos de sincronização, o elemento "a" é transparente, ou seja, não influencia a sincronização dos elementos que lhe são dependentes. Os elementos "a" não podem ser colocados uns dentro dos outros nem cruzar-se. Um elemento "a" tem de possui um atributo href .

Atributos

O elemento "a" pode possuir os seguintes atributos:

id
Definido na secção 2.
href
Este atributo contém o URI do destino da ligação.
O atributo "href" é obrigatório nos elementos "a".
show
Este atributo controla o comportamento do documento de origem que contém a ligação, quando se percorre a ligação. Pode tomar um dos seguintes valores:

O valor predefinido para "show" é "replace".

title
Definido na secção 3.3.1.
Recomenda-se vivamente que todos os elementos "a" possuam um atributo "title",  com uma descrição com significado. As ferramentas de desenvolvimento devem garantir que nenhum elemento possa ser introduzido num documento em SMIL sem possuir este atributo.

Conteúdo do elemento

O elemento "a" pode conter os seguintes dependentes:

animation
Definido na secção 4.2.3.
audio
Definido na secção 4.2.3.
img
Definido na secção 4.2.3.
par
Definido na secção 4.2.1.
ref
Definido na secção 4.2.3.
seq
Definido na secção 4.2.2.
switch
Definido na secção 4.3.
text
Definido na secção 4.2.3.
textstream
Definido na secção 4.2.3.
video
Definido na secção 4.2.3.

Exemplos

Exemplo 1

A ligação inicia a apresentação nova, substituindo a apresentação que estava a ser reproduzida.

<a href="http://www.cwi.nl/noutrolugar.smi">
     <video src="rtsp://foo.pt/grafismo.imf" region="l_window"/>
</a>

No exemplo dado, a segunda linha pode ser substituída por uma referência para qualquer sub-árvore válida de uma apresentação em SMIL.

Exemplo 2

A ligação inicia uma apresentação nova para além da que está a ser reproduzida.

<a href="http://www.cwi.nl/noutrolugar.smi" show="new">
     <video src="rtsp://foo.pt/grafismo.imf" region="l_window"/>
</a>

Isto permite, por exemplo, que um reprodutor de SMIL lance um navegador de HTML.

Exemplo 3

A ligação inicia uma apresentação nova e interrompe a apresentação que estava a ser reproduzida.

<a href="http://www.cwi.nl/noutrolugar.smi" show="pause">
     <video src="rtsp://foo.pt/grafismo.imf" region="l_window"/>
</a>

Exemplo 4

O exemplo seguinte contém uma ligação originária de uma apresentação A que liga ao interior de uma apresentação B. Este código executa a apresentação B a partir do início concreto do elemento com a identificação "seguinte".

Apresentação A:

     <a href="http://www.cwi.nl/ApresentaçãoB#seguinte">
       <video src="rtsp://foo.pt/grafismo.imf"/>
     </a>


Apresentação B (http://www.cwi.nl/apresentação):

      ...
      <seq>
        <video src="rtsp://foo.pt/grafismo.imf"/>
        <par>
          <video src="rtsp://foo.pt/timbl.rm" region="l_window"/>
          <video id="seguinte" src="rtsp://foo.pt/v1.rm" region="r_window"/>
                 ^^^^^^^^^
          <text src="rtsp://foo.pt/legendas1.html" region="l_2_title"/>
          <text src="rtsp://foo.pt/legendas2.rtx" region="r_2_title"/>
        </par>
      </seq>
      ...

4.5.2 O elemento anchor

A funcionalidade do elemento "a" é restrita, por só permitir associar uma ligação a um objecto multimédia completo. Os mapas de imagem, em HTML, demonstraram que é útil associar ligações a pedaços espaciais de um objecto. O elemento "anchor" (âncora) permite obter em SMIL uma funcionalidade semelhante:

  1. O elemento "anchor" permite associar o destino de uma ligação a pedaços espaciais e temporais de um objecto multimédia, utilizando o atributo "href" (por contraste, o elemento "a" só permite associar uma ligação a um objecto multimédia completo).
  2. O elemento "anchor" permite designar um pedaço de um objecto multimédia como destino de uma ligação, utilizando o atributo "id".
  3. O elemento "anchor" permite decompor um objecto em pedaços espaciais, utilizando o atributo "coords".
  4. O elemento "anchor" permite decompor um objecto em pedaços temporais, utilizando os atributos "begin" e "end". Os valores dos atributos "begin" e "end" são relativos ao início do objecto multimédia.

Atributos

O elemento "anchor" pode possuir os seguintes atributos:

begin
Definido na secção 4.2.1.
coords
O valor deste atributo especifica um rectângulo dentro da área de apresentação do objecto multimédia visual. A sintaxe e a semântica deste atributo são semelhantes às do atributo "coords" dos mapas de imagem de HTML, quando a ligação é associada a uma forma rectangular. O rectângulo é especificado por quatro valores de comprimento: o dois primeiros valores especificam as coordenadas do canto superior esquerdo do rectângulo. Os dois valores seguintes especificam as coordenadas do canto inferior direito do rectângulo. As coordenadas são relativas ao canto superior esquerdo do objecto multimédia visual (consulte a figura 4.5). Se uma coordenada é especificada como um valor percentual, será relativa à largura ou altura total da área de apresentação do objecto multimédia.
Um atributo com um valor de coordenadas errado é ignorado (coordenada horizontal direita inferior ou igual à coordenada horizontal esquerda, coordenada vertical inferior menor ou igual que a coordenada vertical superior). Se o rectângulo definido pelo atributo "coords" exceder a área ocupada pelo objecto multimédia, a altura e largura excedentárias são omitidas a partir dos limites do objecto multimédia.
Os valores do atributo "coords" possuem a seguinte sintaxe:
valor-de-coords ::= x-esquerdo "," y-superior "," x-direito "," y-inferior


semântica do atributo 'coords' D


Figura 4.5: Semântica do atributo "coords"

end
Definido na secção 4.2.1.
id
Definido na secção 2.
show
Definido na secção 4.5.1.
skip-content
Definido na secção 3.3.1.
title
Definido na secção 3.3.1.
Recomenda-se vivamente que todos os elementos "anchor" possuam um atributo "title",  com uma descrição com significado. As ferramentas de desenvolvimento devem garantir que nenhum elemento possa ser introduzido num documento em SMIL sem possuir este atributo.

Exemplos

1) Associar ligações a pedaços espaciais

No exemplo que se segue, o espaço de ecrã ocupado pelo clip de vídeo é dividido em duas secções. A cada uma dessas secções é associada uma ligação diferente.

<video src="http://www.w3.org/MaterialInteressante">
  <anchor href="http://www.w3.org/Audiovisual" coords="0%,0%,50%,50%"/>
  <anchor href="http://www.w3.org/Estilo"      coords="50%,50%,100%,100%"/>
</video>

2) Associar ligações a pedaços temporais

No exemplo que se segue, a duração de um clip de vídeo é dividida em dois sub-intervalos. A cada um desses sub-intervalos é associada uma ligação diferente.

<video src="http://www.w3.org/MaterialInteressante">
  <anchor href="http://www.w3.org/Audiovisual" begin="0s" end="5s"/>
  <anchor href="http://www.w3.org/Estilo"      begin="5s" end="10s"/>
</video>

3) Passar para um pedaço de um objecto

O exemplo que se segue contém uma ligação a partir de um elemento de uma apresentação A até ao meio de um objecto de vídeo contido noutra apresentação B. O resultado é a reprodução da apresentação B a partir do segundo 5 do vídeo (ou seja, a apresentação inicia-se como se o utilizador tivesse avançado rapidamente a apresentação até alcançar o ponto em que se inicia o fragmento designado no vídeo "MaterialInteressante").

Apresentação A:

<a href="http://www.cwi.nl/mm/ApresentaçãoB#tó">
   <video id="grafismo" src="rtsp://foo.pt/grafismo.imf" region="l_window"/>
</a>


Apresentação B:

<video src="http://www.w3.org/MaterialInteressante">
  <anchor id="zé" begin="0s" end="5s"/>
  <anchor id="tó" begin="5s" end="10s"/>
</video>

4) Combinar diferentes empregos das ligações

O exemplo seguinte mostra como as diferentes formas de utilização de ligações associadas podem ser combinadas.

Apresentação A:

<a href="http://www.cwi.nl/mm/ApresentaçãoB#tó">
  <video id="grafismo" src="rtsp://foo.pt/grafismo.imf" region="l_window"/>
</a>


Apresentação B:

<video src="http://www.w3.org/MaterialInteressante">
  <anchor id="zé" begin="0s" end="5s" coords="0%,0%,50%,50%"
          href="http://www.w3.org/"/>
  <anchor id="tó" begin="5s" end="10s" coords="0%,0%,50%,50%"
          href="http://www.w3.org/Tó"/>
</video>

5 DTD de SMIL

5.1 Relação com XML

Um documento em SMIL 1.0 pode conter, opcionalmente, uma declaração de tipo de documento, que indica a declaração de tipo de documento (DTD) que é utilizada para o documento. Em SMIL, a declaração de tipo de documento deve ter o seguinte aspecto (as aspas podem ser substituídas por plicas):

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

A especificação de XML 1.0 fornece uma forma de expandir o DTD utilizando o elemento <!DOCTYPE>, para acrescentar conjuntos novos de definições de entidades, por exemplo. Os autores não devem utilizar esta funcionalidade em SMIL, visto que muitos reprodutores de SMIL não a suportarão.

O código que se segue é inválido em SMIL:

<!DOCTYPE smil PUBLIC "-//W3C//DTD SMIL 1.0//EN"
               "http://www.w3.org/TR/REC-smil/SMIL10.dtd" [
<!ENTITY % SímbolosDaAcmeCorp PUBLIC
     "-//Acme Corp//ENTITIES Símbolos da Empresa//EN"
     "http://www.acme.pt/símbolos_da_empresa.xml"
>
%SímbolosDaAcmeCorp;
]>

5.2 DTD

<!--

    Esta é a definição de tipo de documento (DTD), de XML, para SMIL 1.0.

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

    Autores:
        Jacco van Ossenbruggen <jrvosse@cwi.nl> 
        Sjoerd Mullender       <sjoerd@cwi.nl>
        
    Mais informações acerca de SMIL estão disponíveis em:

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

-->

<!-- Entidades de utilidade geral -->
<!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
">

<!--=================== Documento de SMIL =====================================-->
<!--
     O elemento-raiz de SMIL, contém todos os outros elementos.
-->
<!ELEMENT smil (head?,body?)>
<!ATTLIST smil
        %id-attr;
>

<!--=================== O cabeçalho do documento =================================-->
<!ENTITY % layout-section "layout|switch">

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

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


<!--=================== Elemento "layout" ====================================-->
<!--
     O "layout" contém os elementos "region" e "root-layout", definidos através de
     smil-basic-layout ou de outros elementos definidos através de um mecanismo de
     disposição externo.
-->
<!ELEMENT layout ANY>
<!ATTLIST layout
        %id-attr;
        type CDATA      "text/smil-basic-layout"
>


<!--=================== Elemento "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;
>

<!--=================== Elemento "root-layout" ================================-->
<!ELEMENT root-layout EMPTY>
<!ATTLIST root-layout
        %id-attr;
        %title-attr;
        %viewport-attrs;
        %skip-attr;
>


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

<!--=================== O corpo do documento =================================-->
<!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;>

<!--=================== Atributos de sincronização ========================-->
<!ENTITY % sync-attributes "
        begin   CDATA   #IMPLIED
        end     CDATA   #IMPLIED
">

<!--=================== Atributos-parâmetros do "switch" =======================-->
<!ENTITY % system-attribute "
        system-bitrate             CDATA                #IMPLIED
        system-language            CDATA                #IMPLIED
        system-required            NMTOKEN              #IMPLIED
        system-screen-size         CDATA                #IMPLIED
        system-screen-depth        CDATA                #IMPLIED
        system-captions            (on|off)             #IMPLIED
        system-overdub-or-caption  (caption|overdub)    #IMPLIED
">

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


<!--=================== O elemento paralelo ==============================-->
<!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;
>

<!--=================== O elemento sequencial ============================-->
<!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;
>

<!--=================== O elemento "switch" ================================-->
<!-- No cabeçalho, um comutador só pode conter elementos de disposição;
     no corpo, só elementos-contentores. Contudo, não é possível expressar
     esta limitação no DTD (?), pelo que aqui ambas as situações são possíveis:
-->
<!ENTITY % switch-content "layout|(%container-content;)">
<!ELEMENT switch (%switch-content;)*>
<!ATTLIST switch
        %id-attr;
        %title-attr;
>

<!--=================== Elementos que são objectos multimédia =============================-->
<!-- Em SMIL só se define a estrutura. Os dados multimédia são referenciados
     pelo atributo "src" dos objectos multimédia.
-->

<!-- Além deste, constam deles os seguintes atributos, definidos
     na especificação de 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;
">

<!--
     A maior parte da informação encontra-se nos atributos: os objecto multimédia
     encontram-se vazios ou contendo elementos de ligação associados:
-->
<!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;>

<!--=================== Elementos de ligação =====================================-->

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


<!--=================== Elemento de ligação entre linhas ===============================-->
<!ELEMENT a (%schedule;|switch)*>
<!ATTLIST a
        %smil-link-attributes;
>


<!--=================== Elemento de ligação associado ===========================-->
<!ELEMENT anchor EMPTY>
<!ATTLIST anchor
        %skip-attr;
        %smil-link-attributes;
        %sync-attributes;
        coords          CDATA                   #IMPLIED
>

Referências

[CSS2]
"Cascading Style Sheets, level 2", B. Bos, H. Lie, C. Lilley, I. Jacobs, 12 de Maio de 1998.
Disponível em http://www.w3.org/TR/REC-CSS2/.
[HTML40]
"HTML 4.0 Specification", D. Raggett, A. Le Hors, I. Jacobs, 24 de Abril de 1998.
Disponível em 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 (mais as emendas da AM 1 até à AM 7).
[NAMESPACES]
"Namespaces in XML", T. Bray, D. Hollander, A. Layman, 27 de Março de 1998
W3C working draft. Disponível em http://www.w3.org/TR/WD-xml-names.
[PICS]
"PICS 1.1 Label Distribution -- Label Syntax and Communication Protocols", 31 de Outubro de 1996, T. Krauskopf, J. Miller, P. Resnick, W. Trees
Disponível em http://www.w3.org/TR/REC-PICS-labels-961031
[RFC1738]
"Uniform Resource Locators", T. Berners-Lee, L. Masinter, and M. McCahill, Dezembro de 1994.
Disponível em ftp://ftp.isi.edu/in-notes/rfc1738.txt.
[RFC1766]
"Tags for the Identification of Languages", H. Alvestrand, Março de 1995.
Disponível em ftp://ftp.isi.edu/in-notes/rfc1766.txt.
[RFC1808]
"Relative Uniform Resource Locators", R. Fielding, Junho de 1995.
Disponível em 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, Novembro de 1996.
Disponível em ftp://ftp.isi.edu/in-notes/rfc2045.txt. Repare-se que este RFC torna obsoleto o RFC1521, o RFC1522 e o 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.
Disponível em http://www.ics.uci.edu/pub/ietf/uri/draft-fielding-uri-syntax-02.txt. Este trabalho encontra-se em desenvolvimento, pelo que é de esperar uma actualização ao [RFC1738] e ao [RFC1808].
[XML10]
"Extensible Markup Language (XML) 1.0", T. Bray, J. Paoli, C.M. Sperberg-McQueen, editors, 10 de Fevereiro de 1998.
Disponível em http://www.w3.org/TR/REC-xml/

Apêndice

Expandir SMIL 1.0

(não-normativo)

Futuramente, SMIL 1.0 pode-se expandir através de outra recomendação do W3C ou por expansões privadas.

Para estas expansões, recomenda-se aderência às seguintes regras:

Recomenda-se que os reprodutores de SMIL 1.0 estejam preparados para processar documentos que contenham expansões que obedeçam a ambas estas regras.

As expansões devem ser processadas utilizando um mecanismo de espaço de nomes de XML, assim que um tal mecanismo venha a ser uma recomendação da W3C. No restante desta secção, a sintaxe e a semântica dos espaços de nomes de XML definidas na nota [NAMESPACE] do W3C serão utilizadas apenas a título de exemplo.

Podem ocorrer os seguintes casos:

  1. O documento contém uma declaração de espaço de nomes para a especificação de SMIL 1.0, que define um prefixo vazio. Neste caso, só é permitido utilizar num documento elementos e atributos não pertencentes a SMIL 1.0 se forem declarados através de um espaço de nomes de XML. O documento não pode conter uma declaração de tipo de documento para SMIL 1.0. Se contiver, não é válido.
    No exemplo que se segue, o elemento "new:a" é uma expansão válida. Os elementos "minhasmarcas:a" e "b" são erros de sintaxe, por não serem declarados através de um espaço de nome de 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>
          <minhasmarcas:a ... />
            ...
          </minhasmarcas:a>
          <b>
           ...
          </b>
        </par>
       </body>
     </smil>
    
  2. O documento não contém uma declaração de tipo de documento, contém uma declaração de tipo de documento para uma versão de SMIL posterior à 1.0 ou contém uma declaração de espaço de nomes destinada a uma especificação de SMIL posterior à 1.0. Para que um reprodutor de SMIL 1.0 possa reconhecer essa declaração de espaço de nomes, recomenda-se que os URI das versões futuras de SMIL se iniciem por http://www.w3.org/TR/REC-smil, seguidos por mais caracteres, destinados (por exemplo) ao número da versão.
    Neste caso, um reprodutor de SMIL 1.0 deve assumir que está a processar um documento em SMIL de versão posterior à 1.0.
    Podem dar-se os seguintes casos:
    Elemento desconhecido
    Os elementos desconhecidos são ignorados.
    Um elemento desconhecido pode conter elementos de SMIL 1.0. Quando ignorar ou processar conteúdo deste género depende do valor do atributo "skip-content". Se o valor do atributo for "true" ou se o atributo não estiver presente, o conteúdo não é processado. Se estiver definido como "false", então o conteúdo é processado.
    Existência de conteúdo num elemento que foi declarado "vazio"
    Uma versão futura de SMIL pode permitir a existência de conteúdo em elementos declarados como elementos "vazios", em SMIL 1.0.
    Se este conteúdo é ignorado ou não depende do valor do atributo "skip-content" do elemento que era anteriormente "vazio". Se o valor do atributo for "true", o conteúdo não é processado. Se estiver definido como "false", então o conteúdo é processado.
    Atributo desconhecido
    Os atributos desconhecidos são ignorados.
    Valor desconhecido num atributo
    Os atributos que tomem valores desconhecidos são ignorados.
  3. O documento contém uma declaração de tipo de documento para SMIL 1.0. Neste caso, não pode conter nenhum elemento que não seja de SMIL 1.0, ainda que declarado através de espaços de nomes de XML. Tal sucede porque essas expansões invalidam o documento.

Utilizar SMIL 1.0 como uma expansão

Quando o mecanismo de espaço de nomes de XML é utilizado para incluir elementos e atributos de SMIL noutros documentos baseados em XML, recomenda-se a utilização do seguinte identificador de espaço de nomes: http://www.w3.org/TR/REC-smil