La racine set permet de définir un ensemble - une collection - de livres. C'est le plus haut élément possible dans docbook. Rien ne peut contenir set. L'avantage de set à les livres séparés est que les liens internes entre livres sont utilisables.
set s'utilise de la façon suivante :
<set>
<title>Le titre de l'ensemble</title>
<setinfo>
<corpauthor>Auteur</corpauthor>
</setinfo>
<book>
<title>Titre livre 1</title>
<chapter>
<title>...</title>
<para>...</para>
</chapter>
</book>
<book>
<title>Titre livre 2</title>
<chapter>
<title>...</title>
<para>...</para>
</chapter>
</book>
[...]
</set>
Il peut être utile d'alléger un document, surtout dans le cas d'un travail collaboratif. Par exemple, dans le cadre d'un projet, chaque personne ou chaque groupe travaille sur sa partie, contenue dans un livre et qu'il s'agit en définitive de tout rassembler sous set. Pour cela, on utilise des entités externes.
Il faut commencer par déclarer les entités externes
<!DOCTYPE set PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
<!ENTITY livre1 SYSTEM "livre1.xml">
<!ENTITY livre2 SYSTEM "livre2.xml">
]>
Puis utiliser les entités au moment adéquat. L'exemple précédent va donner :
<set>
<title>Le titre de l'ensemble</title>
<setinfo>
<corpauthor>Auteur</corpauthor>
</setinfo>
&livre1;
&livre2;
[...]
</set>
Chaque livre contiendra alors les informations relatives à lui-même dont la structure sera conforme à la DTD, ayant pour racine book.