| [f8c4e94] | 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$
 | 
|---|
 | 9 |      ********************************************************************
 | 
|---|
 | 10 | 
 | 
|---|
 | 11 |      This file is part of the XSL DocBook Stylesheet distribution.
 | 
|---|
 | 12 |      See ../README or http://docbook.sf.net/release/xsl/current/ for
 | 
|---|
 | 13 |      copyright 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 id="collect.targets-desc">
 | 
|---|
 | 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="'no'"/>
 | 
|---|
 | 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:with-param name="context" select="NOTANODE"/>
 | 
|---|
 | 90 |   </xsl:call-template>
 | 
|---|
 | 91 | </xsl:template>
 | 
|---|
 | 92 | 
 | 
|---|
 | 93 | <!-- Templates for extracting cross reference information
 | 
|---|
 | 94 |      from a document for use in an xref database.
 | 
|---|
 | 95 | -->
 | 
|---|
 | 96 | 
 | 
|---|
 | 97 | <xsl:template name="attrs">
 | 
|---|
 | 98 |   <xsl:param name="nd" select="."/>
 | 
|---|
 | 99 | 
 | 
|---|
 | 100 |   <xsl:attribute name="element">
 | 
|---|
 | 101 |     <xsl:value-of select="local-name(.)"/>
 | 
|---|
 | 102 |   </xsl:attribute>
 | 
|---|
 | 103 | 
 | 
|---|
 | 104 |   <xsl:attribute name="href">
 | 
|---|
 | 105 |     <xsl:call-template name="olink.href.target">
 | 
|---|
 | 106 |       <xsl:with-param name="nd" select="$nd"/>
 | 
|---|
 | 107 |     </xsl:call-template>
 | 
|---|
 | 108 |   </xsl:attribute>
 | 
|---|
 | 109 | 
 | 
|---|
 | 110 |   <xsl:variable name="num">
 | 
|---|
 | 111 |     <xsl:apply-templates select="$nd" mode="label.markup">
 | 
|---|
 | 112 |       <xsl:with-param name="verbose" select="0"/>
 | 
|---|
 | 113 |     </xsl:apply-templates>
 | 
|---|
 | 114 |   </xsl:variable>
 | 
|---|
 | 115 | 
 | 
|---|
 | 116 |   <xsl:if test="$num">
 | 
|---|
 | 117 |     <xsl:attribute name="number">
 | 
|---|
 | 118 |       <xsl:value-of select="$num"/>
 | 
|---|
 | 119 |     </xsl:attribute>
 | 
|---|
 | 120 |   </xsl:if>
 | 
|---|
 | 121 | 
 | 
|---|
 | 122 |   <xsl:choose>
 | 
|---|
 | 123 |     <xsl:when test="$nd/@id">
 | 
|---|
 | 124 |       <xsl:attribute name="targetptr">
 | 
|---|
 | 125 |         <xsl:value-of select="$nd/@id"/>
 | 
|---|
 | 126 |       </xsl:attribute>
 | 
|---|
 | 127 |     </xsl:when>
 | 
|---|
 | 128 |     <xsl:when test="$nd/@xml:id">
 | 
|---|
 | 129 |       <xsl:attribute name="targetptr">
 | 
|---|
 | 130 |         <xsl:value-of select="$nd/@xml:id"/>
 | 
|---|
 | 131 |       </xsl:attribute>
 | 
|---|
 | 132 |     </xsl:when>
 | 
|---|
 | 133 |   </xsl:choose>
 | 
|---|
 | 134 | 
 | 
|---|
 | 135 |   <xsl:if test="$nd/@lang">
 | 
|---|
 | 136 |     <xsl:attribute name="lang">
 | 
|---|
 | 137 |       <xsl:value-of select="$nd/@lang"/>
 | 
|---|
 | 138 |     </xsl:attribute>
 | 
|---|
 | 139 |   </xsl:if>
 | 
|---|
 | 140 | 
 | 
|---|
 | 141 | </xsl:template>
 | 
|---|
 | 142 | 
 | 
|---|
 | 143 | <xsl:template name="div">
 | 
|---|
 | 144 |   <xsl:param name="nd" select="."/>
 | 
|---|
 | 145 | 
 | 
|---|
 | 146 |   <div>
 | 
|---|
 | 147 |     <xsl:call-template name="attrs">
 | 
|---|
 | 148 |       <xsl:with-param name="nd" select="$nd"/>
 | 
|---|
 | 149 |     </xsl:call-template>
 | 
|---|
 | 150 |     <ttl>
 | 
|---|
 | 151 |       <xsl:apply-templates select="$nd" mode="title.markup">
 | 
|---|
 | 152 |         <xsl:with-param name="verbose" select="0"/>
 | 
|---|
 | 153 |       </xsl:apply-templates>
 | 
|---|
 | 154 |     </ttl>
 | 
|---|
 | 155 |     <xreftext>
 | 
|---|
 | 156 |       <xsl:choose>
 | 
|---|
 | 157 |         <xsl:when test="$nd/@xreflabel">
 | 
|---|
 | 158 |           <xsl:call-template name="xref.xreflabel">
 | 
|---|
 | 159 |             <xsl:with-param name="target" select="$nd"/>
 | 
|---|
 | 160 |           </xsl:call-template>
 | 
|---|
 | 161 |         </xsl:when>
 | 
|---|
 | 162 |         <xsl:otherwise>
 | 
|---|
 | 163 |           <xsl:apply-templates select="$nd" mode="xref-to">
 | 
|---|
 | 164 |             <xsl:with-param name="verbose" select="0"/>
 | 
|---|
 | 165 |           </xsl:apply-templates>
 | 
|---|
 | 166 |         </xsl:otherwise>
 | 
|---|
 | 167 |       </xsl:choose>
 | 
|---|
 | 168 |     </xreftext>
 | 
|---|
 | 169 |     <xsl:apply-templates mode="olink.mode"/>
 | 
|---|
 | 170 |   </div>
 | 
|---|
 | 171 | </xsl:template>
 | 
|---|
 | 172 | 
 | 
|---|
 | 173 | <xsl:template name="obj">
 | 
|---|
 | 174 |   <xsl:param name="nd" select="."/>
 | 
|---|
 | 175 | 
 | 
|---|
 | 176 |   <obj>
 | 
|---|
 | 177 |     <xsl:call-template name="attrs">
 | 
|---|
 | 178 |       <xsl:with-param name="nd" select="$nd"/>
 | 
|---|
 | 179 |     </xsl:call-template>
 | 
|---|
 | 180 |     <ttl>
 | 
|---|
 | 181 |       <xsl:apply-templates select="$nd" mode="title.markup">
 | 
|---|
 | 182 |         <xsl:with-param name="verbose" select="0"/>
 | 
|---|
 | 183 |       </xsl:apply-templates>
 | 
|---|
 | 184 |     </ttl>
 | 
|---|
 | 185 |     <xreftext>
 | 
|---|
 | 186 |       <xsl:choose>
 | 
|---|
 | 187 |         <xsl:when test="$nd/@xreflabel">
 | 
|---|
 | 188 |           <xsl:call-template name="xref.xreflabel">
 | 
|---|
 | 189 |             <xsl:with-param name="target" select="$nd"/>
 | 
|---|
 | 190 |           </xsl:call-template>
 | 
|---|
 | 191 |         </xsl:when>
 | 
|---|
 | 192 |         <xsl:otherwise>
 | 
|---|
 | 193 |           <xsl:apply-templates select="$nd" mode="xref-to">
 | 
|---|
 | 194 |             <xsl:with-param name="verbose" select="0"/>
 | 
|---|
 | 195 |           </xsl:apply-templates>
 | 
|---|
 | 196 |         </xsl:otherwise>
 | 
|---|
 | 197 |       </xsl:choose>
 | 
|---|
 | 198 |     </xreftext>
 | 
|---|
 | 199 |   </obj>
 | 
|---|
 | 200 | </xsl:template>
 | 
|---|
 | 201 | 
 | 
|---|
 | 202 | <xsl:template match="text()|processing-instruction()|comment()"
 | 
|---|
 | 203 |               mode="olink.mode">
 | 
|---|
 | 204 |   <!-- nop -->
 | 
|---|
 | 205 | </xsl:template>
 | 
|---|
 | 206 | 
 | 
|---|
 | 207 | <!--
 | 
|---|
 | 208 | <xsl:template match="*" mode="olink.mode">
 | 
|---|
 | 209 | </xsl:template>
 | 
|---|
 | 210 | -->
 | 
|---|
 | 211 | 
 | 
|---|
 | 212 | <xsl:template match="set" mode="olink.mode">
 | 
|---|
 | 213 |   <xsl:call-template name="div"/>
 | 
|---|
 | 214 | </xsl:template>
 | 
|---|
 | 215 | 
 | 
|---|
 | 216 | <xsl:template match="book" mode="olink.mode">
 | 
|---|
 | 217 |   <xsl:call-template name="div"/>
 | 
|---|
 | 218 | </xsl:template>
 | 
|---|
 | 219 | 
 | 
|---|
 | 220 | <xsl:template match="preface|chapter|appendix" mode="olink.mode">
 | 
|---|
 | 221 |   <xsl:call-template name="div"/>
 | 
|---|
 | 222 | </xsl:template>
 | 
|---|
 | 223 | 
 | 
|---|
 | 224 | <xsl:template match="part|reference" mode="olink.mode">
 | 
|---|
 | 225 |   <xsl:call-template name="div"/>
 | 
|---|
 | 226 | </xsl:template>
 | 
|---|
 | 227 | 
 | 
|---|
 | 228 | <xsl:template match="article" mode="olink.mode">
 | 
|---|
 | 229 |   <xsl:call-template name="div"/>
 | 
|---|
 | 230 | </xsl:template>
 | 
|---|
 | 231 | 
 | 
|---|
 | 232 | <xsl:template match="bibliography|bibliodiv" mode="olink.mode">
 | 
|---|
 | 233 |   <xsl:call-template name="div"/>
 | 
|---|
 | 234 | </xsl:template>
 | 
|---|
 | 235 | 
 | 
|---|
 | 236 | <xsl:template match="biblioentry|bibliomixed" mode="olink.mode">
 | 
|---|
 | 237 |   <xsl:call-template name="obj"/>
 | 
|---|
 | 238 | </xsl:template>
 | 
|---|
 | 239 | 
 | 
|---|
 | 240 | <xsl:template match="refentry" mode="olink.mode">
 | 
|---|
 | 241 |   <xsl:call-template name="div"/>
 | 
|---|
 | 242 | </xsl:template>
 | 
|---|
 | 243 | 
 | 
|---|
 | 244 | <xsl:template match="section|sect1|sect2|sect3|sect4|sect5" mode="olink.mode">
 | 
|---|
 | 245 |   <xsl:call-template name="div"/>
 | 
|---|
 | 246 | </xsl:template>
 | 
|---|
 | 247 | 
 | 
|---|
 | 248 | <xsl:template match="refsection|refsect1|refsect2|refsect3" mode="olink.mode">
 | 
|---|
 | 249 |   <xsl:call-template name="div"/>
 | 
|---|
 | 250 | </xsl:template>
 | 
|---|
 | 251 | 
 | 
|---|
 | 252 | <xsl:template match="figure|example|table" mode="olink.mode">
 | 
|---|
 | 253 |   <xsl:call-template name="obj"/>
 | 
|---|
 | 254 |   <xsl:apply-templates mode="olink.mode"/>
 | 
|---|
 | 255 | </xsl:template>
 | 
|---|
 | 256 | 
 | 
|---|
 | 257 | <xsl:template match="equation[title or info/title]" mode="olink.mode">
 | 
|---|
 | 258 |   <xsl:call-template name="obj"/>
 | 
|---|
 | 259 | </xsl:template>
 | 
|---|
 | 260 | 
 | 
|---|
 | 261 | <xsl:template match="qandaset|qandaentry" mode="olink.mode">
 | 
|---|
 | 262 |   <xsl:call-template name="div"/>
 | 
|---|
 | 263 | </xsl:template>
 | 
|---|
 | 264 | 
 | 
|---|
 | 265 | <xsl:template match="*" mode="olink.mode">
 | 
|---|
 | 266 |   <xsl:if test="@id or @xml:id">
 | 
|---|
 | 267 |     <xsl:call-template name="obj"/>
 | 
|---|
 | 268 |   </xsl:if> 
 | 
|---|
 | 269 |   <xsl:apply-templates mode="olink.mode"/>
 | 
|---|
 | 270 | </xsl:template>
 | 
|---|
 | 271 | 
 | 
|---|
 | 272 | </xsl:stylesheet>
 | 
|---|