Index: stylesheets/lfs-xsl/docbook-xsl-1.78.1/slides/schema/xsd/hier.xsd
===================================================================
--- stylesheets/lfs-xsl/docbook-xsl-1.78.1/slides/schema/xsd/hier.xsd	(revision 15c7d39533a1eb1da0748011f3378fd0f02ed14d)
+++ stylesheets/lfs-xsl/docbook-xsl-1.78.1/slides/schema/xsd/hier.xsd	(revision 15c7d39533a1eb1da0748011f3378fd0f02ed14d)
@@ -0,0 +1,606 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  This file is part of DocBook V5.0
+  
+  Copyright 1992-2008 HaL Computer Systems, Inc.,
+  O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
+  Corporation, Norman Walsh, Sun Microsystems, Inc., and the
+  Organization for the Advancement of Structured Information
+  Standards (OASIS).
+  
+  Release: $Id: hier.rnc 8994 2011-04-19 20:07:33Z nwalsh $
+  
+  Permission to use, copy, modify and distribute the DocBook 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 schema in any way, label your schema as a
+  variant of DocBook. 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/.
+  
+  ======================================================================
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://docbook.org/ns/docbook" xmlns:dbs="http://docbook.org/ns/docbook-slides" xmlns:db="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+  <xs:import namespace="http://docbook.org/ns/docbook-slides" schemaLocation="slides.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"/>
+  <xs:attributeGroup name="db.status.attribute">
+    <xs:attribute name="status" use="required"/>
+  </xs:attributeGroup>
+  <!-- ====================================================================== -->
+  <xs:group name="db.toplevel.sections">
+    <xs:choice>
+      <xs:choice>
+        <xs:sequence>
+          <xs:element maxOccurs="unbounded" ref="db:section"/>
+          <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:simplesect"/>
+        </xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="db:simplesect"/>
+      </xs:choice>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="db:sect1"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:simplesect"/>
+      </xs:sequence>
+      <xs:element maxOccurs="unbounded" ref="db:refentry"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="db.toplevel.blocks.or.sections">
+    <xs:choice>
+      <xs:sequence>
+        <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+        <xs:group minOccurs="0" ref="db:db.toplevel.sections"/>
+      </xs:sequence>
+      <xs:group ref="db:db.toplevel.sections"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="db.recursive.sections">
+    <xs:choice>
+      <xs:choice>
+        <xs:sequence>
+          <xs:element maxOccurs="unbounded" ref="db:section"/>
+          <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:simplesect"/>
+        </xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="db:simplesect"/>
+      </xs:choice>
+      <xs:element maxOccurs="unbounded" ref="db:refentry"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="db.recursive.blocks.or.sections">
+    <xs:choice>
+      <xs:sequence>
+        <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+        <xs:group minOccurs="0" ref="db:db.recursive.sections"/>
+      </xs:sequence>
+      <xs:group ref="db:db.recursive.sections"/>
+    </xs:choice>
+  </xs:group>
+  <!-- ====================================================================== -->
+  <xs:element name="db.divisions" abstract="true"/>
+  <xs:element name="db.components" abstract="true"/>
+  <xs:group name="db.navigation.components">
+    <xs:choice>
+      <xs:element ref="db:glossary"/>
+      <xs:element ref="db:bibliography"/>
+      <xs:element ref="db:index"/>
+      <xs:element ref="db:toc"/>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="db.component.contentmodel">
+    <xs:sequence>
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.navigation.components"/>
+      <xs:group ref="db:db.toplevel.blocks.or.sections"/>
+      <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.navigation.components"/>
+    </xs:sequence>
+  </xs:group>
+  <!-- ====================================================================== -->
+  <xs:element name="db.setindex.components" abstract="true">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group ref="db:db.setindex.info"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.blocks"/>
+        <xs:choice>
+          <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:indexdiv"/>
+          <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:indexentry"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="db:db.setindex.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:group name="db.toc.components">
+    <xs:sequence>
+      <xs:element ref="db:toc"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:element name="db.set.components" abstract="true"/>
+  <!-- ====================================================================== -->
+  <xs:attributeGroup name="db.set.status.attribute">
+    <xs:attributeGroup ref="db:db.status.attribute"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="db.set.role.attribute">
+    <xs:attribute name="role" use="required"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="db.set.attlist">
+    <xs:attribute name="role"/>
+    <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:group name="db.set.info">
+    <xs:sequence>
+      <xs:group ref="db:db._info.title.req"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:element name="set" substitutionGroup="db:db.set.components">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group ref="db:db.set.info"/>
+        <xs:group minOccurs="0" ref="db:db.toc.components"/>
+        <xs:element maxOccurs="unbounded" ref="db:db.set.components"/>
+        <xs:element minOccurs="0" ref="db:db.setindex.components"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="db:db.set.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <!-- ====================================================================== -->
+  <xs:group name="db.book.components">
+    <xs:choice>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="db:db.navigation.components"/>
+        <xs:element ref="db:db.components"/>
+        <xs:element ref="db:db.divisions"/>
+      </xs:choice>
+      <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:topic"/>
+    </xs:choice>
+  </xs:group>
+  <!-- ====================================================================== -->
+  <xs:attributeGroup name="db.book.status.attribute">
+    <xs:attributeGroup ref="db:db.status.attribute"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="db.book.role.attribute">
+    <xs:attribute name="role" use="required"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="db.book.attlist">
+    <xs:attribute name="role"/>
+    <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:group name="db.book.info">
+    <xs:sequence>
+      <xs:group ref="db:db._info"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:element name="book" substitutionGroup="db:db.set.components">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group ref="db:db.book.info"/>
+        <xs:group ref="db:db.book.components"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="db:db.book.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <!-- ====================================================================== -->
+  <xs:attributeGroup name="db.dedication.status.attribute">
+    <xs:attributeGroup ref="db:db.status.attribute"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="db.dedication.role.attribute">
+    <xs:attribute name="role" use="required"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="db.dedication.attlist">
+    <xs:attribute name="role"/>
+    <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:group name="db.dedication.info">
+    <xs:sequence>
+      <xs:group ref="db:db._info"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:element name="dedication" substitutionGroup="db:db.components">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group ref="db:db.dedication.info"/>
+        <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="db:db.dedication.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <!-- ====================================================================== -->
+  <xs:attributeGroup name="db.acknowledgements.status.attribute">
+    <xs:attributeGroup ref="db:db.status.attribute"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="db.acknowledgements.role.attribute">
+    <xs:attribute name="role" use="required"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="db.acknowledgements.attlist">
+    <xs:attribute name="role"/>
+    <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:group name="db.acknowledgements.info">
+    <xs:sequence>
+      <xs:group ref="db:db._info"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:element name="acknowledgements" substitutionGroup="db:db.components">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group ref="db:db.acknowledgements.info"/>
+        <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="db:db.acknowledgements.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <!-- ====================================================================== -->
+  <xs:attributeGroup name="db.colophon.status.attribute">
+    <xs:attributeGroup ref="db:db.status.attribute"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="db.colophon.role.attribute">
+    <xs:attribute name="role" use="required"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="db.colophon.attlist">
+    <xs:attribute name="role"/>
+    <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:group name="db.colophon.info">
+    <xs:sequence>
+      <xs:group ref="db:db._info"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:element name="colophon" substitutionGroup="db:db.components">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group ref="db:db.colophon.info"/>
+        <xs:choice>
+          <xs:sequence>
+            <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+            <xs:element minOccurs="0" maxOccurs="unbounded" ref="db:simplesect"/>
+          </xs:sequence>
+          <xs:sequence>
+            <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.all.blocks"/>
+            <xs:element maxOccurs="unbounded" ref="db:simplesect"/>
+          </xs:sequence>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attributeGroup ref="db:db.colophon.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <!-- ====================================================================== -->
+  <xs:group name="db.appendix.contentmodel">
+    <xs:choice>
+      <xs:group ref="db:db.component.contentmodel"/>
+      <xs:element maxOccurs="unbounded" ref="db:topic"/>
+    </xs:choice>
+  </xs:group>
+  <!-- ====================================================================== -->
+  <xs:attributeGroup name="db.appendix.status.attribute">
+    <xs:attributeGroup ref="db:db.status.attribute"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="db.appendix.role.attribute">
+    <xs:attribute name="role" use="required"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="db.appendix.attlist">
+    <xs:attribute name="role"/>
+    <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:group name="db.appendix.info">
+    <xs:sequence>
+      <xs:group ref="db:db._info.title.req"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:element name="appendix" substitutionGroup="db:db.components">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group ref="db:db.appendix.info"/>
+        <xs:group ref="db:db.appendix.contentmodel"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="db:db.appendix.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <!-- ====================================================================== -->
+  <xs:group name="db.chapter.contentmodel">
+    <xs:choice>
+      <xs:group ref="db:db.component.contentmodel"/>
+      <xs:element maxOccurs="unbounded" ref="db:topic"/>
+    </xs:choice>
+  </xs:group>
+  <!-- ====================================================================== -->
+  <xs:attributeGroup name="db.chapter.status.attribute">
+    <xs:attributeGroup ref="db:db.status.attribute"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="db.chapter.role.attribute">
+    <xs:attribute name="role" use="required"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="db.chapter.attlist">
+    <xs:attribute name="role"/>
+    <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:group name="db.chapter.info">
+    <xs:sequence>
+      <xs:group ref="db:db._info.title.req"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:element name="chapter" substitutionGroup="db:db.components">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group ref="db:db.chapter.info"/>
+        <xs:group ref="db:db.chapter.contentmodel"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="db:db.chapter.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <!-- ====================================================================== -->
+  <xs:group name="db.part.components">
+    <xs:choice>
+      <xs:choice>
+        <xs:group ref="db:db.navigation.components"/>
+        <xs:element ref="db:db.components"/>
+      </xs:choice>
+      <xs:choice>
+        <xs:element ref="db:refentry"/>
+        <xs:element ref="db:reference"/>
+      </xs:choice>
+    </xs:choice>
+  </xs:group>
+  <xs:group name="db.part.contentmodel">
+    <xs:choice>
+      <xs:group maxOccurs="unbounded" ref="db:db.part.components"/>
+      <xs:element maxOccurs="unbounded" ref="db:topic"/>
+    </xs:choice>
+  </xs:group>
+  <!-- ====================================================================== -->
+  <xs:attributeGroup name="db.part.status.attribute">
+    <xs:attributeGroup ref="db:db.status.attribute"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="db.part.role.attribute">
+    <xs:attribute name="role" use="required"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="db.part.attlist">
+    <xs:attribute name="role"/>
+    <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:group name="db.part.info">
+    <xs:sequence>
+      <xs:group ref="db:db._info.title.req"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:element name="part" substitutionGroup="db:db.divisions">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group ref="db:db.part.info"/>
+        <xs:element minOccurs="0" ref="db:partintro"/>
+        <xs:group ref="db:db.part.contentmodel"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="db:db.part.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <!-- ====================================================================== -->
+  <xs:attributeGroup name="db.preface.status.attribute">
+    <xs:attributeGroup ref="db:db.status.attribute"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="db.preface.role.attribute">
+    <xs:attribute name="role" use="required"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="db.preface.attlist">
+    <xs:attribute name="role"/>
+    <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:group name="db.preface.info">
+    <xs:sequence>
+      <xs:group ref="db:db._info.title.req"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:element name="preface" substitutionGroup="db:db.components">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group ref="db:db.preface.info"/>
+        <xs:group ref="db:db.component.contentmodel"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="db:db.preface.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <!-- ====================================================================== -->
+  <xs:attributeGroup name="db.partintro.status.attribute">
+    <xs:attributeGroup ref="db:db.status.attribute"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="db.partintro.role.attribute">
+    <xs:attribute name="role" use="required"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="db.partintro.attlist">
+    <xs:attribute name="role"/>
+    <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:group name="db.partintro.info">
+    <xs:sequence>
+      <xs:group ref="db:db._info"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:element name="partintro">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group ref="db:db.partintro.info"/>
+        <xs:group ref="db:db.toplevel.blocks.or.sections"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="db:db.partintro.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <!-- ====================================================================== -->
+  <xs:attributeGroup name="db.section.status.attribute">
+    <xs:attributeGroup ref="db:db.status.attribute"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="db.section.role.attribute">
+    <xs:attribute name="role" use="required"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="db.section.attlist">
+    <xs:attribute name="role"/>
+    <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:group name="db.section.info">
+    <xs:sequence>
+      <xs:group ref="db:db._info.title.req"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:element name="section">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group ref="db:db.section.info"/>
+        <xs:group ref="db:db.recursive.blocks.or.sections"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.navigation.components"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="db:db.section.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <!-- ====================================================================== -->
+  <xs:attributeGroup name="db.simplesect.status.attribute">
+    <xs:attributeGroup ref="db:db.status.attribute"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="db.simplesect.role.attribute">
+    <xs:attribute name="role" use="required"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="db.simplesect.attlist">
+    <xs:attribute name="role"/>
+    <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:group name="db.simplesect.info">
+    <xs:sequence>
+      <xs:group ref="db:db._info.title.req"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:element name="simplesect">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group ref="db:db.simplesect.info"/>
+        <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="db:db.simplesect.attlist"/>
+    </xs:complexType>
+  </xs:element>
+  <!-- ====================================================================== -->
+  <xs:group name="db.article.components">
+    <xs:sequence>
+      <xs:group ref="db:db.toplevel.sections"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:group name="db.article.navcomponents">
+    <xs:choice>
+      <xs:group ref="db:db.navigation.components"/>
+      <xs:element ref="db:acknowledgements"/>
+      <xs:element ref="db:dedication"/>
+      <xs:element ref="db:appendix"/>
+      <xs:element ref="db:colophon"/>
+    </xs:choice>
+  </xs:group>
+  <!-- ====================================================================== -->
+  <xs:attributeGroup name="db.article.status.attribute">
+    <xs:attributeGroup ref="db:db.status.attribute"/>
+  </xs:attributeGroup>
+  <xs:simpleType name="db.article.class.enumeration">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="faq">
+        <xs:annotation>
+          <xs:documentation>A collection of frequently asked questions.</xs:documentation>
+        </xs:annotation>
+      </xs:enumeration>
+      <xs:enumeration value="journalarticle">
+        <xs:annotation>
+          <xs:documentation>An article in a journal or other periodical.</xs:documentation>
+        </xs:annotation>
+      </xs:enumeration>
+      <xs:enumeration value="productsheet">
+        <xs:annotation>
+          <xs:documentation>A description of a product.</xs:documentation>
+        </xs:annotation>
+      </xs:enumeration>
+      <xs:enumeration value="specification">
+        <xs:annotation>
+          <xs:documentation>A specification.</xs:documentation>
+        </xs:annotation>
+      </xs:enumeration>
+      <xs:enumeration value="techreport">
+        <xs:annotation>
+          <xs:documentation>A technical report.</xs:documentation>
+        </xs:annotation>
+      </xs:enumeration>
+      <xs:enumeration value="whitepaper">
+        <xs:annotation>
+          <xs:documentation>A white paper.</xs:documentation>
+        </xs:annotation>
+      </xs:enumeration>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:attributeGroup name="db.article.class.attribute">
+    <xs:attribute name="class" use="required" type="db:db.article.class.enumeration"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="db.article.role.attribute">
+    <xs:attribute name="role" use="required"/>
+  </xs:attributeGroup>
+  <xs:attributeGroup name="db.article.attlist">
+    <xs:attribute name="role"/>
+    <xs:attributeGroup ref="dbs:db.common.attributes"/>
+    <xs:attributeGroup ref="db:db.common.linking.attributes"/>
+    <xs:attribute name="label"/>
+    <xs:attribute name="status"/>
+    <xs:attribute name="class" type="db:db.article.class.enumeration"/>
+  </xs:attributeGroup>
+  <xs:group name="db.article.info">
+    <xs:sequence>
+      <xs:group ref="db:db._info.title.req"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:element name="article" substitutionGroup="db:db.components">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group ref="db:db.article.info"/>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.article.navcomponents"/>
+        <xs:choice>
+          <xs:sequence>
+            <xs:group maxOccurs="unbounded" ref="db:db.all.blocks"/>
+            <xs:group minOccurs="0" ref="db:db.article.components"/>
+          </xs:sequence>
+          <xs:group ref="db:db.article.components"/>
+        </xs:choice>
+        <xs:group minOccurs="0" maxOccurs="unbounded" ref="db:db.article.navcomponents"/>
+      </xs:sequence>
+      <xs:attributeGroup ref="db:db.article.attlist"/>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>
