2 <!DOCTYPE xsl:stylesheet [
 
   3 <!ENTITY % common.entities SYSTEM "../common/entities.ent">
 
   6 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 
   7                 xmlns:xlink='http://www.w3.org/1999/xlink'
 
   8                 xmlns:suwl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.UnwrapLinks"
 
   9                 exclude-result-prefixes="xlink suwl"
 
  12 <!-- ********************************************************************
 
  13      $Id: inline.xsl 8811 2010-08-09 20:24:45Z mzjn $
 
  14      ********************************************************************
 
  16      This file is part of the XSL DocBook Stylesheet distribution.
 
  17      See ../README or http://docbook.sf.net/release/xsl/current/ for
 
  18      copyright and other information.
 
  20      ******************************************************************** -->
 
  22 <xsl:key name="glossentries" match="glossentry" use="normalize-space(glossterm)"/>
 
  23 <xsl:key name="glossentries" match="glossentry" use="normalize-space(glossterm/@baseform)"/>
 
  25 <xsl:template name="simple.xlink">
 
  26   <xsl:param name="node" select="."/>
 
  27   <xsl:param name="content">
 
  28     <xsl:apply-templates/>
 
  30   <xsl:param name="linkend" select="$node/@linkend"/>
 
  31   <xsl:param name="xhref" select="$node/@xlink:href"/>
 
  33   <!-- Support for @xlink:show -->
 
  34   <xsl:variable name="target.show">
 
  36       <xsl:when test="$node/@xlink:show = 'new'">_blank</xsl:when>
 
  37       <xsl:when test="$node/@xlink:show = 'replace'">_top</xsl:when>
 
  38       <xsl:otherwise></xsl:otherwise>
 
  42   <xsl:variable name="link">
 
  44       <xsl:when test="$xhref and 
 
  45                       (not($node/@xlink:type) or 
 
  46                            $node/@xlink:type='simple')">
 
  48         <!-- Is it a local idref or a uri? -->
 
  49         <xsl:variable name="is.idref">
 
  51             <!-- if the href starts with # and does not contain an "(" -->
 
  52             <!-- or if the href starts with #xpointer(id(, it's just an ID -->
 
  53             <xsl:when test="starts-with($xhref,'#')
 
  54                             and (not(contains($xhref,'('))
 
  55                             or starts-with($xhref,
 
  56                                        '#xpointer(id('))">1</xsl:when>
 
  57             <xsl:otherwise>0</xsl:otherwise>
 
  61         <!-- Is it an olink ? -->
 
  62         <xsl:variable name="is.olink">
 
  64             <!-- If xlink:role="http://docbook.org/xlink/role/olink" -->
 
  65             <!-- and if the href contains # -->
 
  66             <xsl:when test="contains($xhref,'#') and
 
  67                  @xlink:role = $xolink.role">1</xsl:when>
 
  68             <xsl:otherwise>0</xsl:otherwise>
 
  73           <xsl:when test="$is.olink = 1">
 
  74             <xsl:call-template name="olink">
 
  75               <xsl:with-param name="content" select="$content"/>
 
  79           <xsl:when test="$is.idref = 1">
 
  81             <xsl:variable name="idref">
 
  82               <xsl:call-template name="xpointer.idref">
 
  83                 <xsl:with-param name="xpointer" select="$xhref"/>
 
  87             <xsl:variable name="targets" select="key('id',$idref)"/>
 
  88             <xsl:variable name="target" select="$targets[1]"/>
 
  90             <xsl:call-template name="check.id.unique">
 
  91               <xsl:with-param name="linkend" select="$idref"/>
 
  95               <xsl:when test="count($target) = 0">
 
  97                   <xsl:text>XLink to nonexistent id: </xsl:text>
 
  98                   <xsl:value-of select="$idref"/>
 
 100                 <xsl:copy-of select="$content"/>
 
 105                   <xsl:apply-templates select="." mode="common.html.attributes"/>
 
 107                   <xsl:attribute name="href">
 
 108                     <xsl:call-template name="href.target">
 
 109                       <xsl:with-param name="object" select="$target"/>
 
 114                     <xsl:when test="$node/@xlink:title">
 
 115                       <xsl:attribute name="title">
 
 116                         <xsl:value-of select="$node/@xlink:title"/>
 
 120                       <xsl:apply-templates select="$target"
 
 121                                            mode="html.title.attribute"/>
 
 125                   <xsl:if test="$target.show !=''">
 
 126                     <xsl:attribute name="target">
 
 127                       <xsl:value-of select="$target.show"/>
 
 131                   <xsl:copy-of select="$content"/>
 
 138           <!-- otherwise it's a URI -->
 
 141               <xsl:apply-templates select="." mode="common.html.attributes"/>
 
 142               <xsl:attribute name="href">
 
 143                 <xsl:value-of select="$xhref"/>
 
 145               <xsl:if test="$node/@xlink:title">
 
 146                 <xsl:attribute name="title">
 
 147                   <xsl:value-of select="$node/@xlink:title"/>
 
 151               <!-- For URIs, use @xlink:show if defined, otherwise use ulink.target -->
 
 153                 <xsl:when test="$target.show !=''">
 
 154                   <xsl:attribute name="target">
 
 155                     <xsl:value-of select="$target.show"/>
 
 158                 <xsl:when test="$ulink.target !=''">
 
 159                   <xsl:attribute name="target">
 
 160                     <xsl:value-of select="$ulink.target"/>
 
 165               <xsl:copy-of select="$content"/>
 
 171       <xsl:when test="$linkend">
 
 172         <xsl:variable name="targets" select="key('id',$linkend)"/>
 
 173         <xsl:variable name="target" select="$targets[1]"/>
 
 175         <xsl:call-template name="check.id.unique">
 
 176           <xsl:with-param name="linkend" select="$linkend"/>
 
 180           <xsl:apply-templates select="." mode="common.html.attributes"/>
 
 181           <xsl:attribute name="href">
 
 182             <xsl:call-template name="href.target">
 
 183               <xsl:with-param name="object" select="$target"/>
 
 187           <xsl:apply-templates select="$target" mode="html.title.attribute"/>
 
 189           <xsl:copy-of select="$content"/>
 
 194         <xsl:copy-of select="$content"/>
 
 200     <xsl:when test="function-available('suwl:unwrapLinks')">
 
 201       <xsl:copy-of select="suwl:unwrapLinks($link)"/>
 
 204       <xsl:copy-of select="$link"/>
 
 209 <xsl:template name="inline.charseq">
 
 210   <xsl:param name="content">
 
 211     <xsl:call-template name="anchor"/>
 
 212     <xsl:call-template name="simple.xlink">
 
 213       <xsl:with-param name="content">
 
 214         <xsl:apply-templates/>
 
 218   <!-- * if you want output from the inline.charseq template wrapped in -->
 
 219   <!-- * something other than a Span, call the template with some value -->
 
 220   <!-- * for the 'wrapper-name' param -->
 
 221   <xsl:param name="wrapper-name">span</xsl:param>
 
 222   <xsl:element name="{$wrapper-name}">
 
 223     <xsl:attribute name="class">
 
 224       <xsl:value-of select="local-name(.)"/>
 
 226     <xsl:call-template name="dir"/>
 
 227     <xsl:call-template name="generate.html.title"/>
 
 228     <xsl:copy-of select="$content"/>
 
 229     <xsl:call-template name="apply-annotations"/>
 
 233 <xsl:template name="inline.monoseq">
 
 234   <xsl:param name="content">
 
 235     <xsl:call-template name="anchor"/>
 
 236     <xsl:call-template name="simple.xlink">
 
 237       <xsl:with-param name="content">
 
 238         <xsl:apply-templates/>
 
 243     <xsl:apply-templates select="." mode="common.html.attributes"/>
 
 244     <xsl:copy-of select="$content"/>
 
 245     <xsl:call-template name="apply-annotations"/>
 
 249 <xsl:template name="inline.boldseq">
 
 250   <xsl:param name="content">
 
 251     <xsl:call-template name="anchor"/>
 
 252     <xsl:call-template name="simple.xlink">
 
 253       <xsl:with-param name="content">
 
 254         <xsl:apply-templates/>
 
 260     <xsl:apply-templates select="." mode="common.html.attributes"/>
 
 262     <!-- don't put <strong> inside figure, example, or table titles -->
 
 264       <xsl:when test="local-name(..) = 'title'
 
 265                       and (local-name(../..) = 'figure'
 
 266                       or local-name(../..) = 'example'
 
 267                       or local-name(../..) = 'table')">
 
 268         <xsl:copy-of select="$content"/>
 
 272           <xsl:copy-of select="$content"/>
 
 276     <xsl:call-template name="apply-annotations"/>
 
 280 <xsl:template name="inline.italicseq">
 
 281   <xsl:param name="content">
 
 282     <xsl:call-template name="anchor"/>
 
 283     <xsl:call-template name="simple.xlink">
 
 284       <xsl:with-param name="content">
 
 285         <xsl:apply-templates/>
 
 290     <xsl:call-template name="common.html.attributes"/>
 
 291     <xsl:copy-of select="$content"/>
 
 292     <xsl:call-template name="apply-annotations"/>
 
 296 <xsl:template name="inline.boldmonoseq">
 
 297   <xsl:param name="content">
 
 298     <xsl:call-template name="anchor"/>
 
 299     <xsl:call-template name="simple.xlink">
 
 300       <xsl:with-param name="content">
 
 301         <xsl:apply-templates/>
 
 305   <!-- don't put <strong> inside figure, example, or table titles -->
 
 306   <!-- or other titles that may already be represented with <strong>'s. -->
 
 308     <xsl:when test="local-name(..) = 'title'
 
 309                     and (local-name(../..) = 'figure'
 
 310                          or local-name(../..) = 'example'
 
 311                          or local-name(../..) = 'table'
 
 312                          or local-name(../..) = 'formalpara')">
 
 314         <xsl:call-template name="common.html.attributes"/>
 
 315         <xsl:copy-of select="$content"/>
 
 316         <xsl:call-template name="apply-annotations"/>
 
 321         <xsl:call-template name="common.html.attributes"/>
 
 323           <xsl:call-template name="generate.html.title"/>
 
 324           <xsl:call-template name="dir"/>
 
 325           <xsl:copy-of select="$content"/>
 
 327         <xsl:call-template name="apply-annotations"/>
 
 333 <xsl:template name="inline.italicmonoseq">
 
 334   <xsl:param name="content">
 
 335     <xsl:call-template name="anchor"/>
 
 336     <xsl:call-template name="simple.xlink">
 
 337       <xsl:with-param name="content">
 
 338         <xsl:apply-templates/>
 
 343     <xsl:call-template name="common.html.attributes"/>
 
 345       <xsl:call-template name="generate.html.title"/>
 
 346       <xsl:call-template name="dir"/>
 
 347       <xsl:copy-of select="$content"/>
 
 348       <xsl:call-template name="apply-annotations"/>
 
 353 <xsl:template name="inline.superscriptseq">
 
 354   <xsl:param name="content">
 
 355     <xsl:call-template name="anchor"/>
 
 356     <xsl:call-template name="simple.xlink">
 
 357       <xsl:with-param name="content">
 
 358         <xsl:apply-templates/>
 
 363     <xsl:call-template name="generate.html.title"/>
 
 364     <xsl:call-template name="dir"/>
 
 365     <xsl:copy-of select="$content"/>
 
 366     <xsl:call-template name="apply-annotations"/>
 
 370 <xsl:template name="inline.subscriptseq">
 
 371   <xsl:param name="content">
 
 372     <xsl:call-template name="anchor"/>
 
 373     <xsl:call-template name="simple.xlink">
 
 374       <xsl:with-param name="content">
 
 375         <xsl:apply-templates/>
 
 380     <xsl:call-template name="generate.html.title"/>
 
 381     <xsl:call-template name="dir"/>
 
 382     <xsl:copy-of select="$content"/>
 
 383     <xsl:call-template name="apply-annotations"/>
 
 387 <!-- ==================================================================== -->
 
 388 <!-- some special cases -->
 
 390 <xsl:template match="author">
 
 391   <xsl:param name="content">
 
 392     <xsl:call-template name="anchor"/>
 
 393     <xsl:call-template name="simple.xlink">
 
 394       <xsl:with-param name="content">
 
 395         <xsl:call-template name="person.name"/>
 
 398     <xsl:call-template name="apply-annotations"/>
 
 402     <xsl:call-template name="common.html.attributes"/>
 
 403     <xsl:copy-of select="$content"/>
 
 407 <xsl:template match="editor">
 
 408   <xsl:param name="content">
 
 409     <xsl:call-template name="anchor"/>
 
 410     <xsl:call-template name="simple.xlink">
 
 411       <xsl:with-param name="content">
 
 412         <xsl:call-template name="person.name"/>
 
 415     <xsl:call-template name="apply-annotations"/>
 
 419     <xsl:call-template name="common.html.attributes"/>
 
 420     <xsl:copy-of select="$content"/>
 
 424 <xsl:template match="othercredit">
 
 425   <xsl:param name="content">
 
 426     <xsl:call-template name="anchor"/>
 
 427     <xsl:call-template name="simple.xlink">
 
 428       <xsl:with-param name="content">
 
 429         <xsl:call-template name="person.name"/>
 
 432     <xsl:call-template name="apply-annotations"/>
 
 436     <xsl:call-template name="common.html.attributes"/>
 
 437     <xsl:copy-of select="$content"/>
 
 441 <xsl:template match="authorinitials">
 
 442   <xsl:call-template name="inline.charseq"/>
 
 445 <!-- ==================================================================== -->
 
 447 <xsl:template match="accel">
 
 448   <xsl:call-template name="inline.charseq"/>
 
 451 <xsl:template match="action">
 
 452   <xsl:call-template name="inline.charseq"/>
 
 455 <xsl:template match="application">
 
 456   <xsl:call-template name="inline.charseq"/>
 
 459 <xsl:template match="classname">
 
 460   <xsl:call-template name="inline.monoseq"/>
 
 463 <xsl:template match="exceptionname">
 
 464   <xsl:call-template name="inline.monoseq"/>
 
 467 <xsl:template match="interfacename">
 
 468   <xsl:call-template name="inline.monoseq"/>
 
 471 <xsl:template match="methodname">
 
 472   <xsl:call-template name="inline.monoseq"/>
 
 475 <xsl:template match="command">
 
 476   <xsl:call-template name="inline.boldseq"/>
 
 479 <xsl:template match="computeroutput">
 
 480   <xsl:call-template name="inline.monoseq"/>
 
 483 <xsl:template match="constant">
 
 484   <xsl:call-template name="inline.monoseq"/>
 
 487 <xsl:template match="database">
 
 488   <xsl:call-template name="inline.charseq"/>
 
 491 <xsl:template match="date">
 
 492   <!-- should this support locale-specific formatting? how? -->
 
 493   <xsl:call-template name="inline.charseq"/>
 
 496 <xsl:template match="errorcode">
 
 497   <xsl:call-template name="inline.charseq"/>
 
 500 <xsl:template match="errorname">
 
 501   <xsl:call-template name="inline.charseq"/>
 
 504 <xsl:template match="errortype">
 
 505   <xsl:call-template name="inline.charseq"/>
 
 508 <xsl:template match="errortext">
 
 509   <xsl:call-template name="inline.charseq"/>
 
 512 <xsl:template match="envar">
 
 513   <xsl:call-template name="inline.monoseq"/>
 
 516 <xsl:template match="filename">
 
 517   <xsl:call-template name="inline.monoseq"/>
 
 520 <xsl:template match="function">
 
 522     <xsl:when test="$function.parens != '0'
 
 523                     and (parameter or function or replaceable)">
 
 524       <xsl:variable name="nodes" select="text()|*"/>
 
 525       <xsl:call-template name="inline.monoseq">
 
 526         <xsl:with-param name="content">
 
 527           <xsl:call-template name="simple.xlink">
 
 528             <xsl:with-param name="content">
 
 529               <xsl:apply-templates select="$nodes[1]"/>
 
 534       <xsl:text>(</xsl:text>
 
 535       <xsl:apply-templates select="$nodes[position()>1]"/>
 
 536       <xsl:text>)</xsl:text>
 
 539      <xsl:call-template name="inline.monoseq"/>
 
 544 <xsl:template match="function/parameter" priority="2">
 
 545   <xsl:call-template name="inline.italicmonoseq"/>
 
 546   <xsl:if test="following-sibling::*">
 
 547     <xsl:text>, </xsl:text>
 
 551 <xsl:template match="function/replaceable" priority="2">
 
 552   <xsl:call-template name="inline.italicmonoseq"/>
 
 553   <xsl:if test="following-sibling::*">
 
 554     <xsl:text>, </xsl:text>
 
 558 <xsl:template match="guibutton">
 
 559   <xsl:call-template name="inline.charseq"/>
 
 562 <xsl:template match="guiicon">
 
 563   <xsl:call-template name="inline.charseq"/>
 
 566 <xsl:template match="guilabel">
 
 567   <xsl:call-template name="inline.charseq"/>
 
 570 <xsl:template match="guimenu">
 
 571   <xsl:call-template name="inline.charseq"/>
 
 574 <xsl:template match="guimenuitem">
 
 575   <xsl:call-template name="inline.charseq"/>
 
 578 <xsl:template match="guisubmenu">
 
 579   <xsl:call-template name="inline.charseq"/>
 
 582 <xsl:template match="hardware">
 
 583   <xsl:call-template name="inline.charseq"/>
 
 586 <xsl:template match="interface">
 
 587   <xsl:call-template name="inline.charseq"/>
 
 590 <xsl:template match="interfacedefinition">
 
 591   <xsl:call-template name="inline.charseq"/>
 
 594 <xsl:template match="keycap">
 
 595   <xsl:call-template name="inline.boldseq"/>
 
 598 <xsl:template match="keycode">
 
 599   <xsl:call-template name="inline.charseq"/>
 
 602 <xsl:template match="keysym">
 
 603   <xsl:call-template name="inline.charseq"/>
 
 606 <xsl:template match="literal">
 
 607   <xsl:call-template name="inline.monoseq"/>
 
 610 <xsl:template match="code">
 
 611   <xsl:call-template name="inline.monoseq"/>
 
 614 <xsl:template match="medialabel">
 
 615   <xsl:call-template name="inline.italicseq"/>
 
 618 <xsl:template match="shortcut">
 
 619   <xsl:call-template name="inline.boldseq"/>
 
 622 <xsl:template match="mousebutton">
 
 623   <xsl:call-template name="inline.charseq"/>
 
 626 <xsl:template match="option">
 
 627   <xsl:call-template name="inline.monoseq"/>
 
 630 <xsl:template match="package">
 
 631   <xsl:call-template name="inline.charseq"/>
 
 634 <xsl:template match="parameter">
 
 635   <xsl:call-template name="inline.italicmonoseq"/>
 
 638 <xsl:template match="property">
 
 639   <xsl:call-template name="inline.charseq"/>
 
 642 <xsl:template match="prompt">
 
 643   <xsl:call-template name="inline.monoseq"/>
 
 646 <xsl:template match="replaceable" priority="1">
 
 647   <xsl:call-template name="inline.italicmonoseq"/>
 
 650 <xsl:template match="returnvalue">
 
 651   <xsl:call-template name="inline.charseq"/>
 
 654 <xsl:template match="structfield">
 
 655   <xsl:call-template name="inline.italicmonoseq"/>
 
 658 <xsl:template match="structname">
 
 659   <xsl:call-template name="inline.charseq"/>
 
 662 <xsl:template match="symbol">
 
 663   <xsl:call-template name="inline.charseq"/>
 
 666 <xsl:template match="systemitem">
 
 667   <xsl:call-template name="inline.monoseq"/>
 
 670 <xsl:template match="token">
 
 671   <xsl:call-template name="inline.charseq"/>
 
 674 <xsl:template match="type">
 
 675   <xsl:call-template name="inline.charseq"/>
 
 678 <xsl:template match="userinput">
 
 679   <xsl:call-template name="inline.boldmonoseq"/>
 
 682 <xsl:template match="abbrev">
 
 683   <xsl:call-template name="inline.charseq">
 
 684     <xsl:with-param name="wrapper-name">abbr</xsl:with-param>
 
 688 <xsl:template match="acronym">
 
 689   <xsl:call-template name="inline.charseq">
 
 690     <xsl:with-param name="wrapper-name">acronym</xsl:with-param>
 
 694 <xsl:template match="citerefentry">
 
 696     <xsl:when test="$citerefentry.link != '0'">
 
 698         <xsl:apply-templates select="." mode="common.html.attributes"/>
 
 699         <xsl:attribute name="href">
 
 700           <xsl:call-template name="generate.citerefentry.link"/>
 
 702         <xsl:call-template name="inline.charseq"/>
 
 706       <xsl:call-template name="inline.charseq"/>
 
 711 <xsl:template name="generate.citerefentry.link">
 
 715 <xsl:template name="x.generate.citerefentry.link">
 
 716   <xsl:text>http://example.com/cgi-bin/man.cgi?</xsl:text>
 
 717   <xsl:value-of select="refentrytitle"/>
 
 718   <xsl:text>(</xsl:text>
 
 719   <xsl:value-of select="manvolnum"/>
 
 720   <xsl:text>)</xsl:text>
 
 723 <xsl:template match="citetitle">
 
 725     <xsl:when test="@pubwork = 'article'">
 
 726       <xsl:call-template name="gentext.startquote"/>
 
 727       <xsl:call-template name="inline.charseq"/>
 
 728       <xsl:call-template name="gentext.endquote"/>
 
 731       <xsl:call-template name="inline.italicseq"/>
 
 736 <xsl:template match="emphasis">
 
 739       <!-- We don't want empty @class values, so do not propagate empty @roles -->
 
 740       <xsl:when test="@role  and
 
 741                       normalize-space(@role) != '' and
 
 742                       $emphasis.propagates.style != 0">
 
 743         <xsl:apply-templates select="." mode="common.html.attributes">
 
 744           <xsl:with-param name="class" select="@role"/>
 
 745         </xsl:apply-templates>
 
 748         <xsl:apply-templates select="." mode="common.html.attributes"/>
 
 751     <xsl:call-template name="anchor"/>
 
 753     <xsl:call-template name="simple.xlink">
 
 754       <xsl:with-param name="content">
 
 756           <xsl:when test="@role = 'bold' or @role='strong'">
 
 757             <!-- backwards compatibility: make bold into b elements, but -->
 
 758             <!-- don't put bold inside figure, example, or table titles -->
 
 760               <xsl:when test="local-name(..) = 'title'
 
 761                               and (local-name(../..) = 'figure'
 
 762                               or local-name(../..) = 'example'
 
 763                               or local-name(../..) = 'table')">
 
 764                 <xsl:apply-templates/>
 
 767                 <strong><xsl:apply-templates/></strong>
 
 771           <xsl:when test="@role and $emphasis.propagates.style != 0">
 
 772             <xsl:apply-templates/>
 
 775             <em><xsl:apply-templates/></em>
 
 783 <xsl:template match="foreignphrase">
 
 785     <xsl:apply-templates select="." mode="common.html.attributes"/>
 
 786     <xsl:call-template name="inline.italicseq"/>
 
 790 <xsl:template match="markup">
 
 791   <xsl:call-template name="inline.charseq"/>
 
 794 <xsl:template match="phrase">
 
 796     <xsl:call-template name="locale.html.attributes"/>
 
 797     <!-- We don't want empty @class values, so do not propagate empty @roles -->
 
 798     <xsl:if test="@role and 
 
 799                   normalize-space(@role) != '' and
 
 800                   $phrase.propagates.style != 0">
 
 801       <xsl:apply-templates select="." mode="class.attribute">
 
 802         <xsl:with-param name="class" select="@role"/>
 
 803       </xsl:apply-templates>
 
 805     <xsl:call-template name="dir"/>
 
 806     <xsl:call-template name="anchor"/>
 
 807     <xsl:call-template name="simple.xlink">
 
 808       <xsl:with-param name="content">
 
 809         <xsl:apply-templates/>
 
 812     <xsl:call-template name="apply-annotations"/>
 
 816 <xsl:template match="quote">
 
 817   <xsl:variable name="depth">
 
 818     <xsl:call-template name="dot.count">
 
 819       <xsl:with-param name="string">
 
 820         <xsl:number level="multiple"/>
 
 825     <xsl:apply-templates select="." mode="common.html.attributes"/>
 
 826     <xsl:call-template name="anchor"/>
 
 828       <xsl:when test="$depth mod 2 = 0">
 
 829         <xsl:call-template name="gentext.startquote"/>
 
 830         <xsl:call-template name="inline.charseq"/>
 
 831         <xsl:call-template name="gentext.endquote"/>
 
 834         <xsl:call-template name="gentext.nestedstartquote"/>
 
 835         <xsl:call-template name="inline.charseq"/>
 
 836         <xsl:call-template name="gentext.nestedendquote"/>
 
 842 <xsl:template match="varname">
 
 843   <xsl:call-template name="inline.monoseq"/>
 
 846 <xsl:template match="wordasword">
 
 847   <xsl:call-template name="inline.italicseq"/>
 
 850 <xsl:template match="lineannotation">
 
 852     <xsl:apply-templates select="." mode="common.html.attributes"/>
 
 853     <xsl:call-template name="inline.charseq"/>
 
 857 <xsl:template match="superscript">
 
 858   <xsl:call-template name="inline.superscriptseq"/>
 
 861 <xsl:template match="subscript">
 
 862   <xsl:call-template name="inline.subscriptseq"/>
 
 865 <xsl:template match="trademark">
 
 866   <xsl:call-template name="inline.charseq"/>
 
 868     <xsl:when test="@class = 'copyright'
 
 869                     or @class = 'registered'">
 
 870       <xsl:call-template name="dingbat">
 
 871         <xsl:with-param name="dingbat" select="@class"/>
 
 874     <xsl:when test="@class = 'service'">
 
 878       <xsl:call-template name="dingbat">
 
 879         <xsl:with-param name="dingbat" select="'trademark'"/>
 
 885 <xsl:template match="firstterm">
 
 886   <xsl:call-template name="glossterm">
 
 887     <xsl:with-param name="firstterm" select="1"/>
 
 891 <xsl:template match="glossterm" name="glossterm">
 
 892   <xsl:param name="firstterm" select="0"/>
 
 894   <!-- To avoid extra <a name=""> anchor from inline.italicseq -->
 
 895   <xsl:variable name="content">
 
 896     <xsl:apply-templates/>
 
 900     <xsl:when test="($firstterm.only.link = 0 or $firstterm = 1) and @linkend">
 
 901       <xsl:variable name="targets" select="key('id',@linkend)"/>
 
 902       <xsl:variable name="target" select="$targets[1]"/>
 
 904       <xsl:call-template name="check.id.unique">
 
 905         <xsl:with-param name="linkend" select="@linkend"/>
 
 909         <xsl:when test="$target">
 
 911             <xsl:apply-templates select="." mode="common.html.attributes"/>
 
 912             <xsl:if test="@id or @xml:id">
 
 913               <xsl:attribute name="name">
 
 914                 <xsl:value-of select="(@id|@xml:id)[1]"/>
 
 918             <xsl:attribute name="href">
 
 919               <xsl:call-template name="href.target">
 
 920                 <xsl:with-param name="object" select="$target"/>
 
 924             <xsl:call-template name="inline.italicseq">
 
 925               <xsl:with-param name="content" select="$content"/>
 
 930           <xsl:call-template name="inline.italicseq">
 
 931             <xsl:with-param name="content" select="$content"/>
 
 937     <xsl:when test="not(@linkend)
 
 938                     and ($firstterm.only.link = 0 or $firstterm = 1)
 
 939                     and ($glossterm.auto.link != 0)
 
 940                     and $glossary.collection != ''">
 
 941       <xsl:variable name="term">
 
 943           <xsl:when test="@baseform"><xsl:value-of select="@baseform"/></xsl:when>
 
 944           <xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
 
 948       <xsl:variable name="cterm"
 
 949            select="(document($glossary.collection,.)//glossentry[glossterm=$term])[1]"/>
 
 951       <!-- HACK HACK HACK! But it works... -->
 
 952       <!-- You'd need to do more work if you wanted to chunk on glossdiv, though -->
 
 954       <xsl:variable name="glossary" select="//glossary[@role='auto']"/>
 
 956       <xsl:if test="count($glossary) != 1">
 
 958           <xsl:text>Warning: glossary.collection specified, but there are </xsl:text>
 
 959           <xsl:value-of select="count($glossary)"/>
 
 960           <xsl:text> automatic glossaries</xsl:text>
 
 964       <xsl:variable name="glosschunk">
 
 965         <xsl:call-template name="href.target">
 
 966           <xsl:with-param name="object" select="$glossary"/>
 
 970       <xsl:variable name="chunkbase">
 
 972           <xsl:when test="contains($glosschunk, '#')">
 
 973             <xsl:value-of select="substring-before($glosschunk, '#')"/>
 
 976             <xsl:value-of select="$glosschunk"/>
 
 982         <xsl:when test="not($cterm)">
 
 984             <xsl:text>There's no entry for </xsl:text>
 
 985             <xsl:value-of select="$term"/>
 
 986             <xsl:text> in </xsl:text>
 
 987             <xsl:value-of select="$glossary.collection"/>
 
 989           <xsl:call-template name="inline.italicseq"/>
 
 992           <xsl:variable name="id">
 
 993             <xsl:call-template name="object.id">
 
 994               <xsl:with-param name="object" select="$cterm"/>
 
 997           <a href="{$chunkbase}#{$id}">
 
 998             <xsl:apply-templates select="." mode="common.html.attributes"/>
 
 999             <xsl:call-template name="inline.italicseq">
 
1000               <xsl:with-param name="content" select="$content"/>
 
1001             </xsl:call-template>
 
1007     <xsl:when test="not(@linkend)
 
1008                     and ($firstterm.only.link = 0 or $firstterm = 1)
 
1009                     and $glossterm.auto.link != 0">
 
1010       <xsl:variable name="term">
 
1012           <xsl:when test="@baseform">
 
1013             <xsl:value-of select="normalize-space(@baseform)"/>
 
1016             <xsl:value-of select="normalize-space(.)"/>
 
1020       <xsl:variable name="targets"
 
1021                     select="key('glossentries', $term)"/>
 
1022       <xsl:variable name="target" select="$targets[1]"/>
 
1025         <xsl:when test="count($targets)=0">
 
1027             <xsl:text>Error: no glossentry for glossterm: </xsl:text>
 
1028             <xsl:value-of select="."/>
 
1029             <xsl:text>.</xsl:text>
 
1031           <xsl:call-template name="inline.italicseq"/>
 
1035             <xsl:apply-templates select="." mode="common.html.attributes"/>
 
1036             <xsl:if test="@id or @xml:id">
 
1037               <xsl:attribute name="name">
 
1038                 <xsl:value-of select="(@id|@xml:id)[1]"/>
 
1042             <xsl:attribute name="href">
 
1043               <xsl:call-template name="href.target">
 
1044                 <xsl:with-param name="object" select="$target"/>
 
1045               </xsl:call-template>
 
1048             <xsl:call-template name="inline.italicseq">
 
1049               <xsl:with-param name="content" select="$content"/>
 
1050             </xsl:call-template>
 
1057       <xsl:call-template name="inline.italicseq"/>
 
1062 <xsl:template match="termdef">
 
1064     <xsl:apply-templates select="." mode="common.html.attributes"/>
 
1065     <xsl:call-template name="gentext.template">
 
1066       <xsl:with-param name="context" select="'termdef'"/>
 
1067       <xsl:with-param name="name" select="'prefix'"/>
 
1068     </xsl:call-template>
 
1069     <xsl:apply-templates/>
 
1070     <xsl:call-template name="gentext.template">
 
1071       <xsl:with-param name="context" select="'termdef'"/>
 
1072       <xsl:with-param name="name" select="'suffix'"/>
 
1073     </xsl:call-template>
 
1077 <xsl:template match="sgmltag|tag">
 
1078   <xsl:call-template name="format.sgmltag"/>
 
1081 <xsl:template name="format.sgmltag">
 
1082   <xsl:param name="class">
 
1084       <xsl:when test="@class">
 
1085         <xsl:value-of select="@class"/>
 
1087       <xsl:otherwise>element</xsl:otherwise>
 
1091   <xsl:variable name="content">
 
1093       <xsl:when test="$class='attribute'">
 
1094         <xsl:apply-templates/>
 
1096       <xsl:when test="$class='attvalue'">
 
1097         <xsl:apply-templates/>
 
1099       <xsl:when test="$class='element'">
 
1100         <xsl:apply-templates/>
 
1102       <xsl:when test="$class='endtag'">
 
1103         <xsl:text></</xsl:text>
 
1104         <xsl:apply-templates/>
 
1105         <xsl:text>></xsl:text>
 
1107       <xsl:when test="$class='genentity'">
 
1108         <xsl:text>&</xsl:text>
 
1109         <xsl:apply-templates/>
 
1110         <xsl:text>;</xsl:text>
 
1112       <xsl:when test="$class='numcharref'">
 
1113         <xsl:text>&#</xsl:text>
 
1114         <xsl:apply-templates/>
 
1115         <xsl:text>;</xsl:text>
 
1117       <xsl:when test="$class='paramentity'">
 
1118         <xsl:text>%</xsl:text>
 
1119         <xsl:apply-templates/>
 
1120         <xsl:text>;</xsl:text>
 
1122       <xsl:when test="$class='pi'">
 
1123         <xsl:text><?</xsl:text>
 
1124         <xsl:apply-templates/>
 
1125         <xsl:text>></xsl:text>
 
1127       <xsl:when test="$class='xmlpi'">
 
1128         <xsl:text><?</xsl:text>
 
1129         <xsl:apply-templates/>
 
1130         <xsl:text>?></xsl:text>
 
1132       <xsl:when test="$class='starttag'">
 
1133         <xsl:text><</xsl:text>
 
1134         <xsl:apply-templates/>
 
1135         <xsl:text>></xsl:text>
 
1137       <xsl:when test="$class='emptytag'">
 
1138         <xsl:text><</xsl:text>
 
1139         <xsl:apply-templates/>
 
1140         <xsl:text>/></xsl:text>
 
1142       <xsl:when test="$class='sgmlcomment' or $class='comment'">
 
1143         <xsl:text><!--</xsl:text>
 
1144         <xsl:apply-templates/>
 
1145         <xsl:text>--></xsl:text>
 
1148         <xsl:apply-templates/>
 
1154     <xsl:apply-templates select="." mode="common.html.attributes">
 
1155       <xsl:with-param name="class" select="concat('sgmltag-', $class)"/>
 
1156     </xsl:apply-templates>
 
1157     <xsl:call-template name="simple.xlink">
 
1158       <xsl:with-param name="content" select="$content"/>
 
1159     </xsl:call-template>
 
1163 <xsl:template match="email">
 
1164   <xsl:call-template name="inline.monoseq">
 
1165     <xsl:with-param name="content">
 
1166       <xsl:if test="not($email.delimiters.enabled = 0)">
 
1167         <xsl:text><</xsl:text>
 
1170         <xsl:apply-templates select="." mode="common.html.attributes"/>
 
1171         <xsl:attribute name="href">
 
1172           <xsl:text>mailto:</xsl:text>
 
1173           <xsl:value-of select="."/>
 
1175         <xsl:apply-templates/>
 
1177       <xsl:if test="not($email.delimiters.enabled = 0)">
 
1178         <xsl:text>></xsl:text>
 
1181   </xsl:call-template>
 
1184 <xsl:template match="keycombo">
 
1185   <xsl:variable name="action" select="@action"/>
 
1186   <xsl:variable name="joinchar">
 
1188       <xsl:when test="$action='seq'"><xsl:text> </xsl:text></xsl:when>
 
1189       <xsl:when test="$action='simul'">+</xsl:when>
 
1190       <xsl:when test="$action='press'">-</xsl:when>
 
1191       <xsl:when test="$action='click'">-</xsl:when>
 
1192       <xsl:when test="$action='double-click'">-</xsl:when>
 
1193       <xsl:when test="$action='other'"></xsl:when>
 
1194       <xsl:otherwise>+</xsl:otherwise>
 
1197   <xsl:for-each select="*">
 
1198     <xsl:if test="position()>1"><xsl:value-of select="$joinchar"/></xsl:if>
 
1199     <xsl:apply-templates select="."/>
 
1203 <xsl:template match="uri">
 
1204   <xsl:call-template name="inline.monoseq"/>
 
1207 <!-- ==================================================================== -->
 
1209 <xsl:template match="menuchoice">
 
1210   <xsl:variable name="shortcut" select="./shortcut"/>
 
1211   <xsl:call-template name="process.menuchoice"/>
 
1212   <xsl:if test="$shortcut">
 
1213     <xsl:text> (</xsl:text>
 
1214     <xsl:apply-templates select="$shortcut"/>
 
1215     <xsl:text>)</xsl:text>
 
1219 <xsl:template name="process.menuchoice">
 
1220   <xsl:param name="nodelist" select="guibutton|guiicon|guilabel|guimenu|guimenuitem|guisubmenu|interface"/><!-- not(shortcut) -->
 
1221   <xsl:param name="count" select="1"/>
 
1224     <xsl:when test="$count>count($nodelist)"></xsl:when>
 
1225     <xsl:when test="$count=1">
 
1226       <xsl:apply-templates select="$nodelist[$count=position()]"/>
 
1227       <xsl:call-template name="process.menuchoice">
 
1228         <xsl:with-param name="nodelist" select="$nodelist"/>
 
1229         <xsl:with-param name="count" select="$count+1"/>
 
1230       </xsl:call-template>
 
1233       <xsl:variable name="node" select="$nodelist[$count=position()]"/>
 
1235         <xsl:when test="local-name($node)='guimenuitem'
 
1236                         or local-name($node)='guisubmenu'">
 
1237           <xsl:value-of select="$menuchoice.menu.separator"/>
 
1240           <xsl:value-of select="$menuchoice.separator"/>
 
1243       <xsl:apply-templates select="$node"/>
 
1244       <xsl:call-template name="process.menuchoice">
 
1245         <xsl:with-param name="nodelist" select="$nodelist"/>
 
1246         <xsl:with-param name="count" select="$count+1"/>
 
1247       </xsl:call-template>
 
1252 <!-- ==================================================================== -->
 
1254 <xsl:template match="optional">
 
1255   <xsl:value-of select="$arg.choice.opt.open.str"/>
 
1256   <xsl:call-template name="inline.charseq"/>
 
1257   <xsl:value-of select="$arg.choice.opt.close.str"/>
 
1260 <xsl:template match="citation">
 
1261   <!-- todo: integrate with bibliography collection -->
 
1262   <xsl:variable name="targets" select="(//biblioentry | //bibliomixed)[abbrev = string(current())]"/>
 
1263   <xsl:variable name="target" select="$targets[1]"/>
 
1266     <!-- try automatic linking based on match to abbrev -->
 
1267     <xsl:when test="$target and not(xref) and not(link)">
 
1269       <xsl:text>[</xsl:text>
 
1271         <xsl:apply-templates select="." mode="common.html.attributes"/>
 
1272         <xsl:attribute name="href">
 
1273           <xsl:call-template name="href.target">
 
1274             <xsl:with-param name="object" select="$target"/>
 
1275           </xsl:call-template>
 
1279           <xsl:when test="$bibliography.numbered != 0">
 
1280             <xsl:apply-templates select="$target" mode="citation"/>
 
1283             <xsl:call-template name="inline.charseq"/>
 
1288       <xsl:text>]</xsl:text>
 
1291       <xsl:text>[</xsl:text>
 
1292       <xsl:call-template name="inline.charseq"/>
 
1293       <xsl:text>]</xsl:text>
 
1298 <xsl:template match="citebiblioid">
 
1299   <xsl:variable name="targets" select="//*[biblioid = string(current())]"/>
 
1300   <xsl:variable name="target" select="$targets[1]"/>
 
1303     <!-- try automatic linking based on match to parent of biblioid -->
 
1304     <xsl:when test="$target and not(xref) and not(link)">
 
1306       <xsl:text>[</xsl:text>
 
1308         <xsl:apply-templates select="." mode="common.html.attributes"/>
 
1309         <xsl:attribute name="href">
 
1310           <xsl:call-template name="href.target">
 
1311             <xsl:with-param name="object" select="$target"/>
 
1312           </xsl:call-template>
 
1315         <xsl:call-template name="inline.charseq"/>
 
1318       <xsl:text>]</xsl:text>
 
1321       <xsl:text>[</xsl:text>
 
1322       <xsl:call-template name="inline.charseq"/>
 
1323       <xsl:text>]</xsl:text>
 
1328 <xsl:template match="biblioentry|bibliomixed" mode="citation">
 
1329   <xsl:number from="bibliography" count="biblioentry|bibliomixed"
 
1330               level="any" format="1"/>
 
1333 <!-- ==================================================================== -->
 
1335 <xsl:template match="comment[&comment.block.parents;]|remark[&comment.block.parents;]">
 
1336   <xsl:if test="$show.comments != 0">
 
1337     <p class="remark"><em><xsl:call-template name="inline.charseq"/></em></p>
 
1341 <xsl:template match="comment|remark">
 
1342   <xsl:if test="$show.comments != 0">
 
1343     <em><xsl:call-template name="inline.charseq"/></em>
 
1347 <!-- ==================================================================== -->
 
1349 <xsl:template match="productname">
 
1350   <xsl:call-template name="inline.charseq"/>
 
1351   <xsl:if test="@class">
 
1352     <xsl:call-template name="dingbat">
 
1353       <xsl:with-param name="dingbat" select="@class"/>
 
1354     </xsl:call-template>
 
1358 <xsl:template match="productnumber">
 
1359   <xsl:call-template name="inline.charseq"/>
 
1362 <!-- ==================================================================== -->
 
1364 <xsl:template match="pob|street|city|state|postcode|country|otheraddr">
 
1365   <xsl:call-template name="inline.charseq"/>
 
1368 <xsl:template match="phone|fax">
 
1369   <xsl:call-template name="inline.charseq"/>
 
1372 <!-- in Addresses, for example -->
 
1373 <xsl:template match="honorific|firstname|surname|lineage|othername">
 
1374   <xsl:call-template name="inline.charseq"/>
 
1377 <!-- ==================================================================== -->
 
1379 <xsl:template match="person">
 
1380   <xsl:param name="content">
 
1381     <xsl:call-template name="anchor"/>
 
1382     <xsl:call-template name="simple.xlink">
 
1383       <xsl:with-param name="content">
 
1384         <xsl:apply-templates select="personname"/>
 
1386     </xsl:call-template>
 
1387     <xsl:call-template name="apply-annotations"/>
 
1391     <xsl:apply-templates select="." mode="common.html.attributes"/>
 
1392     <xsl:copy-of select="$content"/>
 
1396 <xsl:template match="personname">
 
1397   <xsl:param name="content">
 
1398     <xsl:call-template name="anchor"/>
 
1399     <xsl:call-template name="simple.xlink">
 
1400       <xsl:with-param name="content">
 
1401         <xsl:call-template name="person.name"/>
 
1403     </xsl:call-template>
 
1404     <xsl:call-template name="apply-annotations"/>
 
1408     <xsl:apply-templates select="." mode="common.html.attributes"/>
 
1409     <xsl:copy-of select="$content"/>
 
1413 <!-- ==================================================================== -->
 
1415 <xsl:template match="org">
 
1416   <xsl:param name="content">
 
1417     <xsl:call-template name="anchor"/>
 
1418     <xsl:call-template name="simple.xlink">
 
1419       <xsl:with-param name="content">
 
1420         <xsl:apply-templates/>
 
1422     </xsl:call-template>
 
1423     <xsl:call-template name="apply-annotations"/>
 
1427     <xsl:apply-templates select="." mode="common.html.attributes"/>
 
1428     <xsl:copy-of select="$content"/>
 
1432 <xsl:template match="orgname">
 
1433   <xsl:param name="content">
 
1434     <xsl:call-template name="anchor"/>
 
1435     <xsl:call-template name="simple.xlink">
 
1436       <xsl:with-param name="content">
 
1437         <xsl:apply-templates/>
 
1439     </xsl:call-template>
 
1440     <xsl:call-template name="apply-annotations"/>
 
1444     <xsl:apply-templates select="." mode="common.html.attributes"/>
 
1445     <xsl:copy-of select="$content"/>
 
1449 <xsl:template match="orgdiv">
 
1450   <xsl:param name="content">
 
1451     <xsl:call-template name="anchor"/>
 
1452     <xsl:call-template name="simple.xlink">
 
1453       <xsl:with-param name="content">
 
1454         <xsl:apply-templates/>
 
1456     </xsl:call-template>
 
1457     <xsl:call-template name="apply-annotations"/>
 
1461     <xsl:apply-templates select="." mode="common.html.attributes"/>
 
1462     <xsl:copy-of select="$content"/>
 
1466 <xsl:template match="affiliation">
 
1467   <xsl:param name="content">
 
1468     <xsl:call-template name="anchor"/>
 
1469     <xsl:call-template name="simple.xlink">
 
1470       <xsl:with-param name="content">
 
1471         <xsl:call-template name="person.name"/>
 
1473     </xsl:call-template>
 
1474     <xsl:call-template name="apply-annotations"/>
 
1478     <xsl:apply-templates select="." mode="common.html.attributes"/>
 
1479     <xsl:copy-of select="$content"/>
 
1483 <!-- ==================================================================== -->
 
1485 <xsl:template match="beginpage">
 
1486   <!-- does nothing; this *is not* markup to force a page break. -->