--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0"
+ xmlns:rng="http://relaxng.org/ns/structure/1.0"
+ xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
+ xmlns:s="http://www.ascc.net/xml/schematron"
+ xmlns:doc="http://nwalsh.com/xmlns/documentation"
+ xmlns:db="http://nwalsh.com/xmlns/docbook-grammar-structure"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+
+<rng:div doc:docbook="yes" xmlns="">
+<partinfo>
+<releaseinfo
+ role="cvs">$Id$</releaseinfo>
+<title>Slides</title>
+<productname>Slides</productname>
+<productnumber>2.4.0</productnumber>
+<releaseinfo role="filename">slides</releaseinfo>
+<copyright>
+<year>1999</year>
+<year>2000</year>
+<year>2001</year>
+<year>2002</year>
+<year>2003</year>
+<holder>Norman Walsh</holder>
+</copyright>
+</partinfo>
+
+<partintro>
+<para>This is the driver file for V3.1.0 of the Website document type.
+Please use the following formal public identifier to identify it:</para>
+
+<screen>"-//Norman Walsh//DTD Slides V3.1.0//EN"</screen>
+
+<para>For example, if
+you are using the Slides DTD directly, use the FPI in the DOCTYPE
+declaration:</para>
+
+<programlisting><![CDATA[<!DOCTYPE slides PUBLIC "-//Norman Walsh//DTD Slides V3.1.0//EN"
+ "http://docbook.sourceforge.net/release/slides/3.1.0/schema/dtd/slides.dtd"
+ [...]>]]></programlisting>
+
+<para>Or, if you have a higher-level driver file that customizes Slides,
+use the FPI in the parameter entity declaration:</para>
+
+<programlisting><![CDATA[<!ENTITY % SlidesDTD PUBLIC "-//Norman Walsh//DTD Slides V3.1.0//EN"
+ "http://docbook.sourceforge.net/release/slides/3.1.0/schema/dtd/slides.dtd">
+%SlidesDTD;]]></programlisting>
+
+<para>Please direct all questions and comments about this DTD to
+Norman Walsh, <email>ndw@nwalsh.com</email>.</para>
+</partintro>
+</rng:div>
+
+<include href="../../../schema/relaxng/docbook.rng"/>
+
+<define name="local.divcomponent.mix" combine="choice">
+ <choice>
+ <ref name="speakernotes"/>
+ </choice>
+</define>
+
+<define name="local.component.mix" combine="choice">
+ <choice>
+ <ref name="speakernotes"/>
+ </choice>
+</define>
+
+<define name="slides">
+ <element name="slides">
+ <ref name="slidesinfo"/>
+ <optional>
+ <ref name="speakernotes"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="foil"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <ref name="foilgroup"/>
+ </zeroOrMore>
+ <ref name="label.attrib"/>
+ <ref name="status.attrib"/>
+ <ref name="common.attrib"/>
+ <ref name="role.attrib"/>
+ </element>
+</define>
+
+<define name="slidesinfo">
+ <element name="slidesinfo">
+ <oneOrMore>
+ <choice>
+ <ref name="mediaobject"/>
+ <ref name="legalnotice"/>
+ <ref name="subjectset"/>
+ <ref name="keywordset"/>
+ <ref name="bibliocomponent.mix"/>
+ </choice>
+ </oneOrMore>
+ <ref name="common.attrib"/>
+ <ref name="role.attrib"/>
+ </element>
+</define>
+
+<define name="foilgroup">
+ <element name="foilgroup">
+ <optional>
+ <ref name="foilgroupinfo"/>
+ </optional>
+ <ref name="title"/>
+ <optional>
+ <ref name="subtitle"/>
+ </optional>
+ <optional>
+ <ref name="titleabbrev"/>
+ </optional>
+ <zeroOrMore>
+ <ref name="divcomponent.mix"/>
+ </zeroOrMore>
+ <oneOrMore>
+ <ref name="foil"/>
+ </oneOrMore>
+ <ref name="common.attrib"/>
+ <ref name="role.attrib"/>
+ <ref name="label.attrib"/>
+ <ref name="status.attrib"/>
+ </element>
+</define>
+
+<define name="foilgroupinfo">
+ <element name="foilgroupinfo">
+ <oneOrMore>
+ <choice>
+ <ref name="mediaobject"/>
+ <ref name="legalnotice"/>
+ <ref name="subjectset"/>
+ <ref name="keywordset"/>
+ <ref name="bibliocomponent.mix"/>
+ </choice>
+ </oneOrMore>
+ <ref name="common.attrib"/>
+ <ref name="role.attrib"/>
+ </element>
+</define>
+
+<define name="foil">
+ <element name="foil">
+ <optional>
+ <ref name="foilinfo"/>
+ </optional>
+ <ref name="title"/>
+ <optional>
+ <ref name="subtitle"/>
+ </optional>
+ <optional>
+ <ref name="titleabbrev"/>
+ </optional>
+ <oneOrMore>
+ <ref name="divcomponent.mix"/>
+ </oneOrMore>
+ <ref name="common.attrib"/>
+ <ref name="role.attrib"/>
+ <ref name="label.attrib"/>
+ <ref name="status.attrib"/>
+ </element>
+</define>
+
+<define name="foilinfo">
+ <element name="foilinfo">
+ <oneOrMore>
+ <choice>
+ <ref name="mediaobject"/>
+ <ref name="legalnotice"/>
+ <ref name="subjectset"/>
+ <ref name="keywordset"/>
+ <ref name="bibliocomponent.mix"/>
+ </choice>
+ </oneOrMore>
+ <ref name="common.attrib"/>
+ <ref name="role.attrib"/>
+ </element>
+</define>
+
+<define name="speakernotes">
+ <element name="speakernotes">
+ <zeroOrMore>
+ <ref name="divcomponent.mix"/>
+ </zeroOrMore>
+ <ref name="common.attrib"/>
+ <ref name="role.attrib"/>
+ </element>
+</define>
+
+<start combine="choice">
+ <choice>
+ <ref name="slides"/>
+ </choice>
+</start>
+
+</grammar>