<grammar xmlns="http://relaxng.org/ns/structure/1.0" xmlns:z="http://www.daisy.org/ns/z3998/annotations/#" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:sch="http://purl.oclc.org/dsdl/schematron" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" ns="http://www.daisy.org/ns/z3998/authoring/">
<info xmlns="http://docbook.org/ns/docbook" xml:lang="en">
<title>The object module </title>
<annotation annotates="/">
<para>This module defines the object.block element for including graphics, video and other external objects. </para>
<para>Three variants of the object element are defined for use in the Block , Phrase and Text classes respectively. </para>
<para>More information about this module is available at http://www.daisy.org/z3998/2012/auth/cm/#z3998.object.module</para>
</annotation>
<author>
<personname>Markus Gylling</personname>
<email>mgylling@daisy.org</email>
</author>
<copyright>
<year>2009</year>
<year>2010</year>
<year>2011</year>
<year>2012</year>
<holder>DAISY Consortium</holder>
</copyright>
<legalnotice>
<para>This module is licensed under a Creative Commons Attribution 3.0 license, a copy of which is available at
<link xlink:href="http://creativecommons.org/licenses/by/3.0/">http://creativecommons.org/licenses/by/3.0/</link>
</para>
<para>For complete licensing information, please refer to the LICENSE file that came with this distribution, a copy of which is also available from the DAISY web site at
<link xlink:href="http://www.daisy.org">www.daisy.org</link>
</para>
</legalnotice>
<revhistory>
<revision>
<date>2012-12-19</date>
<authorinitials>MGy</authorinitials>
<revdescription>
<para>Initial version</para>
</revdescription>
</revision>
</revhistory>
</info>
<div>
<define name="z3998.object.block">
<element name="object">
<a:documentation>The object element contains a reference to an external resource, such as a graphic or video. The Block variant is an adaptation for use embedding objects that are intended to be offset from any surrounding block elements. The referenced resource may be an image, video, XML text, or other content, but its media type must be supported by the current profile and features in use. The optional srctype attribute carries an enumeration of the allowed media types. The formal behavior of the object element is defined by XHTML 1.1 . </a:documentation>
<ref name="z3998.object.block.attlist"/>
<ref name="z3998.object.block.content"/>
<sch:rule context="default:object">
<sch:report test="descendant::*[namespace-uri(.) = 'http://www.w3.org/1998/Math/MathML']">The {object} element must not contain descendant elements from the MathML feature grammar.</sch:report>
</sch:rule>
</element>
</define>
<define name="z3998.object.phrase">
<element name="object">
<a:documentation>The object element contains a reference to an external resource, such as a graphic or video. The Phrase variant is an adaption for use embedding objects in phrasal constructs. The referenced resource may be an image, video, XML text, or other content, but its media type must be supported by the current profile and features in use. The optional srctype attribute carries an enumeration of the allowed media types. The formal behavior of the object element is defined by XHTML 1.1 . </a:documentation>
<ref name="z3998.object.phrase.attlist"/>
<ref name="z3998.object.phrase.content"/>
</element>
</define>
<define name="z3998.object.text">
<element name="object">
<a:documentation>The object element contains a reference to an external resource, such as a graphic or video. The Text variant is an adaption for use representing objects at the character level. The referenced resource may be an image, video, XML text, or other content, but its media type must be supported by the current profile and features in use. The optional srctype attribute carries an enumeration of the allowed media types. The formal behavior of the object element is defined by XHTML 1.1 . </a:documentation>
<ref name="z3998.object.text.attlist"/>
<ref name="z3998.object.text.content"/>
</element>
</define>
<define name="z3998.object.block.attlist">
<ref name="z3998.Block.noextern.attrib"/>
<ref name="z3998.Embed.attrib"/>
</define>
<define name="z3998.object.phrase.attlist">
<ref name="z3998.Phrase.noextern.attrib"/>
<ref name="z3998.Embed.attrib"/>
</define>
<define name="z3998.object.text.attlist">
<ref name="z3998.Text.noextern.attrib"/>
<ref name="z3998.Embed.attrib"/>
</define>
<define name="z3998.object.block.content">
<choice>
<ref name="z3998.object.block.content.extern"/>
<ref name="z3998.Flow.choice.noextern.model"/>
</choice>
</define>
<define name="z3998.object.block.content.extern">
<empty/>
</define>
<define name="z3998.object.phrase.content">
<choice>
<ref name="z3998.object.phrase.content.extern"/>
<ref name="z3998.Phrase.noextern.model"/>
</choice>
</define>
<define name="z3998.object.phrase.content.extern">
<empty/>
</define>
<define name="z3998.object.text.content">
<choice>
<ref name="z3998.object.text.content.extern"/>
<ref name="z3998.Text.model"/>
</choice>
</define>
<define name="z3998.object.text.content.extern">
<empty/>
</define>
</div>
<div>
<a:documentation>object - default content model contribution </a:documentation>
<define name="z3998.Text.core.class" combine="choice">
<ref name="z3998.object.text"/>
</define>
<define name="z3998.Phrase.core.class" combine="choice">
<ref name="z3998.object.phrase"/>
</define>
<define name="z3998.Block.core.class" combine="choice">
<ref name="z3998.object.block"/>
</define>
<define name="z3998.char.class" combine="choice">
<ref name="z3998.object.text"/>
</define>
<define name="z3998.Block.basic.model" combine="choice">
<ref name="z3998.object.block"/>
</define>
</div>
</grammar>