This section is informative.
The DAISY profile is new for SMIL 3.0.
This section is normative.
DAISY[DAISY] digital talking books arefully accessible for persons with print disabilities, such as those withblindness, low vision, hearing impairments, deaf-blindness, motordisabilities, dyslexia, and a wide range of cognitive/intellectualdisabilities. DAISY is the recognized international standard for digitaltalking books and has been adopted worldwide by organizations serving thesegroups.
With the release of SMIL 3.0, the pre-existing DAISY standard has gottenthe opportunity to move into the mainstream of multimedia development.Several accessibility features have been added to the SMIL language, and afully-conforming language profile has been defined for DAISY books.
This section is informative.
Although SMIL has always been an integral part of the DAISY standard, noneof the existing profiles fit the needs of DAISY. The fulllanguage profile is too large to be consideredpractical, while theTiny profile lackscertain timing, state, and media object modules required by DAISY. TheUnifiedMobile profile also lacksome of what is necessary for representing DAISY books in SMIL (e.g. thestate modules), and include modules which are not required by DAISY (e.g.animation, tiling, and transitions modules).
This section is normative.
In the text in this profile specification, the termDAISY profilewill be considered to refer exclusively to the SMIL 3.0 DAISY profile asdefined in this document.
The definition of conformance for a SMIL 3.0 profile is given in theDefinitionssection of theSMIL 3.0 ScalabilityFramework. Based on these definitions, the DAISY profile is aStrictHost-Language Conformant SMIL 3.0 Profile.
Within the referenced sections of the Scalability Framework, the followingdefinitions should be used:
http://www.w3.org/2008/SMIL30/Daisy
.xmlns="http://www.w3.org/ns/SMIL"
<!DOCTYPE smil PUBLIC "-//W3C//DTD SMIL 3.0 Daisy//EN""http://www.w3.org/2008/SMIL30/SMIL30Daisy.dtd">If a document contains this declaration, it must be a valid XML document. Note that this implies that extensions to the syntax defined in the DTD (or in the corresponding XML or RelaxNG schemas) are not allowed. If the document is invalid, the user agent should issue an error.
http://www.w3.org/2008/SMIL30/informative-DTD/SMIL30Daisy.dtd
version="3.0" baseProfile="Daisy"As a consequence of the two requirements above, the effective root element declaration for a DAISY profile document must be:
<smil xmlns="http://www.w3.org/ns/SMIL" version="3.0" baseProfile="Daisy"> ...</smil>The root element may be extended as required with additional atttributes.
This version of SMIL provides a definition of strict host-languageconformant SMIL 3.0 documents, which are restricted to tags and attributesfrom the SMIL 3.0 namespace. The Section "Extending/Restrictinga SMIL 3.0 Profile" provides information on using the SMIL 3.0 DAISYprofile with other namespaces, for instance, on including new tags withinSMIL 3.0 documents.
Language designers and implementors wishing to extend the DAISY profilemust consider the implications of the use of namespace extension syntax.Please consult the section onScalable Profiles for restrictionsand recommendations for best practice when extending SMIL.
The definition of user agent conformance for SMIL 3.0 DAISY profiledocuments is given in theConformingSMIL 3.0 User Agents section of theSMIL 3.0 Scalability Framework.Conforming DAISY profile user agents must adhere completely to thissection.
The DAISY profile includes the following SMIL modules:
The collection names contained in the following table define the DAISYprofile vocabulary.
DAISY Profile | |
---|---|
Collection Name | Elements in Collection |
Layout | region,root-layout,layout |
LinkAnchor | a,area (anchor) |
MediaContent | animation,audio,img,ref,text,textstream,video |
Metainformation | meta,metadata |
State | delvalue,newvalue,send,setvalue |
Structure | smil,head,body |
Schedule | excl,par,seq |
Other | paramGroup,switch |
In the following sections, we define the set of elements and attributesused in each of the modules included in the DAISY profile. The content modelfor each element is described. The content model of an element is adescription of elements which may appear as its direct children. The specialcontent model "EMPTY" means that a given element may not have children.
Collection Name | Attributes in Collection |
---|---|
Core | alt (CDATA),baseProfile'Daisy',class (CDATA),label (CDATA),longdesc (CDATA),readIndex'0',title (CDATA),version (3.0)'3.0',xml:base (CDATA)[XMLBase],xml:id (id) (ID) |
I18n | its:dir (lro |ltr |rlo |rtl),its:locNote (CDATA),its:locNoteRef (CDATA),its:locNoteType (alert |description),its:term (no |yes),its:termInfoRef (CDATA),its:translate (no |yes),xml:lang (CDATA) |
Role | xhtml:role, with [xmlns:xhtml="http://www.w3.org/1999/xhtml"] |
All attributes in the collectionCore aredefined for all the elements of the DAISY profile. The
The DAISY profile includes the separate XHTML Role Attribute Module
This section is informative
The DAISY profile allows authors to use the
The DAISY profile does not explicitly extend the collection of rolesdefined by the XHTML Role Attribute Module, and does not impose restrictionson the number of actual semantic roles a single
According to the XHTML Role Attribute Module's Host Language Conformancerules[XHTMLrole-HostLanguageConformance],it is a requirement to prefix therole attributename with the imported namespace prefix for "http://www.w3.org/1999/xhtml".For example:
<smil xmlns="http://www.w3.org/ns/SMIL" version="3.0" baseProfile="Daisy" xmlns:xhtml="http://www.w3.org/1999/xhtml" > ... <par xhtml:role="..."> ... </par> ...</smil>
In the DAISY profile, Content Control elements may have the followingattributes and content model :
Content Control Module | ||
---|---|---|
Elements | Attributes | Content model |
switch | Core,I18n,Role,Test,allowReorder (no |yes)'no' | ((metadata |switch)*, (((((Schedule | MediaContent | State |a)+, (metadata |switch)*)+ | ((param |area), (metadata |switch)*)+)) | (layout, (metadata |switch)*)*)) |
This profile adds theswitchelement to the content model of thepar,seq and
Theswitch element has therestriction that the content of the switch may only be from the same set ofelements.
The Content Control functionality is used to define the Attribute set"Test":
Collection Name | Attributes in Collection |
---|---|
Test | systemAudioDesc (off |on),systemBaseProfile,systemBitrate,systemCPU,systemCaptions (off |on),systemComponent,systemLanguage,systemOperatingSystem,systemOverdubOrSubtitle (overdub |subtitle),systemRequired,systemScreenDepth,systemScreenSize,systemVersion (3.0) |
In the DAISY profile, Layout elements may have the following attributesand content model :
Layout Module | ||
---|---|---|
Elements | Attributes | Content model |
region | Core,I18n,Role,SubregionAttributes,Test,background-color,regionName,showBackground (always |whenActive)'always',skip-content (false |true)'true' | (metadata |region)* |
root-layout | Core,I18n,Test,background-color,backgroundColor,backgroundOpacity'100%',height'auto',skip-content (false |true)'true',width'auto' | (metadata)* |
layout | Core,I18n,Test,type'text/smil-basic-layout' | (metadata |region |root-layout)* |
The attribute collection SubregionAttributes is defined as follows:
Collection Name | Attributes in Collection |
---|---|
SubregionAttributes | backgroundColor,backgroundOpacity'100%',bottom'auto',fit (fill |hidden |meet |meetBest |scroll |slice),height'auto',left'auto',right'auto',top'auto',width'auto',z-index |
This profile adds thelayoutelement to the content model of the
This profile includes both timing and linking modules; however, theprofile authors have decided to explicitly exclude timing attributes onlinking elements because it introduces too much complexity.
Both thea and
In the DAISY profile, linking elements may have the following attributesand content model :
Linking Module | ||
---|---|---|
Elements | Attributes | Content model |
a | Core,I18n,Role,Test,Timing,href | (MediaContent | Schedule | State |metadata |switch)* |
area | Core,I18n,Role,Test,Timing,coords,expr,href,nohref (nohref),shape (circle |default |poly |rect)'rect',skip-content (false |true)'true' | (metadata)* |
This profile adds thea element to thecontent model of thepar,
In the DAISY profile, media elements may have the following attributes andcontent model:
Media Object Module | ||
---|---|---|
Elements | Attributes | Content model |
ref,animation,audio,img,text,textstream,video | Core,I18n,MediaDescriptionAttributes,Role,Test,Timing,bottom'auto',clipBegin,clipEnd,endsync'media',expr,fill (auto |default |freeze |hold |remove |transition)'default',height'auto',left'auto',mediaRepeat (preserve |strip)'preserve',paramGroup,region,right'auto',src,top'auto',type,width'auto' | (area |metadata |param |switch)* |
param | Core,I18n,Test,name,skip-content (false |true)'true',type,value,valuetype (data |object |ref)'data' | (metadata)* |
paramGroup | Core,I18n,skip-content (false |true)'true' | (metadata |param)* |
The attribute collection MediaDescriptionAttributes is defined asfollows:
Collection Name | Attributes in Collection |
---|---|
MediaDescriptionAttributes | abstract (CDATA),author (CDATA),copyright (CDATA) |
This profile adds theref,
This section is informative.
Text media with an external source may put a URI in the
An example of referring to a text fragment in an external file byspecifying the fragment'sxml:idvalue:
<par> <text src="text.xml#id"/> <audio src="audio.mp3"/></par>
An example of referring to a document fragment (for example,the second paragraph) by using XPointer:
<par> <text src="text.xml#xpointer(/body/p[2])"/> <audio src="audio.mp3"/></par>
Theparam element conveys renderinginstructions about a media type.
The DAISY profile defines the following
name attribute values on theparam element | ||
---|---|---|
name | value | Description |
daisy:use-renderer | tts |braille |avatar |tactile | Send the media data to a text-to-speech engine, a Braille display, a (sign language) avatar, or a tactile display. |
daisy:display-in-context | true |false | If true, display the text document in the text region and focus on the specified fragment. If false, render only the text fragment by itself (not in its parent document) in the text region. |
daisy:css-highlight-style | A simple CSS style. | To give the effect of a highlight on the text fragment, CSS style may be used. |
It is expected that media objects using<paramname="daisy:use-renderer" value="..." />
exist alongside a defaultrendering of the media.
In the case where the whole document is being shown at once(<param name="daisy:display-in-context" value="true"/>
),an intelligent renderer will ensure that the portion of the parent documentcontaining the specified fragment will be put in view so the fragment may beseen. It is left to the renderer to decide how much of the surroundingdocument context to include (lines above and below the target fragment).
This section is informative.
The parameters below specify that this text element must be displayed inthe context of its parent document, and that it must be highlighted with thegiven style attributes when it is active.
<smil xmlns="http://www.w3.org/ns/SMIL" version="3.0" baseProfile="Daisy" > ... <body> ... <par> <text src="example.html#p2" region="centerTextRegion" > <param name="daisy:display-in-context" value="true" /> <param name="daisy:css-highlight-style" value="background-color: yellow; color: black; border: solid thin green"/> </text> </par> ... </body></smil>
To reduce verbosity, theparamelements may be put in a
<smil xmlns="http://www.w3.org/ns/SMIL" version="3.0" baseProfile="Daisy" > <head> <paramGroup xml:id="textParams"> <param name="daisy:display-in-context" value="true" /> <param name="daisy:css-highlight-style" value="background-color: yellow; color: black; border: solid thin green"/> </paramGroup> <region xml:id="textWindow" width="100%" height="100%" paramGroup="textParams"/> ... </head> <body> ... <par> <text src="my_text.txt" region="textWindow"/> <audio src="audio.mp3" clipBegin="0.00s" clipEnd="3.00s"/> </par> ... </body></smil>
This profile does not require support of any particular formats. However,it is strongly recommended to support the formats listed in the SMIL 3.0Language profile'sRequired MIME Typessection.
In the DAISY profile, Metainformation elements may have the followingattributes and content model :
Metainformation Module | ||
---|---|---|
Elements | Attributes | Content model |
meta | Core,I18n,content,name,skip-content (false |true)'true' | EMPTY |
metadata | Core,I18n,skip-content (false |true)'true' | EMPTY |
This profile adds themeta elementto the content model of theheadelement of theStructure Module.
The content model ofmetadata isEMPTY. Profiles that extend the DAISY profile may define the RDF (ResourceDescription Framework) schema to be used in extending the content model ofthemetadata element. The ResourceDescription Framework is defined in the W3C RDF Recommendation
Note that because themetadataelement may appear on its own, it may be used to wrap a
The following name attribute values may be used to specify therelationship between documents:
name attribute values on themeta element | |
---|---|
value | Description |
next | Value ofcontent gives the next SMIL document in the presentation |
prev | Value ofcontent gives the previous SMIL document in the presentation |
An example using this to define the static default playback order in amulti-document SMIL presentation:
<-- chapter2.smil --><smil xmlns="http://www.w3.org/ns/SMIL" version="3.0" baseProfile="Daisy" > <head> <meta name="next" content="chapter3.smil"/> <meta name="prev" content="chapter1.smil"/> ... </head> <body> ... </body></smil>
TheState Modules provide a framework fordeclaratively manipulating various bits of state in a SMIL presentation. TheState Modules define semantics for the
In the DAISY profile, the State elements may have the following attributesand content model:
State Module | ||
---|---|---|
Elements | Attributes | Content model |
delvalue | Core,I18n,Test,Timing,expr,ref,skip-content (false |true)'true' | (metadata)* |
newvalue | Core,I18n,Test,Timing,expr,name,ref'/*',skip-content (false |true)'true',value,where (after |before |child)'child' | (metadata)* |
send | Core,I18n,Test,Timing,expr,skip-content (false |true)'true',submission | (metadata)* |
setvalue | Core,I18n,Test,Timing,expr,ref,skip-content (false |true)'true',value | (metadata)* |
state | Core,I18n,language'http://www.w3.org/TR/1999/REC-xpath-19991116',skip-content (false |true)'true',src | EMPTY |
submission | Core,I18n,action,method (get |post |put),ref,replace (all |instance |none),target | (metadata)* |
This profile adds thestate andsubmission elements to thecontent model of thehead element oftheStructure Module, and the
The content model of thestateelement is declared as EMPTY. The
Thesubmission attribute valueis an IDREF that refers to a submission element.
Themethod attribute must at leastsupport the valuesget,
Interpolation of values using the mechanism from theStateInterpolationmodule is supported on thehref,
Support for using XPath 1.0[XPATH10] asthe expression language is required. The default value for the
The content of thestate elementmust be a single XML document. If this document is empty at initializationtime a single empty<data/> root element isadded.
The following constraints are in force:
Interpretation of XPath expressions depends on anexpressioncontext. That context is defined thus:
This section is informative.
In DAISY books, publication components such as page number announcementsand footnotes may be turned on or off. These playback options are implementedusing state expressions.
The DAISY specification is extensible to be able to incorporate contentwritten in other XML languages (such as MathML); however, not all user agentswill support these extensions. In these cases, fallbacks specified usingstate expressions may give alternatives to user agents.
This example shows how to use state and param together to targetspecialized text renderers. A state expression controls whether the elementwill be rendered or not, and param provides additional information about themedia. A presentation is being rendered on a user's computer, to which anelectronic Braille display is attached . The SMIL player is aware that thisdisplay is enabled. The Braille display normally receives the same textoutput as is shown on-screen and renders it as Braille. When the SMIL playerreaches a point where specialized text (such as a mathematical expression,which is represented differently in Braille markup) has to be substituted forthe on-screen text, it notifies the Braille display. The part of thepresentation in which this substitution takes place would be authored asfollows:
<smil xmlns="http://www.w3.org/ns/SMIL" version="3.0" baseProfile="Daisy" > <head> <--This state data model could live in a separate file and be accessed by other user agent components --> <state xmlns:f="http://www.w3.org/2002/xforms"> <f:model> <data xmlns=""> <brailleAvailable>true</brailleAvailable> </data> </f:model> <f:bind nodeset="brailleAvailable" type="xsd:boolean"/></state> ... </head> <body> <seq> <par> <-- This is the Braille rendering equivalent of the text contents. A Braille display is required to show it. --> <text src="special-notation-for-braille.xml#p4" dur="indefinite" expr="brailleAvailable"> <param name="daisy:use-renderer" value="braille"/> </text> <-- This is the default visual rendering of the text contents.--> <text src="my_text.xml#p4"/> <audio src="audio.mp3" clipBegin="0.00s" clipEnd="3.00s"/> </par> ... </seq> </body></smil>
In the DAISY profile, Structure elements may have the following attributesand content model:
Structure Module | ||
---|---|---|
Elements | Attributes | Content model |
smil | Core,I18n,Test,xmlns,xmlns:its'http://www.w3.org/2005/11/its',xmlns:xhtml'http://www.w3.org/1999/xhtml' | ((metadata)*, (head, (metadata)*)?, (body, (metadata)*)?) |
head | Core,I18n | ((meta)*, ((metadata), (meta)*)?, ((layout |switch), (meta)*)?, ((state), (meta)*)?, ((submission), (meta)*)*, (((paramGroup)+), (meta)*)?) |
body | Core,I18n,MediaDescriptionAttributes,Timing,fill (auto |default |freeze |hold |remove |transition)'default' | (MediaContent | Schedule | State |a |metadata |switch)* |
In the DAISY profile, Timing elements may have the following attributesand content model:
Timing and Synchronization Module | ||
---|---|---|
Elements | Attributes | Content model |
par | Core,I18n,MediaDescriptionAttributes,Role,Test,Timing,endsync'last',expr,fill (auto |default |freeze |hold |remove |transition)'default',region | (MediaContent | Schedule | State |a |metadata |switch)* |
seq | Core,I18n,MediaDescriptionAttributes,Role,Test,Timing,expr,fill (auto |default |freeze |hold |remove |transition)'default',region | (MediaContent | Schedule | State |a |metadata |switch)* |
excl | Core,I18n,MediaDescriptionAttributes,Role,Test,Timing,endsync'last',expr,fill (auto |default |freeze |hold |remove |transition)'default',region,skip-content (false |true)'true' | (MediaContent | Schedule | State |a |metadata |switch)* |
The Attribute collection Timing is defined as follows:
Collection Name | Attributes in Collection |
---|---|
Timing | begin,dur,end |
This profile defines the following values for the
specialend attribute values | |
---|---|
value | Description |
daisy:userEscape;childId-value.end | The time container ends when thedaisy:userEscape event happens or when the last child finishes playing. This may be used for escapable content,i.e., parts of the book which the user may "jump out of", such as nested tables. |
daisy:userResume(;childId-value.end + Clock-value)? | The time container ends when thedaisy:userResume event happens or at a predefined length of time after the last child element finishes playing. This may be used for authoring pauses into a presentation. |
This section is normative.
The DAISY profileDocument Type Definition isdefined as a set of SMIL 3.0 modules, with the addition of the XHTML RoleAttribute Module[XHTMLrole]. All SMIL 3.0modules are integrated according to the guidelines in the W3C Note"Synchronized Multimedia Modules based upon SMIL 1.0"
This section is informative.
This document shows a SMIL file representing part of a DAISY book whichhas been produced according to the SMIL 3.0 DAISY profile. It renderssynchronized text and audio with user-controlled playback options. It addsthe following new features, which have not been present in previous versionsof DAISY specifications:
Important note: the namespace "daisyskip" has not yet been officiallydefined and is included here in concept only. The concept is that thereshould be a separate section for variables whose values may be set by theuser agent.
<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE smil PUBLIC "-//W3C//DTD SMIL 3.0 Daisy//EN" "http://www.w3.org/2008/SMIL30/SMIL30Daisy.dtd"><smil xmlns="http://www.w3.org/ns/SMIL" version="3.0" baseProfile="Daisy" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:daisyskip="http://daisy.org/smil/features/skippability" ><head> <meta name="title" content="Smil 3 Demo"/> <meta name="next" content="bagw0002.smil"/> <meta name="previous" content="bagw0000.smil"/> <paramGroup xml:id="textParams"> <param name="daisy:display–in–context" value="true" /> <param name="daisy:css–highlight–style" value="background–color: yellow; color: black; border: solid thin green"/> </paramGroup> <layout> <root-layout xml:id="root-layout" width="100%" height="100%"/> <region xml:id="text" width="100%" height="100%" paramGroup="textParams"/> </layout> <!--Note that, instead of the following state element, that data could go in a separate file--> <!--such as: <state src="stateData.xml"/>--> <state xmlns:f="http://www.w3.org/2002/xforms"> <f:model> <!--Everything in the daisyskip namespace should be exposed by the user agent--> <!--Variables that are for internal use only (there are none here) would be declared in the same way, but without the daisyskip: prefix--> <f:instance> <!--The label references a text/audio representation of "play page number announcements"--> <daisyskip:playPageAnnouncements label="labels.smil#play_page">true</daisyskip:playPageAnnouncements> <daisyskip:playProducerNotes label="labels.smil#play_prodnote">true</daisyskip:playProducerNotes> </f:instance> <f:bind nodeset="/daisyskip:playPageAnnouncements" type="xsd:boolean"/> <f:bind nodeset="/daisyskip:playProducerNotes" type="xsd:boolean"/> </f:model> </state></head><body> <seq dur="30.076s"> <par endsync="last" xhtml:role="sectionStart" label="labels.smil#section"> <text src="ncconlydemo.html#bagw_0001" xml:id="bagw_0001" region="text"/> <seq> <audio src="bagw0019.mp3" clip-begin="npt=0.000s" clip-end="npt=2.035s" xml:id="qwrt_0001"/> </seq> </par> <par endsync="last" xhtml:role="paragraph"> <text src="ncconlydemo.html#bagw_0001" xml:id="xbag_0001" region="text"/> <seq> <audio src="bagw0019.mp3" clip-begin="npt=2.035s" clip-end="npt=8.901s" xml:id="qwrt_0002"/> </seq> </par> <par endsync="last" xhtml:role="ProducerNote" expr="/daisyskip:playProducerNotes"> <text src="ncconlydemo.html#bagw_0002" xml:id="bagw_0002" region="text"/> <seq> <audio src="bagw0019.mp3" clip-begin="npt=8.901s" clip-end="npt=19.554s" xml:id="qwrt_0003"/> <audio src="bagw0019.mp3" clip-begin="npt=19.554s" clip-end="npt=28.774s" xml:id="qwrt_0004"/> </seq> </par> <par endsync="last" xhtml:role="PageAnnouncement" expr="/daisyskip:playPageAnnouncements"> <text src="ncconlydemo.html#bagw_0003" xml:id="bagw_0003" region="text"/> <seq> <audio src="bagw0019.mp3" clip-begin="npt=28.774s" clip-end="npt=30.076s" xml:id="qwrt_0005"/> </seq> </par> <par endsync="last" xhtml:role="Page"> <text src="ncconlydemo.html#bagw_0003" xml:id="bagw_0003" region="text"/> <seq> <audio src="bagw0019.mp3" clip-begin="npt=28.774s" clip-end="npt=30.076s" xml:id="qwrt_0005"/> </seq> </par> <par endsync="last" xhtml:role="Page"> <text src="ncconlydemo.html#bagw_0003" xml:id="bagw_0003" region="text"/> <seq> <audio src="bagw0019.mp3" clip-begin="npt=28.774s" clip-end="npt=30.076s" xml:id="qwrt_0005"/> </seq> </par> </seq></body></smil>