| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271 | <refentry xmlns="http://docbook.org/ns/docbook"          xmlns:xlink="http://www.w3.org/1999/xlink"          xmlns:xi="http://www.w3.org/2001/XInclude"          xmlns:src="http://nwalsh.com/xmlns/litprog/fragment"          xmlns:xsl="http://www.w3.org/1999/XSL/Transform"          version="5.0" xml:id="glossary.collection"><refmeta><refentrytitle>glossary.collection</refentrytitle><refmiscinfo class="other" otherclass="datatype">string</refmiscinfo></refmeta><refnamediv><refname>glossary.collection</refname><refpurpose>Name of the glossary collection file</refpurpose></refnamediv><refsynopsisdiv><src:fragment xml:id="glossary.collection.frag"><xsl:param name="glossary.collection"></xsl:param></src:fragment></refsynopsisdiv><refsection><info><title>Description</title></info><para>Glossaries maintained independently across a set of documentsare likely to become inconsistent unless considerable effort isexpended to keep them in sync. It makes much more sense, usually, tostore all of the glossary entries in a single place and simply<quote>extract</quote> the ones you need in each document.</para><para>That's the purpose of the<parameter>glossary.collection</parameter> parameter. To setup a globalglossary <quote>database</quote>, follow these steps:</para><refsection><info><title>Setting Up the Glossary Database</title></info><para>First, create a stand-alone glossary document that contains all ofthe entries that you wish to reference. Make sure that each glossaryentry has an ID.</para><para>Here's an example glossary:</para><informalexample><programlisting><?xml version="1.0" encoding="utf-8"?><!DOCTYPE glossary  PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"  "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"><glossary><glossaryinfo><editor><firstname>Eric</firstname><surname>Raymond</surname></editor><title>Jargon File 4.2.3 (abridged)</title><releaseinfo>Just some test data</releaseinfo></glossaryinfo><glossdiv><title>0</title><glossentry><glossterm>0</glossterm><glossdef><para>Numeric zero, as opposed to the letter `O' (the 15th letter ofthe English alphabet). In their unmodified forms they look a lotalike, and various kluges invented to make them visually distinct havecompounded the confusion. If your zero is center-dotted and letter-Ois not, or if letter-O looks almost rectangular but zero looks morelike an American football stood on end (or the reverse), you'reprobably looking at a modern character display (though the dotted zeroseems to have originated as an option on IBM 3270 controllers). Ifyour zero is slashed but letter-O is not, you're probably looking atan old-style ASCII graphic set descended from the default typewheel onthe venerable ASR-33 Teletype (Scandinavians, for whom /O is a letter,curse this arrangement). (Interestingly, the slashed zero longpredates computers; Florian Cajori's monumental "A History ofMathematical Notations" notes that it was used in the twelfth andthirteenth centuries.) If letter-O has a slash across it and the zerodoes not, your display is tuned for a very old convention used at IBMand a few other early mainframe makers (Scandinavians curse <emphasis>this</emphasis>arrangement even more, because it means two of their letters collide).Some Burroughs/Unisys equipment displays a zero with a <emphasis>reversed</emphasis>slash. Old CDC computers rendered letter O as an unbroken oval and 0as an oval broken at upper right and lower left. And yet anotherconvention common on early line printers left zero unornamented butadded a tail or hook to the letter-O so that it resembled an invertedQ or cursive capital letter-O (this was endorsed by a draft ANSIstandard for how to draw ASCII characters, but the final standardchanged the distinguisher to a tick-mark in the upper-left corner).Are we sufficiently confused yet?</para></glossdef></glossentry><glossentry><glossterm>1TBS</glossterm><glossdef><para role="accidence"><phrase role="pronounce"></phrase><phrase role="partsofspeach">n</phrase></para><para>The "One True Brace Style"</para><glossseealso>indent style</glossseealso></glossdef></glossentry><!-- ... --></glossdiv><!-- ... --></glossary></programlisting></informalexample></refsection><refsection><info><title>Marking Up Glossary Terms</title></info><para>That takes care of the glossary database, now you have to get the entriesinto your document. Unlike bibliography entries, which can be empty, creating<quote>placeholder</quote> glossary entries would be very tedious. So instead,support for <parameter>glossary.collection</parameter> relies on implicit linking.</para><para>In your source document, simply use <tag>firstterm</tag> and<tag>glossterm</tag> to identify the terms you wish to have includedin the glossary. The stylesheets assume that you will either set the<tag class="attribute">baseform</tag> attribute correctly, or that thecontent of the element exactly matches a term in your glossary.</para><para>If you're using a <parameter>glossary.collection</parameter>, don'tmake explicit links on the terms in your document.</para><para>So, in your document, you might write things like this:</para><informalexample><programlisting><para>This is dummy text, without any real meaning.The point is simply to reference glossary terms like <glossterm>0</glossterm>and the <firstterm baseform="1TBS">One True Brace Style (1TBS)</firstterm>.The <glossterm>1TBS</glossterm>, as you can probably imagine, is a nearlyreligious issue.</para></programlisting></informalexample><para>If you set the <parameter>firstterm.only.link</parameter> parameter,only the terms marked with <tag>firstterm</tag> will be links.Otherwise, all the terms will be linked.</para></refsection><refsection><info><title>Marking Up the Glossary</title></info><para>The glossary itself has to be identified for the stylesheets. For lackof a better choice, the <tag class="attribute">role</tag> is used.To identify the glossary as the target for automatic processing, setthe role to <quote><literal>auto</literal></quote>. The title of thisglossary (and any other information from the <tag>glossaryinfo</tag>that's rendered by your stylesheet) will be displayed, but the entries willcome from the database.</para><para>Unfortunately, the glossary can't be empty, so you must put inat least one <tag>glossentry</tag>. The content of this entryis irrelevant, it will not be rendered:</para><informalexample><programlisting><glossary role="auto"><glossentry><glossterm>Irrelevant</glossterm><glossdef><para>If you can see this, the document was processed incorrectly. Usethe <parameter>glossary.collection</parameter> parameter.</para></glossdef></glossentry></glossary></programlisting></informalexample><para>What about glossary divisions? If your glossary database has glossarydivisions <emphasis>and</emphasis> your automatic glossary contains at leastone <tag>glossdiv</tag>, the automic glossary will have divisions.If the <tag>glossdiv</tag> is missing from either location, no divisionswill be rendered.</para><para>Glossary entries (and divisions, if appropriate) in the glossary willoccur in precisely the order they occur in your database.</para></refsection><refsection><info><title>Formatting the Document</title></info><para>Finally, when you are ready to format your document, simply set the<parameter>glossary.collection</parameter> parameter (in either acustomization layer or directly through your processor's interface) topoint to your global glossary.</para><para>A relative path in the parameter is interpreted in oneof two ways:</para><orderedlist numeration="loweralpha">  <listitem>    <para>If the parameter <literal>glossterm.auto.link</literal>    is set to zero, then the path is relative to the file containing    the empty <tag>glossary</tag> element in the document.</para>  </listitem>  <listitem>    <para>If the parameter <literal>glossterm.auto.link</literal>    is set to non-zero, then the path is relative to the file containing    the first inline <tag>glossterm</tag> or    <tag>firstterm</tag> in the document to be linked.</para>  </listitem></orderedlist><para>Once the collection file is opened by the first instance describedabove, it stays open for the current documentand the relative path is not reinterpreted again.</para><para>The stylesheets will format the glossary in your document as ifall of the entries implicilty referenced appeared there literally.</para></refsection><refsection><info><title>Limitations</title></info><para>Glossary cross-references <emphasis>within the glossary</emphasis> arenot supported. For example, this <emphasis>will not</emphasis> work:</para><informalexample><programlisting><glossentry><glossterm>gloss-1</glossterm><glossdef><para>A description that references <glossterm>gloss-2</glossterm>.</para><glossseealso>gloss-2</glossseealso></glossdef></glossentry></programlisting></informalexample><para>If you put glossary cross-references in your glossary that way,you'll get the cryptic error: <computeroutput>Warning:glossary.collection specified, but there are 0 automaticglossaries</computeroutput>.</para><para>Instead, you must do two things:</para><orderedlist><listitem><para>Markup your glossary using <tag>glossseealso</tag>:</para><informalexample><programlisting><glossentry><glossterm>gloss-1</glossterm><glossdef><para>A description that references <glossterm>gloss-2</glossterm>.</para><glossseealso>gloss-2</glossseealso></glossdef></glossentry></programlisting></informalexample></listitem><listitem><para>Make sure there is at least one <tag>glossterm</tag> reference to<glossterm>gloss-2</glossterm> <emphasis>in your document</emphasis>. Theeasiest way to do that is probably within a <tag>remark</tag> in yourautomatic glossary:</para><informalexample><programlisting><glossary role="auto"><remark>Make sure there's a reference to <glossterm>gloss-2</glossterm>.</remark><glossentry><glossterm>Irrelevant</glossterm><glossdef><para>If you can see this, the document was processed incorrectly. Usethe <parameter>glossary.collection</parameter> parameter.</para></glossdef></glossentry></glossary></programlisting></informalexample></listitem></orderedlist></refsection></refsection></refentry>
 |