Chapter 3. Making Citations

The RefDB-lite stylesheets are, in essence, activated on matching <citation role="REFDB"><biblioref endterm="SomeRef2003-X"/> </citation> elements. For RefDB-lite there are no separate intermediate, short-citation expansion and collation processing phases, analogous to those required with the runbib or refdbib commands, documented in the RefDB manual (Hoenicka, 2005c). Note also that in contrast to RefDB usage, we use the biblioref DocBook element rather than xref and we use the corresponding endterm attribute rather than linkend of the latter. The utility of the role="REFDB" attribute is also debateable. The underlying philosophy was to permit coexistence with standard DocBook citation and cross-referencing mechanisms, but as it stands, that may not work and it seems unlikely to be reliable because RefDB-lite doctors the target bibliography substantially (and yet ...?).

The biblioref element was introduced c.a. DocBook 4.3 and is a more appropriate container for bibliographic reference info. Moreover, the linkend attribute of xref is intended to be an IDREF (reference) to a specific unique reference ID, but for RefDB-lite those ID's may only exist in the transformed document, so that a stand-alone source XML document including unresolvable xrefs may technically be invalid.

[Note] Note

According to DocBook 5.0, biblioref has the following attributes:

begin     (token)  e.g. start page number
end       (token)  e.g. end page number
endterm   (IDREF)
units     (token)  e.g. page
xrefstyle          e.g. extra formatting style info 

of which you will note that endterm should also point to a unique document ID, identical to the xref's linkend attribute.

You should note also that the -X endterm extensions are stripped and, in the simple case, SomeRef2003 would refer to a <biblioentry id="Smith00"/> entry in the transformed document's <bibliography/>.

Taking the above into consideration, citations are therefore made in RefDB "full" notation, where the ultimate citation format is governed by the trailing "-N" extension on the endterm. In keeping with the "full" notation, for a document that knowingly makes use of the RefDB server interface to resolve missing references, it is possible to prepend the database identification string to the front of the RefDB citekey identifier, for example: endterm="MyOtherRefDB-Smith00-X". That would only be necessary if you are resolving references from multiple RefDB databases and need to distinguish between them. The default database, if needed, should be identified in the XSLT customisation parameter refdb.server.default.database

The following citation formatting rules are intended to apply:

 endterm="Smith00-X"  ->  (Smith, Jones & Murphy, 2000) INTEXTDEF first
 endterm="Smith00-S"  ->  (Smith et al., 2000)          INTEXTDEF subsequent
 endterm="Smith00-W"  ->  Smith, Jones & Murphy (2000)  combined AUTHORONLY/YEARONLY first 
 endterm="Smith00-U"  ->  Smith et al., (2000)          combined AUTHORONLY/YEARONLY subsequent 
 endterm="Smith00-A"  ->  Smith, Jones & Murphy         AUTHORONLY first
 endterm="Smith00-Q"  ->  Smith et al.                  AUTHORONLY subsequent
 endterm="Smith00-Y"  ->  (2000)                        YEARONLY
i.e.  -X -W -A  for initial citations
and   -S -U -Q  for subsequent citations

In fact -S, -U and -Q aren't needed at all because with the source document at hand we can just count the number of previous citations using the same key and can adjust the style accordingly (when xsl:number works properly!). On the other hand, when RefDB itself provides active support for biblioref elements, then compatibility could require them, for rigorous citation formatting.

But in fact that is not the final word on citation formatting, because the specific citation renderings are specified in every RefDB CITESTYLE (Hoenicka, 2005b) file, e.g.:


  <CITSTYLE> 
    <INTEXTDEF><REFNUMBER/></INTEXTDEF>
    <YEARONLY><REFNUMBER/></YEARONLY>
    <AUTHORONLY>
      ...
    </AUTHORONLY>
  </CITSTYLE> 

With those specifications, the citations above could present as:

 endterm="Smith00-X"  ->  [1]
 endterm="Smith00-S"  ->  [1]
 endterm="Smith00-W"  ->  Smith, Jones & Murphy (2000) (should that be [1]?) 
 endterm="Smith00-U"  ->  Smith et al., (2000)          (should that be [1]?) 
 endterm="Smith00-A"  ->  Smith, Jones & Murphy     
 endterm="Smith00-Q"  ->  Smith et al.                  
 endterm="Smith00-Y"  ->  [1]

and the corresponding bibliography would be ordered by citation sequence, and accordingly indexed.

I would also like to believe that a style configuration file resembling the following:


  <CITSTYLE> 
    <INTEXTDEF><CITEKEY/></INTEXTDEF>
    <YEARONLY><CITEKEY/></YEARONLY>
    ...
  </CITSTYLE> 

might permit citations of the form:

 endterm="Smith00-X"  ->  [Smith00]
 endterm="Smith00-S"  ->  [Smith00]
 endterm="Smith00-W"  ->  Smith, Jones & Murphy (2000) 
 endterm="Smith00-U"  ->  Smith et al., (2000)          
 endterm="Smith00-A"  ->  Smith, Jones & Murphy     
 endterm="Smith00-Q"  ->  Smith et al.                  
 endterm="Smith00-Y"  ->  [Smith00]

with the corresponding bibliography ordered alphabetically and indexed in terms of citation keywords. This would provide consistency with the standard DocBook bibliographic style as documented in DocBook: The Definitive Guide (Walsh, Muellner and Stayton, 1999). As yet it is not supported.

[Note] Note

There is no facility for page-note i.e. bottom of page style bibliographies in DocBook and consequently none in RefDB-lite.

Personally I would like to see new, possibly configurable citation formats such as:

 endterm="Walsh99-T"  ->  DocBook: The Definitive Guide (hyperlinked to bib)
 endterm="Smith00-F2" ->  Some extended title/volume CITESTYLE specified free format

This would simplify writing extended citations for things like "DocBook: The Definitive Guide (Walsh, Muellner and Stayton, 1999)" by abbreviating


<citetitle>DocBook: The Definitive Guide</citetitle> 
     <citation role="REFDB"><biblioref endterm="Walsh99-X"/></citation>. 

to just:


     <citation role="REFDB"><biblioref endterm="Walsh99-TW"/></citation>. 

That would be very useful for citing software programs too. But is it practical and likely to be compatible with some future RefDB? Dunno.