1<?xml version='1.0'?> 2<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 3 version='1.0'> 4 5<!-- ******************************************************************** 6 $Id: lists.xsl 8435 2009-05-11 08:14:54Z bobstayton $ 7 ******************************************************************** 8 9 This file is part of the XSL DocBook Stylesheet distribution. 10 See ../README or http://docbook.sf.net/release/xsl/current/ for 11 copyright and other information. 12 13 ******************************************************************** --> 14 15<!-- ==================================================================== --> 16 17<xsl:template match="itemizedlist"> 18 <div> 19 <xsl:call-template name="common.html.attributes"/> 20 <xsl:call-template name="anchor"/> 21 <xsl:if test="title"> 22 <xsl:call-template name="formal.object.heading"/> 23 </xsl:if> 24 25 <!-- Preserve order of PIs and comments --> 26 <xsl:apply-templates 27 select="*[not(self::listitem 28 or self::title 29 or self::titleabbrev)] 30 |comment()[not(preceding-sibling::listitem)] 31 |processing-instruction()[not(preceding-sibling::listitem)]"/> 32 33 <ul> 34 <xsl:call-template name="generate.class.attribute"/> 35 <xsl:if test="$css.decoration != 0"> 36 <xsl:attribute name="type"> 37 <xsl:call-template name="list.itemsymbol"/> 38 </xsl:attribute> 39 </xsl:if> 40 41 <xsl:if test="@spacing='compact'"> 42 <xsl:attribute name="compact"> 43 <xsl:value-of select="@spacing"/> 44 </xsl:attribute> 45 </xsl:if> 46 <xsl:apply-templates 47 select="listitem 48 |comment()[preceding-sibling::listitem] 49 |processing-instruction()[preceding-sibling::listitem]"/> 50 </ul> 51 </div> 52</xsl:template> 53 54<xsl:template match="itemizedlist/title"> 55 <!-- nop --> 56</xsl:template> 57 58<xsl:template match="itemizedlist/listitem"> 59 <xsl:variable name="mark" select="../@mark"/> 60 <xsl:variable name="override" select="@override"/> 61 62 <xsl:variable name="usemark"> 63 <xsl:choose> 64 <xsl:when test="$override != ''"> 65 <xsl:value-of select="$override"/> 66 </xsl:when> 67 <xsl:otherwise> 68 <xsl:value-of select="$mark"/> 69 </xsl:otherwise> 70 </xsl:choose> 71 </xsl:variable> 72 73 <xsl:variable name="cssmark"> 74 <xsl:choose> 75 <xsl:when test="$usemark = 'opencircle'">circle</xsl:when> 76 <xsl:when test="$usemark = 'bullet'">disc</xsl:when> 77 <xsl:when test="$usemark = 'box'">square</xsl:when> 78 <xsl:otherwise> 79 <xsl:value-of select="$usemark"/> 80 </xsl:otherwise> 81 </xsl:choose> 82 </xsl:variable> 83 84 <li> 85 <xsl:call-template name="common.html.attributes"/> 86 <xsl:if test="$css.decoration = '1' and $cssmark != ''"> 87 <xsl:attribute name="style"> 88 <xsl:text>list-style-type: </xsl:text> 89 <xsl:value-of select="$cssmark"/> 90 </xsl:attribute> 91 </xsl:if> 92 93 <!-- we can't just drop the anchor in since some browsers (Opera) 94 get confused about line breaks if we do. So if the first child 95 is a para, assume the para will put in the anchor. Otherwise, 96 put the anchor in anyway. --> 97 <xsl:if test="local-name(child::*[1]) != 'para'"> 98 <xsl:call-template name="anchor"/> 99 </xsl:if> 100 101 <xsl:choose> 102 <xsl:when test="$show.revisionflag != 0 and @revisionflag"> 103 <div class="{@revisionflag}"> 104 <xsl:apply-templates/> 105 </div> 106 </xsl:when> 107 <xsl:otherwise> 108 <xsl:apply-templates/> 109 </xsl:otherwise> 110 </xsl:choose> 111 </li> 112</xsl:template> 113 114<xsl:template match="orderedlist"> 115 <xsl:variable name="start"> 116 <xsl:call-template name="orderedlist-starting-number"/> 117 </xsl:variable> 118 119 <xsl:variable name="numeration"> 120 <xsl:call-template name="list.numeration"/> 121 </xsl:variable> 122 123 <xsl:variable name="type"> 124 <xsl:choose> 125 <xsl:when test="$numeration='arabic'">1</xsl:when> 126 <xsl:when test="$numeration='loweralpha'">a</xsl:when> 127 <xsl:when test="$numeration='lowerroman'">i</xsl:when> 128 <xsl:when test="$numeration='upperalpha'">A</xsl:when> 129 <xsl:when test="$numeration='upperroman'">I</xsl:when> 130 <!-- What!? This should never happen --> 131 <xsl:otherwise> 132 <xsl:message> 133 <xsl:text>Unexpected numeration: </xsl:text> 134 <xsl:value-of select="$numeration"/> 135 </xsl:message> 136 <xsl:value-of select="1"/> 137 </xsl:otherwise> 138 </xsl:choose> 139 </xsl:variable> 140 141 <div> 142 <xsl:call-template name="common.html.attributes"/> 143 <xsl:call-template name="anchor"/> 144 145 <xsl:if test="title"> 146 <xsl:call-template name="formal.object.heading"/> 147 </xsl:if> 148 149 <!-- Preserve order of PIs and comments --> 150 <xsl:apply-templates 151 select="*[not(self::listitem 152 or self::title 153 or self::titleabbrev)] 154 |comment()[not(preceding-sibling::listitem)] 155 |processing-instruction()[not(preceding-sibling::listitem)]"/> 156 157 <xsl:choose> 158 <xsl:when test="@inheritnum='inherit' and ancestor::listitem[parent::orderedlist]"> 159 <table border="0"> 160 <xsl:call-template name="generate.class.attribute"/> 161 <col align="{$direction.align.start}" valign="top"/> 162 <tbody> 163 <xsl:apply-templates 164 mode="orderedlist-table" 165 select="listitem 166 |comment()[preceding-sibling::listitem] 167 |processing-instruction()[preceding-sibling::listitem]"/> 168 </tbody> 169 </table> 170 </xsl:when> 171 <xsl:otherwise> 172 <ol> 173 <xsl:call-template name="generate.class.attribute"/> 174 <xsl:if test="$start != '1'"> 175 <xsl:attribute name="start"> 176 <xsl:value-of select="$start"/> 177 </xsl:attribute> 178 </xsl:if> 179 <xsl:if test="$numeration != ''"> 180 <xsl:attribute name="type"> 181 <xsl:value-of select="$type"/> 182 </xsl:attribute> 183 </xsl:if> 184 <xsl:if test="@spacing='compact'"> 185 <xsl:attribute name="compact"> 186 <xsl:value-of select="@spacing"/> 187 </xsl:attribute> 188 </xsl:if> 189 <xsl:apply-templates 190 select="listitem 191 |comment()[preceding-sibling::listitem] 192 |processing-instruction()[preceding-sibling::listitem]"/> 193 </ol> 194 </xsl:otherwise> 195 </xsl:choose> 196 </div> 197</xsl:template> 198 199<xsl:template match="orderedlist/title"> 200 <!-- nop --> 201</xsl:template> 202 203<xsl:template match="orderedlist/listitem"> 204 <li> 205 <xsl:call-template name="common.html.attributes"/> 206 <xsl:if test="@override"> 207 <xsl:attribute name="value"> 208 <xsl:value-of select="@override"/> 209 </xsl:attribute> 210 </xsl:if> 211 212 <!-- we can't just drop the anchor in since some browsers (Opera) 213 get confused about line breaks if we do. So if the first child 214 is a para, assume the para will put in the anchor. Otherwise, 215 put the anchor in anyway. --> 216 <xsl:if test="local-name(child::*[1]) != 'para'"> 217 <xsl:call-template name="anchor"/> 218 </xsl:if> 219 220 <xsl:choose> 221 <xsl:when test="$show.revisionflag != 0 and @revisionflag"> 222 <div class="{@revisionflag}"> 223 <xsl:apply-templates/> 224 </div> 225 </xsl:when> 226 <xsl:otherwise> 227 <xsl:apply-templates/> 228 </xsl:otherwise> 229 </xsl:choose> 230 </li> 231</xsl:template> 232 233<xsl:template match="orderedlist/listitem" mode="orderedlist-table"> 234 <tr> 235 <td> 236 <xsl:apply-templates select="." mode="item-number"/> 237 </td> 238 <td> 239 <xsl:if test="local-name(child::*[1]) != 'para'"> 240 <xsl:call-template name="anchor"/> 241 </xsl:if> 242 243 <xsl:choose> 244 <xsl:when test="$show.revisionflag != 0 and @revisionflag"> 245 <div class="{@revisionflag}"> 246 <xsl:apply-templates/> 247 </div> 248 </xsl:when> 249 <xsl:otherwise> 250 <xsl:apply-templates/> 251 </xsl:otherwise> 252 </xsl:choose> 253 </td> 254 </tr> 255</xsl:template> 256 257<xsl:template match="variablelist"> 258 <xsl:variable name="pi-presentation"> 259 <xsl:call-template name="pi.dbhtml_list-presentation"/> 260 </xsl:variable> 261 262 <xsl:variable name="presentation"> 263 <xsl:choose> 264 <xsl:when test="$pi-presentation != ''"> 265 <xsl:value-of select="$pi-presentation"/> 266 </xsl:when> 267 <xsl:when test="$variablelist.as.table != 0"> 268 <xsl:value-of select="'table'"/> 269 </xsl:when> 270 <xsl:otherwise> 271 <xsl:value-of select="'list'"/> 272 </xsl:otherwise> 273 </xsl:choose> 274 </xsl:variable> 275 276 <xsl:variable name="list-width"> 277 <xsl:call-template name="pi.dbhtml_list-width"/> 278 </xsl:variable> 279 280 <xsl:variable name="term-width"> 281 <xsl:call-template name="pi.dbhtml_term-width"/> 282 </xsl:variable> 283 284 <xsl:variable name="table-summary"> 285 <xsl:call-template name="pi.dbhtml_table-summary"/> 286 </xsl:variable> 287 288 <div> 289 <xsl:call-template name="common.html.attributes"/> 290 <xsl:call-template name="anchor"/> 291 <xsl:if test="title"> 292 <xsl:call-template name="formal.object.heading"/> 293 </xsl:if> 294 295 <xsl:choose> 296 <xsl:when test="$presentation = 'table'"> 297 <!-- Preserve order of PIs and comments --> 298 <xsl:apply-templates 299 select="*[not(self::varlistentry 300 or self::title 301 or self::titleabbrev)] 302 |comment()[not(preceding-sibling::varlistentry)] 303 |processing-instruction()[not(preceding-sibling::varlistentry)]"/> 304 <table border="0"> 305 <xsl:if test="$list-width != ''"> 306 <xsl:attribute name="width"> 307 <xsl:value-of select="$list-width"/> 308 </xsl:attribute> 309 </xsl:if> 310 <xsl:if test="$table-summary != ''"> 311 <xsl:attribute name="summary"> 312 <xsl:value-of select="$table-summary"/> 313 </xsl:attribute> 314 </xsl:if> 315 <col align="{$direction.align.start}" valign="top"> 316 <xsl:if test="$term-width != ''"> 317 <xsl:attribute name="width"> 318 <xsl:value-of select="$term-width"/> 319 </xsl:attribute> 320 </xsl:if> 321 </col> 322 <tbody> 323 <xsl:apply-templates mode="varlist-table" 324 select="varlistentry 325 |comment()[preceding-sibling::varlistentry] 326 |processing-instruction()[preceding-sibling::varlistentry]"/> 327 </tbody> 328 </table> 329 </xsl:when> 330 <xsl:otherwise> 331 <!-- Preserve order of PIs and comments --> 332 <xsl:apply-templates 333 select="*[not(self::varlistentry 334 or self::title 335 or self::titleabbrev)] 336 |comment()[not(preceding-sibling::varlistentry)] 337 |processing-instruction()[not(preceding-sibling::varlistentry)]"/> 338 <dl> 339 <xsl:apply-templates 340 select="varlistentry 341 |comment()[preceding-sibling::varlistentry] 342 |processing-instruction()[preceding-sibling::varlistentry]"/> 343 </dl> 344 </xsl:otherwise> 345 </xsl:choose> 346 </div> 347</xsl:template> 348 349<xsl:template match="variablelist/title"> 350 <!-- nop --> 351</xsl:template> 352 353<xsl:template match="itemizedlist/titleabbrev|orderedlist/titleabbrev"> 354 <!--nop--> 355</xsl:template> 356 357<xsl:template match="variablelist/titleabbrev"> 358 <!--nop--> 359</xsl:template> 360 361<xsl:template match="listitem" mode="xref"> 362 <xsl:number format="1"/> 363</xsl:template> 364 365<xsl:template match="listitem/simpara" priority="2"> 366 <!-- If a listitem contains only a single simpara, don't output 367 the <p> wrapper; this has the effect of creating an li 368 with simple text content. --> 369 <xsl:choose> 370 <xsl:when test="not(preceding-sibling::*) 371 and not (following-sibling::*)"> 372 <xsl:call-template name="anchor"/> 373 <xsl:apply-templates/> 374 </xsl:when> 375 <xsl:otherwise> 376 <p> 377 <xsl:choose> 378 <xsl:when test="@role and $para.propagates.style != 0"> 379 <xsl:call-template name="common.html.attributes"> 380 <xsl:with-param name="class" select="@role"/> 381 </xsl:call-template> 382 </xsl:when> 383 <xsl:otherwise> 384 <xsl:call-template name="common.html.attributes"/> 385 </xsl:otherwise> 386 </xsl:choose> 387 388 <xsl:call-template name="anchor"/> 389 <xsl:apply-templates/> 390 </p> 391 </xsl:otherwise> 392 </xsl:choose> 393</xsl:template> 394 395<xsl:template match="varlistentry"> 396 <dt> 397 <xsl:call-template name="anchor"/> 398 <xsl:apply-templates select="term"/> 399 </dt> 400 <dd> 401 <xsl:apply-templates select="listitem"/> 402 </dd> 403</xsl:template> 404 405<xsl:template match="varlistentry" mode="varlist-table"> 406 <xsl:variable name="presentation"> 407 <xsl:call-template name="pi.dbhtml_term-presentation"> 408 <xsl:with-param name="node" select=".."/> 409 </xsl:call-template> 410 </xsl:variable> 411 412 <xsl:variable name="separator"> 413 <xsl:call-template name="pi.dbhtml_term-separator"> 414 <xsl:with-param name="node" select=".."/> 415 </xsl:call-template> 416 </xsl:variable> 417 <tr> 418 <xsl:call-template name="tr.attributes"> 419 <xsl:with-param name="rownum"> 420 <xsl:number from="variablelist" count="varlistentry"/> 421 </xsl:with-param> 422 </xsl:call-template> 423 424 <td> 425 <p> 426 <xsl:call-template name="anchor"/> 427 <xsl:choose> 428 <xsl:when test="$presentation = 'bold'"> 429 <b> 430 <xsl:apply-templates select="term"/> 431 <xsl:value-of select="$separator"/> 432 </b> 433 </xsl:when> 434 <xsl:when test="$presentation = 'italic'"> 435 <i> 436 <xsl:apply-templates select="term"/> 437 <xsl:value-of select="$separator"/> 438 </i> 439 </xsl:when> 440 <xsl:when test="$presentation = 'bold-italic'"> 441 <b> 442 <i> 443 <xsl:apply-templates select="term"/> 444 <xsl:value-of select="$separator"/> 445 </i> 446 </b> 447 </xsl:when> 448 <xsl:otherwise> 449 <xsl:apply-templates select="term"/> 450 <xsl:value-of select="$separator"/> 451 </xsl:otherwise> 452 </xsl:choose> 453 </p> 454 </td> 455 <td> 456 <xsl:apply-templates select="listitem"/> 457 </td> 458 </tr> 459</xsl:template> 460 461<xsl:template match="varlistentry/term"> 462 <span> 463 <xsl:call-template name="common.html.attributes"/> 464 <xsl:call-template name="anchor"/> 465 <xsl:call-template name="simple.xlink"> 466 <xsl:with-param name="content"> 467 <xsl:apply-templates/> 468 </xsl:with-param> 469 </xsl:call-template> 470 <xsl:choose> 471 <xsl:when test="position() = last()"/> <!-- do nothing --> 472 <xsl:otherwise> 473 <!-- * if we have multiple terms in the same varlistentry, generate --> 474 <!-- * a separator (", " by default) and/or an additional line --> 475 <!-- * break after each one except the last --> 476 <xsl:value-of select="$variablelist.term.separator"/> 477 <xsl:if test="not($variablelist.term.break.after = '0')"> 478 <br/> 479 </xsl:if> 480 </xsl:otherwise> 481 </xsl:choose> 482 </span> 483</xsl:template> 484 485<xsl:template match="varlistentry/listitem"> 486 <!-- we can't just drop the anchor in since some browsers (Opera) 487 get confused about line breaks if we do. So if the first child 488 is a para, assume the para will put in the anchor. Otherwise, 489 put the anchor in anyway. --> 490 <xsl:if test="local-name(child::*[1]) != 'para'"> 491 <xsl:call-template name="anchor"/> 492 </xsl:if> 493 494 <xsl:choose> 495 <xsl:when test="$show.revisionflag != 0 and @revisionflag"> 496 <div class="{@revisionflag}"> 497 <xsl:apply-templates/> 498 </div> 499 </xsl:when> 500 <xsl:otherwise> 501 <xsl:apply-templates/> 502 </xsl:otherwise> 503 </xsl:choose> 504</xsl:template> 505 506<!-- ==================================================================== --> 507 508<xsl:template match="simplelist"> 509 <!-- with no type specified, the default is 'vert' --> 510 <xsl:call-template name="anchor"/> 511 <table border="0" summary="Simple list"> 512 <xsl:call-template name="common.html.attributes"/> 513 <xsl:call-template name="simplelist.vert"> 514 <xsl:with-param name="cols"> 515 <xsl:choose> 516 <xsl:when test="@columns"> 517 <xsl:value-of select="@columns"/> 518 </xsl:when> 519 <xsl:otherwise>1</xsl:otherwise> 520 </xsl:choose> 521 </xsl:with-param> 522 </xsl:call-template> 523 </table> 524</xsl:template> 525 526<xsl:template match="simplelist[@type='inline']"> 527 <span> 528 <xsl:call-template name="common.html.attributes"/> 529 <!-- if dbchoice PI exists, use that to determine the choice separator --> 530 <!-- (that is, equivalent of "and" or "or" in current locale), or literal --> 531 <!-- value of "choice" otherwise --> 532 <xsl:variable name="localized-choice-separator"> 533 <xsl:choose> 534 <xsl:when test="processing-instruction('dbchoice')"> 535 <xsl:call-template name="select.choice.separator"/> 536 </xsl:when> 537 <xsl:otherwise> 538 <!-- empty --> 539 </xsl:otherwise> 540 </xsl:choose> 541 </xsl:variable> 542 543 <xsl:for-each select="member"> 544 <xsl:call-template name="simple.xlink"> 545 <xsl:with-param name="content"> 546 <xsl:apply-templates/> 547 </xsl:with-param> 548 </xsl:call-template> 549 <xsl:choose> 550 <xsl:when test="position() = last()"/> <!-- do nothing --> 551 <xsl:otherwise> 552 <xsl:text>, </xsl:text> 553 <xsl:if test="position() = last() - 1"> 554 <xsl:if test="$localized-choice-separator != ''"> 555 <xsl:value-of select="$localized-choice-separator"/> 556 <xsl:text> </xsl:text> 557 </xsl:if> 558 </xsl:if> 559 </xsl:otherwise> 560 </xsl:choose> 561 </xsl:for-each> 562 </span> 563</xsl:template> 564 565<xsl:template match="simplelist[@type='horiz']"> 566 <xsl:call-template name="anchor"/> 567 <table border="0" summary="Simple list"> 568 <xsl:call-template name="common.html.attributes"/> 569 <xsl:call-template name="simplelist.horiz"> 570 <xsl:with-param name="cols"> 571 <xsl:choose> 572 <xsl:when test="@columns"> 573 <xsl:value-of select="@columns"/> 574 </xsl:when> 575 <xsl:otherwise>1</xsl:otherwise> 576 </xsl:choose> 577 </xsl:with-param> 578 </xsl:call-template> 579 </table> 580</xsl:template> 581 582<xsl:template match="simplelist[@type='vert']"> 583 <xsl:call-template name="anchor"/> 584 <table border="0" summary="Simple list"> 585 <xsl:call-template name="common.html.attributes"/> 586 <xsl:call-template name="simplelist.vert"> 587 <xsl:with-param name="cols"> 588 <xsl:choose> 589 <xsl:when test="@columns"> 590 <xsl:value-of select="@columns"/> 591 </xsl:when> 592 <xsl:otherwise>1</xsl:otherwise> 593 </xsl:choose> 594 </xsl:with-param> 595 </xsl:call-template> 596 </table> 597</xsl:template> 598 599<xsl:template name="simplelist.horiz"> 600 <xsl:param name="cols">1</xsl:param> 601 <xsl:param name="cell">1</xsl:param> 602 <xsl:param name="members" select="./member"/> 603 604 <xsl:if test="$cell <= count($members)"> 605 <tr> 606 <xsl:call-template name="tr.attributes"> 607 <xsl:with-param name="row" select="$members[1]"/> 608 <xsl:with-param name="rownum" select="(($cell - 1) div $cols) + 1"/> 609 </xsl:call-template> 610 611 <xsl:call-template name="simplelist.horiz.row"> 612 <xsl:with-param name="cols" select="$cols"/> 613 <xsl:with-param name="cell" select="$cell"/> 614 <xsl:with-param name="members" select="$members"/> 615 </xsl:call-template> 616 </tr> 617 <xsl:call-template name="simplelist.horiz"> 618 <xsl:with-param name="cols" select="$cols"/> 619 <xsl:with-param name="cell" select="$cell + $cols"/> 620 <xsl:with-param name="members" select="$members"/> 621 </xsl:call-template> 622 </xsl:if> 623</xsl:template> 624 625<xsl:template name="simplelist.horiz.row"> 626 <xsl:param name="cols">1</xsl:param> 627 <xsl:param name="cell">1</xsl:param> 628 <xsl:param name="members" select="./member"/> 629 <xsl:param name="curcol">1</xsl:param> 630 631 <xsl:if test="$curcol <= $cols"> 632 <td> 633 <xsl:choose> 634 <xsl:when test="$members[position()=$cell]"> 635 <xsl:apply-templates select="$members[position()=$cell]"/> 636 </xsl:when> 637 <xsl:otherwise> 638 <xsl:text> </xsl:text> 639 </xsl:otherwise> 640 </xsl:choose> 641 </td> 642 <xsl:call-template name="simplelist.horiz.row"> 643 <xsl:with-param name="cols" select="$cols"/> 644 <xsl:with-param name="cell" select="$cell+1"/> 645 <xsl:with-param name="members" select="$members"/> 646 <xsl:with-param name="curcol" select="$curcol+1"/> 647 </xsl:call-template> 648 </xsl:if> 649</xsl:template> 650 651<xsl:template name="simplelist.vert"> 652 <xsl:param name="cols">1</xsl:param> 653 <xsl:param name="cell">1</xsl:param> 654 <xsl:param name="members" select="./member"/> 655 <xsl:param name="rows" 656 select="floor((count($members)+$cols - 1) div $cols)"/> 657 658 <xsl:if test="$cell <= $rows"> 659 <tr> 660 <xsl:call-template name="tr.attributes"> 661 <xsl:with-param name="row" select="$members[1]"/> 662 <xsl:with-param name="rownum" select="$cell"/> 663 </xsl:call-template> 664 665 <xsl:call-template name="simplelist.vert.row"> 666 <xsl:with-param name="cols" select="$cols"/> 667 <xsl:with-param name="rows" select="$rows"/> 668 <xsl:with-param name="cell" select="$cell"/> 669 <xsl:with-param name="members" select="$members"/> 670 </xsl:call-template> 671 </tr> 672 <xsl:call-template name="simplelist.vert"> 673 <xsl:with-param name="cols" select="$cols"/> 674 <xsl:with-param name="cell" select="$cell+1"/> 675 <xsl:with-param name="members" select="$members"/> 676 <xsl:with-param name="rows" select="$rows"/> 677 </xsl:call-template> 678 </xsl:if> 679</xsl:template> 680 681<xsl:template name="simplelist.vert.row"> 682 <xsl:param name="cols">1</xsl:param> 683 <xsl:param name="rows">1</xsl:param> 684 <xsl:param name="cell">1</xsl:param> 685 <xsl:param name="members" select="./member"/> 686 <xsl:param name="curcol">1</xsl:param> 687 688 <xsl:if test="$curcol <= $cols"> 689 <td> 690 <xsl:choose> 691 <xsl:when test="$members[position()=$cell]"> 692 <xsl:apply-templates select="$members[position()=$cell]"/> 693 </xsl:when> 694 <xsl:otherwise> 695 <xsl:text> </xsl:text> 696 </xsl:otherwise> 697 </xsl:choose> 698 </td> 699 <xsl:call-template name="simplelist.vert.row"> 700 <xsl:with-param name="cols" select="$cols"/> 701 <xsl:with-param name="rows" select="$rows"/> 702 <xsl:with-param name="cell" select="$cell+$rows"/> 703 <xsl:with-param name="members" select="$members"/> 704 <xsl:with-param name="curcol" select="$curcol+1"/> 705 </xsl:call-template> 706 </xsl:if> 707</xsl:template> 708 709<xsl:template match="member"> 710 <xsl:call-template name="anchor"/> 711 <xsl:call-template name="simple.xlink"> 712 <xsl:with-param name="content"> 713 <xsl:apply-templates/> 714 </xsl:with-param> 715 </xsl:call-template> 716</xsl:template> 717 718<!-- ==================================================================== --> 719 720<xsl:template match="procedure"> 721 <xsl:variable name="param.placement" 722 select="substring-after(normalize-space($formal.title.placement), 723 concat(local-name(.), ' '))"/> 724 725 <xsl:variable name="placement"> 726 <xsl:choose> 727 <xsl:when test="contains($param.placement, ' ')"> 728 <xsl:value-of select="substring-before($param.placement, ' ')"/> 729 </xsl:when> 730 <xsl:when test="$param.placement = ''">before</xsl:when> 731 <xsl:otherwise> 732 <xsl:value-of select="$param.placement"/> 733 </xsl:otherwise> 734 </xsl:choose> 735 </xsl:variable> 736 737 <!-- Preserve order of PIs and comments --> 738 <xsl:variable name="preamble" 739 select="*[not(self::step 740 or self::title 741 or self::titleabbrev)] 742 |comment()[not(preceding-sibling::step)] 743 |processing-instruction()[not(preceding-sibling::step)]"/> 744 745 <div> 746 <xsl:call-template name="common.html.attributes"/> 747 <xsl:call-template name="anchor"> 748 <xsl:with-param name="conditional"> 749 <xsl:choose> 750 <xsl:when test="title">0</xsl:when> 751 <xsl:otherwise>1</xsl:otherwise> 752 </xsl:choose> 753 </xsl:with-param> 754 </xsl:call-template> 755 756 <xsl:if test="title and $placement = 'before'"> 757 <xsl:call-template name="formal.object.heading"/> 758 </xsl:if> 759 760 <xsl:apply-templates select="$preamble"/> 761 762 <xsl:choose> 763 <xsl:when test="count(step) = 1"> 764 <ul> 765 <xsl:call-template name="generate.class.attribute"/> 766 <xsl:apply-templates 767 select="step 768 |comment()[preceding-sibling::step] 769 |processing-instruction()[preceding-sibling::step]"/> 770 </ul> 771 </xsl:when> 772 <xsl:otherwise> 773 <ol> 774 <xsl:call-template name="generate.class.attribute"/> 775 <xsl:attribute name="type"> 776 <xsl:value-of select="substring($procedure.step.numeration.formats,1,1)"/> 777 </xsl:attribute> 778 <xsl:apply-templates 779 select="step 780 |comment()[preceding-sibling::step] 781 |processing-instruction()[preceding-sibling::step]"/> 782 </ol> 783 </xsl:otherwise> 784 </xsl:choose> 785 786 <xsl:if test="title and $placement != 'before'"> 787 <xsl:call-template name="formal.object.heading"/> 788 </xsl:if> 789 </div> 790</xsl:template> 791 792<xsl:template match="procedure/title"> 793 <!-- nop --> 794</xsl:template> 795 796<xsl:template match="substeps"> 797 <xsl:variable name="numeration"> 798 <xsl:call-template name="procedure.step.numeration"/> 799 </xsl:variable> 800 801 <xsl:call-template name="anchor"/> 802 803 <ol type="{$numeration}"> 804 <xsl:call-template name="common.html.attributes"/> 805 <xsl:apply-templates/> 806 </ol> 807</xsl:template> 808 809<xsl:template match="step"> 810 <li> 811 <xsl:call-template name="common.html.attributes"/> 812 <xsl:call-template name="anchor"/> 813 <xsl:apply-templates/> 814 </li> 815</xsl:template> 816 817<xsl:template match="stepalternatives"> 818 <xsl:call-template name="anchor"/> 819 <ul> 820 <xsl:call-template name="common.html.attributes"/> 821 <xsl:apply-templates/> 822 </ul> 823</xsl:template> 824 825<xsl:template match="step/title"> 826 <p> 827 <xsl:call-template name="common.html.attributes"/> 828 <b> 829 <xsl:apply-templates/> 830 </b> 831 </p> 832</xsl:template> 833 834<!-- ==================================================================== --> 835 836<xsl:template match="segmentedlist"> 837 <xsl:variable name="presentation"> 838 <xsl:call-template name="pi.dbhtml_list-presentation"/> 839 </xsl:variable> 840 841 <div> 842 <xsl:call-template name="common.html.attributes"/> 843 <xsl:call-template name="anchor"/> 844 845 <xsl:choose> 846 <xsl:when test="$presentation = 'table'"> 847 <xsl:apply-templates select="." mode="seglist-table"/> 848 </xsl:when> 849 <xsl:when test="$presentation = 'list'"> 850 <xsl:apply-templates/> 851 </xsl:when> 852 <xsl:when test="$segmentedlist.as.table != 0"> 853 <xsl:apply-templates select="." mode="seglist-table"/> 854 </xsl:when> 855 <xsl:otherwise> 856 <xsl:apply-templates/> 857 </xsl:otherwise> 858 </xsl:choose> 859 </div> 860</xsl:template> 861 862<xsl:template match="segmentedlist/title"> 863 <div> 864 <xsl:call-template name="common.html.attributes"/> 865 <strong> 866 <span> 867 <xsl:call-template name="generate.class.attribute"/> 868 <xsl:apply-templates/> 869 </span> 870 </strong> 871 </div> 872</xsl:template> 873 874<xsl:template match="segtitle"> 875</xsl:template> 876 877<xsl:template match="segtitle" mode="segtitle-in-seg"> 878 <xsl:apply-templates/> 879</xsl:template> 880 881<xsl:template match="seglistitem"> 882 <div> 883 <xsl:call-template name="common.html.attributes"/> 884 <xsl:call-template name="anchor"/> 885 <xsl:apply-templates/> 886 </div> 887</xsl:template> 888 889<xsl:template match="seg"> 890 <xsl:variable name="segnum" select="count(preceding-sibling::seg)+1"/> 891 <xsl:variable name="seglist" select="ancestor::segmentedlist"/> 892 <xsl:variable name="segtitles" select="$seglist/segtitle"/> 893 894 <!-- 895 Note: segtitle is only going to be the right thing in a well formed 896 SegmentedList. If there are too many Segs or too few SegTitles, 897 you'll get something odd...maybe an error 898 --> 899 900 <div> 901 <xsl:call-template name="common.html.attributes"/> 902 <strong> 903 <span class="segtitle"> 904 <xsl:apply-templates select="$segtitles[$segnum=position()]" 905 mode="segtitle-in-seg"/> 906 <xsl:text>: </xsl:text> 907 </span> 908 </strong> 909 <xsl:apply-templates/> 910 </div> 911</xsl:template> 912 913<xsl:template match="segmentedlist" mode="seglist-table"> 914 <xsl:variable name="table-summary"> 915 <xsl:call-template name="pi.dbhtml_table-summary"/> 916 </xsl:variable> 917 918 <xsl:variable name="list-width"> 919 <xsl:call-template name="pi.dbhtml_list-width"/> 920 </xsl:variable> 921 922 <xsl:apply-templates select="title"/> 923 924 <table border="0"> 925 <xsl:if test="$list-width != ''"> 926 <xsl:attribute name="width"> 927 <xsl:value-of select="$list-width"/> 928 </xsl:attribute> 929 </xsl:if> 930 <xsl:if test="$table-summary != ''"> 931 <xsl:attribute name="summary"> 932 <xsl:value-of select="$table-summary"/> 933 </xsl:attribute> 934 </xsl:if> 935 <thead> 936 <tr class="segtitle"> 937 <xsl:call-template name="tr.attributes"> 938 <xsl:with-param name="row" select="segtitle[1]"/> 939 <xsl:with-param name="rownum" select="1"/> 940 </xsl:call-template> 941 <xsl:apply-templates select="segtitle" mode="seglist-table"/> 942 </tr> 943 </thead> 944 <tbody> 945 <xsl:apply-templates select="seglistitem" mode="seglist-table"/> 946 </tbody> 947 </table> 948</xsl:template> 949 950<xsl:template match="segtitle" mode="seglist-table"> 951 <th><xsl:apply-templates/></th> 952</xsl:template> 953 954<xsl:template match="seglistitem" mode="seglist-table"> 955 <xsl:variable name="seglinum"> 956 <xsl:number from="segmentedlist" count="seglistitem"/> 957 </xsl:variable> 958 959 <tr> 960 <xsl:call-template name="common.html.attributes"/> 961 <xsl:call-template name="tr.attributes"> 962 <xsl:with-param name="rownum" select="$seglinum + 1"/> 963 </xsl:call-template> 964 <xsl:apply-templates mode="seglist-table"/> 965 </tr> 966</xsl:template> 967 968<xsl:template match="seg" mode="seglist-table"> 969 <td> 970 <xsl:call-template name="common.html.attributes"/> 971 <xsl:apply-templates/> 972 </td> 973</xsl:template> 974 975<xsl:template match="seg[1]" mode="seglist-table"> 976 <td> 977 <xsl:call-template name="common.html.attributes"/> 978 <xsl:call-template name="anchor"> 979 <xsl:with-param name="node" select="ancestor::seglistitem"/> 980 </xsl:call-template> 981 <xsl:apply-templates/> 982 </td> 983</xsl:template> 984 985<!-- ==================================================================== --> 986 987<xsl:template match="calloutlist"> 988 <div> 989 <xsl:call-template name="common.html.attributes"/> 990 <xsl:call-template name="anchor"/> 991 <xsl:if test="title|info/title"> 992 <xsl:call-template name="formal.object.heading"/> 993 </xsl:if> 994 995 <!-- Preserve order of PIs and comments --> 996 <xsl:apply-templates 997 select="*[not(self::callout or self::title or self::titleabbrev)] 998 |comment()[not(preceding-sibling::callout)] 999 |processing-instruction()[not(preceding-sibling::callout)]"/> 1000 1001 <xsl:choose> 1002 <xsl:when test="$callout.list.table != 0"> 1003 <table border="0" summary="Callout list"> 1004 <xsl:apply-templates select="callout 1005 |comment()[preceding-sibling::callout] 1006 |processing-instruction()[preceding-sibling::callout]"/> 1007 </table> 1008 </xsl:when> 1009 <xsl:otherwise> 1010 <dl compact="compact"> 1011 <xsl:apply-templates select="callout 1012 |comment()[preceding-sibling::callout] 1013 |processing-instruction()[preceding-sibling::callout]"/> 1014 </dl> 1015 </xsl:otherwise> 1016 </xsl:choose> 1017 </div> 1018</xsl:template> 1019 1020<xsl:template match="calloutlist/title"> 1021</xsl:template> 1022 1023<xsl:template match="callout"> 1024 <xsl:choose> 1025 <xsl:when test="$callout.list.table != 0"> 1026 <tr> 1027 <xsl:call-template name="tr.attributes"> 1028 <xsl:with-param name="rownum"> 1029 <xsl:number from="calloutlist" count="callout"/> 1030 </xsl:with-param> 1031 </xsl:call-template> 1032 1033 <td width="5%" valign="top" align="{$direction.align.start}"> 1034 <p> 1035 <xsl:call-template name="anchor"/> 1036 <xsl:call-template name="callout.arearefs"> 1037 <xsl:with-param name="arearefs" select="@arearefs"/> 1038 </xsl:call-template> 1039 </p> 1040 </td> 1041 <td valign="top" align="{$direction.align.start}"> 1042 <xsl:apply-templates/> 1043 </td> 1044 </tr> 1045 </xsl:when> 1046 <xsl:otherwise> 1047 <dt> 1048 <xsl:call-template name="anchor"/> 1049 <xsl:call-template name="callout.arearefs"> 1050 <xsl:with-param name="arearefs" select="@arearefs"/> 1051 </xsl:call-template> 1052 </dt> 1053 <dd><xsl:apply-templates/></dd> 1054 </xsl:otherwise> 1055 </xsl:choose> 1056</xsl:template> 1057 1058<xsl:template match="callout/simpara" priority="2"> 1059 <!-- If a callout contains only a single simpara, don't output 1060 the <p> wrapper; this has the effect of creating an li 1061 with simple text content. --> 1062 <xsl:choose> 1063 <xsl:when test="not(preceding-sibling::*) 1064 and not (following-sibling::*)"> 1065 <xsl:call-template name="anchor"/> 1066 <xsl:apply-templates/> 1067 </xsl:when> 1068 <xsl:otherwise> 1069 <p> 1070 <xsl:if test="@role and $para.propagates.style != 0"> 1071 <xsl:choose> 1072 <xsl:when test="@role and $para.propagates.style != 0"> 1073 <xsl:call-template name="common.html.attributes"> 1074 <xsl:with-param name="class" select="@role"/> 1075 </xsl:call-template> 1076 </xsl:when> 1077 <xsl:otherwise> 1078 <xsl:call-template name="common.html.attributes"/> 1079 </xsl:otherwise> 1080 </xsl:choose> 1081 </xsl:if> 1082 1083 <xsl:call-template name="anchor"/> 1084 <xsl:apply-templates/> 1085 </p> 1086 </xsl:otherwise> 1087 </xsl:choose> 1088</xsl:template> 1089 1090<xsl:template name="callout.arearefs"> 1091 <xsl:param name="arearefs"></xsl:param> 1092 <xsl:if test="$arearefs!=''"> 1093 <xsl:choose> 1094 <xsl:when test="substring-before($arearefs,' ')=''"> 1095 <xsl:call-template name="callout.arearef"> 1096 <xsl:with-param name="arearef" select="$arearefs"/> 1097 </xsl:call-template> 1098 </xsl:when> 1099 <xsl:otherwise> 1100 <xsl:call-template name="callout.arearef"> 1101 <xsl:with-param name="arearef" 1102 select="substring-before($arearefs,' ')"/> 1103 </xsl:call-template> 1104 </xsl:otherwise> 1105 </xsl:choose> 1106 <xsl:call-template name="callout.arearefs"> 1107 <xsl:with-param name="arearefs" 1108 select="substring-after($arearefs,' ')"/> 1109 </xsl:call-template> 1110 </xsl:if> 1111</xsl:template> 1112 1113<xsl:template name="callout.arearef"> 1114 <xsl:param name="arearef"></xsl:param> 1115 <xsl:variable name="targets" select="key('id',$arearef)"/> 1116 <xsl:variable name="target" select="$targets[1]"/> 1117 1118 <xsl:call-template name="check.id.unique"> 1119 <xsl:with-param name="linkend" select="$arearef"/> 1120 </xsl:call-template> 1121 1122 <xsl:choose> 1123 <xsl:when test="count($target)=0"> 1124 <xsl:text>???</xsl:text> 1125 </xsl:when> 1126 <xsl:when test="local-name($target)='co'"> 1127 <a> 1128 <xsl:attribute name="href"> 1129 <xsl:text>#</xsl:text> 1130 <xsl:value-of select="$arearef"/> 1131 </xsl:attribute> 1132 <xsl:apply-templates select="$target" mode="callout-bug"/> 1133 </a> 1134 <xsl:text> </xsl:text> 1135 </xsl:when> 1136 <xsl:when test="local-name($target)='areaset'"> 1137 <xsl:call-template name="callout-bug"> 1138 <xsl:with-param name="conum"> 1139 <xsl:apply-templates select="$target" mode="conumber"/> 1140 </xsl:with-param> 1141 </xsl:call-template> 1142 </xsl:when> 1143 <xsl:when test="local-name($target)='area'"> 1144 <xsl:choose> 1145 <xsl:when test="$target/parent::areaset"> 1146 <xsl:call-template name="callout-bug"> 1147 <xsl:with-param name="conum"> 1148 <xsl:apply-templates select="$target/parent::areaset" 1149 mode="conumber"/> 1150 </xsl:with-param> 1151 </xsl:call-template> 1152 </xsl:when> 1153 <xsl:otherwise> 1154 <xsl:call-template name="callout-bug"> 1155 <xsl:with-param name="conum"> 1156 <xsl:apply-templates select="$target" mode="conumber"/> 1157 </xsl:with-param> 1158 </xsl:call-template> 1159 </xsl:otherwise> 1160 </xsl:choose> 1161 </xsl:when> 1162 <xsl:otherwise> 1163 <xsl:text>???</xsl:text> 1164 </xsl:otherwise> 1165 </xsl:choose> 1166</xsl:template> 1167 1168<!-- ==================================================================== --> 1169 1170<xsl:template name="orderedlist-starting-number"> 1171 <xsl:param name="list" select="."/> 1172 <xsl:variable name="pi-start"> 1173 <xsl:call-template name="pi.dbhtml_start"> 1174 <xsl:with-param name="node" select="$list"/> 1175 </xsl:call-template> 1176 </xsl:variable> 1177 <xsl:call-template name="output-orderedlist-starting-number"> 1178 <xsl:with-param name="list" select="$list"/> 1179 <xsl:with-param name="pi-start" select="$pi-start"/> 1180 </xsl:call-template> 1181</xsl:template> 1182 1183</xsl:stylesheet> 1184