A document file can include document content directly (inline),
        or it can reference its parts by using XInclude directives. For
        a longer document, the usual structuring arrangement uses a
        “main” document file and a separate file per
        chapter. The main file contains the root element, the document
        title, the “info” element, and XInclude directives
        that refer to the chapter files. For example, the
        MySQL Test Framework Manual has a main
        file named mysqltest.xml that looks like
        this:
      
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
[
  <!ENTITY % all.entities SYSTEM "all-entities.ent">
  %all.entities;
]>
<book id="mysql-test-framework" lang="en">
  <title>The MySQL Test Framework</title>
  <bookinfo>
    ... standard info element parts ...
  </bookinfo>
  <xi:include href="preface.xml"
    xmlns:xi="http://www.w3.org/2001/XInclude"/>
  <xi:include href="introduction.xml"
    xmlns:xi="http://www.w3.org/2001/XInclude"/>
  <xi:include href="components.xml"
    xmlns:xi="http://www.w3.org/2001/XInclude"/>
  <xi:include href="tutorial.xml"
    xmlns:xi="http://www.w3.org/2001/XInclude"/>
  <xi:include href="programs.xml"
    xmlns:xi="http://www.w3.org/2001/XInclude"/>
  <xi:include href="command-reference.xml"
    xmlns:xi="http://www.w3.org/2001/XInclude"/>
  <index/>
</book>
        XInclude directives are used for files that have XML (or perhaps
        text) content, but not for files that define entities. Entity
        files should be listed in the DOCTYPE
        declaration. (See Section 4.4.4, “Entities and Entity Files”.)
      
        A DocBook content file that is referenced via an XInclude
        directive must itself be a valid DocBook file. That is, it must
        begin with an XML declaration and DOCTYPE
        declaration, and it must have a single root element. For
        example, you cannot have two <chapter>
        elements in the file. You must have two files, each containing
        one <chapter> element.
      
Sometimes document content is stored in a file and referenced via XInclude for reasons that have nothing to do with document length:
            Some pieces of content are so stereotypical that they are
            the same for every document (or at least for several
            documents). The legalnotice.en.xml file
            is like this. In such cases, we put the content in a file,
            copy it to every document directory where it's needed, and
            refer to it from within each document via XInclude.
          
            If content is used by multiple documents, put it in a
            separate file and include it in those documents by using
            XInclude. Files in the refman-common
            directory are instances of this concept. For example, the
            copyright.en.xml file contains the full
            Reference Manual copyright notice.
          
Some documents contain program-generated content. In such cases, it's usually easiest to use a separate file for this content so that you can simply run the program again to update the file. Examples of this are the Reference Manual files that list SQL reserved words and error messages. The reserved words and error messages vary per version of the manual, but are generated for each manual by running programs that parse server source files in the appropriate source tree.
        The MySQL Reference Manual is an example
        where multiple documents share files. There are actually several
        versions of the manual, which use directories located in the
        mysqldoc repository as follows:
      
mysqldoc/
        |common/
               |fixedchars.ent
        |refman-common/
                      |all-entities.ent
                      |urls.ent
                      |...
        |refman-6.0/
                   |all-entities.ent
                   |versions.ent
                   |manual.xml
                   |preface.xml
                   |...
        |refman-5.1/
                   |all-entities.ent
                   |versions.ent
                   |manual.xml
                   |preface.xml
                   |...
        |refman-5.0/
                   |all-entities.ent
                   |versions.ent
                   |manual.xml
                   |preface.xml
                   |...
        |refman-4.1/
                   |all-entities.ent
                   |versions.ent
                   |manual.xml
                   |preface.xml
                   |...
        |...
        The files in the refman-common directory
        are shared by all versions of the Reference
        Manual. For each version of the manual, chapter
        structure (and order) is governed by the
        manual.xml file that uses XInclude
        directories to reference the chapter files:
      
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
[
  <!ENTITY % all.entities SYSTEM "all-entities.ent">
  %all.entities;
]>
<book id="refman-5-1" lang="en">
  <title>MySQL 5.1 Reference Manual</title>
  <bookinfo>
    ... standard info element parts ...
  </bookinfo>
  <xi:include href="preface.xml"
    xmlns:xi="http://www.w3.org/2001/XInclude"/>
  <xi:include href="introduction.xml"
    xmlns:xi="http://www.w3.org/2001/XInclude"/>
  <xi:include href="installing.xml"
    xmlns:xi="http://www.w3.org/2001/XInclude"/>
  <xi:include href="tutorial.xml"
    xmlns:xi="http://www.w3.org/2001/XInclude"/>
  ...
  <xi:include href="../refman-common/ha.xml"
    xmlns:xi="http://www.w3.org/2001/XInclude"/>
  ...
  <index/>
</book>
