| [9882b55] | 1 | <?xml version="1.0"?>
 | 
|---|
 | 2 | <!DOCTYPE xsl:stylesheet [
 | 
|---|
 | 3 | <!ENTITY % common.entities SYSTEM "../common/entities.ent">
 | 
|---|
 | 4 | %common.entities;
 | 
|---|
 | 5 | ]>
 | 
|---|
 | 6 | <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 | 
|---|
 | 7 |                 xmlns:fo="http://www.w3.org/1999/XSL/Format"
 | 
|---|
 | 8 |                 xmlns:rx="http://www.renderx.com/XSL/Extensions"
 | 
|---|
 | 9 |                 xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions"
 | 
|---|
 | 10 |                 xmlns:exslt="http://exslt.org/common"
 | 
|---|
 | 11 |                 extension-element-prefixes="exslt"
 | 
|---|
 | 12 |                 exclude-result-prefixes="exslt"
 | 
|---|
 | 13 |                 version="1.0">
 | 
|---|
 | 14 | 
 | 
|---|
 | 15 | <!-- ********************************************************************
 | 
|---|
 | 16 |      $Id$
 | 
|---|
 | 17 |      ********************************************************************
 | 
|---|
 | 18 | 
 | 
|---|
 | 19 |      This file is part of the DocBook XSL Stylesheet distribution.
 | 
|---|
 | 20 |      See ../README or http://docbook.sf.net/ for copyright
 | 
|---|
 | 21 |      copyright and other information.
 | 
|---|
 | 22 | 
 | 
|---|
 | 23 |      ******************************************************************** -->
 | 
|---|
 | 24 | 
 | 
|---|
 | 25 | <!-- ==================================================================== -->
 | 
|---|
 | 26 | <!-- The "basic" method derived from Jeni Tennison's work. -->
 | 
|---|
 | 27 | <!-- The "kosek" method contributed by Jirka Kosek. -->
 | 
|---|
 | 28 | <!-- The "kimber" method contributed by Eliot Kimber of Innodata Isogen. -->
 | 
|---|
 | 29 | 
 | 
|---|
 | 30 | <!-- Importing module for kimber or kosek method overrides one of these -->
 | 
|---|
 | 31 | <xsl:param name="kimber.imported" select="0"/>
 | 
|---|
 | 32 | <xsl:param name="kosek.imported" select="0"/>
 | 
|---|
 | 33 | 
 | 
|---|
 | 34 | <!-- These keys used primary in all methods -->
 | 
|---|
 | 35 | <xsl:key name="letter"
 | 
|---|
 | 36 |          match="indexterm"
 | 
|---|
 | 37 |          use="translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;)"/>
 | 
|---|
 | 38 | 
 | 
|---|
 | 39 | <xsl:key name="primary"
 | 
|---|
 | 40 |          match="indexterm"
 | 
|---|
 | 41 |          use="&primary;"/>
 | 
|---|
 | 42 | 
 | 
|---|
 | 43 | <xsl:key name="secondary"
 | 
|---|
 | 44 |          match="indexterm"
 | 
|---|
 | 45 |          use="concat(&primary;, &sep;, &secondary;)"/>
 | 
|---|
 | 46 | 
 | 
|---|
 | 47 | <xsl:key name="tertiary"
 | 
|---|
 | 48 |          match="indexterm"
 | 
|---|
 | 49 |          use="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;)"/>
 | 
|---|
 | 50 | 
 | 
|---|
 | 51 | <xsl:key name="endofrange"
 | 
|---|
 | 52 |          match="indexterm[@class='endofrange']"
 | 
|---|
 | 53 |          use="@startref"/>
 | 
|---|
 | 54 | 
 | 
|---|
 | 55 | <xsl:key name="see-also"
 | 
|---|
 | 56 |          match="indexterm[seealso]"
 | 
|---|
 | 57 |          use="concat(&primary;, &sep;, 
 | 
|---|
 | 58 |                      &secondary;, &sep;, 
 | 
|---|
 | 59 |                      &tertiary;, &sep;, seealso)"/>
 | 
|---|
 | 60 | 
 | 
|---|
 | 61 | <xsl:key name="see"
 | 
|---|
 | 62 |          match="indexterm[see]"
 | 
|---|
 | 63 |          use="concat(&primary;, &sep;, 
 | 
|---|
 | 64 |                      &secondary;, &sep;, 
 | 
|---|
 | 65 |                      &tertiary;, &sep;, see)"/>
 | 
|---|
 | 66 | 
 | 
|---|
 | 67 | 
 | 
|---|
 | 68 | <xsl:template name="generate-index">
 | 
|---|
 | 69 |   <xsl:param name="scope" select="(ancestor::book|/)[last()]"/>
 | 
|---|
 | 70 | 
 | 
|---|
 | 71 |   <xsl:choose>
 | 
|---|
 | 72 |     <xsl:when test="$index.method = 'kosek'">
 | 
|---|
 | 73 |       <xsl:call-template name="generate-kosek-index">
 | 
|---|
 | 74 |         <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 75 |       </xsl:call-template>
 | 
|---|
 | 76 |     </xsl:when>
 | 
|---|
 | 77 |     <xsl:when test="$index.method = 'kimber'">
 | 
|---|
 | 78 |       <xsl:call-template name="generate-kimber-index">
 | 
|---|
 | 79 |         <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 80 |       </xsl:call-template>
 | 
|---|
 | 81 |     </xsl:when>
 | 
|---|
 | 82 | 
 | 
|---|
 | 83 |     <xsl:otherwise>
 | 
|---|
 | 84 |       <xsl:call-template name="generate-basic-index">
 | 
|---|
 | 85 |         <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 86 |       </xsl:call-template>
 | 
|---|
 | 87 |     </xsl:otherwise>
 | 
|---|
 | 88 |   </xsl:choose>
 | 
|---|
 | 89 | </xsl:template>
 | 
|---|
 | 90 |       
 | 
|---|
 | 91 | <xsl:template name="generate-basic-index">
 | 
|---|
 | 92 |   <xsl:param name="scope" select="NOTANODE"/>
 | 
|---|
 | 93 | 
 | 
|---|
 | 94 |   <xsl:variable name="role">
 | 
|---|
 | 95 |     <xsl:if test="$index.on.role != 0">
 | 
|---|
 | 96 |       <xsl:value-of select="@role"/>
 | 
|---|
 | 97 |     </xsl:if>
 | 
|---|
 | 98 |   </xsl:variable>
 | 
|---|
 | 99 | 
 | 
|---|
 | 100 |   <xsl:variable name="type">
 | 
|---|
 | 101 |     <xsl:if test="$index.on.type != 0">
 | 
|---|
 | 102 |       <xsl:value-of select="@type"/>
 | 
|---|
 | 103 |     </xsl:if>
 | 
|---|
 | 104 |   </xsl:variable>
 | 
|---|
 | 105 | 
 | 
|---|
 | 106 |   <xsl:variable name="terms"
 | 
|---|
 | 107 |                 select="//indexterm
 | 
|---|
 | 108 |                         [count(.|key('letter',
 | 
|---|
 | 109 |                           translate(substring(&primary;, 1, 1),
 | 
|---|
 | 110 |                              &lowercase;,
 | 
|---|
 | 111 |                              &uppercase;))
 | 
|---|
 | 112 |                           [&scope;][1]) = 1
 | 
|---|
 | 113 |                           and not(@class = 'endofrange')]"/>
 | 
|---|
 | 114 | 
 | 
|---|
 | 115 |   <xsl:variable name="alphabetical"
 | 
|---|
 | 116 |                 select="$terms[contains(concat(&lowercase;, &uppercase;),
 | 
|---|
 | 117 |                                         substring(&primary;, 1, 1))]"/>
 | 
|---|
 | 118 | 
 | 
|---|
 | 119 |   <xsl:variable name="others" select="$terms[not(contains(
 | 
|---|
 | 120 |                                         concat(&lowercase;,
 | 
|---|
 | 121 |                                         &uppercase;),
 | 
|---|
 | 122 |                                         substring(&primary;, 1, 1)))]"/>
 | 
|---|
 | 123 |   <fo:block>
 | 
|---|
 | 124 |     <xsl:if test="$others">
 | 
|---|
 | 125 |       <xsl:call-template name="indexdiv.title">
 | 
|---|
 | 126 |         <xsl:with-param name="titlecontent">
 | 
|---|
 | 127 |           <xsl:call-template name="gentext">
 | 
|---|
 | 128 |             <xsl:with-param name="key" select="'index symbols'"/>
 | 
|---|
 | 129 |           </xsl:call-template>
 | 
|---|
 | 130 |         </xsl:with-param>
 | 
|---|
 | 131 |       </xsl:call-template>
 | 
|---|
 | 132 | 
 | 
|---|
 | 133 |       <fo:block>
 | 
|---|
 | 134 |         <xsl:apply-templates select="$others[count(.|key('primary',
 | 
|---|
 | 135 |                                      &primary;)[&scope;][1]) = 1]"
 | 
|---|
 | 136 |                              mode="index-symbol-div">
 | 
|---|
 | 137 |           <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 138 |           <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 139 |           <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 140 |           <xsl:sort select="translate(&primary;, &lowercase;, 
 | 
|---|
 | 141 |                             &uppercase;)"/>
 | 
|---|
 | 142 |         </xsl:apply-templates>
 | 
|---|
 | 143 |       </fo:block>
 | 
|---|
 | 144 |     </xsl:if>
 | 
|---|
 | 145 | 
 | 
|---|
 | 146 |     <xsl:apply-templates select="$alphabetical[count(.|key('letter',
 | 
|---|
 | 147 |                                  translate(substring(&primary;, 1, 1),
 | 
|---|
 | 148 |                                            &lowercase;,&uppercase;))
 | 
|---|
 | 149 |                                            [&scope;][1]) = 1]"
 | 
|---|
 | 150 |                          mode="index-div-basic">
 | 
|---|
 | 151 |       <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 152 |       <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 153 |       <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 154 |       <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/>
 | 
|---|
 | 155 |     </xsl:apply-templates>
 | 
|---|
 | 156 |   </fo:block>
 | 
|---|
 | 157 | </xsl:template>
 | 
|---|
 | 158 | 
 | 
|---|
 | 159 | <!-- This template not used if fo/autoidx-kosek.xsl is imported -->
 | 
|---|
 | 160 | <xsl:template name="generate-kosek-index">
 | 
|---|
 | 161 |   <xsl:param name="scope" select="NOTANODE"/>
 | 
|---|
 | 162 | 
 | 
|---|
 | 163 |   <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
 | 
|---|
 | 164 |   <xsl:if test="contains($vendor, 'libxslt')">
 | 
|---|
 | 165 |     <xsl:message terminate="yes">
 | 
|---|
 | 166 |       <xsl:text>ERROR: the 'kosek' index method does not </xsl:text>
 | 
|---|
 | 167 |       <xsl:text>work with the xsltproc XSLT processor.</xsl:text>
 | 
|---|
 | 168 |     </xsl:message>
 | 
|---|
 | 169 |   </xsl:if>
 | 
|---|
 | 170 | 
 | 
|---|
 | 171 | 
 | 
|---|
 | 172 |   <xsl:if test="not(function-available('exslt:node-set') or
 | 
|---|
 | 173 |                     function-available('exslt:nodeSet'))">
 | 
|---|
 | 174 |     <xsl:message terminate="yes">
 | 
|---|
 | 175 |       <xsl:text>ERROR: the 'kosek' index method requires the </xsl:text>
 | 
|---|
 | 176 |       <xsl:text>exslt:node-set() function. Use a processor that </xsl:text>
 | 
|---|
 | 177 |       <xsl:text>has it, or use a different index method.</xsl:text>
 | 
|---|
 | 178 |     </xsl:message>
 | 
|---|
 | 179 |   </xsl:if>
 | 
|---|
 | 180 | 
 | 
|---|
 | 181 |   <xsl:if test="$kosek.imported = 0">
 | 
|---|
 | 182 |     <xsl:message terminate="yes">
 | 
|---|
 | 183 |       <xsl:text>ERROR: the 'kosek' index method requires the
</xsl:text>
 | 
|---|
 | 184 |       <xsl:text>kosek index extensions be imported:
</xsl:text>
 | 
|---|
 | 185 |       <xsl:text>  xsl:import href="fo/autoidx-kosek.xsl"</xsl:text>
 | 
|---|
 | 186 |     </xsl:message>
 | 
|---|
 | 187 |   </xsl:if>
 | 
|---|
 | 188 | 
 | 
|---|
 | 189 | </xsl:template>
 | 
|---|
 | 190 | 
 | 
|---|
 | 191 | 
 | 
|---|
 | 192 | <!-- This template not used if fo/autoidx-kimber.xsl is imported -->
 | 
|---|
 | 193 | <xsl:template name="generate-kimber-index">
 | 
|---|
 | 194 |   <xsl:param name="scope" select="NOTANODE"/>
 | 
|---|
 | 195 | 
 | 
|---|
 | 196 |   <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
 | 
|---|
 | 197 |   <xsl:if test="not(contains($vendor, 'SAXON '))">
 | 
|---|
 | 198 |     <xsl:message terminate="yes">
 | 
|---|
 | 199 |       <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text>
 | 
|---|
 | 200 |       <xsl:text>Saxon version 6 or 8 XSLT processor.</xsl:text>
 | 
|---|
 | 201 |     </xsl:message>
 | 
|---|
 | 202 |   </xsl:if>
 | 
|---|
 | 203 | 
 | 
|---|
 | 204 |   <xsl:if test="$kimber.imported = 0">
 | 
|---|
 | 205 |     <xsl:message terminate="yes">
 | 
|---|
 | 206 |       <xsl:text>ERROR: the 'kimber' index method requires the
</xsl:text>
 | 
|---|
 | 207 |       <xsl:text>kimber index extensions be imported:
</xsl:text>
 | 
|---|
 | 208 |       <xsl:text>  xsl:import href="fo/autoidx-kimber.xsl"</xsl:text>
 | 
|---|
 | 209 |     </xsl:message>
 | 
|---|
 | 210 |   </xsl:if>
 | 
|---|
 | 211 | 
 | 
|---|
 | 212 | </xsl:template>
 | 
|---|
 | 213 | 
 | 
|---|
 | 214 | <xsl:template match="indexterm" mode="index-div-basic">
 | 
|---|
 | 215 |   <xsl:param name="scope" select="."/>
 | 
|---|
 | 216 |   <xsl:param name="role" select="''"/>
 | 
|---|
 | 217 |   <xsl:param name="type" select="''"/>
 | 
|---|
 | 218 | 
 | 
|---|
 | 219 |   <xsl:variable name="key"
 | 
|---|
 | 220 |                 select="translate(substring(&primary;, 1, 1),
 | 
|---|
 | 221 |                          &lowercase;,&uppercase;)"/>
 | 
|---|
 | 222 | 
 | 
|---|
 | 223 |   <xsl:if test="key('letter', $key)[&scope;]
 | 
|---|
 | 224 |                 [count(.|key('primary', &primary;)[&scope;][1]) = 1]">
 | 
|---|
 | 225 |     <fo:block>
 | 
|---|
 | 226 |       <xsl:if test="contains(concat(&lowercase;, &uppercase;), $key)">
 | 
|---|
 | 227 |         <xsl:call-template name="indexdiv.title">
 | 
|---|
 | 228 |           <xsl:with-param name="titlecontent">
 | 
|---|
 | 229 |             <xsl:value-of select="translate($key, &lowercase;, &uppercase;)"/>
 | 
|---|
 | 230 |           </xsl:with-param>
 | 
|---|
 | 231 |         </xsl:call-template>
 | 
|---|
 | 232 |       </xsl:if>
 | 
|---|
 | 233 |       <fo:block xsl:use-attribute-sets="index.entry.properties">
 | 
|---|
 | 234 |         <xsl:apply-templates select="key('letter', $key)[&scope;]
 | 
|---|
 | 235 |                                      [count(.|key('primary', &primary;)
 | 
|---|
 | 236 |                                      [&scope;][1])=1]"
 | 
|---|
 | 237 |                              mode="index-primary">
 | 
|---|
 | 238 |           <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/>
 | 
|---|
 | 239 |           <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 240 |           <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 241 |           <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 242 |         </xsl:apply-templates>
 | 
|---|
 | 243 |       </fo:block>
 | 
|---|
 | 244 |     </fo:block>
 | 
|---|
 | 245 |   </xsl:if>
 | 
|---|
 | 246 | </xsl:template>
 | 
|---|
 | 247 | 
 | 
|---|
 | 248 | <xsl:template match="indexterm" mode="index-symbol-div">
 | 
|---|
 | 249 |   <xsl:param name="scope" select="."/>
 | 
|---|
 | 250 |   <xsl:param name="role" select="''"/>
 | 
|---|
 | 251 |   <xsl:param name="type" select="''"/>
 | 
|---|
 | 252 | 
 | 
|---|
 | 253 |   <xsl:variable name="key"
 | 
|---|
 | 254 |                 select="translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;)"/>
 | 
|---|
 | 255 | 
 | 
|---|
 | 256 |   <fo:block xsl:use-attribute-sets="index.entry.properties">
 | 
|---|
 | 257 |     <xsl:apply-templates select="key('letter', $key)[&scope;][count(.|key('primary', &primary;)[&scope;][1]) = 1]"
 | 
|---|
 | 258 |                          mode="index-primary">
 | 
|---|
 | 259 |       <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 260 |       <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 261 |       <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 262 |       <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/>
 | 
|---|
 | 263 |     </xsl:apply-templates>
 | 
|---|
 | 264 |   </fo:block>
 | 
|---|
 | 265 | </xsl:template>
 | 
|---|
 | 266 | 
 | 
|---|
 | 267 | <xsl:template match="indexterm" mode="index-primary">
 | 
|---|
 | 268 |   <xsl:param name="scope" select="."/>
 | 
|---|
 | 269 |   <xsl:param name="role" select="''"/>
 | 
|---|
 | 270 |   <xsl:param name="type" select="''"/>
 | 
|---|
 | 271 | 
 | 
|---|
 | 272 |   <xsl:variable name="key" select="&primary;"/>
 | 
|---|
 | 273 |   <xsl:variable name="refs" select="key('primary', $key)[&scope;]"/>
 | 
|---|
 | 274 | 
 | 
|---|
 | 275 |   <xsl:variable name="term.separator">
 | 
|---|
 | 276 |     <xsl:call-template name="index.separator">
 | 
|---|
 | 277 |       <xsl:with-param name="key" select="'index.term.separator'"/>
 | 
|---|
 | 278 |     </xsl:call-template>
 | 
|---|
 | 279 |   </xsl:variable>
 | 
|---|
 | 280 | 
 | 
|---|
 | 281 |   <xsl:variable name="range.separator">
 | 
|---|
 | 282 |     <xsl:call-template name="index.separator">
 | 
|---|
 | 283 |       <xsl:with-param name="key" select="'index.range.separator'"/>
 | 
|---|
 | 284 |     </xsl:call-template>
 | 
|---|
 | 285 |   </xsl:variable>
 | 
|---|
 | 286 | 
 | 
|---|
 | 287 |   <xsl:variable name="number.separator">
 | 
|---|
 | 288 |     <xsl:call-template name="index.separator">
 | 
|---|
 | 289 |       <xsl:with-param name="key" select="'index.number.separator'"/>
 | 
|---|
 | 290 |     </xsl:call-template>
 | 
|---|
 | 291 |   </xsl:variable>
 | 
|---|
 | 292 | 
 | 
|---|
 | 293 |   <fo:block>
 | 
|---|
 | 294 |     <xsl:if test="$axf.extensions != 0">
 | 
|---|
 | 295 |       <xsl:attribute name="axf:suppress-duplicate-page-number">true</xsl:attribute>
 | 
|---|
 | 296 |     </xsl:if>
 | 
|---|
 | 297 |     <xsl:value-of select="primary"/>
 | 
|---|
 | 298 | 
 | 
|---|
 | 299 |     <xsl:choose>
 | 
|---|
 | 300 |       <xsl:when test="$xep.extensions != 0">
 | 
|---|
 | 301 |         <xsl:if test="$refs[not(see) and not(secondary)]">
 | 
|---|
 | 302 |           <xsl:copy-of select="$term.separator"/>
 | 
|---|
 | 303 |           <xsl:variable name="primary" select="&primary;"/>
 | 
|---|
 | 304 |           <xsl:variable name="primary.significant" select="concat(&primary;, $significant.flag)"/>
 | 
|---|
 | 305 |           <rx:page-index list-separator="{$number.separator}"
 | 
|---|
 | 306 |                          range-separator="{$range.separator}">
 | 
|---|
 | 307 |             <xsl:if test="$refs[@significance='preferred'][not(see) and not(secondary)]">
 | 
|---|
 | 308 |               <rx:index-item xsl:use-attribute-sets="index.preferred.page.properties xep.index.item.properties"
 | 
|---|
 | 309 |                 ref-key="{$primary.significant}"/>
 | 
|---|
 | 310 |             </xsl:if>
 | 
|---|
 | 311 |             <xsl:if test="$refs[not(@significance) or @significance!='preferred'][not(see) and not(secondary)]">
 | 
|---|
 | 312 |               <rx:index-item xsl:use-attribute-sets="xep.index.item.properties"
 | 
|---|
 | 313 |                 ref-key="{$primary}"/>
 | 
|---|
 | 314 |             </xsl:if>
 | 
|---|
 | 315 |           </rx:page-index>        
 | 
|---|
 | 316 |         </xsl:if>
 | 
|---|
 | 317 |       </xsl:when>
 | 
|---|
 | 318 |       <xsl:otherwise>
 | 
|---|
 | 319 |         <xsl:variable name="page-number-citations">
 | 
|---|
 | 320 |           <xsl:for-each select="$refs[not(see) 
 | 
|---|
 | 321 |                                 and not(secondary)]">
 | 
|---|
 | 322 |             <xsl:apply-templates select="." mode="reference">
 | 
|---|
 | 323 |               <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 324 |               <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 325 |               <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 326 |               <xsl:with-param name="position" select="position()"/>
 | 
|---|
 | 327 |             </xsl:apply-templates>
 | 
|---|
 | 328 |           </xsl:for-each>
 | 
|---|
 | 329 |         </xsl:variable>
 | 
|---|
 | 330 | 
 | 
|---|
 | 331 |         <xsl:choose>
 | 
|---|
 | 332 |           <xsl:when test="$passivetex.extensions != '0'">
 | 
|---|
 | 333 |             <fotex:sort xmlns:fotex="http://www.tug.org/fotex">
 | 
|---|
 | 334 |               <xsl:copy-of select="$page-number-citations"/>
 | 
|---|
 | 335 |             </fotex:sort>
 | 
|---|
 | 336 |           </xsl:when>
 | 
|---|
 | 337 |           <xsl:otherwise>
 | 
|---|
 | 338 |             <xsl:copy-of select="$page-number-citations"/>
 | 
|---|
 | 339 |           </xsl:otherwise>
 | 
|---|
 | 340 |         </xsl:choose>
 | 
|---|
 | 341 |       </xsl:otherwise>
 | 
|---|
 | 342 |     </xsl:choose>
 | 
|---|
 | 343 | 
 | 
|---|
 | 344 |     <xsl:if test="$refs[not(secondary)]/*[self::see]">
 | 
|---|
 | 345 |       <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &sep;, &sep;, see))[&scope;][1])]"
 | 
|---|
 | 346 |                            mode="index-see">
 | 
|---|
 | 347 |          <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 348 |          <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 349 |          <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 350 |          <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/>
 | 
|---|
 | 351 |       </xsl:apply-templates>
 | 
|---|
 | 352 |     </xsl:if>
 | 
|---|
 | 353 | 
 | 
|---|
 | 354 |   </fo:block>
 | 
|---|
 | 355 | 
 | 
|---|
 | 356 |   <xsl:if test="$refs/secondary or $refs[not(secondary)]/*[self::seealso]">
 | 
|---|
 | 357 |     <fo:block start-indent="1pc">
 | 
|---|
 | 358 |       <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &sep;, &sep;, seealso))[&scope;][1])]"
 | 
|---|
 | 359 |                            mode="index-seealso">
 | 
|---|
 | 360 |          <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 361 |          <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 362 |          <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 363 |          <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/>
 | 
|---|
 | 364 |       </xsl:apply-templates>
 | 
|---|
 | 365 |       <xsl:apply-templates select="$refs[secondary and count(.|key('secondary', concat($key, &sep;, &secondary;))[&scope;][1]) = 1]"
 | 
|---|
 | 366 |                            mode="index-secondary">
 | 
|---|
 | 367 |        <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 368 |        <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 369 |        <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 370 |        <xsl:sort select="translate(&secondary;, &lowercase;, &uppercase;)"/>
 | 
|---|
 | 371 |       </xsl:apply-templates>
 | 
|---|
 | 372 |     </fo:block>
 | 
|---|
 | 373 |   </xsl:if>
 | 
|---|
 | 374 | </xsl:template>
 | 
|---|
 | 375 | 
 | 
|---|
 | 376 | <xsl:template match="indexterm" mode="index-secondary">
 | 
|---|
 | 377 |   <xsl:param name="scope" select="."/>
 | 
|---|
 | 378 |   <xsl:param name="role" select="''"/>
 | 
|---|
 | 379 |   <xsl:param name="type" select="''"/>
 | 
|---|
 | 380 | 
 | 
|---|
 | 381 |   <xsl:variable name="key" select="concat(&primary;, &sep;, &secondary;)"/>
 | 
|---|
 | 382 |   <xsl:variable name="refs" select="key('secondary', $key)[&scope;]"/>
 | 
|---|
 | 383 | 
 | 
|---|
 | 384 |   <xsl:variable name="term.separator">
 | 
|---|
 | 385 |     <xsl:call-template name="index.separator">
 | 
|---|
 | 386 |       <xsl:with-param name="key" select="'index.term.separator'"/>
 | 
|---|
 | 387 |     </xsl:call-template>
 | 
|---|
 | 388 |   </xsl:variable>
 | 
|---|
 | 389 | 
 | 
|---|
 | 390 |   <xsl:variable name="range.separator">
 | 
|---|
 | 391 |     <xsl:call-template name="index.separator">
 | 
|---|
 | 392 |       <xsl:with-param name="key" select="'index.range.separator'"/>
 | 
|---|
 | 393 |     </xsl:call-template>
 | 
|---|
 | 394 |   </xsl:variable>
 | 
|---|
 | 395 | 
 | 
|---|
 | 396 |   <xsl:variable name="number.separator">
 | 
|---|
 | 397 |     <xsl:call-template name="index.separator">
 | 
|---|
 | 398 |       <xsl:with-param name="key" select="'index.number.separator'"/>
 | 
|---|
 | 399 |     </xsl:call-template>
 | 
|---|
 | 400 |   </xsl:variable>
 | 
|---|
 | 401 | 
 | 
|---|
 | 402 |   <fo:block>
 | 
|---|
 | 403 |     <xsl:if test="$axf.extensions != 0">
 | 
|---|
 | 404 |       <xsl:attribute name="axf:suppress-duplicate-page-number">true</xsl:attribute>
 | 
|---|
 | 405 |     </xsl:if>
 | 
|---|
 | 406 |     <xsl:value-of select="secondary"/>
 | 
|---|
 | 407 | 
 | 
|---|
 | 408 |     <xsl:choose>
 | 
|---|
 | 409 |       <xsl:when test="$xep.extensions != 0">
 | 
|---|
 | 410 |         <xsl:if test="$refs[not(see) and not(tertiary)]">
 | 
|---|
 | 411 |           <xsl:copy-of select="$term.separator"/>
 | 
|---|
 | 412 |           <xsl:variable name="primary" select="&primary;"/>
 | 
|---|
 | 413 |           <xsl:variable name="secondary" select="&secondary;"/>
 | 
|---|
 | 414 |           <xsl:variable name="primary.significant" select="concat(&primary;, $significant.flag)"/>
 | 
|---|
 | 415 |           <rx:page-index list-separator="{$number.separator}"
 | 
|---|
 | 416 |                          range-separator="{$range.separator}">
 | 
|---|
 | 417 |             <xsl:if test="$refs[@significance='preferred'][not(see) and not(tertiary)]">
 | 
|---|
 | 418 |               <rx:index-item xsl:use-attribute-sets="index.preferred.page.properties xep.index.item.properties">
 | 
|---|
 | 419 |                 <xsl:attribute name="ref-key">
 | 
|---|
 | 420 |                   <xsl:value-of select="$primary.significant"/>
 | 
|---|
 | 421 |                   <xsl:text>, </xsl:text>
 | 
|---|
 | 422 |                   <xsl:value-of select="$secondary"/>
 | 
|---|
 | 423 |                 </xsl:attribute>
 | 
|---|
 | 424 |               </rx:index-item>
 | 
|---|
 | 425 |             </xsl:if>
 | 
|---|
 | 426 |             <xsl:if test="$refs[not(@significance) or @significance!='preferred'][not(see) and not(tertiary)]">
 | 
|---|
 | 427 |               <rx:index-item xsl:use-attribute-sets="xep.index.item.properties">
 | 
|---|
 | 428 |                 <xsl:attribute name="ref-key">
 | 
|---|
 | 429 |                   <xsl:value-of select="$primary"/>
 | 
|---|
 | 430 |                   <xsl:text>, </xsl:text>
 | 
|---|
 | 431 |                   <xsl:value-of select="$secondary"/>
 | 
|---|
 | 432 |                 </xsl:attribute>
 | 
|---|
 | 433 |               </rx:index-item>
 | 
|---|
 | 434 |             </xsl:if>
 | 
|---|
 | 435 |           </rx:page-index>
 | 
|---|
 | 436 |         </xsl:if>
 | 
|---|
 | 437 |       </xsl:when>
 | 
|---|
 | 438 |       <xsl:otherwise>
 | 
|---|
 | 439 |         <xsl:variable name="page-number-citations">
 | 
|---|
 | 440 |           <xsl:for-each select="$refs[not(see) 
 | 
|---|
 | 441 |                                 and not(tertiary)]">
 | 
|---|
 | 442 |             <xsl:apply-templates select="." mode="reference">
 | 
|---|
 | 443 |               <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 444 |               <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 445 |               <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 446 |               <xsl:with-param name="position" select="position()"/>
 | 
|---|
 | 447 |             </xsl:apply-templates>
 | 
|---|
 | 448 |           </xsl:for-each>
 | 
|---|
 | 449 |         </xsl:variable>
 | 
|---|
 | 450 | 
 | 
|---|
 | 451 |         <xsl:choose>
 | 
|---|
 | 452 |           <xsl:when test="$passivetex.extensions != '0'">
 | 
|---|
 | 453 |             <fotex:sort xmlns:fotex="http://www.tug.org/fotex">
 | 
|---|
 | 454 |               <xsl:copy-of select="$page-number-citations"/>
 | 
|---|
 | 455 |             </fotex:sort>
 | 
|---|
 | 456 |           </xsl:when>
 | 
|---|
 | 457 |           <xsl:otherwise>
 | 
|---|
 | 458 |             <xsl:copy-of select="$page-number-citations"/>
 | 
|---|
 | 459 |           </xsl:otherwise>
 | 
|---|
 | 460 |         </xsl:choose>
 | 
|---|
 | 461 |       </xsl:otherwise>
 | 
|---|
 | 462 |     </xsl:choose>
 | 
|---|
 | 463 | 
 | 
|---|
 | 464 |     <xsl:if test="$refs[not(tertiary)]/*[self::see]">
 | 
|---|
 | 465 |       <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &secondary;, &sep;, &sep;, see))[&scope;][1])]"
 | 
|---|
 | 466 |                            mode="index-see">
 | 
|---|
 | 467 |         <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 468 |         <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 469 |         <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 470 |         <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/>
 | 
|---|
 | 471 |       </xsl:apply-templates>
 | 
|---|
 | 472 |     </xsl:if>
 | 
|---|
 | 473 | 
 | 
|---|
 | 474 |   </fo:block>
 | 
|---|
 | 475 | 
 | 
|---|
 | 476 |   <xsl:if test="$refs/tertiary or $refs[not(tertiary)]/*[self::seealso]">
 | 
|---|
 | 477 |     <fo:block start-indent="2pc">
 | 
|---|
 | 478 |       <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &secondary;, &sep;, &sep;, seealso))[&scope;][1])]"
 | 
|---|
 | 479 |                            mode="index-seealso">
 | 
|---|
 | 480 |           <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 481 |           <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 482 |           <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 483 |           <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/>
 | 
|---|
 | 484 |       </xsl:apply-templates>
 | 
|---|
 | 485 |       <xsl:apply-templates select="$refs[tertiary and count(.|key('tertiary', concat($key, &sep;, &tertiary;))[&scope;][1]) = 1]" 
 | 
|---|
 | 486 |                            mode="index-tertiary">
 | 
|---|
 | 487 |           <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 488 |           <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 489 |           <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 490 |           <xsl:sort select="translate(&tertiary;, &lowercase;, &uppercase;)"/>
 | 
|---|
 | 491 |       </xsl:apply-templates>
 | 
|---|
 | 492 |     </fo:block>
 | 
|---|
 | 493 |   </xsl:if>
 | 
|---|
 | 494 | </xsl:template>
 | 
|---|
 | 495 | 
 | 
|---|
 | 496 | <xsl:template match="indexterm" mode="index-tertiary">
 | 
|---|
 | 497 |   <xsl:param name="scope" select="."/>
 | 
|---|
 | 498 |   <xsl:param name="role" select="''"/>
 | 
|---|
 | 499 |   <xsl:param name="type" select="''"/>
 | 
|---|
 | 500 |   <xsl:variable name="key" select="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;)"/>
 | 
|---|
 | 501 |   <xsl:variable name="refs" select="key('tertiary', $key)[&scope;]"/>
 | 
|---|
 | 502 | 
 | 
|---|
 | 503 |   <xsl:variable name="term.separator">
 | 
|---|
 | 504 |     <xsl:call-template name="index.separator">
 | 
|---|
 | 505 |       <xsl:with-param name="key" select="'index.term.separator'"/>
 | 
|---|
 | 506 |     </xsl:call-template>
 | 
|---|
 | 507 |   </xsl:variable>
 | 
|---|
 | 508 | 
 | 
|---|
 | 509 |   <xsl:variable name="range.separator">
 | 
|---|
 | 510 |     <xsl:call-template name="index.separator">
 | 
|---|
 | 511 |       <xsl:with-param name="key" select="'index.range.separator'"/>
 | 
|---|
 | 512 |     </xsl:call-template>
 | 
|---|
 | 513 |   </xsl:variable>
 | 
|---|
 | 514 | 
 | 
|---|
 | 515 |   <xsl:variable name="number.separator">
 | 
|---|
 | 516 |     <xsl:call-template name="index.separator">
 | 
|---|
 | 517 |       <xsl:with-param name="key" select="'index.number.separator'"/>
 | 
|---|
 | 518 |     </xsl:call-template>
 | 
|---|
 | 519 |   </xsl:variable>
 | 
|---|
 | 520 | 
 | 
|---|
 | 521 |   <fo:block>
 | 
|---|
 | 522 |     <xsl:if test="$axf.extensions != 0">
 | 
|---|
 | 523 |       <xsl:attribute name="axf:suppress-duplicate-page-number">true</xsl:attribute>
 | 
|---|
 | 524 |     </xsl:if>
 | 
|---|
 | 525 |     <xsl:value-of select="tertiary"/>
 | 
|---|
 | 526 | 
 | 
|---|
 | 527 |     <xsl:choose>
 | 
|---|
 | 528 |       <xsl:when test="$xep.extensions != 0">
 | 
|---|
 | 529 |         <xsl:if test="$refs[not(see)]">
 | 
|---|
 | 530 |           <xsl:copy-of select="$term.separator"/>
 | 
|---|
 | 531 |           <xsl:variable name="primary" select="&primary;"/>
 | 
|---|
 | 532 |           <xsl:variable name="secondary" select="&secondary;"/>
 | 
|---|
 | 533 |           <xsl:variable name="tertiary" select="&tertiary;"/>
 | 
|---|
 | 534 |           <xsl:variable name="primary.significant" select="concat(&primary;, $significant.flag)"/>
 | 
|---|
 | 535 |           <rx:page-index list-separator="{$number.separator}"
 | 
|---|
 | 536 |                          range-separator="{$range.separator}">
 | 
|---|
 | 537 |             <xsl:if test="$refs[@significance='preferred'][not(see)]">
 | 
|---|
 | 538 |               <rx:index-item xsl:use-attribute-sets="index.preferred.page.properties xep.index.item.properties">
 | 
|---|
 | 539 |                 <xsl:attribute name="ref-key">
 | 
|---|
 | 540 |                   <xsl:value-of select="$primary.significant"/>
 | 
|---|
 | 541 |                   <xsl:text>, </xsl:text>
 | 
|---|
 | 542 |                   <xsl:value-of select="$secondary"/>
 | 
|---|
 | 543 |                   <xsl:text>, </xsl:text>
 | 
|---|
 | 544 |                   <xsl:value-of select="$tertiary"/>
 | 
|---|
 | 545 |                 </xsl:attribute>
 | 
|---|
 | 546 |               </rx:index-item>
 | 
|---|
 | 547 |             </xsl:if>
 | 
|---|
 | 548 |             <xsl:if test="$refs[not(@significance) or @significance!='preferred'][not(see)]">
 | 
|---|
 | 549 |               <rx:index-item xsl:use-attribute-sets="xep.index.item.properties">
 | 
|---|
 | 550 |                 <xsl:attribute name="ref-key">
 | 
|---|
 | 551 |                   <xsl:value-of select="$primary"/>
 | 
|---|
 | 552 |                   <xsl:text>, </xsl:text>
 | 
|---|
 | 553 |                   <xsl:value-of select="$secondary"/>
 | 
|---|
 | 554 |                   <xsl:text>, </xsl:text>
 | 
|---|
 | 555 |                   <xsl:value-of select="$tertiary"/>
 | 
|---|
 | 556 |                 </xsl:attribute>
 | 
|---|
 | 557 |               </rx:index-item>
 | 
|---|
 | 558 |             </xsl:if>
 | 
|---|
 | 559 |           </rx:page-index>
 | 
|---|
 | 560 |         </xsl:if>
 | 
|---|
 | 561 |       </xsl:when>
 | 
|---|
 | 562 |       <xsl:otherwise>
 | 
|---|
 | 563 |         <xsl:variable name="page-number-citations">
 | 
|---|
 | 564 |           <xsl:for-each select="$refs[not(see)]">
 | 
|---|
 | 565 |             <xsl:apply-templates select="." mode="reference">
 | 
|---|
 | 566 |               <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 567 |               <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 568 |               <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 569 |               <xsl:with-param name="position" select="position()"/>
 | 
|---|
 | 570 |             </xsl:apply-templates>
 | 
|---|
 | 571 |           </xsl:for-each>
 | 
|---|
 | 572 |         </xsl:variable>
 | 
|---|
 | 573 | 
 | 
|---|
 | 574 |         <xsl:choose>
 | 
|---|
 | 575 |           <xsl:when test="$passivetex.extensions != '0'">
 | 
|---|
 | 576 |             <fotex:sort xmlns:fotex="http://www.tug.org/fotex">
 | 
|---|
 | 577 |               <xsl:copy-of select="$page-number-citations"/>
 | 
|---|
 | 578 |             </fotex:sort>
 | 
|---|
 | 579 |           </xsl:when>
 | 
|---|
 | 580 |           <xsl:otherwise>
 | 
|---|
 | 581 |             <xsl:copy-of select="$page-number-citations"/>
 | 
|---|
 | 582 |           </xsl:otherwise>
 | 
|---|
 | 583 |         </xsl:choose>
 | 
|---|
 | 584 |       </xsl:otherwise>
 | 
|---|
 | 585 |     </xsl:choose>
 | 
|---|
 | 586 | 
 | 
|---|
 | 587 |     <xsl:if test="$refs/see">
 | 
|---|
 | 588 |       <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, see))[&scope;][1])]"
 | 
|---|
 | 589 |                            mode="index-see">
 | 
|---|
 | 590 |         <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 591 |         <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 592 |         <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 593 |         <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/>
 | 
|---|
 | 594 |       </xsl:apply-templates>
 | 
|---|
 | 595 |     </xsl:if>
 | 
|---|
 | 596 | 
 | 
|---|
 | 597 |   </fo:block>
 | 
|---|
 | 598 | 
 | 
|---|
 | 599 |   <xsl:if test="$refs/seealso">
 | 
|---|
 | 600 |     <fo:block>
 | 
|---|
 | 601 |       <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, seealso))[&scope;][1])]"
 | 
|---|
 | 602 |                            mode="index-seealso">
 | 
|---|
 | 603 |         <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 604 |         <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 605 |         <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 606 |         <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/>
 | 
|---|
 | 607 |       </xsl:apply-templates>
 | 
|---|
 | 608 |     </fo:block>
 | 
|---|
 | 609 |   </xsl:if>
 | 
|---|
 | 610 | </xsl:template>
 | 
|---|
 | 611 | 
 | 
|---|
 | 612 | <xsl:template match="indexterm" mode="reference">
 | 
|---|
 | 613 |   <xsl:param name="scope" select="."/>
 | 
|---|
 | 614 |   <xsl:param name="role" select="''"/>
 | 
|---|
 | 615 |   <xsl:param name="type" select="''"/>
 | 
|---|
 | 616 |   <xsl:param name="position" select="0"/>
 | 
|---|
 | 617 |   <xsl:param name="separator" select="''"/>
 | 
|---|
 | 618 | 
 | 
|---|
 | 619 |   <xsl:variable name="term.separator">
 | 
|---|
 | 620 |     <xsl:call-template name="index.separator">
 | 
|---|
 | 621 |       <xsl:with-param name="key" select="'index.term.separator'"/>
 | 
|---|
 | 622 |     </xsl:call-template>
 | 
|---|
 | 623 |   </xsl:variable>
 | 
|---|
 | 624 | 
 | 
|---|
 | 625 |   <xsl:variable name="range.separator">
 | 
|---|
 | 626 |     <xsl:call-template name="index.separator">
 | 
|---|
 | 627 |       <xsl:with-param name="key" select="'index.range.separator'"/>
 | 
|---|
 | 628 |     </xsl:call-template>
 | 
|---|
 | 629 |   </xsl:variable>
 | 
|---|
 | 630 | 
 | 
|---|
 | 631 |   <xsl:variable name="number.separator">
 | 
|---|
 | 632 |     <xsl:call-template name="index.separator">
 | 
|---|
 | 633 |       <xsl:with-param name="key" select="'index.number.separator'"/>
 | 
|---|
 | 634 |     </xsl:call-template>
 | 
|---|
 | 635 |   </xsl:variable>
 | 
|---|
 | 636 | 
 | 
|---|
 | 637 |   <xsl:choose>
 | 
|---|
 | 638 |     <xsl:when test="$separator != ''">
 | 
|---|
 | 639 |       <xsl:value-of select="$separator"/>
 | 
|---|
 | 640 |     </xsl:when>
 | 
|---|
 | 641 |     <xsl:when test="$position = 1">
 | 
|---|
 | 642 |       <xsl:value-of select="$term.separator"/>
 | 
|---|
 | 643 |     </xsl:when>
 | 
|---|
 | 644 |     <xsl:otherwise>
 | 
|---|
 | 645 |       <xsl:value-of select="$number.separator"/>
 | 
|---|
 | 646 |     </xsl:otherwise>
 | 
|---|
 | 647 |   </xsl:choose>
 | 
|---|
 | 648 | 
 | 
|---|
 | 649 |   <xsl:choose>
 | 
|---|
 | 650 |     <xsl:when test="@zone and string(@zone)">
 | 
|---|
 | 651 |       <xsl:call-template name="reference">
 | 
|---|
 | 652 |         <xsl:with-param name="zones" select="normalize-space(@zone)"/>
 | 
|---|
 | 653 |         <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 654 |         <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 655 |         <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 656 |       </xsl:call-template>
 | 
|---|
 | 657 |     </xsl:when>
 | 
|---|
 | 658 |     <xsl:when test="ancestor::*[contains(local-name(),'info') and not(starts-with(local-name(),'info'))]">
 | 
|---|
 | 659 |       <xsl:call-template name="info.reference">
 | 
|---|
 | 660 |         <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 661 |         <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 662 |         <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 663 |       </xsl:call-template>
 | 
|---|
 | 664 |     </xsl:when>
 | 
|---|
 | 665 |     <xsl:otherwise>
 | 
|---|
 | 666 |       <xsl:variable name="id">
 | 
|---|
 | 667 |         <xsl:call-template name="object.id"/>
 | 
|---|
 | 668 |       </xsl:variable>
 | 
|---|
 | 669 | 
 | 
|---|
 | 670 |       <fo:basic-link internal-destination="{$id}"
 | 
|---|
 | 671 |                      xsl:use-attribute-sets="index.page.number.properties">
 | 
|---|
 | 672 |         <fo:page-number-citation ref-id="{$id}"/>
 | 
|---|
 | 673 |       </fo:basic-link>
 | 
|---|
 | 674 | 
 | 
|---|
 | 675 |       <xsl:if test="key('endofrange', $id)[&scope;]">
 | 
|---|
 | 676 |         <xsl:apply-templates select="key('endofrange', $id)[&scope;][last()]"
 | 
|---|
 | 677 |                              mode="reference">
 | 
|---|
 | 678 |           <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 679 |           <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 680 |           <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 681 |           <xsl:with-param name="separator" select="$range.separator"/>
 | 
|---|
 | 682 |         </xsl:apply-templates>
 | 
|---|
 | 683 |       </xsl:if>
 | 
|---|
 | 684 |     </xsl:otherwise>
 | 
|---|
 | 685 |   </xsl:choose>
 | 
|---|
 | 686 | </xsl:template>
 | 
|---|
 | 687 | 
 | 
|---|
 | 688 | <xsl:template name="reference">
 | 
|---|
 | 689 |   <xsl:param name="scope" select="."/>
 | 
|---|
 | 690 |   <xsl:param name="role" select="''"/>
 | 
|---|
 | 691 |   <xsl:param name="type" select="''"/>
 | 
|---|
 | 692 |   <xsl:param name="zones"/>
 | 
|---|
 | 693 | 
 | 
|---|
 | 694 |   <xsl:variable name="number.separator">
 | 
|---|
 | 695 |     <xsl:call-template name="index.separator">
 | 
|---|
 | 696 |       <xsl:with-param name="key" select="'index.number.separator'"/>
 | 
|---|
 | 697 |     </xsl:call-template>
 | 
|---|
 | 698 |   </xsl:variable>
 | 
|---|
 | 699 | 
 | 
|---|
 | 700 |   <xsl:choose>
 | 
|---|
 | 701 |     <xsl:when test="contains($zones, ' ')">
 | 
|---|
 | 702 |       <xsl:variable name="zone" select="substring-before($zones, ' ')"/>
 | 
|---|
 | 703 |       <xsl:variable name="target" select="key('id', $zone)[&scope;]"/>
 | 
|---|
 | 704 | 
 | 
|---|
 | 705 |       <xsl:variable name="id">
 | 
|---|
 | 706 |         <xsl:call-template name="object.id">
 | 
|---|
 | 707 |            <xsl:with-param name="object" select="$target[1]"/>
 | 
|---|
 | 708 |         </xsl:call-template>
 | 
|---|
 | 709 |       </xsl:variable>
 | 
|---|
 | 710 | 
 | 
|---|
 | 711 |       <fo:basic-link internal-destination="{$id}"
 | 
|---|
 | 712 |                      xsl:use-attribute-sets="index.page.number.properties">
 | 
|---|
 | 713 |         <fo:page-number-citation ref-id="{$id}"/>
 | 
|---|
 | 714 |       </fo:basic-link>
 | 
|---|
 | 715 | 
 | 
|---|
 | 716 |       <xsl:if test="$passivetex.extensions = '0'">
 | 
|---|
 | 717 |         <xsl:copy-of select="$number.separator"/>
 | 
|---|
 | 718 |       </xsl:if>
 | 
|---|
 | 719 |       <xsl:call-template name="reference">
 | 
|---|
 | 720 |         <xsl:with-param name="zones" select="substring-after($zones, ' ')"/>
 | 
|---|
 | 721 |         <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 722 |         <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 723 |         <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 724 |       </xsl:call-template>
 | 
|---|
 | 725 |     </xsl:when>
 | 
|---|
 | 726 |     <xsl:otherwise>
 | 
|---|
 | 727 |       <xsl:variable name="zone" select="$zones"/>
 | 
|---|
 | 728 |       <xsl:variable name="target" select="key('id', $zone)[&scope;]"/>
 | 
|---|
 | 729 | 
 | 
|---|
 | 730 |       <xsl:variable name="id">
 | 
|---|
 | 731 |         <xsl:call-template name="object.id">
 | 
|---|
 | 732 |           <xsl:with-param name="object" select="$target[1]"/>
 | 
|---|
 | 733 |         </xsl:call-template>
 | 
|---|
 | 734 |       </xsl:variable>
 | 
|---|
 | 735 | 
 | 
|---|
 | 736 |       <fo:basic-link internal-destination="{$id}"
 | 
|---|
 | 737 |                      xsl:use-attribute-sets="index.page.number.properties">
 | 
|---|
 | 738 |         <fo:page-number-citation ref-id="{$id}"/>
 | 
|---|
 | 739 |       </fo:basic-link>
 | 
|---|
 | 740 |     </xsl:otherwise>
 | 
|---|
 | 741 |   </xsl:choose>
 | 
|---|
 | 742 | </xsl:template>
 | 
|---|
 | 743 | 
 | 
|---|
 | 744 | <xsl:template name="info.reference">
 | 
|---|
 | 745 |   <!-- This is not perfect. It doesn't treat indexterm inside info element as a range covering whole parent of info.
 | 
|---|
 | 746 |        It also not work when there is no ID generated for parent element. But it works in the most common cases. -->
 | 
|---|
 | 747 |   <xsl:param name="scope" select="."/>
 | 
|---|
 | 748 |   <xsl:param name="role" select="''"/>
 | 
|---|
 | 749 |   <xsl:param name="type" select="''"/>
 | 
|---|
 | 750 | 
 | 
|---|
 | 751 |   <xsl:variable name="target" select="(ancestor::appendix|ancestor::article|ancestor::bibliography|ancestor::book|
 | 
|---|
 | 752 |                                        ancestor::chapter|ancestor::glossary|ancestor::part|ancestor::preface|
 | 
|---|
 | 753 |                                        ancestor::refentry|ancestor::reference|ancestor::refsect1|ancestor::refsect2|
 | 
|---|
 | 754 |                                        ancestor::refsect3|ancestor::refsection|ancestor::refsynopsisdiv|
 | 
|---|
 | 755 |                                        ancestor::sect1|ancestor::sect2|ancestor::sect3|ancestor::sect4|ancestor::sect5|
 | 
|---|
 | 756 |                                        ancestor::section|ancestor::setindex|ancestor::set|ancestor::sidebar)[&scope;]"/>
 | 
|---|
 | 757 |   
 | 
|---|
 | 758 |   <xsl:variable name="id">
 | 
|---|
 | 759 |     <xsl:call-template name="object.id">
 | 
|---|
 | 760 |       <xsl:with-param name="object" select="$target[1]"/>
 | 
|---|
 | 761 |     </xsl:call-template>
 | 
|---|
 | 762 |   </xsl:variable>
 | 
|---|
 | 763 |   
 | 
|---|
 | 764 |   <fo:basic-link internal-destination="{$id}"
 | 
|---|
 | 765 |                  xsl:use-attribute-sets="index.page.number.properties">
 | 
|---|
 | 766 |     <fo:page-number-citation ref-id="{$id}"/>
 | 
|---|
 | 767 |   </fo:basic-link>
 | 
|---|
 | 768 | </xsl:template>
 | 
|---|
 | 769 | 
 | 
|---|
 | 770 | <xsl:template match="indexterm" mode="index-see">
 | 
|---|
 | 771 |    <xsl:param name="scope" select="."/>
 | 
|---|
 | 772 |   <xsl:param name="role" select="''"/>
 | 
|---|
 | 773 |   <xsl:param name="type" select="''"/>
 | 
|---|
 | 774 | 
 | 
|---|
 | 775 |    <fo:inline>
 | 
|---|
 | 776 |      <xsl:text> (</xsl:text>
 | 
|---|
 | 777 |      <xsl:call-template name="gentext">
 | 
|---|
 | 778 |        <xsl:with-param name="key" select="'see'"/>
 | 
|---|
 | 779 |      </xsl:call-template>
 | 
|---|
 | 780 |      <xsl:text> </xsl:text>
 | 
|---|
 | 781 |      <xsl:value-of select="see"/>
 | 
|---|
 | 782 |      <xsl:text>)</xsl:text>
 | 
|---|
 | 783 |    </fo:inline>
 | 
|---|
 | 784 | </xsl:template>
 | 
|---|
 | 785 | 
 | 
|---|
 | 786 | <xsl:template match="indexterm" mode="index-seealso">
 | 
|---|
 | 787 |    <xsl:param name="scope" select="."/>
 | 
|---|
 | 788 |   <xsl:param name="role" select="''"/>
 | 
|---|
 | 789 |   <xsl:param name="type" select="''"/>
 | 
|---|
 | 790 | 
 | 
|---|
 | 791 |   <xsl:for-each select="seealso">
 | 
|---|
 | 792 |     <xsl:sort select="translate(., &lowercase;, &uppercase;)"/>
 | 
|---|
 | 793 |     <fo:block>
 | 
|---|
 | 794 |       <xsl:text>(</xsl:text>
 | 
|---|
 | 795 |       <xsl:call-template name="gentext">
 | 
|---|
 | 796 |         <xsl:with-param name="key" select="'seealso'"/>
 | 
|---|
 | 797 |       </xsl:call-template>
 | 
|---|
 | 798 |       <xsl:text> </xsl:text>
 | 
|---|
 | 799 |       <xsl:value-of select="."/>
 | 
|---|
 | 800 |       <xsl:text>)</xsl:text>
 | 
|---|
 | 801 |     </fo:block>
 | 
|---|
 | 802 |   </xsl:for-each>
 | 
|---|
 | 803 | 
 | 
|---|
 | 804 | </xsl:template>
 | 
|---|
 | 805 | 
 | 
|---|
 | 806 | <!-- ====================================================================== -->
 | 
|---|
 | 807 | 
 | 
|---|
 | 808 | <xsl:template name="generate-index-markup">
 | 
|---|
 | 809 |   <xsl:param name="scope" select="(ancestor::book|/)[last()]"/>
 | 
|---|
 | 810 |   <xsl:param name="role" select="@role"/>
 | 
|---|
 | 811 |   <xsl:param name="type" select="@type"/>
 | 
|---|
 | 812 | 
 | 
|---|
 | 813 |   <xsl:variable name="terms" select="$scope//indexterm[count(.|key('letter',
 | 
|---|
 | 814 |                                      translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;))[&scope;][1]) = 1]"/>
 | 
|---|
 | 815 |   <xsl:variable name="alphabetical"
 | 
|---|
 | 816 |                 select="$terms[contains(concat(&lowercase;, &uppercase;),
 | 
|---|
 | 817 |                                         substring(&primary;, 1, 1))]"/>
 | 
|---|
 | 818 |   <xsl:variable name="others" select="$terms[not(contains(concat(&lowercase;,
 | 
|---|
 | 819 |                                                  &uppercase;),
 | 
|---|
 | 820 |                                              substring(&primary;, 1, 1)))]"/>
 | 
|---|
 | 821 | 
 | 
|---|
 | 822 |   <xsl:text><index>
</xsl:text>
 | 
|---|
 | 823 |   <xsl:if test="$others">
 | 
|---|
 | 824 |     <xsl:text>
<indexdiv>
</xsl:text>
 | 
|---|
 | 825 |     <xsl:text><title></xsl:text>
 | 
|---|
 | 826 |     <xsl:call-template name="gentext">
 | 
|---|
 | 827 |       <xsl:with-param name="key" select="'index symbols'"/>
 | 
|---|
 | 828 |     </xsl:call-template>
 | 
|---|
 | 829 |     <xsl:text></title>
</xsl:text>
 | 
|---|
 | 830 |     <xsl:apply-templates select="$others[count(.|key('primary',
 | 
|---|
 | 831 |                                  &primary;)[&scope;][1]) = 1]"
 | 
|---|
 | 832 |                          mode="index-symbol-div-markup">
 | 
|---|
 | 833 |       <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 834 |       <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 835 |       <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 836 |       <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/>
 | 
|---|
 | 837 |     </xsl:apply-templates>
 | 
|---|
 | 838 |     <xsl:text></indexdiv>
</xsl:text>
 | 
|---|
 | 839 |   </xsl:if>
 | 
|---|
 | 840 | 
 | 
|---|
 | 841 |   <xsl:apply-templates select="$alphabetical[count(.|key('letter',
 | 
|---|
 | 842 |                                translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;))[&scope;][1]) = 1]"
 | 
|---|
 | 843 |                        mode="index-div-markup">
 | 
|---|
 | 844 |       <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 845 |       <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 846 |       <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 847 |       <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/>
 | 
|---|
 | 848 |   </xsl:apply-templates>
 | 
|---|
 | 849 |   <xsl:text></index>
</xsl:text>
 | 
|---|
 | 850 | </xsl:template>
 | 
|---|
 | 851 | 
 | 
|---|
 | 852 | <xsl:template match="*" mode="index-markup">
 | 
|---|
 | 853 |   <xsl:param name="scope" select="."/>
 | 
|---|
 | 854 |   <xsl:param name="role" select="''"/>
 | 
|---|
 | 855 |   <xsl:param name="type" select="''"/>
 | 
|---|
 | 856 | 
 | 
|---|
 | 857 |   <xsl:text><</xsl:text>
 | 
|---|
 | 858 |   <xsl:value-of select="local-name(.)"/>
 | 
|---|
 | 859 |   <xsl:text>>
</xsl:text>
 | 
|---|
 | 860 |   <xsl:apply-templates mode="index-markup">
 | 
|---|
 | 861 |     <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 862 |     <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 863 |     <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 864 |   </xsl:apply-templates>
 | 
|---|
 | 865 | </xsl:template>
 | 
|---|
 | 866 | 
 | 
|---|
 | 867 | <xsl:template match="indexterm" mode="index-div-markup">
 | 
|---|
 | 868 |   <xsl:param name="scope" select="."/>
 | 
|---|
 | 869 |   <xsl:param name="role" select="''"/>
 | 
|---|
 | 870 |   <xsl:param name="type" select="''"/>
 | 
|---|
 | 871 |   <xsl:variable name="key" select="translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;)"/>
 | 
|---|
 | 872 |   <xsl:text>
<indexdiv>
</xsl:text>
 | 
|---|
 | 873 |   <xsl:text><title></xsl:text>
 | 
|---|
 | 874 |   <xsl:value-of select="translate($key, &lowercase;, &uppercase;)"/>
 | 
|---|
 | 875 |   <xsl:text></title>
</xsl:text>
 | 
|---|
 | 876 | 
 | 
|---|
 | 877 |   <xsl:apply-templates select="key('letter', $key)[&scope;][count(.|key('primary', &primary;)[&scope;][1]) = 1]"
 | 
|---|
 | 878 |                        mode="index-primary-markup">
 | 
|---|
 | 879 |     <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 880 |     <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 881 |     <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 882 |     <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/>
 | 
|---|
 | 883 |   </xsl:apply-templates>
 | 
|---|
 | 884 |   <xsl:text></indexdiv>
</xsl:text>
 | 
|---|
 | 885 | </xsl:template>
 | 
|---|
 | 886 | 
 | 
|---|
 | 887 | <xsl:template match="indexterm" mode="index-symbol-div-markup">
 | 
|---|
 | 888 |   <xsl:param name="scope" select="."/>
 | 
|---|
 | 889 |   <xsl:param name="role" select="''"/>
 | 
|---|
 | 890 |   <xsl:param name="type" select="''"/>
 | 
|---|
 | 891 |   <xsl:variable name="key" select="translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;)"/>
 | 
|---|
 | 892 | 
 | 
|---|
 | 893 |   <xsl:apply-templates select="key('letter', $key)[&scope;][count(.|key('primary', &primary;)[&scope;][1]) = 1]"
 | 
|---|
 | 894 |                        mode="index-primary-markup">
 | 
|---|
 | 895 |     <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 896 |     <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 897 |     <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 898 |     <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/>
 | 
|---|
 | 899 |   </xsl:apply-templates>
 | 
|---|
 | 900 | </xsl:template>
 | 
|---|
 | 901 | 
 | 
|---|
 | 902 | <xsl:template match="indexterm" mode="index-primary-markup">
 | 
|---|
 | 903 |   <xsl:param name="scope" select="."/>
 | 
|---|
 | 904 |   <xsl:param name="role" select="''"/>
 | 
|---|
 | 905 |   <xsl:param name="type" select="''"/>
 | 
|---|
 | 906 |   <xsl:variable name="key" select="&primary;"/>
 | 
|---|
 | 907 |   <xsl:variable name="refs" select="key('primary', $key)[&scope;]"/>
 | 
|---|
 | 908 |   <xsl:variable name="pages" select="$refs[not(see) and not(seealso)]"/>
 | 
|---|
 | 909 | 
 | 
|---|
 | 910 |   <xsl:text>
<indexentry>
</xsl:text>
 | 
|---|
 | 911 |   <xsl:text><primaryie></xsl:text>
 | 
|---|
 | 912 |   <xsl:text><phrase></xsl:text>
 | 
|---|
 | 913 |   <xsl:call-template name="escape-text">
 | 
|---|
 | 914 |     <xsl:with-param name="text" select="string(primary)"/>
 | 
|---|
 | 915 |   </xsl:call-template>
 | 
|---|
 | 916 |   <xsl:text></phrase></xsl:text>
 | 
|---|
 | 917 |   <xsl:if test="$pages">,</xsl:if>
 | 
|---|
 | 918 |   <xsl:text>
</xsl:text>
 | 
|---|
 | 919 | 
 | 
|---|
 | 920 |   <xsl:for-each select="$pages">
 | 
|---|
 | 921 |     <xsl:apply-templates select="." mode="reference-markup">
 | 
|---|
 | 922 |       <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 923 |       <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 924 |       <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 925 |     </xsl:apply-templates>
 | 
|---|
 | 926 |   </xsl:for-each>
 | 
|---|
 | 927 | 
 | 
|---|
 | 928 |   <xsl:text></primaryie>
</xsl:text>
 | 
|---|
 | 929 | 
 | 
|---|
 | 930 |   <xsl:if test="$refs/secondary or $refs[not(secondary)]/*[self::see or self::seealso]">
 | 
|---|
 | 931 |     <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &sep;, &sep;, see))[&scope;][1])]"
 | 
|---|
 | 932 |                          mode="index-see-markup">
 | 
|---|
 | 933 |       <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 934 |       <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 935 |       <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 936 |       <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/>
 | 
|---|
 | 937 |     </xsl:apply-templates>
 | 
|---|
 | 938 | 
 | 
|---|
 | 939 |     <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &sep;, &sep;, seealso))[&scope;][1])]"
 | 
|---|
 | 940 |                          mode="index-seealso-markup">
 | 
|---|
 | 941 |       <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 942 |       <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 943 |       <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 944 |       <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/>
 | 
|---|
 | 945 |     </xsl:apply-templates>
 | 
|---|
 | 946 | 
 | 
|---|
 | 947 |     <xsl:apply-templates select="$refs[secondary and count(.|key('secondary', concat($key, &sep;, &secondary;))[&scope;][1]) = 1]" 
 | 
|---|
 | 948 |                          mode="index-secondary-markup">
 | 
|---|
 | 949 |       <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 950 |       <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 951 |       <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 952 |       <xsl:sort select="translate(&secondary;, &lowercase;, &uppercase;)"/>
 | 
|---|
 | 953 |     </xsl:apply-templates>
 | 
|---|
 | 954 |   </xsl:if>
 | 
|---|
 | 955 |   <xsl:text></indexentry>
</xsl:text>
 | 
|---|
 | 956 | </xsl:template>
 | 
|---|
 | 957 | 
 | 
|---|
 | 958 | <xsl:template match="indexterm" mode="index-secondary-markup">
 | 
|---|
 | 959 |   <xsl:param name="scope" select="."/>
 | 
|---|
 | 960 |   <xsl:param name="role" select="''"/>
 | 
|---|
 | 961 |   <xsl:param name="type" select="''"/>
 | 
|---|
 | 962 |   <xsl:variable name="key" select="concat(&primary;, &sep;, &secondary;)"/>
 | 
|---|
 | 963 |   <xsl:variable name="refs" select="key('secondary', $key)[&scope;]"/>
 | 
|---|
 | 964 |   <xsl:variable name="pages" select="$refs[not(see) and not(seealso)]"/>
 | 
|---|
 | 965 | 
 | 
|---|
 | 966 |   <xsl:text><secondaryie></xsl:text>
 | 
|---|
 | 967 |   <xsl:text><phrase></xsl:text>
 | 
|---|
 | 968 |   <xsl:call-template name="escape-text">
 | 
|---|
 | 969 |     <xsl:with-param name="text" select="string(secondary)"/>
 | 
|---|
 | 970 |   </xsl:call-template>
 | 
|---|
 | 971 |   <xsl:text></phrase></xsl:text>
 | 
|---|
 | 972 |   <xsl:if test="$pages">,</xsl:if>
 | 
|---|
 | 973 |   <xsl:text>
</xsl:text>
 | 
|---|
 | 974 | 
 | 
|---|
 | 975 |   <xsl:for-each select="$pages">
 | 
|---|
 | 976 |     <xsl:apply-templates select="." mode="reference-markup">
 | 
|---|
 | 977 |       <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 978 |       <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 979 |       <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 980 |     </xsl:apply-templates>
 | 
|---|
 | 981 |   </xsl:for-each>
 | 
|---|
 | 982 | 
 | 
|---|
 | 983 |   <xsl:text></secondaryie>
</xsl:text>
 | 
|---|
 | 984 | 
 | 
|---|
 | 985 |   <xsl:if test="$refs/tertiary or $refs[not(tertiary)]/*[self::see or self::seealso]">
 | 
|---|
 | 986 |     <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &secondary;, &sep;, &sep;, see))[&scope;][1])]"
 | 
|---|
 | 987 |                          mode="index-see-markup">
 | 
|---|
 | 988 |       <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 989 |       <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 990 |       <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 991 |       <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/>
 | 
|---|
 | 992 |     </xsl:apply-templates>
 | 
|---|
 | 993 |     <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &secondary;, &sep;, &sep;, seealso))[&scope;][1])]"
 | 
|---|
 | 994 |                          mode="index-seealso-markup">
 | 
|---|
 | 995 |       <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 996 |       <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 997 |       <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 998 |       <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/>
 | 
|---|
 | 999 |     </xsl:apply-templates>
 | 
|---|
 | 1000 |     <xsl:apply-templates select="$refs[tertiary and count(.|key('tertiary', concat($key, &sep;, &tertiary;))[&scope;][1]) = 1]" 
 | 
|---|
 | 1001 |                          mode="index-tertiary-markup">
 | 
|---|
 | 1002 |       <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 1003 |       <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 1004 |       <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 1005 |       <xsl:sort select="translate(&tertiary;, &lowercase;, &uppercase;)"/>
 | 
|---|
 | 1006 |     </xsl:apply-templates>
 | 
|---|
 | 1007 |   </xsl:if>
 | 
|---|
 | 1008 | </xsl:template>
 | 
|---|
 | 1009 | 
 | 
|---|
 | 1010 | <xsl:template match="indexterm" mode="index-tertiary-markup">
 | 
|---|
 | 1011 |   <xsl:param name="scope" select="."/>
 | 
|---|
 | 1012 |   <xsl:param name="role" select="''"/>
 | 
|---|
 | 1013 |   <xsl:param name="type" select="''"/>
 | 
|---|
 | 1014 |   <xsl:variable name="key" select="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;)"/>
 | 
|---|
 | 1015 |   <xsl:variable name="refs" select="key('tertiary', $key)[&scope;]"/>
 | 
|---|
 | 1016 |   <xsl:variable name="pages" select="$refs[not(see) and not(seealso)]"/>
 | 
|---|
 | 1017 | 
 | 
|---|
 | 1018 |   <xsl:text><tertiaryie></xsl:text>
 | 
|---|
 | 1019 |   <xsl:text><phrase></xsl:text>
 | 
|---|
 | 1020 |   <xsl:call-template name="escape-text">
 | 
|---|
 | 1021 |     <xsl:with-param name="text" select="string(tertiary)"/>
 | 
|---|
 | 1022 |   </xsl:call-template>
 | 
|---|
 | 1023 |   <xsl:text></phrase></xsl:text>
 | 
|---|
 | 1024 |   <xsl:if test="$pages">,</xsl:if>
 | 
|---|
 | 1025 |   <xsl:text>
</xsl:text>
 | 
|---|
 | 1026 | 
 | 
|---|
 | 1027 |   <xsl:for-each select="$pages">
 | 
|---|
 | 1028 |     <xsl:apply-templates select="." mode="reference-markup">
 | 
|---|
 | 1029 |       <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 1030 |       <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 1031 |       <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 1032 |     </xsl:apply-templates>
 | 
|---|
 | 1033 |   </xsl:for-each>
 | 
|---|
 | 1034 | 
 | 
|---|
 | 1035 |   <xsl:text></tertiaryie>
</xsl:text>
 | 
|---|
 | 1036 | 
 | 
|---|
 | 1037 |   <xsl:variable name="see" select="$refs/see | $refs/seealso"/>
 | 
|---|
 | 1038 |   <xsl:if test="$see">
 | 
|---|
 | 1039 |     <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, see))[&scope;][1])]"
 | 
|---|
 | 1040 |                          mode="index-see-markup">
 | 
|---|
 | 1041 |       <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 1042 |       <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 1043 |       <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 1044 |       <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/>
 | 
|---|
 | 1045 |     </xsl:apply-templates>
 | 
|---|
 | 1046 |     <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, seealso))[&scope;][1])]"
 | 
|---|
 | 1047 |                          mode="index-seealso-markup">
 | 
|---|
 | 1048 |       <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 1049 |       <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 1050 |       <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 1051 |       <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/>
 | 
|---|
 | 1052 |     </xsl:apply-templates>
 | 
|---|
 | 1053 |   </xsl:if>
 | 
|---|
 | 1054 | </xsl:template>
 | 
|---|
 | 1055 | 
 | 
|---|
 | 1056 | <xsl:template match="indexterm" mode="reference-markup">
 | 
|---|
 | 1057 |   <xsl:param name="scope" select="."/>
 | 
|---|
 | 1058 |   <xsl:param name="role" select="''"/>
 | 
|---|
 | 1059 |   <xsl:param name="type" select="''"/>
 | 
|---|
 | 1060 | 
 | 
|---|
 | 1061 |   <xsl:choose>
 | 
|---|
 | 1062 |     <xsl:when test="@zone and string(@zone)">
 | 
|---|
 | 1063 |       <xsl:call-template name="reference-markup">
 | 
|---|
 | 1064 |         <xsl:with-param name="zones" select="normalize-space(@zone)"/>
 | 
|---|
 | 1065 |         <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 1066 |         <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 1067 |         <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 1068 |       </xsl:call-template>
 | 
|---|
 | 1069 |     </xsl:when>
 | 
|---|
 | 1070 |     <xsl:otherwise>
 | 
|---|
 | 1071 |       <xsl:variable name="id">
 | 
|---|
 | 1072 |         <xsl:call-template name="object.id"/>
 | 
|---|
 | 1073 |       </xsl:variable>
 | 
|---|
 | 1074 | 
 | 
|---|
 | 1075 | 
 | 
|---|
 | 1076 |       <xsl:choose>
 | 
|---|
 | 1077 |         <xsl:when test="@startref and @class='endofrange'">
 | 
|---|
 | 1078 |           <xsl:text><phrase role="pageno"></xsl:text>
 | 
|---|
 | 1079 |           <xsl:text><link linkend="</xsl:text>
 | 
|---|
 | 1080 |           <xsl:value-of select="@startref"/>
 | 
|---|
 | 1081 |           <xsl:text>"></xsl:text>
 | 
|---|
 | 1082 |           <fo:basic-link internal-destination="{@startref}"
 | 
|---|
 | 1083 |                      xsl:use-attribute-sets="index.page.number.properties">
 | 
|---|
 | 1084 |             <fo:page-number-citation ref-id="{@startref}"/>
 | 
|---|
 | 1085 |             <xsl:text>-</xsl:text>
 | 
|---|
 | 1086 |             <fo:page-number-citation ref-id="{$id}"/>
 | 
|---|
 | 1087 |           </fo:basic-link>
 | 
|---|
 | 1088 |           <xsl:text></link></xsl:text>
 | 
|---|
 | 1089 |           <xsl:text></phrase>
</xsl:text>
 | 
|---|
 | 1090 |         </xsl:when>
 | 
|---|
 | 1091 |         <xsl:otherwise>
 | 
|---|
 | 1092 |           <xsl:text><phrase role="pageno"></xsl:text>
 | 
|---|
 | 1093 |           <xsl:if test="$id">
 | 
|---|
 | 1094 |             <xsl:text><link linkend="</xsl:text>
 | 
|---|
 | 1095 |             <xsl:value-of select="$id"/>
 | 
|---|
 | 1096 |             <xsl:text>"></xsl:text>
 | 
|---|
 | 1097 |           </xsl:if>
 | 
|---|
 | 1098 |           <fo:basic-link internal-destination="{$id}"
 | 
|---|
 | 1099 |                      xsl:use-attribute-sets="index.page.number.properties">
 | 
|---|
 | 1100 |             <fo:page-number-citation ref-id="{$id}"/>
 | 
|---|
 | 1101 |           </fo:basic-link>
 | 
|---|
 | 1102 |           <xsl:if test="$id">
 | 
|---|
 | 1103 |             <xsl:text></link></xsl:text>
 | 
|---|
 | 1104 |           </xsl:if>
 | 
|---|
 | 1105 |           <xsl:text></phrase>
</xsl:text>
 | 
|---|
 | 1106 |         </xsl:otherwise>
 | 
|---|
 | 1107 |       </xsl:choose>
 | 
|---|
 | 1108 |     </xsl:otherwise>
 | 
|---|
 | 1109 |   </xsl:choose>
 | 
|---|
 | 1110 | </xsl:template>
 | 
|---|
 | 1111 | 
 | 
|---|
 | 1112 | <xsl:template name="reference-markup">
 | 
|---|
 | 1113 |   <xsl:param name="scope" select="."/>
 | 
|---|
 | 1114 |   <xsl:param name="role" select="''"/>
 | 
|---|
 | 1115 |   <xsl:param name="type" select="''"/>
 | 
|---|
 | 1116 |   <xsl:param name="zones"/>
 | 
|---|
 | 1117 |   <xsl:choose>
 | 
|---|
 | 1118 |     <xsl:when test="contains($zones, ' ')">
 | 
|---|
 | 1119 |       <xsl:variable name="zone" select="substring-before($zones, ' ')"/>
 | 
|---|
 | 1120 |       <xsl:variable name="target" select="key('id', $zone)[&scope;]"/>
 | 
|---|
 | 1121 | 
 | 
|---|
 | 1122 |       <xsl:variable name="id">
 | 
|---|
 | 1123 |         <xsl:call-template name="object.id">
 | 
|---|
 | 1124 |           <xsl:with-param name="object" select="$target[1]"/>
 | 
|---|
 | 1125 |         </xsl:call-template>
 | 
|---|
 | 1126 |       </xsl:variable>
 | 
|---|
 | 1127 | 
 | 
|---|
 | 1128 |       <xsl:text><phrase fole="pageno"></xsl:text>
 | 
|---|
 | 1129 |       <xsl:if test="$target[1]/@id or $target[1]/@xml:id">
 | 
|---|
 | 1130 |         <xsl:text><link linkend="</xsl:text>
 | 
|---|
 | 1131 |         <xsl:value-of select="$id"/>
 | 
|---|
 | 1132 |         <xsl:text>"></xsl:text>
 | 
|---|
 | 1133 |       </xsl:if>
 | 
|---|
 | 1134 |       <fo:basic-link internal-destination="{$id}"
 | 
|---|
 | 1135 |                      xsl:use-attribute-sets="index.page.number.properties">
 | 
|---|
 | 1136 |         <fo:page-number-citation ref-id="{$id}"/>
 | 
|---|
 | 1137 |       </fo:basic-link>
 | 
|---|
 | 1138 |       <xsl:if test="$target[1]/@id or $target[1]/@xml:id">
 | 
|---|
 | 1139 |         <xsl:text></link></xsl:text>
 | 
|---|
 | 1140 |       </xsl:if>
 | 
|---|
 | 1141 |       <xsl:text></phrase>
</xsl:text>
 | 
|---|
 | 1142 | 
 | 
|---|
 | 1143 |       <xsl:call-template name="reference">
 | 
|---|
 | 1144 |         <xsl:with-param name="zones" select="substring-after($zones, ' ')"/>
 | 
|---|
 | 1145 |         <xsl:with-param name="scope" select="$scope"/>
 | 
|---|
 | 1146 |         <xsl:with-param name="role" select="$role"/>
 | 
|---|
 | 1147 |         <xsl:with-param name="type" select="$type"/>
 | 
|---|
 | 1148 |       </xsl:call-template>
 | 
|---|
 | 1149 |     </xsl:when>
 | 
|---|
 | 1150 |     <xsl:otherwise>
 | 
|---|
 | 1151 |       <xsl:variable name="zone" select="$zones"/>
 | 
|---|
 | 1152 |       <xsl:variable name="target" select="key('id', $zone)[&scope;]"/>
 | 
|---|
 | 1153 | 
 | 
|---|
 | 1154 |       <xsl:variable name="id">
 | 
|---|
 | 1155 |         <xsl:call-template name="object.id">
 | 
|---|
 | 1156 |           <xsl:with-param name="object" select="$target[1]"/>
 | 
|---|
 | 1157 |         </xsl:call-template>
 | 
|---|
 | 1158 |       </xsl:variable>
 | 
|---|
 | 1159 | 
 | 
|---|
 | 1160 |       <xsl:text><phrase role="pageno"></xsl:text>
 | 
|---|
 | 1161 |       <xsl:if test="$target[1]/@id or target[1]/@xml:id">
 | 
|---|
 | 1162 |         <xsl:text><link linkend="</xsl:text>
 | 
|---|
 | 1163 |         <xsl:value-of select="$id"/>
 | 
|---|
 | 1164 |         <xsl:text>"></xsl:text>
 | 
|---|
 | 1165 |       </xsl:if>
 | 
|---|
 | 1166 |       <fo:basic-link internal-destination="{$id}"
 | 
|---|
 | 1167 |                      xsl:use-attribute-sets="index.page.number.properties">
 | 
|---|
 | 1168 |         <fo:page-number-citation ref-id="{$id}"/>
 | 
|---|
 | 1169 |       </fo:basic-link>
 | 
|---|
 | 1170 |       <xsl:if test="$target[1]/@id or target[1]/@xml:id">
 | 
|---|
 | 1171 |         <xsl:text></link></xsl:text>
 | 
|---|
 | 1172 |       </xsl:if>
 | 
|---|
 | 1173 |       <xsl:text></phrase>
</xsl:text>
 | 
|---|
 | 1174 |     </xsl:otherwise>
 | 
|---|
 | 1175 |   </xsl:choose>
 | 
|---|
 | 1176 | </xsl:template>
 | 
|---|
 | 1177 | 
 | 
|---|
 | 1178 | <xsl:template match="indexterm" mode="index-see-markup">
 | 
|---|
 | 1179 |   <xsl:param name="scope" select="."/>
 | 
|---|
 | 1180 |   <xsl:param name="role" select="''"/>
 | 
|---|
 | 1181 |   <xsl:param name="type" select="''"/>
 | 
|---|
 | 1182 |   <fo:block>
 | 
|---|
 | 1183 |     <xsl:text><seeie></xsl:text>
 | 
|---|
 | 1184 |     <xsl:text><phrase></xsl:text>
 | 
|---|
 | 1185 |     <xsl:call-template name="escape-text">
 | 
|---|
 | 1186 |       <xsl:with-param name="text" select="string(see)"/>
 | 
|---|
 | 1187 |     </xsl:call-template>
 | 
|---|
 | 1188 |     <xsl:text></phrase></xsl:text>
 | 
|---|
 | 1189 |     <xsl:text></seeie>
</xsl:text>
 | 
|---|
 | 1190 |   </fo:block>
 | 
|---|
 | 1191 | </xsl:template>
 | 
|---|
 | 1192 | 
 | 
|---|
 | 1193 | <xsl:template match="indexterm" mode="index-seealso-markup">
 | 
|---|
 | 1194 |   <xsl:param name="scope" select="."/>
 | 
|---|
 | 1195 |   <xsl:param name="role" select="''"/>
 | 
|---|
 | 1196 |   <xsl:param name="type" select="''"/>
 | 
|---|
 | 1197 |   <fo:block>
 | 
|---|
 | 1198 |     <xsl:text><seealsoie></xsl:text>
 | 
|---|
 | 1199 |     <xsl:text><phrase></xsl:text>
 | 
|---|
 | 1200 |     <xsl:call-template name="escape-text">
 | 
|---|
 | 1201 |       <xsl:with-param name="text" select="string(seealso)"/>
 | 
|---|
 | 1202 |     </xsl:call-template>
 | 
|---|
 | 1203 |     <xsl:text></phrase></xsl:text>
 | 
|---|
 | 1204 |     <xsl:text></seealsoie>
</xsl:text>
 | 
|---|
 | 1205 |   </fo:block>
 | 
|---|
 | 1206 | </xsl:template>
 | 
|---|
 | 1207 | 
 | 
|---|
 | 1208 | <xsl:template name="escape-text">
 | 
|---|
 | 1209 |   <xsl:param name="text" select="''"/>
 | 
|---|
 | 1210 | 
 | 
|---|
 | 1211 |   <xsl:variable name="ltpos" select="substring-before($text, '<')"/>
 | 
|---|
 | 1212 |   <xsl:variable name="amppos" select="substring-before($text, '&')"/>
 | 
|---|
 | 1213 | 
 | 
|---|
 | 1214 |   <xsl:choose>
 | 
|---|
 | 1215 |     <xsl:when test="contains($text,'<') and contains($text, '&')
 | 
|---|
 | 1216 |                     and string-length($ltpos) < string-length($amppos)">
 | 
|---|
 | 1217 |       <xsl:value-of select="$ltpos"/>
 | 
|---|
 | 1218 |       <xsl:text>&lt;</xsl:text>
 | 
|---|
 | 1219 |       <xsl:call-template name="escape-text">
 | 
|---|
 | 1220 |         <xsl:with-param name="text" select="substring-after($text, '<')"/>
 | 
|---|
 | 1221 |       </xsl:call-template>
 | 
|---|
 | 1222 |     </xsl:when>
 | 
|---|
 | 1223 | 
 | 
|---|
 | 1224 |     <xsl:when test="contains($text,'<') and contains($text, '&')
 | 
|---|
 | 1225 |                     and string-length($amppos) < string-length($ltpos)">
 | 
|---|
 | 1226 |       <xsl:value-of select="$amppos"/>
 | 
|---|
 | 1227 |       <xsl:text>&amp;</xsl:text>
 | 
|---|
 | 1228 |       <xsl:call-template name="escape-text">
 | 
|---|
 | 1229 |         <xsl:with-param name="text" select="substring-after($text, '&')"/>
 | 
|---|
 | 1230 |       </xsl:call-template>
 | 
|---|
 | 1231 |     </xsl:when>
 | 
|---|
 | 1232 | 
 | 
|---|
 | 1233 |     <xsl:when test="contains($text, '<')">
 | 
|---|
 | 1234 |       <xsl:value-of select="$ltpos"/>
 | 
|---|
 | 1235 |       <xsl:text>&lt;</xsl:text>
 | 
|---|
 | 1236 |       <xsl:call-template name="escape-text">
 | 
|---|
 | 1237 |         <xsl:with-param name="text" select="substring-after($text, '<')"/>
 | 
|---|
 | 1238 |       </xsl:call-template>
 | 
|---|
 | 1239 |     </xsl:when>
 | 
|---|
 | 1240 | 
 | 
|---|
 | 1241 |     <xsl:when test="contains($text, '&')">
 | 
|---|
 | 1242 |       <xsl:value-of select="$amppos"/>
 | 
|---|
 | 1243 |       <xsl:text>&amp;</xsl:text>
 | 
|---|
 | 1244 |       <xsl:call-template name="escape-text">
 | 
|---|
 | 1245 |         <xsl:with-param name="text" select="substring-after($text, '&')"/>
 | 
|---|
 | 1246 |       </xsl:call-template>
 | 
|---|
 | 1247 |     </xsl:when>
 | 
|---|
 | 1248 | 
 | 
|---|
 | 1249 |     <xsl:otherwise>
 | 
|---|
 | 1250 |       <xsl:value-of select="$text"/>
 | 
|---|
 | 1251 |     </xsl:otherwise>
 | 
|---|
 | 1252 |   </xsl:choose>
 | 
|---|
 | 1253 | </xsl:template>
 | 
|---|
 | 1254 | 
 | 
|---|
 | 1255 | <xsl:template name="index.separator">
 | 
|---|
 | 1256 |   <xsl:param name="key" select="''"/>
 | 
|---|
 | 1257 |   <xsl:param name="lang">
 | 
|---|
 | 1258 |     <xsl:call-template name="l10n.language"/>
 | 
|---|
 | 1259 |   </xsl:param>
 | 
|---|
 | 1260 | 
 | 
|---|
 | 1261 |   <xsl:choose>
 | 
|---|
 | 1262 |     <xsl:when test="$key = 'index.term.separator'">
 | 
|---|
 | 1263 |       <xsl:choose>
 | 
|---|
 | 1264 |         <!-- Use the override if not blank -->
 | 
|---|
 | 1265 |         <xsl:when test="$index.term.separator != ''">
 | 
|---|
 | 1266 |           <xsl:copy-of select="$index.term.separator"/>
 | 
|---|
 | 1267 |         </xsl:when>
 | 
|---|
 | 1268 |         <xsl:otherwise>
 | 
|---|
 | 1269 |           <xsl:call-template name="gentext.template">
 | 
|---|
 | 1270 |             <xsl:with-param name="lang" select="$lang"/>
 | 
|---|
 | 1271 |             <xsl:with-param name="context">index</xsl:with-param>
 | 
|---|
 | 1272 |             <xsl:with-param name="name">term-separator</xsl:with-param>
 | 
|---|
 | 1273 |           </xsl:call-template>
 | 
|---|
 | 1274 |         </xsl:otherwise>
 | 
|---|
 | 1275 |       </xsl:choose>
 | 
|---|
 | 1276 |     </xsl:when>
 | 
|---|
 | 1277 |     <xsl:when test="$key = 'index.number.separator'">
 | 
|---|
 | 1278 |       <xsl:choose>
 | 
|---|
 | 1279 |         <!-- Use the override if not blank -->
 | 
|---|
 | 1280 |         <xsl:when test="$index.number.separator != ''">
 | 
|---|
 | 1281 |           <xsl:copy-of select="$index.number.separator"/>
 | 
|---|
 | 1282 |         </xsl:when>
 | 
|---|
 | 1283 |         <xsl:otherwise>
 | 
|---|
 | 1284 |           <xsl:call-template name="gentext.template">
 | 
|---|
 | 1285 |             <xsl:with-param name="lang" select="$lang"/>
 | 
|---|
 | 1286 |             <xsl:with-param name="context">index</xsl:with-param>
 | 
|---|
 | 1287 |             <xsl:with-param name="name">number-separator</xsl:with-param>
 | 
|---|
 | 1288 |           </xsl:call-template>
 | 
|---|
 | 1289 |         </xsl:otherwise>
 | 
|---|
 | 1290 |       </xsl:choose>
 | 
|---|
 | 1291 |     </xsl:when>
 | 
|---|
 | 1292 |     <xsl:when test="$key = 'index.range.separator'">
 | 
|---|
 | 1293 |       <xsl:choose>
 | 
|---|
 | 1294 |         <!-- Use the override if not blank -->
 | 
|---|
 | 1295 |         <xsl:when test="$index.range.separator != ''">
 | 
|---|
 | 1296 |           <xsl:copy-of select="$index.range.separator"/>
 | 
|---|
 | 1297 |         </xsl:when>
 | 
|---|
 | 1298 |         <xsl:otherwise>
 | 
|---|
 | 1299 |           <xsl:call-template name="gentext.template">
 | 
|---|
 | 1300 |             <xsl:with-param name="lang" select="$lang"/>
 | 
|---|
 | 1301 |             <xsl:with-param name="context">index</xsl:with-param>
 | 
|---|
 | 1302 |             <xsl:with-param name="name">range-separator</xsl:with-param>
 | 
|---|
 | 1303 |           </xsl:call-template>
 | 
|---|
 | 1304 |         </xsl:otherwise>
 | 
|---|
 | 1305 |       </xsl:choose>
 | 
|---|
 | 1306 |     </xsl:when>
 | 
|---|
 | 1307 |   </xsl:choose>
 | 
|---|
 | 1308 | </xsl:template>
 | 
|---|
 | 1309 | 
 | 
|---|
 | 1310 | </xsl:stylesheet>
 | 
|---|