$Revision$
$Date$
olink — A link that addresses its target indirectly, through an entity
olink ::= (#PCDATA|footnoteref|xref|biblioref|abbrev|acronym|citation|citerefentry|citetitle|citebiblioid|emphasis|firstterm|foreignphrase|glossterm|termdef|footnote|phrase|orgname|quote|trademark|wordasword|personname|link|olink|ulink|action|application|classname|methodname|interfacename|exceptionname|ooclass|oointerface|ooexception|package|command|computeroutput|database|envar|errorcode|errorname|errortype|errortext|filename|function|guibutton|guiicon|guilabel|guimenu|guimenuitem|guisubmenu|hardware|interface|keycap|keycode|keycombo|keysym|literal|code|constant|markup|medialabel|menuchoice|mousebutton|option|optional|parameter|prompt|property|replaceable|returnvalue|sgmltag|structfield|structname|symbol|systemitem|uri|token|type|userinput|varname|nonterminal|anchor|author|authorinitials|corpauthor|corpcredit|modespec|othercredit|productname|productnumber|revhistory|remark|subscript|superscript|inlinegraphic|inlinemediaobject|inlineequation|synopsis|cmdsynopsis|funcsynopsis|classsynopsis|fieldsynopsis|constructorsynopsis|destructorsynopsis|methodsynopsis|indexterm|beginpage)*
| 
                         Name  | 
                     
                         Type  | 
                     
                         Default  | 
                  
| xrefstyle | CDATA | None | 
| targetdocent | ENTITY | None | 
| localinfo | CDATA | None | 
| linkmode | IDREF | None | 
| targetdoc | CDATA | None | 
| targetptr | CDATA | None | 
| type | CDATA | None | 
               Unlike Link and ULink, the semantics of
               OLink are application-specific.  OLink provides
               a mechanism for establishing links across documents, where 
               ID/IDREF linking is not possible and ULink is inappropriate.
               
            
               In general terms, the strategy employed by OLink is to
               point to the target document via an 
               external general entity, and point
               into that document in some application-specific way.
               
            
Formatted inline.
                  OLink points to its target primarily with the 
                  TargetDocEnt attribute.
                  TargetDocEnt must be the name of an
                  entity (previously declared in the DTD or in the document
                     subset).
                  
               
                  Because TargetDocEnt is an entity attribute,
                  the entity used as its value must be declared with a notation.
                  Because the target is usually another SGML or XML document, the
                  notation SGML is most often used:
                  
                  
<!ENTITY myotherdoc SYSTEM "myotherdoc.sgm" NDATA SGML>
                  The semantics of the link are controlled by three other attributes:
                  LinkMode,
                  LocalInfo, and
                  Type.
                  The LinkMode
                  attribute points to a ModeSpec.  The content of
                  ModeSpec describes the semantic of the link in an entirely
                  application-specific way.  
                  
               
                  The values of 
                  LocalInfo and
                  Type may also influence the application.
                  For example, if the ModeSpec describes some sort of query, 
                  LocalInfo might hold the query text
                  (allowing multiple OLinks to use the same ModeSpec
                  to achieve different queries with the same query engine).
                  
               
Linking elements must not be nested within other linking elements (including themselves). Because DocBook is harmonizing towards XML, this restriction cannot easily be enforced by the DTD. The processing of nested linking elements is undefined.
                  
                  The InterfaceDefinition
                  element will be discarded in DocBook V4.0. It will no longer be available
                  in the content model of this element.
                  
               
These elements contain olink:
                  abbrev, ackno, acronym, action, application, artpagenums, attribution, authorinitials, bibliocoverage, biblioid, bibliomisc, bibliorelation, bibliosource, bridgehead, citation, citebiblioid, citetitle, city, classsynopsisinfo, code, collabname, command, computeroutput, confdates, confnum, confsponsor, conftitle, contractnum, contractsponsor, contrib, corpauthor, corpcredit, corpname, country, database, date, edition, email, emphasis, entry, fax, figure, filename, firstname, firstterm, foreignphrase, funcparams, funcsynopsisinfo, function, glosssee, glossseealso, glossterm, hardware, holder, honorific, indexdiv, informalfigure, interfacename, invpartnumber, isbn, issn, issuenum, jobtitle, keycap, label, lineage, lineannotation, link, literal, literallayout, lotentry, manvolnum, member, modespec, msgaud, olink, option, optional, orgdiv, orgname, otheraddr, othername, pagenums, para, parameter, phone, phrase, pob, postcode, primary, primaryie, productname, productnumber, programlisting, property, pubdate, publishername, pubsnumber, quote, refentry, refentrytitle, refmiscinfo, refnamediv, refpurpose, releaseinfo, remark, replaceable, revnumber, revremark, screen, screeninfo, secondary, secondaryie, see, seealso, seealsoie, seeie, seg, segtitle, seriesvolnums, shortaffil, simpara, state, street, subscript, subtitle, superscript, surname, synopsis, systemitem, td, term, termdef, tertiary, tertiaryie, th, title, titleabbrev, tocback, tocentry, tocfront, trademark, ulink, userinput, volumenum, wordasword, year.
               
The following elements occur in olink:
                  abbrev, acronym, action, anchor, application, author, authorinitials, beginpage, biblioref, citation, citebiblioid, citerefentry, citetitle, classname, classsynopsis, cmdsynopsis, code, command, computeroutput, constant, constructorsynopsis, corpauthor, corpcredit, database, destructorsynopsis, email, emphasis, envar, errorcode, errorname, errortext, errortype, exceptionname, fieldsynopsis, filename, firstterm, footnote, footnoteref, foreignphrase, funcsynopsis, function, glossterm, guibutton, guiicon, guilabel, guimenu, guimenuitem, guisubmenu, hardware, indexterm, inlineequation, inlinegraphic, inlinemediaobject, interface, interfacename, keycap, keycode, keycombo, keysym, link, literal, markup, medialabel, menuchoice, methodname, methodsynopsis, modespec, mousebutton, nonterminal, olink, ooclass, ooexception, oointerface, option, optional, orgname, othercredit, package, parameter, personname, phrase, productname, productnumber, prompt, property, quote, remark, replaceable, returnvalue, revhistory, sgmltag, structfield, structname, subscript, superscript, symbol, synopsis, systemitem, termdef, token, trademark, type, ulink, uri, userinput, varname, wordasword, xref.
               
                        LinkMode points to the ModeSpec 
                        which provides additional application-specific information for resolving this
                        OLink.
                        
                     
                        LocalInfo hold additional information
                        that may be used with the ModeSpec
                        (pointed to by LinkMode) by the application 
                        when resolving this OLink.
                        
                     
                        TargetDocEnt specifies the name of an entity 
                        that is to be used as part of the OLink. Exactly how the 
                        link is resolved is application dependent and may be influenced by the
                        MoreInfo and 
                        LocalInfo attributes.
                        
                     
                        Type is available for application-specific
                        customization of the linking behavior.
                        
                     
               In this example, we see how an OLink might be used for
               searching.  Here the ModeSpec describes the search query
               (in a fictitious and entirely concocted syntax): “look in the titles
                     of sections and return links using the title as the text of the link”.
               When the user selects the link, the application is expected to perform
               the query and then might display the list of titles as a pop-up window
               in the user interface.
               
            
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
                  "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
<!ENTITY refbook SYSTEM "refbook.sgm" NDATA SGML>
]>
<chapter>
<chapterinfo>
  <modespec id="s1query">query in sect*, title return link text title</modespec>
</chapterinfo>
<title>Printing</title>
<para>
Blah, blah, blah.
</para>
<sect1><title>See Also</title>
<para>
For more information <olink targetdocent="refbook" linkmode="s1query"
localinfo="print or printing">about printing</olink>, consult
the <ulink url="refbook.sgm">reference manual</ulink>.
</para>
</sect1>
</chapter>