<!--
   BoostBook DTD version 1.1

   For further information, see: http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?Boost_Documentation_Format

   Copyright (c) 2002 by Peter Simons <simons@cryp.to>
   Copyright (c) 2003-2004 by Douglas Gregor <doug.gregor -at- gmail.com>
   Copyright (c) 2007 by Frank Mori Hess <fmhess@users.sourceforge.net>

   Distributed under the Boost Software License, Version 1.0.
   (See accompanying file LICENSE_1_0.txt or copy at
   http://www.boost.org/LICENSE_1_0.txt)

   This DTD module is identified by the PUBLIC and SYSTEM identifiers:

   PUBLIC "-//Boost//DTD BoostBook XML V1.1//EN"
   SYSTEM "http://www.boost.org/tools/boostbook/dtd/1.1/boostbook.dtd"

   $Revision: 55188 $
   $Date: 2009-07-26 16:11:03 -0400 (Sun, 26 Jul 2009) $
-->

<!--========== Define XInclude features. ==========-->
<!-- This is not really integrated into the DTD yet. Needs more
     research. -->
<!--
<!ELEMENT xi:include (xi:fallback)?>
<!ATTLIST xi:include
    xmlns:xi   CDATA       #FIXED    "http://www.w3.org/2001/XInclude"
    href       CDATA       #REQUIRED
    parse      (xml|text)  "xml"
    encoding   CDATA       #IMPLIED>

<!ELEMENT xi:fallback ANY>
<!ATTLIST xi:fallback
    xmlns:xi   CDATA   #FIXED   "http://www.w3.org/2001/XInclude">
 -->

<!ENTITY % local.common.attrib "last-revision CDATA  #IMPLIED">

<!--========== Define the BoostBook extensions ==========-->
<!ENTITY % boost.common.attrib "%local.common.attrib;
                                id            CDATA  #IMPLIED">

<!ENTITY % boost.namespace.mix
        "class|class-specialization|struct|struct-specialization|
         union|union-specialization|typedef|enum|
         free-function-group|function|overloaded-function|
         namespace">

<!ENTITY % boost.template.mix
        "template-type-parameter|template-nontype-parameter|template-varargs">

<!ENTITY % boost.class.members
        "static-constant|typedef|enum|
         copy-assignment|constructor|destructor|method-group|
         method|overloaded-method|data-member|class|class-specialization|struct|
         struct-specialization|union|union-specialization">

<!ENTITY % boost.class.mix
        "%boost.class.members;|free-function-group|function|overloaded-function">

<!ENTITY % boost.class.content
             "template?, inherit*, purpose?, description?,
              (%boost.class.mix;|access)*">

<!ENTITY % boost.class-specialization.content
             "template?, specialization?, inherit?, purpose?, description?,
              (%boost.class.mix;|access)*">

<!ENTITY % boost.function.semantics
        "purpose?, description?, requires?, effects?, postconditions?,
         returns?, throws?, complexity?, notes?, rationale?">

<!ENTITY % library.content
        "libraryinfo, (title, ((section|library-reference|testsuite))+)?">

<!ELEMENT library (%library.content;)>
<!ATTLIST library
    name      CDATA   #REQUIRED
    dirname   CDATA   #REQUIRED
    html-only CDATA   #IMPLIED
    url       CDATA   #IMPLIED
    %boost.common.attrib;>

<!ELEMENT boostbook (title, (chapter|library)*)>
<!ATTLIST boostbook %boost.common.attrib;>

<!ELEMENT libraryinfo (author+, copyright*, legalnotice*, librarypurpose, librarycategory*)>
<!ATTLIST libraryinfo %boost.common.attrib;>

<!ELEMENT librarypurpose (#PCDATA|code|ulink|functionname|methodname|classname|macroname|headername|enumname|globalname)*>
<!ATTLIST librarypurpose %boost.common.attrib;>

<!ELEMENT librarycategory (#PCDATA)>
<!ATTLIST librarycategory
    name  CDATA  #REQUIRED
    %boost.common.attrib;>

<!ELEMENT libraryname  (#PCDATA)>
<!ATTLIST libraryname %boost.common.attrib;>

<!ELEMENT library-reference ANY>
<!ATTLIST library-reference
    %boost.common.attrib;>

<!ELEMENT librarylist EMPTY>
<!ATTLIST librarylist %boost.common.attrib;>

<!ELEMENT librarycategorylist (librarycategorydef)*>
<!ATTLIST librarycategorylist %boost.common.attrib;>

<!ELEMENT librarycategorydef (#PCDATA)>
<!ATTLIST librarycategorydef
         name   CDATA   #REQUIRED
         %boost.common.attrib;>

<!ELEMENT header ANY>
<!ATTLIST header
    name  CDATA  #REQUIRED
    %boost.common.attrib;>

<!ELEMENT namespace (%boost.namespace.mix;)*>
<!ATTLIST namespace
    name  CDATA  #REQUIRED
    %boost.common.attrib;>

<!ELEMENT class (%boost.class.content;)>
<!ATTLIST class
    name  CDATA  #REQUIRED
    %boost.common.attrib;>

<!ELEMENT struct (%boost.class.content;)>
<!ATTLIST struct
    name  CDATA  #REQUIRED
    %boost.common.attrib;>

<!ELEMENT union (%boost.class.content;)>
<!ATTLIST union
    name  CDATA  #REQUIRED
    %boost.common.attrib;>

<!ELEMENT class-specialization (%boost.class-specialization.content;)>
<!ATTLIST class-specialization
    name  CDATA  #REQUIRED
    %boost.common.attrib;>

<!ELEMENT struct-specialization (%boost.class-specialization.content;)>
<!ATTLIST struct-specialization
    name  CDATA  #REQUIRED
    %boost.common.attrib;>

<!ELEMENT union-specialization (%boost.class-specialization.content;)>
<!ATTLIST union-specialization
    name  CDATA  #REQUIRED
    %boost.common.attrib;>

<!ELEMENT access (%boost.class.members;)+>
<!ATTLIST access
    name CDATA #REQUIRED
    %boost.common.attrib;>

<!--========= C++ Templates =========-->
<!ELEMENT template (%boost.template.mix;)*>
<!ATTLIST template %boost.common.attrib;>

<!ELEMENT template-type-parameter (default?, purpose?)>
<!ATTLIST template-type-parameter
    name                     CDATA  #REQUIRED
    pack                     CDATA  #IMPLIED 
    %boost.common.attrib;>

<!ELEMENT template-nontype-parameter (type, default?, purpose?)>
<!ATTLIST template-nontype-parameter
    name                     CDATA  #REQUIRED
    pack                     CDATA  #IMPLIED 
    %boost.common.attrib;>

<!ELEMENT template-varargs EMPTY>
<!ATTLIST template-varargs %boost.common.attrib;>

<!ELEMENT specialization (template-arg)*>
<!ATTLIST specialization %boost.common.attrib;>

<!ELEMENT template-arg ANY>
<!ATTLIST template-arg
    pack    CDATA  #IMPLIED 
    %boost.common.attrib;>

<!ELEMENT default ANY>
<!ATTLIST default %boost.common.attrib;>

<!ELEMENT inherit (type, purpose?)>
<!ATTLIST inherit
    access  CDATA  #IMPLIED
    pack    CDATA  #IMPLIED 
    %boost.common.attrib;>

<!ELEMENT purpose ANY>
<!ATTLIST purpose %boost.common.attrib;>

<!ELEMENT description ANY>
<!ATTLIST description %boost.common.attrib;>

<!ELEMENT type ANY>
<!ATTLIST type %boost.common.attrib;>

<!ELEMENT typedef (type, purpose?, description?)>
<!ATTLIST typedef
    name     CDATA  #REQUIRED
    %boost.common.attrib;>

<!ELEMENT enum (enumvalue*, purpose?, description?)>
<!ATTLIST enum
    name     CDATA  #REQUIRED
    %boost.common.attrib;>

<!ELEMENT enumvalue (default?, purpose?, description?)>
<!ATTLIST enumvalue
    name     CDATA  #REQUIRED
    %boost.common.attrib;>

<!ELEMENT static-constant (type, default, purpose?, description?)>
<!ATTLIST static-constant
    name   CDATA  #REQUIRED
    %boost.common.attrib;>

<!ELEMENT data-member (type, purpose?, description?)>
<!ATTLIST data-member
    name         CDATA  #REQUIRED
    specifiers   CDATA  #IMPLIED
    %boost.common.attrib;>

<!ELEMENT paramtype ANY>
<!ATTLIST paramtype %boost.common.attrib;>

<!ELEMENT effects ANY>
<!ATTLIST effects %boost.common.attrib;>

<!ELEMENT postconditions ANY>
<!ATTLIST postconditions %boost.common.attrib;>

<!ELEMENT method-group (method|overloaded-method)*>
<!ATTLIST method-group
    name  CDATA  #REQUIRED
    %boost.common.attrib;>

<!ELEMENT constructor (template?, parameter*, %boost.function.semantics;)>
<!ATTLIST constructor
    specifiers   CDATA  #IMPLIED
    %boost.common.attrib;>

<!ELEMENT destructor (%boost.function.semantics;)>
<!ATTLIST destructor
    specifiers   CDATA  #IMPLIED
    %boost.common.attrib;>

<!ELEMENT method (template?, type, parameter*, %boost.function.semantics;)>
<!ATTLIST method
    name         CDATA  #REQUIRED
    cv           CDATA  #IMPLIED
    specifiers   CDATA  #IMPLIED
    %boost.common.attrib;>

<!ELEMENT function (template?, type, parameter*, %boost.function.semantics;)>
<!ATTLIST function
    name         CDATA  #REQUIRED
    specifiers   CDATA  #IMPLIED
    %boost.common.attrib;>

<!ELEMENT overloaded-method (signature*, %boost.function.semantics;)>
<!ATTLIST overloaded-method
    name  CDATA  #REQUIRED
    %boost.common.attrib;>

<!ELEMENT overloaded-function (signature*, %boost.function.semantics;)>
<!ATTLIST overloaded-function
    name  CDATA  #REQUIRED
    %boost.common.attrib;>

<!ELEMENT signature (template?, type, parameter*)>
<!ATTLIST signature
    cv           CDATA  #IMPLIED
    specifiers   CDATA  #IMPLIED
    %boost.common.attrib;>

<!ELEMENT requires ANY>
<!ATTLIST requires %boost.common.attrib;>

<!ELEMENT returns ANY>
<!ATTLIST returns %boost.common.attrib;>

<!ELEMENT throws ANY>
<!ATTLIST throws %boost.common.attrib;>

<!ELEMENT complexity ANY>
<!ATTLIST complexity %boost.common.attrib;>

<!ELEMENT notes ANY>
<!ATTLIST notes %boost.common.attrib;>

<!ELEMENT rationale ANY>
<!ATTLIST rationale %boost.common.attrib;>

<!ELEMENT functionname (#PCDATA)>
<!ATTLIST functionname
    alt          CDATA  #IMPLIED
    %boost.common.attrib;>

<!ELEMENT enumname (#PCDATA)>
<!ATTLIST enumname
    alt          CDATA  #IMPLIED
    %boost.common.attrib;>

<!ELEMENT macroname (#PCDATA)>
<!ATTLIST macroname %boost.common.attrib;>

<!ELEMENT headername (#PCDATA)>
<!ATTLIST headername %boost.common.attrib;>

<!ELEMENT globalname (#PCDATA)>
<!ATTLIST globalname
    alt          CDATA  #IMPLIED
    %boost.common.attrib;>

<!ELEMENT copy-assignment
    (template?, type?, parameter*, %boost.function.semantics;)>
<!ATTLIST copy-assignment
    cv           CDATA  #IMPLIED
    specifiers   CDATA  #IMPLIED
    %boost.common.attrib;>

<!ELEMENT free-function-group (function|overloaded-function)*>
<!ATTLIST free-function-group
    name  CDATA  #REQUIRED
    %boost.common.attrib;>

<!ELEMENT precondition ANY>
<!ATTLIST precondition %boost.common.attrib;>

<!ELEMENT code ANY>
<!ATTLIST code %boost.common.attrib;>

<!ELEMENT using-namespace EMPTY>
<!ATTLIST using-namespace
    name   CDATA  #REQUIRED
    %boost.common.attrib;>

<!ELEMENT using-class EMPTY>
<!ATTLIST using-class
     name        CDATA #REQUIRED
     %boost.common.attrib;>

<!--========== Boost Testsuite Extensions ==========-->
<!ENTITY % boost.testsuite.tests
        "compile-test|link-test|run-test|
         compile-fail-test|link-fail-test|run-fail-test">
<!ENTITY % boost.testsuite.test.content
        "source*, lib*, requirement*, purpose, if-fails?">

<!ELEMENT testsuite ((%boost.testsuite.tests;)+)>
<!ATTLIST testsuite %boost.common.attrib;>

<!ELEMENT compile-test (%boost.testsuite.test.content;)>
<!ATTLIST compile-test
     filename CDATA #REQUIRED
     name     CDATA #IMPLIED>

<!ELEMENT link-test (%boost.testsuite.test.content;)>
<!ATTLIST link-test
     filename CDATA #REQUIRED
     name     CDATA #IMPLIED>

<!ELEMENT run-test (%boost.testsuite.test.content;)>
<!ATTLIST run-test
     filename CDATA #REQUIRED
     name     CDATA #IMPLIED>

<!ELEMENT compile-fail-test (%boost.testsuite.test.content;)>
<!ATTLIST compile-fail-test
     filename CDATA #REQUIRED
     name     CDATA #IMPLIED>

<!ELEMENT link-fail-test (%boost.testsuite.test.content;)>
<!ATTLIST link-fail-test
     filename CDATA #REQUIRED
     name     CDATA #IMPLIED>

<!ELEMENT run-fail-test (%boost.testsuite.test.content;)>
<!ATTLIST run-fail-test
     filename CDATA #REQUIRED
     name     CDATA #IMPLIED>

<!ELEMENT source (#PCDATA|snippet)*>

<!ELEMENT snippet EMPTY>
<!ATTLIST snippet
     name CDATA #REQUIRED>

<!ELEMENT lib (#PCDATA)>

<!ELEMENT requirement (#PCDATA)>
<!ATTLIST requirement
     name CDATA #REQUIRED>

<!ELEMENT if-fails ANY>

<!ELEMENT parameter (paramtype, default?, description?)>
<!ATTLIST parameter
     name CDATA #IMPLIED
     pack CDATA #IMPLIED>

<!ELEMENT programlisting ANY>
<!ATTLIST programlisting
     name        CDATA #IMPLIED>

<!--========== Customize the DocBook DTD ==========-->
<!ENTITY % local.tech.char.class "|functionname|libraryname|enumname|code">
<!ENTITY % local.para.class
        "|using-namespace|using-class|librarylist|librarycategorylist">
<!ENTITY % local.descobj.class "|libraryinfo">
<!ENTITY % local.classname.attrib "alt CDATA #IMPLIED">
<!ENTITY % local.methodname.attrib "alt CDATA #IMPLIED">
<!ENTITY % local.refentry.class "|library-reference|testsuite">
<!ENTITY % local.title.char.mix "">
<!ENTITY % programlisting.module "IGNORE">
<!ENTITY % parameter.module      "IGNORE">
<!ENTITY % function.module       "IGNORE">
<!ENTITY % type.module           "IGNORE">

<!--========== Import DocBook DTD ==========-->
<!ENTITY % DocBook PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
           "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">

%DocBook;
