<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook-slides" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
  <xs:include schemaLocation="docbook.xsd"/>
  <xs:import namespace="http://docbook.org/ns/docbook" schemaLocation="db.xsd"/>
  <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
  <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
  <!-- See http://docbook.org/ns/docbook-slides -->
  <!--
    This file is part of DocBook Slides V5.0
    
    Copyright 2012 Gabor Kovesdan
    
    Release: $Id$
    
    Permission to use, copy, modify and distribute the DocBook Slides
    schema and its accompanying documentation for any purpose and without
    fee is hereby granted in perpetuity, provided that the above copyright
    notice and this paragraph appear in all copies. The copyright
    holders make no representation about the suitability of the schema
    for any purpose. It is provided "as is" without expressed or implied
    warranty.
    
    If you modify the DocBook Slides schema in any way, label your schema
    as a variant of DocBook Slides. See the reference documentation
    (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
    for more information.
    
    Please direct all questions, bug reports, or suggestions for changes
    to the docbook@lists.oasis-open.org mailing list. For more
    information, see http://www.oasis-open.org/docbook/.
    
    ======================================================================
  -->
  <!-- Avoid ID clashes -->
  <xs:attributeGroup name="db._any.attribute">
    <xs:anyAttribute processContents="skip"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="db.common.attributes">
    <xs:attribute ref="xml:id"/>
    <xs:attributeGroup ref="db:db.common.base.attributes"/>
    <xs:attribute name="annotations"/>
    <xs:attributeGroup ref="dbs:dbs.style.attributes"/>
  </xs:attributeGroup>
  <!-- Any element and attribute from the SVG namespace -->
  <xs:group name="db._any.svg">
    <xs:sequence>
      <xs:any namespace="http://www.w3.org/2000/svg" processContents="skip"/>
    </xs:sequence>
  </xs:group>
  <!-- Any element and attribute from the MathML namespace -->
  <xs:group name="db._any.mml">
    <xs:sequence>
      <xs:any namespace="http://www.w3.org/1998/Math/MathML" processContents="skip"/>
    </xs:sequence>
  </xs:group>
  <!-- Any attribute from any namespace -->
  <xs:attributeGroup name="dbs._any.attribute">
    <xs:anyAttribute processContents="skip"/>
  </xs:attributeGroup>
  <xs:group name="dbs.all.content">
    <xs:sequence>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="db:db.all.blocks"/>
        <xs:element ref="dbs:speakernotes"/>
        <xs:element ref="dbs:handoutnotes"/>
        <xs:group ref="dbs:db._any.svg"/>
        <xs:group ref="dbs:db._any.mml"/>
        <xs:element ref="dbs:block"/>
      </xs:choice>
    </xs:sequence>
  </xs:group>
  <xs:element name="block">
    <xs:annotation>
      <xs:documentation>Indicates a formatting block that can have its own styling applied</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="dbs:dbs.all.content"/>
      <xs:attributeGroup ref="dbs:dbs.block.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="dbs.block.role.attribute">
    <xs:attribute name="role" use="required">
      <xs:annotation>
        <xs:documentation>Role attribute for the block element</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="dbs.block.status.attribute">
    <xs:attributeGroup ref="db:db.status.attribute"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="dbs.block.attlist">
    <xs:attribute name="role">
      <xs:annotation>
        <xs:documentation>Role attribute for the block element</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attributeGroup ref="dbs:db.common.attributes"/>
    <xs:attributeGroup ref="db:db.common.linking.attributes"/>
    <xs:attribute name="label"/>
    <xs:attribute name="status"/>
  </xs:attributeGroup>
  <xs:element name="slides">
    <xs:annotation>
      <xs:documentation>Root element of a slides document</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="db:db._info.title.req"/>
        <xs:element minOccurs="0" ref="dbs:speakernotes"/>
        <xs:element minOccurs="0" ref="dbs:handoutnotes"/>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element ref="dbs:foil"/>
          <xs:element ref="dbs:foilgroup"/>
        </xs:choice>
      </xs:sequence>
      <xs:attributeGroup ref="dbs:dbs.slides.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="dbs.slides.role.attribute">
    <xs:attribute name="role" use="required">
      <xs:annotation>
        <xs:documentation>Role attribute for the slides element</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="dbs.slides.status.attribute">
    <xs:attributeGroup ref="db:db.status.attribute"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="dbs.slides.attlist">
    <xs:attribute name="role">
      <xs:annotation>
        <xs:documentation>Role attribute for the slides element</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attributeGroup ref="dbs:db.common.attributes"/>
    <xs:attributeGroup ref="db:db.common.linking.attributes"/>
    <xs:attribute name="label"/>
    <xs:attribute name="status"/>
  </xs:attributeGroup>
  <xs:element name="foilgroup">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="db:db._info.title.req"/>
        <xs:group minOccurs="0" maxOccurs="unbounded" ref="dbs:dbs.all.content"/>
        <xs:element maxOccurs="unbounded" ref="dbs:foil"/>
      </xs:sequence>
      <xs:attributeGroup ref="dbs:dbs.foilgroup.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="dbs.foilgroup.role.attribute">
    <xs:attribute name="role" use="required">
      <xs:annotation>
        <xs:documentation>Role attribute for the foilgroup element</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="dbs.foilgroup.status.attribute">
    <xs:attributeGroup ref="db:db.status.attribute"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="dbs.foilgroup.attlist">
    <xs:attribute name="role">
      <xs:annotation>
        <xs:documentation>Role attribute for the foilgroup element</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attributeGroup ref="dbs:db.common.attributes"/>
    <xs:attributeGroup ref="db:db.common.linking.attributes"/>
    <xs:attribute name="label"/>
    <xs:attribute name="status"/>
  </xs:attributeGroup>
  <xs:element name="foil">
    <xs:annotation>
      <xs:documentation>Indicates a foil that may have some info and content</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="db:db._info.title.req"/>
        <xs:group minOccurs="0" maxOccurs="unbounded" ref="dbs:dbs.all.content"/>
        <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.navigation.components"/>
      </xs:sequence>
      <xs:attributeGroup ref="dbs:dbs.foil.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="dbs.foil.role.attribute">
    <xs:attribute name="role" use="required">
      <xs:annotation>
        <xs:documentation>Role attribute for the foil element</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="dbs.foil.status.attribute">
    <xs:attributeGroup ref="db:db.status.attribute"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="dbs.foil.attlist">
    <xs:attribute name="role">
      <xs:annotation>
        <xs:documentation>Role attribute for the foil element</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attributeGroup ref="dbs:db.common.attributes"/>
    <xs:attributeGroup ref="db:db.common.linking.attributes"/>
    <xs:attribute name="label"/>
    <xs:attribute name="status"/>
  </xs:attributeGroup>
  <xs:element name="speakernotes">
    <xs:annotation>
      <xs:documentation>Indicates notes for the speaker</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
      <xs:attributeGroup ref="dbs:dbs.speakernotes.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="dbs.speakernotes.role.attribute">
    <xs:attribute name="role" use="required">
      <xs:annotation>
        <xs:documentation>Role attribute for the speakernotes element</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="dbs.speakernotes.attlist">
    <xs:attribute name="role">
      <xs:annotation>
        <xs:documentation>Role attribute for the speakernotes element</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attributeGroup ref="dbs:db.common.attributes"/>
    <xs:attributeGroup ref="db:db.common.linking.attributes"/>
  </xs:attributeGroup>
  <xs:element name="handoutnotes">
    <xs:annotation>
      <xs:documentation>Indicates notes that are meant for printed copies</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
      <xs:attributeGroup ref="dbs:dbs.handoutnotes.attlist"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="dbs.handoutnotes.role.attribute">
    <xs:annotation>
      <xs:documentation>Role attribute for the handoutnotes element</xs:documentation>
    </xs:annotation>
    <xs:attribute name="role" use="required">
      <xs:annotation>
        <xs:documentation>Role attribute for the handoutnotes element</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="dbs.handoutnotes.attlist">
    <xs:attribute name="role">
      <xs:annotation>
        <xs:documentation>Role attribute for the handoutnotes element</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attributeGroup ref="dbs:db.common.attributes"/>
    <xs:attributeGroup ref="db:db.common.linking.attributes"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="dbs.style.attributes">
    <xs:attribute name="incremental" form="qualified">
      <xs:annotation>
        <xs:documentation>Attribute indicating an incremental part</xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="0">
            <xs:annotation>
              <xs:documentation>disabled</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="1">
            <xs:annotation>
              <xs:documentation>enabled</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="collapsible" form="qualified">
      <xs:annotation>
        <xs:documentation>Attribute indicating a collapsible part</xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="0">
            <xs:annotation>
              <xs:documentation>disabled</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="1">
            <xs:annotation>
              <xs:documentation>enabled</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="expanded">
            <xs:annotation>
              <xs:documentation>enabled and expanded by default</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="style" form="qualified">
      <xs:annotation>
        <xs:documentation>Attribute indicating a formatting style class</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="dbs.incremental.attribute">
    <xs:attribute name="incremental" use="required" form="qualified">
      <xs:annotation>
        <xs:documentation>Attribute indicating an incremental part</xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="0">
            <xs:annotation>
              <xs:documentation>disabled</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="1">
            <xs:annotation>
              <xs:documentation>enabled</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="dbs.collapsible.attribute">
    <xs:attribute name="collapsible" use="required" form="qualified">
      <xs:annotation>
        <xs:documentation>Attribute indicating a collapsible part</xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="0">
            <xs:annotation>
              <xs:documentation>disabled</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="1">
            <xs:annotation>
              <xs:documentation>enabled</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="expanded">
            <xs:annotation>
              <xs:documentation>enabled and expanded by default</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="dbs.style.attribute">
    <xs:attribute name="style" use="required" form="qualified">
      <xs:annotation>
        <xs:documentation>Attribute indicating a formatting style class</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>
</xs:schema>
