| [2] | 1 | <?xml version='1.0'?>
 | 
|---|
 | 2 | <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 | 
|---|
 | 3 |                 xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
 | 
|---|
 | 4 |                 exclude-result-prefixes="doc"
 | 
|---|
 | 5 |                 version='1.0'>
 | 
|---|
 | 6 | 
 | 
|---|
 | 7 | <!-- ********************************************************************
 | 
|---|
 | 8 |      $Id: targets.xsl,v 1.9 2004/05/28 08:07:08 bobstayton Exp $
 | 
|---|
 | 9 |      ********************************************************************
 | 
|---|
 | 10 | 
 | 
|---|
 | 11 |      This file is part of the XSL DocBook Stylesheet distribution.
 | 
|---|
 | 12 |      See ../README or http://nwalsh.com/docbook/xsl/ for copyright
 | 
|---|
 | 13 |      and other information.
 | 
|---|
 | 14 | 
 | 
|---|
 | 15 |      ******************************************************************** -->
 | 
|---|
 | 16 | 
 | 
|---|
 | 17 | <!-- ==================================================================== -->
 | 
|---|
 | 18 | 
 | 
|---|
 | 19 | <!-- cross reference target collection  -->
 | 
|---|
 | 20 | 
 | 
|---|
 | 21 | <doc:mode mode="collect.targets" xmlns="">
 | 
|---|
 | 22 | <refpurpose>Collects information for potential cross reference targets</refpurpose>
 | 
|---|
 | 23 | <refdescription>
 | 
|---|
 | 24 | <para>Processing the root element in the
 | 
|---|
 | 25 | <literal role="mode">collect.targets</literal> mode produces 
 | 
|---|
 | 26 | a set of target database elements that can be used by
 | 
|---|
 | 27 | the olink mechanism to resolve external cross references.
 | 
|---|
 | 28 | The collection process is controlled by the <literal>
 | 
|---|
 | 29 | collect.xref.targets</literal> parameter, which can be
 | 
|---|
 | 30 | <literal>yes</literal> to collect targets and process
 | 
|---|
 | 31 | the document for output, <literal>only</literal> to
 | 
|---|
 | 32 | only collect the targets, and <literal>no</literal>
 | 
|---|
 | 33 | (default) to not collect the targets and only process the document.
 | 
|---|
 | 34 | </para>
 | 
|---|
 | 35 | <para>
 | 
|---|
 | 36 | A <literal>targets.filename</literal> parameter must be
 | 
|---|
 | 37 | specified to receive the output if 
 | 
|---|
 | 38 | <literal>collect.xref.targets</literal> is
 | 
|---|
 | 39 | set to <literal>yes</literal> so as to
 | 
|---|
 | 40 | redirect the target data to a file separate from the
 | 
|---|
 | 41 | document output.
 | 
|---|
 | 42 | </para>
 | 
|---|
 | 43 | </refdescription>
 | 
|---|
 | 44 | </doc:mode>
 | 
|---|
 | 45 | 
 | 
|---|
 | 46 | <!-- ============================================================ -->
 | 
|---|
 | 47 | 
 | 
|---|
 | 48 | <xsl:template match="*" mode="collect.targets">
 | 
|---|
 | 49 |   <xsl:choose>
 | 
|---|
 | 50 |     <xsl:when test="$collect.xref.targets = 'yes' and $targets.filename = ''">
 | 
|---|
 | 51 |       <xsl:message>
 | 
|---|
 | 52 |         Must specify a $targets.filename parameter when
 | 
|---|
 | 53 |         $collect.xref.targets is set to 'yes'.
 | 
|---|
 | 54 |         The xref targets were not collected.
 | 
|---|
 | 55 |       </xsl:message>
 | 
|---|
 | 56 |     </xsl:when> 
 | 
|---|
 | 57 |     <xsl:otherwise>
 | 
|---|
 | 58 |       <xsl:choose>
 | 
|---|
 | 59 |         <xsl:when test="$targets.filename">
 | 
|---|
 | 60 |           <xsl:call-template name="write.chunk">
 | 
|---|
 | 61 |             <xsl:with-param name="filename" select="$targets.filename"/>
 | 
|---|
 | 62 |             <xsl:with-param name="method" select="'xml'"/>
 | 
|---|
 | 63 |             <xsl:with-param name="encoding" select="'utf-8'"/>
 | 
|---|
 | 64 |             <xsl:with-param name="omit-xml-declaration" select="'yes'"/>
 | 
|---|
 | 65 |             <xsl:with-param name="doctype-public" select="''"/>
 | 
|---|
 | 66 |             <xsl:with-param name="doctype-system" select="''"/>
 | 
|---|
 | 67 |             <xsl:with-param name="indent" select="'yes'"/>
 | 
|---|
 | 68 |             <xsl:with-param name="quiet" select="0"/>
 | 
|---|
 | 69 |             <xsl:with-param name="content">
 | 
|---|
 | 70 |               <xsl:apply-templates select="." mode="olink.mode"/>
 | 
|---|
 | 71 |             </xsl:with-param>
 | 
|---|
 | 72 |           </xsl:call-template>
 | 
|---|
 | 73 |         </xsl:when>
 | 
|---|
 | 74 |         <xsl:otherwise>
 | 
|---|
 | 75 |           <!-- Else write to standard output -->
 | 
|---|
 | 76 |           <xsl:apply-templates select="." mode="olink.mode"/>
 | 
|---|
 | 77 |         </xsl:otherwise>
 | 
|---|
 | 78 |       </xsl:choose>
 | 
|---|
 | 79 |     </xsl:otherwise>
 | 
|---|
 | 80 |   </xsl:choose>
 | 
|---|
 | 81 | </xsl:template>
 | 
|---|
 | 82 | 
 | 
|---|
 | 83 | <xsl:template name="olink.href.target">
 | 
|---|
 | 84 |   <xsl:param name="nd" select="."/>
 | 
|---|
 | 85 | 
 | 
|---|
 | 86 |   <xsl:value-of select="$olink.base.uri"/>
 | 
|---|
 | 87 |   <xsl:call-template name="href.target">
 | 
|---|
 | 88 |     <xsl:with-param name="object" select="$nd"/>
 | 
|---|
 | 89 |   </xsl:call-template>
 | 
|---|
 | 90 | </xsl:template>
 | 
|---|
 | 91 | 
 | 
|---|
 | 92 | <!-- Templates for extracting cross reference information
 | 
|---|
 | 93 |      from a document for use in an xref database.
 | 
|---|
 | 94 | -->
 | 
|---|
 | 95 | 
 | 
|---|
 | 96 | <xsl:template name="attrs">
 | 
|---|
 | 97 |   <xsl:param name="nd" select="."/>
 | 
|---|
 | 98 | 
 | 
|---|
 | 99 |   <xsl:attribute name="element">
 | 
|---|
 | 100 |     <xsl:value-of select="local-name(.)"/>
 | 
|---|
 | 101 |   </xsl:attribute>
 | 
|---|
 | 102 | 
 | 
|---|
 | 103 |   <xsl:attribute name="href">
 | 
|---|
 | 104 |     <xsl:call-template name="olink.href.target">
 | 
|---|
 | 105 |       <xsl:with-param name="nd" select="$nd"/>
 | 
|---|
 | 106 |     </xsl:call-template>
 | 
|---|
 | 107 |   </xsl:attribute>
 | 
|---|
 | 108 | 
 | 
|---|
 | 109 |   <xsl:variable name="num">
 | 
|---|
 | 110 |     <xsl:apply-templates select="$nd" mode="label.markup">
 | 
|---|
 | 111 |       <xsl:with-param name="verbose" select="0"/>
 | 
|---|
 | 112 |     </xsl:apply-templates>
 | 
|---|
 | 113 |   </xsl:variable>
 | 
|---|
 | 114 | 
 | 
|---|
 | 115 |   <xsl:if test="$num">
 | 
|---|
 | 116 |     <xsl:attribute name="number">
 | 
|---|
 | 117 |       <xsl:value-of select="$num"/>
 | 
|---|
 | 118 |     </xsl:attribute>
 | 
|---|
 | 119 |   </xsl:if>
 | 
|---|
 | 120 | 
 | 
|---|
 | 121 |   <xsl:if test="$nd/@id">
 | 
|---|
 | 122 |     <xsl:attribute name="targetptr">
 | 
|---|
 | 123 |       <xsl:value-of select="$nd/@id"/>
 | 
|---|
 | 124 |     </xsl:attribute>
 | 
|---|
 | 125 |   </xsl:if>
 | 
|---|
 | 126 | 
 | 
|---|
 | 127 |   <xsl:if test="$nd/@lang">
 | 
|---|
 | 128 |     <xsl:attribute name="lang">
 | 
|---|
 | 129 |       <xsl:value-of select="$nd/@lang"/>
 | 
|---|
 | 130 |     </xsl:attribute>
 | 
|---|
 | 131 |   </xsl:if>
 | 
|---|
 | 132 | 
 | 
|---|
 | 133 | </xsl:template>
 | 
|---|
 | 134 | 
 | 
|---|
 | 135 | <xsl:template name="div">
 | 
|---|
 | 136 |   <xsl:param name="nd" select="."/>
 | 
|---|
 | 137 | 
 | 
|---|
 | 138 |   <div>
 | 
|---|
 | 139 |     <xsl:call-template name="attrs">
 | 
|---|
 | 140 |       <xsl:with-param name="nd" select="$nd"/>
 | 
|---|
 | 141 |     </xsl:call-template>
 | 
|---|
 | 142 |     <ttl>
 | 
|---|
 | 143 |       <xsl:apply-templates select="$nd" mode="title.markup">
 | 
|---|
 | 144 |         <xsl:with-param name="verbose" select="0"/>
 | 
|---|
 | 145 |       </xsl:apply-templates>
 | 
|---|
 | 146 |     </ttl>
 | 
|---|
 | 147 |     <xreftext>
 | 
|---|
 | 148 |       <xsl:choose>
 | 
|---|
 | 149 |         <xsl:when test="$nd/@xreflabel">
 | 
|---|
 | 150 |           <xsl:call-template name="xref.xreflabel">
 | 
|---|
 | 151 |             <xsl:with-param name="target" select="$nd"/>
 | 
|---|
 | 152 |           </xsl:call-template>
 | 
|---|
 | 153 |         </xsl:when>
 | 
|---|
 | 154 |         <xsl:otherwise>
 | 
|---|
 | 155 |           <xsl:apply-templates select="$nd" mode="xref-to">
 | 
|---|
 | 156 |             <xsl:with-param name="verbose" select="0"/>
 | 
|---|
 | 157 |           </xsl:apply-templates>
 | 
|---|
 | 158 |         </xsl:otherwise>
 | 
|---|
 | 159 |       </xsl:choose>
 | 
|---|
 | 160 |     </xreftext>
 | 
|---|
 | 161 |     <xsl:apply-templates mode="olink.mode"/>
 | 
|---|
 | 162 |   </div>
 | 
|---|
 | 163 | </xsl:template>
 | 
|---|
 | 164 | 
 | 
|---|
 | 165 | <xsl:template name="obj">
 | 
|---|
 | 166 |   <xsl:param name="nd" select="."/>
 | 
|---|
 | 167 | 
 | 
|---|
 | 168 |   <obj>
 | 
|---|
 | 169 |     <xsl:call-template name="attrs">
 | 
|---|
 | 170 |       <xsl:with-param name="nd" select="$nd"/>
 | 
|---|
 | 171 |     </xsl:call-template>
 | 
|---|
 | 172 |     <ttl>
 | 
|---|
 | 173 |       <xsl:apply-templates select="$nd" mode="title.markup">
 | 
|---|
 | 174 |         <xsl:with-param name="verbose" select="0"/>
 | 
|---|
 | 175 |       </xsl:apply-templates>
 | 
|---|
 | 176 |     </ttl>
 | 
|---|
 | 177 |     <xreftext>
 | 
|---|
 | 178 |       <xsl:choose>
 | 
|---|
 | 179 |         <xsl:when test="$nd/@xreflabel">
 | 
|---|
 | 180 |           <xsl:call-template name="xref.xreflabel">
 | 
|---|
 | 181 |             <xsl:with-param name="target" select="$nd"/>
 | 
|---|
 | 182 |           </xsl:call-template>
 | 
|---|
 | 183 |         </xsl:when>
 | 
|---|
 | 184 |         <xsl:otherwise>
 | 
|---|
 | 185 |           <xsl:apply-templates select="$nd" mode="xref-to">
 | 
|---|
 | 186 |             <xsl:with-param name="verbose" select="0"/>
 | 
|---|
 | 187 |           </xsl:apply-templates>
 | 
|---|
 | 188 |         </xsl:otherwise>
 | 
|---|
 | 189 |       </xsl:choose>
 | 
|---|
 | 190 |     </xreftext>
 | 
|---|
 | 191 |   </obj>
 | 
|---|
 | 192 | </xsl:template>
 | 
|---|
 | 193 | 
 | 
|---|
 | 194 | <xsl:template match="text()|processing-instruction()|comment()"
 | 
|---|
 | 195 |               mode="olink.mode">
 | 
|---|
 | 196 |   <!-- nop -->
 | 
|---|
 | 197 | </xsl:template>
 | 
|---|
 | 198 | 
 | 
|---|
 | 199 | <!--
 | 
|---|
 | 200 | <xsl:template match="*" mode="olink.mode">
 | 
|---|
 | 201 | </xsl:template>
 | 
|---|
 | 202 | -->
 | 
|---|
 | 203 | 
 | 
|---|
 | 204 | <xsl:template match="set" mode="olink.mode">
 | 
|---|
 | 205 |   <xsl:call-template name="div"/>
 | 
|---|
 | 206 | </xsl:template>
 | 
|---|
 | 207 | 
 | 
|---|
 | 208 | <xsl:template match="book" mode="olink.mode">
 | 
|---|
 | 209 |   <xsl:call-template name="div"/>
 | 
|---|
 | 210 | </xsl:template>
 | 
|---|
 | 211 | 
 | 
|---|
 | 212 | <xsl:template match="preface|chapter|appendix" mode="olink.mode">
 | 
|---|
 | 213 |   <xsl:call-template name="div"/>
 | 
|---|
 | 214 | </xsl:template>
 | 
|---|
 | 215 | 
 | 
|---|
 | 216 | <xsl:template match="part|reference" mode="olink.mode">
 | 
|---|
 | 217 |   <xsl:call-template name="div"/>
 | 
|---|
 | 218 | </xsl:template>
 | 
|---|
 | 219 | 
 | 
|---|
 | 220 | <xsl:template match="article" mode="olink.mode">
 | 
|---|
 | 221 |   <xsl:call-template name="div"/>
 | 
|---|
 | 222 | </xsl:template>
 | 
|---|
 | 223 | 
 | 
|---|
 | 224 | <xsl:template match="bibliography|bibliodiv" mode="olink.mode">
 | 
|---|
 | 225 |   <xsl:call-template name="div"/>
 | 
|---|
 | 226 | </xsl:template>
 | 
|---|
 | 227 | 
 | 
|---|
 | 228 | <xsl:template match="biblioentry|bibliomixed" mode="olink.mode">
 | 
|---|
 | 229 |   <xsl:call-template name="obj"/>
 | 
|---|
 | 230 | </xsl:template>
 | 
|---|
 | 231 | 
 | 
|---|
 | 232 | <xsl:template match="refentry" mode="olink.mode">
 | 
|---|
 | 233 |   <xsl:call-template name="div"/>
 | 
|---|
 | 234 | </xsl:template>
 | 
|---|
 | 235 | 
 | 
|---|
 | 236 | <xsl:template match="section|sect1|sect2|sect3|sect4|sect5" mode="olink.mode">
 | 
|---|
 | 237 |   <xsl:call-template name="div"/>
 | 
|---|
 | 238 | </xsl:template>
 | 
|---|
 | 239 | 
 | 
|---|
 | 240 | <xsl:template match="refsection|refsect1|refsect2|refsect3" mode="olink.mode">
 | 
|---|
 | 241 |   <xsl:call-template name="div"/>
 | 
|---|
 | 242 | </xsl:template>
 | 
|---|
 | 243 | 
 | 
|---|
 | 244 | <xsl:template match="figure|example|table" mode="olink.mode">
 | 
|---|
 | 245 |   <xsl:call-template name="obj"/>
 | 
|---|
 | 246 | </xsl:template>
 | 
|---|
 | 247 | 
 | 
|---|
 | 248 | <xsl:template match="equation[title]" mode="olink.mode">
 | 
|---|
 | 249 |   <xsl:call-template name="obj"/>
 | 
|---|
 | 250 | </xsl:template>
 | 
|---|
 | 251 | 
 | 
|---|
 | 252 | <xsl:template match="qandaset|qandaentry" mode="olink.mode">
 | 
|---|
 | 253 |   <xsl:call-template name="div"/>
 | 
|---|
 | 254 | </xsl:template>
 | 
|---|
 | 255 | 
 | 
|---|
 | 256 | <xsl:template match="*" mode="olink.mode">
 | 
|---|
 | 257 |   <xsl:if test="@id">
 | 
|---|
 | 258 |     <xsl:call-template name="obj"/>
 | 
|---|
 | 259 |   </xsl:if> 
 | 
|---|
 | 260 |   <xsl:apply-templates mode="olink.mode"/>
 | 
|---|
 | 261 | </xsl:template>
 | 
|---|
 | 262 | 
 | 
|---|
 | 263 | </xsl:stylesheet>
 | 
|---|