Bibliography database

If you find yourself needing the same bibliographic elements in more than one document, you can maintain a separate bibliographic database. Keeping the entries in one place ensures consistency between publications and makes it easier to maintain.

The database is simply a separate DocBook document with root element bibliography that contains a collection of bibliography entries (it can contain a mix of biblioentry and bibliomixed elements). Each entry in the database document must have a unique id attribute value.

To include entries from your bibliographic database in a particular document's bibliography, you do two things:

  1. For each entry you want to pull in, put an empty bibliomixed element in the document's bibliography. The selection is made by setting its id attribute value to match the entry in the database that you want. Use bibliomixed even if you are pointing to a biblioentry in the database. Your bibliography can mix full bibliography entries with empty entries drawn from the database.

  2. Process your document with the stylesheet parameter bibliography.collection set to the name of your database document.

When the stylesheets encounter an empty bibliomixed element, they open the database document, look up the id value, and copy the entry to the current document. It is equivalent to having the entry in your document.

Bibliography database catalog entry

If you need to share a bibliography database among several books, you might consider using an XML catalog entry to locate the database file. Once you set it up, all of your documents will be able to use the same collection, and you can move the collection when you need to, and then you just need to change the single catalog entry. See Chapter 4, XML catalogs for general information on catalogs.

First set the bibliography.collection parameter to any generic path:

<xsl:param name="bibliography.collection">file:///foo/biblio.xml</xsl:param>

Then add an entry to your XML catalog that maps the generic path to the real path:

 <uri
    name="file:///foo/biblio.xml"
    uri="file:///c:/usr/share/xml/bibliography-database.xml"/>

When you process your stylesheet with a catalog-aware processor (and tell it where to find the catalog), then the generic path will be mapped to the specific path.