You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by ch...@apache.org on 2011/07/26 15:33:25 UTC

svn commit: r1151090 [2/3] - in /db/derby/docs/trunk/lib: dita2htmlImpl.xsl index.html map2htmtoc.xsl

Modified: db/derby/docs/trunk/lib/dita2htmlImpl.xsl
URL: http://svn.apache.org/viewvc/db/derby/docs/trunk/lib/dita2htmlImpl.xsl?rev=1151090&r1=1151089&r2=1151090&view=diff
==============================================================================
--- db/derby/docs/trunk/lib/dita2htmlImpl.xsl (original)
+++ db/derby/docs/trunk/lib/dita2htmlImpl.xsl Tue Jul 26 13:33:24 2011
@@ -1,3921 +1,3921 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!-- (c) Copyright IBM Corp. 2004, 2005 All Rights Reserved. -->
-
-<!DOCTYPE xsl:stylesheet [
-
-  <!ENTITY gt            "&gt;">
-  <!ENTITY lt            "&lt;">
-  <!ENTITY rbl           " ">
-  <!ENTITY nbsp          "&#xA0;">    <!-- &#160; -->
-  <!ENTITY quot          "&#34;">
-  <!ENTITY copyr         "&#169;">
-]>
-
-<xsl:stylesheet version="1.0"
-                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-
-
-
-<!-- =========== OTHER STYLESHEET INCLUDES/IMPORTS =========== -->
-
-<xsl:import href="../common/dita-utilities.xsl"/>
-<xsl:include href="get-meta.xsl"/>
-<xsl:include href="rel-links.xsl"/>
-<xsl:include href="../common/output-message.xsl"/>
-
-
-<!-- =========== OUTPUT METHOD =========== -->
-
-<!-- XHTML output with XML syntax -->
-<xsl:output method="xml"
-            encoding="utf-8"
-            indent="no"
-            doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
-            doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
-/>
-
-
-<!-- =========== DEFAULT VALUES FOR EXTERNALLY MODIFIABLE PARAMETERS =========== -->
-
-<!-- /CSS = default CSS filename parameter ('')-->
-<xsl:param name="CSS"/>
-<xsl:param name="dita-css" select="'commonltr.css'"/> <!-- left to right languages -->
-<xsl:param name="bidi-dita-css" select="'commonrtl.css'"/> <!-- bidirectional languages -->
-
-<!-- default CSS path parameter (null)-->
-<xsl:param name="CSSPATH"/>
-
-<!-- the file name containing XHTML to be placed in the HEAD area
-     (file name and extension only - no path). -->
-<xsl:param name="HDF"/>
-
-<!-- the file name containing XHTML to be placed in the BODY running-heading area
-     (file name and extension only - no path). -->
-<xsl:param name="HDR"/>
-
-<!-- the file name containing XHTML to be placed in the BODY running-footing area
-     (file name and extension only - no path). -->
-<xsl:param name="FTR"/>
-
-<!-- default "output artwork filenames" processing parameter ('no')-->
-<xsl:param name="ARTLBL" select="'no'"/><!-- "no" and "yes" are valid values; non-'yes' is ignored -->
-
-<!-- default "hide draft & cleanup content" processing parameter ('no' = hide them)-->
-<xsl:param name="DRAFT" select="'no'"/><!-- "no" and "yes" are valid values; non-'yes' is ignored -->
-
-<!-- default "hide index entries" processing parameter ('no' = hide them)-->
-<xsl:param name="INDEXSHOW" select="'no'"/><!-- "no" and "yes" are valid values; non-'yes' is ignored -->
-
-<!-- for now, disable breadcrumbs pending link group descision -->
-<xsl:param name="BREADCRUMBS" select="'no'"/> <!-- "no" and "yes" are valid values; non-'yes' is ignored -->
-
-<!-- the year for the copyright -->
-<xsl:param name="YEAR" select="'2005'"/>
-
-<!-- default "output extension" processing parameter ('.html')-->
-<xsl:param name="OUTEXT" select="'.html'"/><!-- "htm" and "html" are valid values -->
-
-<!-- the working directory that contains the document being transformed.
-     Needed as a directory prefix for the @conref "document()" function calls.
-     default is '../doc/')-->
-<xsl:param name="WORKDIR" select="'./'"/>
-
-<!-- the path back to the project. Used for c.gif, delta.gif, css to allow user's to have
-     these files in 1 location. -->
-<xsl:param name="PATH2PROJ"/>
-
-<!-- the file name (file name and extension only - no path) of the document being transformed.
-     Needed to help with debugging.
-     default is 'myfile.xml')-->
-<xsl:param name="FILENAME"/>
-
-<!-- the file name containing filter/flagging/revision information
-     (file name and extension only - no path).  - testfile: revflag.dita -->
-<xsl:param name="FILTERFILE"/>
-
-<!-- Debug mode - enables XSL debugging xsl-messages.
-     Needed to help with debugging.
-     default is 'no')-->
-<xsl:param name="DBG" select="'no'"/> <!-- "no" and "yes" are valid values; non-'yes' is ignored -->
-
-<!-- DITAEXT file extension name of dita topic file -->
-<xsl:param name="DITAEXT" select="'.dita'"/>
-
-<!-- =========== "GLOBAL" DECLARATIONS (see 35) =========== -->
-
-<!-- The document tree of filterfile returned by document($FILTERFILE,/)-->
-<xsl:variable name="FILTERDOC" select="document($FILTERFILE,/)"/>
-
-<!-- Define a newline character -->
-<xsl:variable name="newline"><xsl:text>
-</xsl:text></xsl:variable>
-
-<!-- Define the error message prefix identifier -->
-<xsl:variable name="msgprefix">IDXS</xsl:variable>
-
-<!-- Filler for A-name anchors  - was &nbsp;-->
-<xsl:variable name="afill"></xsl:variable>
-
-<!-- these elements are never processed in a conventional presentation. can be overridden. -->
-<xsl:template match="*[contains(@class,' topic/no-topic-nesting ')]"/>
-
-
-<!-- =========== ROOT RULE (just fall through; no side effects for new delivery contexts =========== -->
-
-<xsl:template match="/">
-  <xsl:apply-templates/>
-</xsl:template>
-
-
-<!-- =========== NESTED TOPIC RULES =========== -->
-
-<!-- This first template rule generates the outer-level shell for a delivery context.
-     In an override stylesheet, the same call to "chapter-setup" must be issued to
-     maintain the consistency of overall look'n'feel of the output HTML.
-     Match on the first DITA element -or- the first root 'topic' element. -->
-<xsl:template match="/dita | /*[contains(@class,' topic/topic ')]" priority="1" name="root_element">
-  <xsl:call-template name="chapter-setup"/>
-</xsl:template>
-
-<!-- child topics get a div wrapper and fall through -->
-<xsl:template match="*[contains(@class,' topic/topic ')]" name="child.topic">
-  <xsl:param name="nestlevel">
-      <xsl:choose>
-          <!-- Limit depth for historical reasons, could allow any depth. Previously limit was 5. -->
-          <xsl:when test="count(ancestor::*[contains(@class,' topic/topic ')]) > 9">9</xsl:when>
-          <xsl:otherwise><xsl:value-of select="count(ancestor::*[contains(@class,' topic/topic ')])"/></xsl:otherwise>
-      </xsl:choose>
-  </xsl:param>
-<div class="nested{$nestlevel}">
- <xsl:call-template name="gen-topic"/>
-</div><xsl:value-of select="$newline"/>
-</xsl:template>
-
-<xsl:template name="gen-topic">
- <xsl:choose>
-   <xsl:when test="parent::dita and not(preceding-sibling::*)">
-     <!-- Do not reset xml:lang if it is already set on <html> -->
-     <xsl:apply-templates select="@outputclass"/>
-   </xsl:when>
-   <xsl:otherwise><xsl:call-template name="commonattributes"/></xsl:otherwise>
- </xsl:choose>
- <xsl:call-template name="setidaname"/>
- <xsl:call-template name="gen-toc-id"/>
- <xsl:call-template name="flagit"/>
- <xsl:call-template name="start-revflag"/>
- <xsl:apply-templates/>
- <xsl:call-template name="end-revflag"/>
-</xsl:template>
-
-
-<!-- NESTED TOPIC TITLES (sensitive to nesting depth, but are still processed for contained markup) -->
-<!-- 1st level - topic/title -->
-<!-- Condensed topic title into single template without priorities; use $headinglevel to set heading.
-     If desired, somebody could pass in the value to manually set the heading level -->
-<xsl:template match="*[contains(@class,' topic/topic ')]/*[contains(@class,' topic/title ')]">
-  <xsl:param name="headinglevel">
-      <xsl:choose>
-          <xsl:when test="count(ancestor::*[contains(@class,' topic/topic ')]) > 6">6</xsl:when>
-          <xsl:otherwise><xsl:value-of select="count(ancestor::*[contains(@class,' topic/topic ')])"/></xsl:otherwise>
-      </xsl:choose>
-  </xsl:param>
-  <xsl:element name="h{$headinglevel}">
-      <xsl:attribute name="class">topictitle<xsl:value-of select="$headinglevel"/></xsl:attribute>
-      <xsl:call-template name="commonattributes"/>
-      <xsl:apply-templates/>
-  </xsl:element>
-  <xsl:value-of select="$newline"/>
-</xsl:template>
-
-<!-- Hide titlealts - they need to get pulled into the proper places -->
-<xsl:template match="*[contains(@class,' topic/titlealts ')]"/>
-
-
-<!-- =========== BODY/SECTION (not sensitive to nesting depth) =========== -->
-
-<xsl:template match="*[contains(@class,' topic/body ')]" name="topic.body">
-<div>
-  <xsl:call-template name="commonattributes"/>
-  <xsl:call-template name="setidaname"/>
-  <xsl:call-template name="flagit"/>
-  <xsl:call-template name="start-revflag"/>
-  <!-- here, you can generate a toc based on what's a child of body -->
-  <!--xsl:call-template name="gen-sect-ptoc"/--><!-- Works; not always wanted, though; could add a param to enable it.-->
-
-  <!-- Insert prev/next links. since they need to be scoped by who they're 'pooled' with, apply-templates in 'hierarchylink' mode to linkpools (or related-links itself) when they have children that have any of the following characteristics:
-       - role=ancestor (used for breadcrumb)
-       - role=next or role=previous (used for left-arrow and right-arrow before the breadcrumb)
-       - importance=required AND no role, or role=sibling or role=friend or role=previous or role=cousin (to generate prerequisite links)
-       - we can't just assume that links with importance=required are prerequisites, since a topic with eg role='next' might be required, while at the same time by definition not a prerequisite -->
-
-  <!-- get the short descr para -->
-  <xsl:apply-templates select="preceding-sibling::*[contains(@class,' topic/shortdesc ')]" mode="outofline"/>
-
-<!-- Insert pre-req links - after shortdesc - unless there is a prereq section about -->
-  <xsl:apply-templates select="following-sibling::*[contains(@class,' topic/related-links ')]" mode="prereqs"/>
-
-  <xsl:apply-templates/>
-  <xsl:call-template name="end-revflag"/>
-</div><xsl:value-of select="$newline"/>
-</xsl:template>
-
-<!-- no fallthru for shortdesc - needs to be pulled for 1st para and for abstract metadata -->
-<xsl:template match="*[contains(@class,' topic/shortdesc ')]"/>
-<!-- called shortdesc processing - para at start of topic -->
-<xsl:template match="*[contains(@class,' topic/shortdesc ')]" mode="outofline">
-<p>
-  <xsl:call-template name="commonattributes"/>
-  <xsl:apply-templates/>
-</p><xsl:value-of select="$newline"/>
-</xsl:template>
-
-<!-- section processor - div with no generated title -->
-<xsl:template match="*[contains(@class,' topic/section ')]" name="topic.section">
-<div class="section">
- <xsl:call-template name="commonattributes"/>
- <xsl:call-template name="gen-toc-id"/>
- <xsl:call-template name="setidaname"/>
- <xsl:call-template name="flagit"/>
- <xsl:variable name="revtest">
-   <xsl:if test="@rev and not($FILTERFILE='') and ($DRAFT='yes')"> 
-     <xsl:call-template name="find-active-rev-flag">
-       <xsl:with-param name="allrevs" select="@rev"/>
-     </xsl:call-template>
-   </xsl:if>
- </xsl:variable>
- <xsl:choose>
-   <xsl:when test="$revtest=1">   <!-- Rev is active - add the DIV -->
-    <div class="{@rev}"><xsl:apply-templates select="."  mode="section-fmt" /></div>
-   </xsl:when>
-   <xsl:otherwise>  <!-- Rev wasn't active - process normally -->
-    <xsl:apply-templates select="."  mode="section-fmt" />
-   </xsl:otherwise>
- </xsl:choose>
-</div><xsl:value-of select="$newline"/>
-</xsl:template>
-
-<xsl:template match="*[contains(@class,' topic/section ')]" mode="section-fmt">
-  <xsl:call-template name="start-revflag"/>
-  <xsl:call-template name="sect-heading"/>
-  <xsl:apply-templates select="*[not(contains(@class,' topic/title '))] | text() | comment() | processing-instruction()"/>
-  <xsl:call-template name="end-revflag"/>
-</xsl:template>
-
-<!-- example processor - div with no generated title -->
-<xsl:template match="*[contains(@class,' topic/example ')]" name="topic.example">
-<div class="example">
- <xsl:call-template name="commonattributes"/>
- <xsl:call-template name="setidaname"/>
- <xsl:call-template name="gen-toc-id"/>
- <xsl:variable name="revtest">
-   <xsl:if test="@rev and not($FILTERFILE='') and ($DRAFT='yes')"> 
-     <xsl:call-template name="find-active-rev-flag">
-       <xsl:with-param name="allrevs" select="@rev"/>
-     </xsl:call-template>
-   </xsl:if>
- </xsl:variable>
- <xsl:choose>
-   <xsl:when test="$revtest=1">   <!-- Rev is active - add the DIV -->
-    <div class="{@rev}"><xsl:apply-templates select="."  mode="example-fmt" /></div>
-   </xsl:when>
-   <xsl:otherwise>  <!-- Rev wasn't active - process normally -->
-    <xsl:apply-templates select="."  mode="example-fmt" />
-   </xsl:otherwise>
- </xsl:choose>
-</div><xsl:value-of select="$newline"/>
-</xsl:template>
-
-<xsl:template match="*[contains(@class,' topic/example ')]" mode="example-fmt">
-  <xsl:call-template name="start-revflag"/>
-  <xsl:call-template name="flagit"/>
-  <xsl:call-template name="sect-heading"/>
-  <xsl:apply-templates select="*[not(contains(@class,' topic/title '))] | text() | comment() | processing-instruction()"/>
-  <xsl:call-template name="end-revflag"/>
-</xsl:template>
-
-
-<!-- ===================================================================== -->
-
-<!-- =========== BASIC BODY ELEMENTS =========== -->
-
-<!-- paragraphs -->
-<xsl:template match="*[contains(@class,' topic/p ')]" name="topic.p">
-
- <!-- To ensure XHTML validity, need to determine whether the DITA kids are block elements.
-      If so, use div_class="p" instead of p -->
- <xsl:choose>
-  <xsl:when test="descendant::*[contains(@class,' topic/pre ')] or
-       descendant::*[contains(@class,' topic/screen ')] or
-       descendant::*[contains(@class,' topic/ul ')] or
-       descendant::*[contains(@class,' topic/sl ')] or
-       descendant::*[contains(@class,' topic/ol ')] or
-       descendant::*[contains(@class,' topic/lq ')] or
-       descendant::*[contains(@class,' topic/dl ')] or
-       descendant::*[contains(@class,' topic/note ')] or
-       descendant::*[contains(@class,' topic/lines ')] or
-       descendant::*[contains(@class,' topic/fig ')] or
-       descendant::*[contains(@class,' topic/table ')] or
-       descendant::*[contains(@class,' topic/simpletable ')]">
-     <div class="p"><xsl:call-template name="commonattributes"/><xsl:call-template name="setidaname"/><xsl:call-template name="flagit"/><xsl:call-template name="revblock"/></div></xsl:when>
-  <xsl:otherwise><p><xsl:call-template name="commonattributes"/><xsl:call-template name="setidaname"/><xsl:call-template name="flagit"/><xsl:call-template name="revblock"/></p></xsl:otherwise>
- </xsl:choose><xsl:value-of select="$newline"/>
-</xsl:template>
-
-<xsl:template match="*[contains(@class,' topic/note ')]" name="topic.note">
- <xsl:call-template name="spec-title"/>
-  <xsl:choose>
-    <xsl:when test="@type='note'">
-     <xsl:call-template name="note"/>
-    </xsl:when>
-    <xsl:when test="@type='tip'">
-     <div class="tip">
-      <xsl:call-template name="commonattributes"/>
-      <xsl:call-template name="setidaname"/>
-      <span class="tiptitle">
-       <xsl:call-template name="getString">
-        <xsl:with-param name="stringName" select="'Tip'"/>
-       </xsl:call-template>
-       <xsl:call-template name="getString">
-        <xsl:with-param name="stringName" select="'ColonSymbol'"/>
-       </xsl:call-template><xsl:text> </xsl:text>
-      </span>
-      <xsl:call-template name="flagit"/>
-      <xsl:call-template name="revblock"/>
-     </div>
-    </xsl:when>
-    <xsl:when test="@type='fastpath'">
-     <div class="fastpath">
-      <xsl:call-template name="commonattributes"/>
-      <xsl:call-template name="setidaname"/>
-      <span class="fastpathtitle">
-       <xsl:call-template name="getString">
-        <xsl:with-param name="stringName" select="'Fastpath'"/>
-       </xsl:call-template>
-       <xsl:call-template name="getString">
-        <xsl:with-param name="stringName" select="'ColonSymbol'"/>
-       </xsl:call-template><xsl:text> </xsl:text>
-      </span>
-      <xsl:call-template name="flagit"/>
-      <xsl:call-template name="revblock"/>
-     </div>
-    </xsl:when>
-    <xsl:when test="@type='important'">
-     <div class="important">
-      <xsl:call-template name="commonattributes"/>
-      <xsl:call-template name="setidaname"/>
-      <span class="importanttitle">
-       <xsl:call-template name="getString">
-        <xsl:with-param name="stringName" select="'Important'"/>
-       </xsl:call-template>
-       <xsl:call-template name="getString">
-        <xsl:with-param name="stringName" select="'ColonSymbol'"/>
-       </xsl:call-template><xsl:text> </xsl:text>
-      </span>
-      <xsl:call-template name="flagit"/>
-      <xsl:call-template name="revblock"/>
-     </div>
-    </xsl:when>
-    <xsl:when test="@type='remember'">
-     <div class="remember">
-      <xsl:call-template name="commonattributes"/>
-      <xsl:call-template name="setidaname"/>
-      <span class="remembertitle">
-       <xsl:call-template name="getString">
-        <xsl:with-param name="stringName" select="'Remember'"/>
-       </xsl:call-template>
-       <xsl:call-template name="getString">
-        <xsl:with-param name="stringName" select="'ColonSymbol'"/>
-       </xsl:call-template><xsl:text> </xsl:text>
-      </span>
-      <xsl:call-template name="flagit"/>
-      <xsl:call-template name="revblock"/>
-     </div>
-    </xsl:when>
-    <xsl:when test="@type='restriction'">
-     <div class="restriction">
-      <xsl:call-template name="commonattributes"/>
-      <xsl:call-template name="setidaname"/>
-      <span class="restrictiontitle">
-       <xsl:call-template name="getString">
-        <xsl:with-param name="stringName" select="'Restriction'"/>
-       </xsl:call-template>
-       <xsl:call-template name="getString">
-        <xsl:with-param name="stringName" select="'ColonSymbol'"/>
-       </xsl:call-template><xsl:text> </xsl:text>
-      </span>
-      <xsl:call-template name="flagit"/>
-      <xsl:call-template name="revblock"/>
-     </div>
-    </xsl:when>
-    <xsl:when test="@type='attention'">
-     <div class="attention">
-      <xsl:call-template name="commonattributes"/>
-      <xsl:call-template name="setidaname"/>
-      <span class="attentiontitle">
-       <xsl:call-template name="flagit"/>
-       <xsl:call-template name="getString">
-        <xsl:with-param name="stringName" select="'Attention'"/>
-       </xsl:call-template>
-       <xsl:call-template name="getString">
-        <xsl:with-param name="stringName" select="'ColonSymbol'"/>
-       </xsl:call-template><xsl:text> </xsl:text>
-      </span>
-      <xsl:call-template name="revblock"/>
-     </div>
-    </xsl:when>
-    <xsl:when test="@type='caution'">
-     <div class="cautiontitle">
-      <xsl:call-template name="commonattributes"/>
-      <xsl:call-template name="setidaname"/>
-      <xsl:call-template name="flagit"/>
-      <xsl:call-template name="getString">
-       <xsl:with-param name="stringName" select="'Caution'"/>
-      </xsl:call-template>
-       <xsl:call-template name="getString">
-        <xsl:with-param name="stringName" select="'ColonSymbol'"/>
-       </xsl:call-template><xsl:text> </xsl:text>
-     </div>
-     <div class="caution">
-      <xsl:call-template name="revblock"/>
-     </div>
-    </xsl:when>
-    <xsl:when test="@type='danger'">
-     <div class="dangertitle">
-      <xsl:call-template name="commonattributes"/>
-      <xsl:call-template name="setidaname"/>
-      <xsl:call-template name="flagit"/>
-      <xsl:call-template name="getString">
-       <xsl:with-param name="stringName" select="'Danger'"/>
-      </xsl:call-template>
-     </div>
-     <div class="danger">
-      <xsl:call-template name="commonattributes"/>
-      <xsl:call-template name="revblock"/>
-     </div>
-    </xsl:when>
-    <xsl:when test="@type='other'">
-     <xsl:choose>
-      <xsl:when test="@othertype"> 
-       <div class="note">
-       <xsl:call-template name="commonattributes"/>
-       <xsl:call-template name="setidaname"/>
-        <span class="notetitle">
-         <xsl:value-of select="@othertype"/>
-         <xsl:call-template name="getString">
-          <xsl:with-param name="stringName" select="'ColonSymbol'"/>
-         </xsl:call-template><xsl:text> </xsl:text>
-        </span>
-        <xsl:call-template name="flagit"/>
-        <xsl:call-template name="revblock"/>
-       </div>
-      </xsl:when>
-      <xsl:otherwise>
-       <xsl:call-template name="note"/> <!-- otherwise, give them the standard note -->
-      </xsl:otherwise>
-     </xsl:choose>
-    </xsl:when>
-    <xsl:otherwise>
-     <xsl:call-template name="note"/>
-    </xsl:otherwise>
-  </xsl:choose>
- <xsl:value-of select="$newline"/>
-</xsl:template>
-
-<xsl:template name="note">
- <div class="note">
-  <xsl:call-template name="commonattributes"/>
-  <xsl:call-template name="setidaname"/>
-  <span class="notetitle">
-   <xsl:call-template name="getString">
-    <xsl:with-param name="stringName" select="'Note'"/>
-   </xsl:call-template>
-   <xsl:call-template name="getString">
-    <xsl:with-param name="stringName" select="'ColonSymbol'"/>
-   </xsl:call-template><xsl:text> </xsl:text>
-  </span>
-  <xsl:call-template name="flagit"/>
-  <xsl:call-template name="revblock"/>
- </div>
-</xsl:template>
-
-<!-- long quote (bibliographic association).
-     @reftitle contains the citation for the excerpt.
-     With a link if @href is used.  -->
-<xsl:template match="*[contains(@class,' topic/lq ')]" name="topic.lq">
-<blockquote>
-  <xsl:call-template name="commonattributes"/>
-  <xsl:call-template name="setidaname"/>
-  <xsl:call-template name="flagit"/>
- <xsl:variable name="revtest">
-   <xsl:if test="@rev and not($FILTERFILE='') and ($DRAFT='yes')"> 
-     <xsl:call-template name="find-active-rev-flag">
-       <xsl:with-param name="allrevs" select="@rev"/>
-     </xsl:call-template>
-   </xsl:if>
- </xsl:variable>
- <xsl:choose>
-   <xsl:when test="$revtest=1">   <!-- Rev is active - add the DIV -->
-    <div class="{@rev}"><xsl:apply-templates select="."  mode="lq-fmt" /></div>
-   </xsl:when>
-   <xsl:otherwise>  <!-- Rev wasn't active - process normally -->
-    <xsl:apply-templates select="."  mode="lq-fmt" />
-   </xsl:otherwise>
- </xsl:choose>
-</blockquote><xsl:value-of select="$newline"/>
-</xsl:template>
-<xsl:template match="*[contains(@class,' topic/lq ')]" mode="lq-fmt">
-  <xsl:call-template name="start-revflag"/>
-  <xsl:apply-templates/>
-  <xsl:choose>
-   <xsl:when test="@href"> <!-- Insert citation as link, use @href as-is -->
-    <br/><div style="text-align:right"><a>
-     <xsl:attribute name="href">
-      <xsl:choose>
-       <xsl:when test="contains(@href,$DITAEXT)">
-        <xsl:value-of select="substring-before(@href,$DITAEXT)"/><xsl:value-of select="$OUTEXT"/><xsl:value-of select="substring-after(@href,$DITAEXT)"/>
-       </xsl:when>
-       <xsl:otherwise>
-        <xsl:value-of select="@href"/>
-       </xsl:otherwise>
-      </xsl:choose>
-     </xsl:attribute>
-     <xsl:choose>
-      <xsl:when test="@type='external'">
-       <xsl:attribute name="target">_blank</xsl:attribute>
-      </xsl:when>
-      <xsl:otherwise><!--nop - no target needed for internal or biblio types (OR-should internal force DITA xref-like processing? What is intent? @type is only internal/external/bibliographic) --></xsl:otherwise>
-     </xsl:choose>
-     <cite><xsl:choose>
-      <xsl:when test="@reftitle"><xsl:value-of select="@reftitle"/></xsl:when>
-      <xsl:otherwise><xsl:value-of select="@href"/></xsl:otherwise>
-      </xsl:choose></cite></a></div>
-   </xsl:when>
-   <xsl:when test="@reftitle"> <!-- Insert citation text -->
-     <br/><div style="text-align:right"><cite><xsl:value-of select="@reftitle"/></cite></div>
-   </xsl:when>
-   <xsl:otherwise><!--nop - do nothing--></xsl:otherwise>
-  </xsl:choose>
-  <xsl:call-template name="end-revflag"/>
-</xsl:template>
-
-
-<!-- =========== SINGLE PART LISTS =========== -->
-
-<!-- Unordered List -->
-<!-- handle all levels thru browser processing -->
-<xsl:template match="*[contains(@class,' topic/ul ')]" name="topic.ul">
- <xsl:variable name="revtest">
-   <xsl:if test="@rev and not($FILTERFILE='') and ($DRAFT='yes')"> 
-     <xsl:call-template name="find-active-rev-flag">
-       <xsl:with-param name="allrevs" select="@rev"/>
-     </xsl:call-template>
-   </xsl:if>
- </xsl:variable>
- <xsl:choose>
-   <xsl:when test="$revtest=1">   <!-- Rev is active - add the DIV -->
-     <div class="{@rev}"><xsl:apply-templates select="."  mode="ul-fmt" /></div>
-   </xsl:when>
-   <xsl:otherwise>  <!-- Rev wasn't active - process normally -->
-     <xsl:apply-templates select="."  mode="ul-fmt" />
-   </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-<xsl:template match="*[contains(@class,' topic/ul ')]" mode="ul-fmt">
- <xsl:call-template name="flagit"/>
- <xsl:call-template name="start-revflag"/>
- <xsl:call-template name="setaname"/>
- <ul>
-   <xsl:call-template name="commonattributes"/>
-   <xsl:apply-templates select="@compact"/>
-   <xsl:call-template name="setid"/>
-   <xsl:apply-templates/>
- </ul>
- <xsl:call-template name="end-revflag"/>
- <xsl:value-of select="$newline"/>
-</xsl:template>
-
-<!-- Simple List -->
-<!-- handle all levels thru browser processing -->
-<xsl:template match="*[contains(@class,' topic/sl ')]" name="topic.sl">
-<xsl:call-template name="flagit"/>
-  <xsl:choose> <!-- draft rev mode, add div w/ rev attr value -->
-   <xsl:when test="@rev and not($FILTERFILE='') and ($DRAFT='yes')">
-    <xsl:variable name="revtest"> <!-- Flag the revision? 1=yes; 0=no -->
-     <xsl:call-template name="find-active-rev-flag">
-      <xsl:with-param name="allrevs" select="@rev"/>
-     </xsl:call-template>
-    </xsl:variable>
-    <xsl:choose>
-     <xsl:when test="$revtest=1">
-      <div class="{@rev}"><xsl:apply-templates select="."  mode="sl-fmt" /></div>
-     </xsl:when>
-     <xsl:otherwise>
-      <xsl:apply-templates select="."  mode="sl-fmt" />
-     </xsl:otherwise>
-    </xsl:choose>
-   </xsl:when>
-   <xsl:otherwise>
-    <xsl:apply-templates select="."  mode="sl-fmt" />
-   </xsl:otherwise>
-  </xsl:choose>
-</xsl:template>
-<xsl:template match="*[contains(@class,' topic/sl ')]" mode="sl-fmt">
-<xsl:call-template name="start-revflag"/>
-<xsl:call-template name="setaname"/>
-<ul class="simple">
-  <xsl:call-template name="commonattributes"/>
-  <xsl:apply-templates select="@compact"/>
-  <xsl:call-template name="setid"/>
-  <xsl:apply-templates/>
-</ul>
-<xsl:call-template name="end-revflag"/>
-<xsl:value-of select="$newline"/>
-</xsl:template>
-
-<!-- Ordered List - 1st level - Handle levels 1 to 9 thru OL-TYPE attribution -->
-<!-- Updated to use a single template, use count and mod to set the list type -->
-<xsl:template match="*[contains(@class,' topic/ol ')]" name="topic.ol">
-<xsl:variable name="olcount" select="count(ancestor-or-self::*[contains(@class,' topic/ol ')])"/>
-<xsl:call-template name="flagit"/>
-<xsl:call-template name="start-revflag"/>
-<xsl:call-template name="setaname"/>
-<ol>
-  <xsl:call-template name="commonattributes"/>
-  <xsl:apply-templates select="@compact"/>
-  <xsl:choose>
-    <xsl:when test="$olcount mod 3 = 1"/>
-    <xsl:when test="$olcount mod 3 = 2"><xsl:attribute name="type">a</xsl:attribute></xsl:when>
-    <xsl:otherwise><xsl:attribute name="type">i</xsl:attribute></xsl:otherwise>
-  </xsl:choose>
-  <xsl:call-template name="setid"/>
-  <xsl:apply-templates/>
-</ol>
-<xsl:call-template name="end-revflag"/>
-<xsl:value-of select="$newline"/>
-</xsl:template>
-
-<!-- list item -->
-<xsl:template match="*[contains(@class,' topic/li ')]" name="topic.li">
-<li>
- <!-- handle non-compact list items -->
- <xsl:if test="parent::*/@compact='no'">
-  <xsl:attribute name="class">liexpand</xsl:attribute>
- </xsl:if>
-  <xsl:call-template name="commonattributes"/>
-  <xsl:call-template name="setidaname"/>
-  <xsl:call-template name="flagit"/>
-  <xsl:call-template name="revblock"/>
-</li><xsl:value-of select="$newline"/>
-</xsl:template>
-<!-- simple list item -->
-<xsl:template match="*[contains(@class,' topic/sli ')]" name="topic.sli">
-<li>
- <!-- handle non-compact list items -->
- <xsl:if test="parent::*/@compact='no'">
-  <xsl:attribute name="class">sliexpand</xsl:attribute>
- </xsl:if>
-  <xsl:call-template name="commonattributes"/>
-  <xsl:call-template name="setidaname"/>
-  <xsl:call-template name="flagit"/>
-  <xsl:call-template name="revblock"/>
-</li><xsl:value-of select="$newline"/>
-</xsl:template>
-
-<!-- special case of getting the number of a list item referenced by xref -->
-<xsl:template match="*[contains(@class,' topic/li ')]" mode="xref">
-  <xsl:number/>
-</xsl:template>
-
-
-<!-- list item section is like li/lq but without presentation (indent) -->
-<xsl:template match="*[contains(@class,' topic/itemgroup ')]" name="topic.itemgroup">
-<!-- insert a space before all but the first itemgroups in a LI -->
-<xsl:variable name="itemgroupcount"><xsl:number count="*[contains(@class,' topic/itemgroup ')]"/></xsl:variable>
-  <xsl:if test="$itemgroupcount&gt;'1'">
-    <xsl:text> </xsl:text>
-  </xsl:if>
-  <xsl:call-template name="setidaname"/>
-  <xsl:call-template name="flagcheck"/>
-  <xsl:call-template name="revtext"/>
-</xsl:template>
-
-<!-- =========== DEFINITION LIST =========== -->
-
-<!-- DL -->
-<xsl:template match="*[contains(@class,' topic/dl ')]" name="topic.dl">
- <xsl:variable name="revtest">
-   <xsl:if test="@rev and not($FILTERFILE='') and ($DRAFT='yes')"> 
-     <xsl:call-template name="find-active-rev-flag">
-       <xsl:with-param name="allrevs" select="@rev"/>
-     </xsl:call-template>
-   </xsl:if>
- </xsl:variable>
- <xsl:choose>
-   <xsl:when test="$revtest=1">   <!-- Rev is active - add the DIV -->
-     <div class="{@rev}"><xsl:apply-templates select="."  mode="dl-fmt" /></div>
-   </xsl:when>
-   <xsl:otherwise>  <!-- Rev wasn't active - process normally -->
-     <xsl:apply-templates select="."  mode="dl-fmt" />
-   </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-<xsl:template match="*[contains(@class,' topic/dl ')]"  mode="dl-fmt">
-<xsl:call-template name="flagit"/>
-<xsl:call-template name="start-revflag"/>
-<xsl:call-template name="setaname"/>
-<dl>
- <!-- handle DL compacting - default=yes -->
-  <xsl:if test="@compact='no'">
-   <xsl:attribute name="class">dlexpand</xsl:attribute>
-  </xsl:if>
-  <xsl:call-template name="commonattributes"/>
-  <xsl:apply-templates select="@compact"/>
-  <xsl:call-template name="setid"/>
-  <xsl:apply-templates/>
-</dl>
-<xsl:call-template name="end-revflag"/>
-<xsl:value-of select="$newline"/>
-</xsl:template>
-
-<!-- DL entry -->
-<xsl:template match="*[contains(@class,' topic/dlentry ')]" name="topic.dlentry">
-  <xsl:apply-templates/>
-</xsl:template>
-
-<!-- DL term -->
-<xsl:template match="*[contains(@class,' topic/dt ')]" name="topic.dt">
-<!-- insert a blank line before only the first DT in a DLENTRY; count which DT this is -->
-<xsl:variable name="dtcount"><xsl:number count="*[contains(@class,' topic/dt ')]"/></xsl:variable>
-<xsl:choose>
- <xsl:when test="$dtcount=1">
-  <dt class="dlterm">
-   <!-- handle non-compact list items -->
-   <xsl:if test="../../@compact='no'">
-    <xsl:attribute name="class">dltermexpand</xsl:attribute>
-   </xsl:if>
-   <xsl:apply-templates select="../@xml:lang"/> <!-- Get from DLENTRY, then override with local -->
-   <xsl:call-template name="commonattributes"/>
-   <xsl:call-template name="setidaname"/>
-   <!-- handle ID on a DLENTRY -->
-    <xsl:if test="parent::*/@id">
-     <xsl:call-template name="parent-id"/>
-    </xsl:if>
-   <!-- handle non-compact DLs dl/dlentry/dt-->
-    <xsl:call-template name="flagit-parent"/>
-    <xsl:call-template name="flagit"/>
-    <xsl:call-template name="start-revflag-parent"/>
-    <xsl:call-template name="revtext"/>
-    <xsl:call-template name="end-revflag-parent"/>
-  </dt>
- </xsl:when>
- <xsl:otherwise><!-- DTs 2 thru N -->
-  <dt class="dlterm">
-    <xsl:apply-templates select="../@xml:lang"/> <!-- Get from DLENTRY, then override with local -->
-    <xsl:call-template name="commonattributes"/>
-    <xsl:call-template name="setidaname"/>
-    <xsl:call-template name="flagit"/>
-    <xsl:call-template name="start-revflag-parent"/>
-    <xsl:call-template name="revtext"/>
-    <xsl:call-template name="end-revflag-parent"/>
-  </dt>
- </xsl:otherwise>
-</xsl:choose>
-<xsl:value-of select="$newline"/>
-</xsl:template>
-
-<!-- DL description -->
-<xsl:template match="*[contains(@class,' topic/dd ')]" name="topic.dd">
-<!-- insert a blank line before all but the first DD in a DLENTRY; count which DD this is -->
-<xsl:variable name="ddcount"><xsl:number count="*[contains(@class,' topic/dd ')]"/></xsl:variable>
-<xsl:choose>
- <xsl:when test="$ddcount=1">
-  <dd>
-   <xsl:apply-templates select="../@xml:lang"/> <!-- Get from DLENTRY, then override with local -->
-   <xsl:call-template name="commonattributes"/>
-   <xsl:call-template name="setidaname"/>
-   <xsl:call-template name="flagit"/>
-   <xsl:call-template name="start-revflag-parent"/>
-   <xsl:call-template name="revblock"/>
-   <xsl:call-template name="end-revflag-parent"/>
-  </dd>
- </xsl:when>
- <xsl:otherwise><!-- para space before 2 thru N -->
-  <dd class="ddexpand">
-   <xsl:apply-templates select="../@xml:lang"/> <!-- Get from DLENTRY, then override with local -->
-   <xsl:call-template name="commonattributes"/>
-   <xsl:call-template name="setidaname"/>
-   <xsl:call-template name="flagit"/>
-   <xsl:call-template name="start-revflag-parent"/>
-   <xsl:call-template name="revblock"/>
-   <xsl:call-template name="end-revflag-parent"/>
-  </dd>
- </xsl:otherwise>
-</xsl:choose>
-<xsl:value-of select="$newline"/>
-</xsl:template>
-
-<!-- DL heading -->
-<xsl:template match="*[contains(@class, ' topic/dlhead ')]" name="topic.dlhead">
- <xsl:apply-templates/>
-</xsl:template>
-
-<!-- DL heading, term -->
-<xsl:template match="*[contains(@class,' topic/dthd ')]" name="topic.dthd">
-<dt>
- <xsl:apply-templates select="../@xml:lang"/> <!-- Get from DLHEAD, then override with local -->
- <xsl:call-template name="commonattributes"/>
- <xsl:call-template name="setidaname"/>
- <xsl:call-template name="flagit"/>
- <xsl:call-template name="start-revflag-parent"/>
- <strong><xsl:call-template name="revtext"/></strong>
- <xsl:call-template name="end-revflag-parent"/>
-</dt><xsl:value-of select="$newline"/>
-</xsl:template>
-
-<!-- DL heading, description -->
-<xsl:template match="*[contains(@class,' topic/ddhd ')]" name="topic.ddhd">
-<dd>
- <xsl:apply-templates select="../@xml:lang"/> <!-- Get from DLHEAD, then override with local -->
- <xsl:call-template name="commonattributes"/>
- <xsl:call-template name="setidaname"/>
- <xsl:call-template name="flagit"/>
- <xsl:call-template name="start-revflag-parent"/>
- <strong><xsl:call-template name="revblock"/></strong>
- <xsl:call-template name="end-revflag-parent"/>
-</dd><xsl:value-of select="$newline"/>
-</xsl:template>
-
-
-<!-- =========== PHRASES =========== -->
-
-<!-- phrase presentational style - have to use a low priority otherwise topic/ph always wins -->
-<!-- should not need priority, default is low enough -->
-
-<xsl:template match="*[contains(@class,' topic/ph ')]" name="topic.ph">
- <span>
-  <xsl:call-template name="commonattributes"/>
-  <xsl:call-template name="setidaname"/>
-  <xsl:call-template name="flagcheck"/>
-  <xsl:call-template name="revtext"/></span>
-</xsl:template>
-
-<!-- keyword presentational style - have to use priority else topic/keyword always wins -->
-<!-- should not need priority, default is low enough -->
-
-<xsl:template match="*[contains(@class,' topic/keyword ')]" name="topic.keyword">
- <span class="keyword">
-  <xsl:call-template name="commonattributes"/>
-  <xsl:call-template name="setidaname"/>
-  <xsl:call-template name="flagcheck"/>
-  <xsl:call-template name="revtext"/></span>
-</xsl:template>
-
-<!-- trademarks  -->
-<!-- prepare a key for each trademark tag -->
-<xsl:key name="tm"  match="*[contains(@class,' topic/tm ')]" use="."/>
-
-<!-- process the TM tag -->
-<!-- removed priority 1 : should not be needed -->
-<xsl:template match="*[contains(@class,' topic/tm ')]" name="topic.tm">
-
-  <xsl:apply-templates/> <!-- output the TM content -->
-
-  <xsl:variable name="Ltmclass">
-    <xsl:call-template name="convert-to-lower"> <!-- ensure lowercase for comparisons -->
-      <xsl:with-param name="inputval" select="@tmclass"/>
-    </xsl:call-template>
-  </xsl:variable>
-  <!-- If this is a good class, continue... -->
-  <xsl:if test="$Ltmclass='ibm' or $Ltmclass='ibmsub' or $Ltmclass='special'">
-    <!-- Test for TM area's language -->
-    <xsl:variable name="tmtest">
-      <xsl:call-template name="tm-area"/>
-    </xsl:variable>
-
-    <!-- If this language should get trademark markers, continue... -->
-    <xsl:if test="$tmtest='tm'">
-      <xsl:variable name="tmvalue"><xsl:value-of select="@trademark"/></xsl:variable>
-
-      <!-- Determine if this is in a title, and should be marked -->
-      <xsl:variable name="usetitle">
-        <xsl:if test="ancestor::*[contains(@class,' topic/title ')]/parent::*[contains(@class,' topic/topic ')]">
-          <xsl:choose>
-            <!-- Not the first one in a title -->
-            <xsl:when test="generate-id(.)!=generate-id(key('tm',.)[1])">skip</xsl:when>
-            <!-- First one in the topic, BUT it appears in a shortdesc or body -->
-            <xsl:when test="//*[contains(@class,' topic/shortdesc ') or contains(@class,' topic/body ')]//*[contains(@class,' topic/tm ')][@trademark=$tmvalue]">skip</xsl:when>
-            <xsl:otherwise>use</xsl:otherwise>
-          </xsl:choose>
-        </xsl:if>
-      </xsl:variable>
-
-      <!-- Determine if this is in a body, and should be marked -->
-      <xsl:variable name="usebody">
-        <xsl:choose>
-          <!-- If in a title or prolog, skip -->
-          <xsl:when test="ancestor::*[contains(@class,' topic/title ') or contains(@class,' topic/prolog ')]/parent::*[contains(@class,' topic/topic ')]">skip</xsl:when>
-          <!-- If first in the document, use it -->
-          <xsl:when test="generate-id(.)=generate-id(key('tm',.)[1])">use</xsl:when>
-          <!-- If there is another before this that is in the body or shortdesc, skip -->
-          <xsl:when test="preceding::*[contains(@class,' topic/tm ')][@trademark=$tmvalue][ancestor::*[contains(@class,' topic/body ') or contains(@class,' topic/shortdesc ')]]">skip</xsl:when>
-          <!-- Otherwise, any before this must be in a title or ignored section -->
-          <xsl:otherwise>use</xsl:otherwise>
-        </xsl:choose>
-      </xsl:variable>
-
-      <!-- If it should be used in a title or used in the body, output your favorite TM marker based on the attributes -->
-      <xsl:if test="$usetitle='use' or $usebody='use'">
-        <xsl:choose>  <!-- ignore @tmtype=service or anything else -->
-          <xsl:when test="@tmtype='tm'">&#x2122;</xsl:when>
-          <xsl:when test="@tmtype='reg'"><sup>&#xAE;</sup></xsl:when>
-          <xsl:otherwise/>
-        </xsl:choose>
-      </xsl:if>
-    </xsl:if>
- </xsl:if>
-</xsl:template>
-
-<!-- Test for in TM area: returns "tm" when parent's @xml:lang needs a trademark language;
-     Otherwise, leave blank.
-     Use the TM for US English and the AP languages (Japanese, Korean, and both Chinese).
-     Ignore the TM for all other languages. -->
-<xsl:template name="tm-area">
- <xsl:variable name="parentlang">
-  <xsl:call-template name="getLowerCaseLang"/>
- </xsl:variable>
- <xsl:choose>
-  <xsl:when test="$parentlang='en-us' or $parentlang='en'">tm</xsl:when>
-  <xsl:when test="$parentlang='ja-jp' or $parentlang='ja'">tm</xsl:when>
-  <xsl:when test="$parentlang='ko-kr' or $parentlang='ko'">tm</xsl:when>
-  <xsl:when test="$parentlang='zh-cn' or $parentlang='zh'">tm</xsl:when>
-  <xsl:when test="$parentlang='zh-tw' or $parentlang='zh'">tm</xsl:when>
-  <xsl:otherwise/>
- </xsl:choose>
-</xsl:template>
-
-
-<!-- phrase "semantic" classes -->
-<!-- citations -->
-<xsl:template match="*[contains(@class,' topic/cite ')]" name="topic.cite">
-<cite>
-  <xsl:call-template name="commonattributes"/>
-  <xsl:call-template name="setidaname"/>
-  <xsl:call-template name="flagcheck"/>
-  <xsl:call-template name="revtext"/>
-</cite>
-</xsl:template>
-
-<!-- quotes - only do 1 level, no flip-flopping -->
-<xsl:template match="*[contains(@class,' topic/q ')]" name="topic.q">
-<span class="q">
-  <xsl:call-template name="commonattributes"/>
-  <xsl:call-template name="getString">
-   <xsl:with-param name="stringName" select="'OpenQuote'"/>
-  </xsl:call-template>
-  <xsl:call-template name="flagcheck"/>
-  <xsl:call-template name="revtext"/>
-  <xsl:call-template name="getString">
-   <xsl:with-param name="stringName" select="'CloseQuote'"/>
-  </xsl:call-template>
-</span>
-</xsl:template>
-
-<!-- terms -->
-<xsl:template match="*[contains(@class,' topic/term ')]" name="topic.term">
-<dfn class="term">
-  <xsl:call-template name="commonattributes"/>
-  <xsl:call-template name="setidaname"/>
-  <xsl:call-template name="flagcheck"/>
-  <xsl:call-template name="revtext"/>
-</dfn>
-</xsl:template>
-
-
-<!-- =========== BOOLEAN-STATE DATA TYPES =========== -->
-<!-- Use color to indicate these types for now -->
-<!-- output the tag & it's state -->
-<xsl:template match="*[contains(@class,' topic/boolean ')]" name="topic.boolean">
- <span style="color:green">
-  <xsl:call-template name="commonattributes"/>
-  <xsl:call-template name="setidaname"/>
-  <xsl:value-of select="name()"/><xsl:text>: </xsl:text><xsl:value-of select="@state"/>
- </span>
-</xsl:template>
-
-<!-- output the tag, it's name & value -->
-<xsl:template match="*[contains(@class,' topic/state ')]" name="topic.state">
-<span style="color:red">
-  <xsl:call-template name="commonattributes"/>
-  <xsl:call-template name="setidaname"/>
-  <xsl:value-of select="name()"/><xsl:text>: </xsl:text><xsl:value-of select="@name"/><xsl:text>=</xsl:text><xsl:value-of select="@value"/>
-</span>
-</xsl:template>
-
-
-<!-- =========== RECORD END RESPECTING DATA =========== -->
-<!-- PRE -->
-<xsl:template match="*[contains(@class,' topic/pre ')]" name="topic.pre">
- <xsl:variable name="revtest">
-   <xsl:if test="@rev and not($FILTERFILE='') and ($DRAFT='yes')">
-     <xsl:call-template name="find-active-rev-flag"> 
-       <xsl:with-param name="allrevs" select="@rev"/>
-     </xsl:call-template>
-   </xsl:if>
- </xsl:variable>
- <xsl:choose>
-   <xsl:when test="$revtest=1">   <!-- Rev is active - add the DIV -->
-     <div class="{@rev}"><xsl:apply-templates select="."  mode="pre-fmt" /></div>
-   </xsl:when>
-   <xsl:otherwise>  <!-- Rev wasn't active - process normally -->
-     <xsl:apply-templates select="."  mode="pre-fmt" />
-   </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-<xsl:template match="*[contains(@class,' topic/pre ')]" mode="pre-fmt">
-<xsl:if test="contains(@frame,'top')"><hr /></xsl:if>
-<xsl:call-template name="flagit"/>
-<xsl:call-template name="start-revflag"/>
-<xsl:call-template name="spec-title-nospace"/>
-<pre>
-  <xsl:call-template name="commonattributes"/>
-  <xsl:call-template name="setscale"/>
-  <xsl:call-template name="setidaname"/>
-  <xsl:apply-templates/>
-</pre>
-<xsl:call-template name="end-revflag"/>
-<xsl:if test="contains(@frame,'bot')"><hr /></xsl:if><xsl:value-of select="$newline"/>
-</xsl:template>
-
-
-<!-- lines - body font -->
-<xsl:template match="*[contains(@class,' topic/lines ')]" name="topic.lines">
- <xsl:variable name="revtest">
-   <xsl:if test="@rev and not($FILTERFILE='') and ($DRAFT='yes')"> 
-     <xsl:call-template name="find-active-rev-flag"> 
-       <xsl:with-param name="allrevs" select="@rev"/>
-     </xsl:call-template>
-   </xsl:if>
- </xsl:variable>
- <xsl:choose>
-   <xsl:when test="$revtest=1">   <!-- Rev is active - add the DIV -->
-     <div class="{@rev}"><xsl:apply-templates select="."  mode="lines-fmt" /></div>
-   </xsl:when>
-   <xsl:otherwise>  <!-- Rev wasn't active - process normally -->
-     <xsl:apply-templates select="."  mode="lines-fmt" />
-   </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-<xsl:template match="*[contains(@class,' topic/lines ')]" mode="lines-fmt">
-<xsl:if test="contains(@frame,'top')"><hr /></xsl:if>
-<xsl:call-template name="flagit"/>
-<xsl:call-template name="start-revflag"/>
-<xsl:call-template name="spec-title-nospace"/>
- <p>
-  <xsl:call-template name="commonattributes"/>
-  <xsl:call-template name="setscale"/>
-  <xsl:call-template name="setidaname"/>
-  <xsl:apply-templates/>
- </p>
-<xsl:call-template name="end-revflag"/>
-<xsl:if test="contains(@frame,'bot')"><hr /></xsl:if><xsl:value-of select="$newline"/>
-</xsl:template>
-
-<xsl:template match="*[contains(@class,' topic/lines ')]//text()">
- <xsl:variable name="linetext"><xsl:value-of select="."/></xsl:variable>
- <xsl:variable name="linetext2">
-  <xsl:call-template name="sp-replace"><xsl:with-param name="sptext" select="$linetext"/></xsl:call-template>
- </xsl:variable>
- <xsl:call-template name="br-replace">
-  <xsl:with-param name="brtext" select="$linetext2"/>
- </xsl:call-template>
-</xsl:template>
-
-
-<!-- =========== FIGURE =========== -->
-<xsl:template match="*[contains(@class,' topic/fig ')]" name="topic.fig">
- <xsl:variable name="revtest">
-   <xsl:if test="@rev and not($FILTERFILE='') and ($DRAFT='yes')"> 
-     <xsl:call-template name="find-active-rev-flag">
-       <xsl:with-param name="allrevs" select="@rev"/>
-     </xsl:call-template>
-   </xsl:if>
- </xsl:variable>
- <xsl:choose>
-   <xsl:when test="$revtest=1">   <!-- Rev is active - add the DIV -->
-     <div class="{@rev}"><xsl:apply-templates select="."  mode="fig-fmt" /></div>
-   </xsl:when>
-   <xsl:otherwise>  <!-- Rev wasn't active - process normally -->
-     <xsl:apply-templates select="."  mode="fig-fmt" />
-   </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template match="*[contains(@class,' topic/fig ')]" mode="fig-fmt">
-<xsl:call-template name="flagit"/>
-<xsl:call-template name="start-revflag"/>
- <div>
-  <xsl:call-template name="commonattributes"/>
-  <xsl:call-template name="setscale"/>
-  <xsl:choose>
-    <xsl:when test="@frame='all'">
-      <xsl:attribute name="class">figborder</xsl:attribute>
-    </xsl:when>
-    <xsl:when test="@frame='sides'">
-      <xsl:attribute name="class">figsides</xsl:attribute>
-    </xsl:when>
-    <xsl:when test="@frame='top'">
-      <xsl:attribute name="class">figtop</xsl:attribute>
-    </xsl:when>
-    <xsl:when test="@frame='bottom'">
-      <xsl:attribute name="class">figbottom</xsl:attribute>
-    </xsl:when>
-    <xsl:when test="@frame='topbot'">
-      <xsl:attribute name="class">figtopbot</xsl:attribute>
-    </xsl:when>
-    <xsl:otherwise>
-      <xsl:attribute name="class">fignone</xsl:attribute>
-    </xsl:otherwise>
-  </xsl:choose>
-  <xsl:call-template name="setidaname"/>
-  <xsl:call-template name="place-fig-lbl"/>
-  <xsl:apply-templates select="*[not(contains(@class,' topic/title '))][not(contains(@class,' topic/desc '))] |text()|comment()|processing-instruction()"/>
- </div>
-<xsl:call-template name="end-revflag"/>
-<xsl:value-of select="$newline"/>
-</xsl:template>
-
-<!-- should not need priority, default is low enough; was set to 1 -->
-<xsl:template match="*[contains(@class,' topic/figgroup ')]" name="topic.figgroup">
- <xsl:variable name="revtest">
-   <xsl:if test="@rev and not($FILTERFILE='') and ($DRAFT='yes')">
-     <xsl:call-template name="find-active-rev-flag">
-       <xsl:with-param name="allrevs" select="@rev"/>
-     </xsl:call-template>
-   </xsl:if>
- </xsl:variable>
- <xsl:choose>
-   <xsl:when test="$revtest=1">   <!-- Rev is active - add the DIV -->
-     <div class="{@rev}"><xsl:apply-templates select="."  mode="figgroup-fmt" /></div>
-   </xsl:when>
-   <xsl:otherwise>  <!-- Rev wasn't active - process normally -->
-     <xsl:apply-templates select="."  mode="figgroup-fmt" />
-   </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-<xsl:template match="*[contains(@class,' topic/figgroup ')]" mode="figgroup-fmt">
-<xsl:call-template name="flagit"/>
-<xsl:call-template name="start-revflag"/>
- <span>
-  <xsl:call-template name="commonattributes"/>
-  <xsl:call-template name="setidaname"/>
-  <!-- Allow title to fallthrough -->
-  <xsl:apply-templates/>
- </span>
-<xsl:call-template name="end-revflag"/>
-</xsl:template>
-
-
-<!-- =========== IMAGE/OBJECT =========== -->
-
-<xsl:template match="*[contains(@class,' topic/image ')]" name="topic.image">
-  <!-- build any pre break indicated by style -->
-  <xsl:choose>
-    <xsl:when test="parent::fig[contains(@frame,'top ')]">
-      <!-- NOP if there is already a break implied by a parent property -->
-    </xsl:when>
-    <xsl:otherwise>
-     <xsl:choose>
-      <xsl:when test="(@placement='break')"><br/>
-       <xsl:call-template name="flagit"/>
-      </xsl:when>
-      <xsl:otherwise>
-       <xsl:call-template name="flagcheck"/>
-      </xsl:otherwise>
-     </xsl:choose>
-    </xsl:otherwise>
-  </xsl:choose>
-  <xsl:call-template name="start-revflag"/>
-  <xsl:call-template name="setaname"/>
-  <xsl:choose>
-   <xsl:when test="@placement='break'"><!--Align only works for break-->
-    <xsl:choose>
-     <xsl:when test="@align='left'">
-      <div class="imageleft">
-       <xsl:call-template name="topic-image"/>
-      </div>
-     </xsl:when>
-     <xsl:when test="@align='right'">
-      <div class="imageright">
-       <xsl:call-template name="topic-image"/>
-      </div>
-     </xsl:when>
-     <xsl:when test="@align='center'">
-      <div class="imagecenter">
-       <xsl:call-template name="topic-image"/>
-      </div>
-     </xsl:when>
-     <xsl:otherwise>
-      <xsl:call-template name="topic-image"/>
-     </xsl:otherwise>
-    </xsl:choose>
-   </xsl:when>
-   <xsl:otherwise>
-    <xsl:call-template name="topic-image"/>
-   </xsl:otherwise>
-  </xsl:choose>
-  <xsl:call-template name="end-revflag"/>
-  <!-- build any post break indicated by style -->
-  <xsl:if test="not(@placement='inline')"><br/></xsl:if>
-  <!-- image name for review -->
-  <xsl:if test="$ARTLBL='yes'">
-    [<xsl:value-of select="@href"/>]
-  </xsl:if>
-</xsl:template>
-
-<xsl:template name="topic-image">
-  <!-- now invoke the actual content and its alt text -->
-  <xsl:element name="img">
-    <xsl:call-template name="commonattributes"/>
-    <xsl:call-template name="setid"/>
-    <xsl:apply-templates select="@href|@height|@width|@longdescref"/>
-    <xsl:choose>
-      <xsl:when test="*[contains(@class,' topic/alt')]">
-        <xsl:attribute name="alt"><xsl:value-of select="*[contains(@class,' topic/alt ')]"/></xsl:attribute>
-      </xsl:when>
-      <xsl:when test="@alt">
-        <xsl:attribute name="alt"><xsl:value-of select="@alt"/></xsl:attribute>
-      </xsl:when>
-    </xsl:choose>
-  </xsl:element>
-</xsl:template>
-<!-- Process image attributes. Using priority, in case default @href is added at some point. -->
-<xsl:template match="*[contains(@class,' topic/image ')]/@href" priority="1">
-  <xsl:attribute name="src"><xsl:value-of select="."/></xsl:attribute>
-</xsl:template>
-<xsl:template match="*[contains(@class,' topic/image ')]/@height">
-  <xsl:attribute name="height"><xsl:value-of select="."/></xsl:attribute>
-</xsl:template>
-<xsl:template match="*[contains(@class,' topic/image ')]/@width">
-  <xsl:attribute name="width"><xsl:value-of select="."/></xsl:attribute>
-</xsl:template>
-<xsl:template match="*[contains(@class,' topic/image ')]/@longdescref">
-  <xsl:attribute name="longdesc">
-    <xsl:choose>
-      <xsl:when test="contains(.,$DITAEXT)">  <!-- switch extension from .dita -->
-        <xsl:value-of select="substring-before(.,$DITAEXT)"/><xsl:value-of select="$OUTEXT"/><xsl:value-of select="substring-after(.,$DITAEXT)"/>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:value-of select="."/>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:attribute>
-</xsl:template>
-
-
-<!-- object, desc, & param -->
-<xsl:template match="*[contains(@class,' topic/object ')]" name="topic.object">
- <xsl:element name="object">
-  <xsl:if test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:if>
-  <xsl:if test="@declare"><xsl:attribute name="declare"><xsl:value-of select="@declare"/></xsl:attribute></xsl:if>
-  <xsl:if test="@codebase"><xsl:attribute name="codebase"><xsl:value-of select="@codebase"/></xsl:attribute></xsl:if>
-  <xsl:if test="@type"><xsl:attribute name="type"><xsl:value-of select="@type"/></xsl:attribute></xsl:if>
-  <xsl:if test="@archive"><xsl:attribute name="archive"><xsl:value-of select="@archive"/></xsl:attribute></xsl:if>
-  <xsl:if test="@height"><xsl:attribute name="height"><xsl:value-of select="@height"/></xsl:attribute></xsl:if>
-  <xsl:if test="@usemap"><xsl:attribute name="usemap"><xsl:value-of select="@usemap"/></xsl:attribute></xsl:if>
-  <xsl:if test="@tabindex"><xsl:attribute name="tabindex"><xsl:value-of select="@tabindex"/></xsl:attribute></xsl:if>
-  <xsl:if test="@classid"><xsl:attribute name="classid"><xsl:value-of select="@classid"/></xsl:attribute></xsl:if>
-  <xsl:if test="@data"><xsl:attribute name="data"><xsl:value-of select="@data"/></xsl:attribute></xsl:if>
-  <xsl:if test="@codetype"><xsl:attribute name="codetype"><xsl:value-of select="@codetype"/></xsl:attribute></xsl:if>
-  <xsl:if test="@standby"><xsl:attribute name="standby"><xsl:value-of select="@standby"/></xsl:attribute></xsl:if>
-  <xsl:if test="@width"><xsl:attribute name="width"><xsl:value-of select="@width"/></xsl:attribute></xsl:if>
-  <xsl:if test="@name"><xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute></xsl:if>
-  <xsl:if test="@longdescref">
-   <xsl:call-template name="output-message">
-    <xsl:with-param name="msg">The LONGDESCREF attribute on tag "<xsl:value-of select="name(.)"/>" will be ignored. Accessibility needs to be handled another way.</xsl:with-param>
-    <xsl:with-param name="msgnum">010</xsl:with-param>
-    <xsl:with-param name="msgsev">I</xsl:with-param>
-   </xsl:call-template>
-  </xsl:if>
-  <xsl:apply-templates/>
- <!-- Test for Flash movie; include EMBED statement for non-IE browsers -->
- <xsl:if test="contains(@codebase,'swflash.cab')">
-  <xsl:element name="embed">
-   <xsl:if test="@id"><xsl:attribute name="name"><xsl:value-of select="@id"/></xsl:attribute></xsl:if>
-   <xsl:if test="@height"><xsl:attribute name="height"><xsl:value-of select="@height"/></xsl:attribute></xsl:if>
-   <xsl:if test="@width"><xsl:attribute name="width"><xsl:value-of select="@width"/></xsl:attribute></xsl:if>
-   <xsl:attribute name="type"><xsl:text>application/x-shockwave-flash</xsl:text></xsl:attribute>
-   <xsl:attribute name="pluginspage"><xsl:text>http://www.macromedia.com/go/getflashplayer</xsl:text></xsl:attribute>
-   <xsl:if test="./*[contains(@class,' topic/param ')]/@name='movie'">
-    <xsl:attribute name="src"><xsl:value-of select="./*[contains(@class,' topic/param ')][@name='movie']/@value"/></xsl:attribute>
-   </xsl:if>
-   <xsl:if test="./*[contains(@class,' topic/param ')]/@name='quality'">
-    <xsl:attribute name="quality"><xsl:value-of select="./*[contains(@class,' topic/param ')][@name='quality']/@value"/></xsl:attribute>
-   </xsl:if>
-   <xsl:if test="./*[contains(@class,' topic/param ')]/@name='bgcolor'">
-    <xsl:attribute name="bgcolor"><xsl:value-of select="./*[contains(@class,' topic/param ')][@name='bgcolor']/@value"/></xsl:attribute>
-   </xsl:if>
-  </xsl:element>
- </xsl:if>
- </xsl:element>
-</xsl:template>
-
-<xsl:template match="*[contains(@class,' topic/param ')]" name="topic.param">
- <xsl:element name="param">
-  <xsl:if test="@name"><xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute></xsl:if>
-  <xsl:if test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:if>
-  <xsl:if test="@value"><xsl:attribute name="value"><xsl:value-of select="@value"/></xsl:attribute></xsl:if>
- </xsl:element>
-</xsl:template>
-
-<!-- need to add test for object/desc to avoid conflicts -->
-<xsl:template match="*[contains(@class,' topic/object ')]/*[contains(@class,' topic/desc ')]" name="topic.object_desc">
- <xsl:element name="span">
-  <xsl:if test="@name"><xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute></xsl:if>
-  <xsl:if test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:if>
-  <xsl:if test="@value"><xsl:attribute name="value"><xsl:value-of select="@value"/></xsl:attribute></xsl:if>
-  <xsl:apply-templates/>
- </xsl:element>
-</xsl:template>
-
-<!-- ===================================================================== -->
-
-<!-- =========== CALS (OASIS) TABLE =========== -->
-
-<xsl:template match="*[contains(@class,' topic/table ')]" name="topic.table">
- <xsl:variable name="revtest">
-   <xsl:if test="@rev and not($FILTERFILE='') and ($DRAFT='yes')"> 
-     <xsl:call-template name="find-active-rev-flag"> 
-       <xsl:with-param name="allrevs" select="@rev"/>
-     </xsl:call-template>
-   </xsl:if>
- </xsl:variable>
- <xsl:choose>
-   <xsl:when test="$revtest=1">   <!-- Rev is active - add the DIV -->
-     <div class="{@rev}"><xsl:apply-templates select="."  mode="table-fmt" /></div>
-   </xsl:when>
-   <xsl:otherwise>  <!-- Rev wasn't active - process normally -->
-     <xsl:apply-templates select="."  mode="table-fmt" />
-   </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-<xsl:template match="*[contains(@class,' topic/table ')]" mode="table-fmt">
- <xsl:value-of select="$newline"/>
- <!-- special case for IE & NS for frame & no rules - needs to be a double table -->
- <xsl:variable name="colsep">
-   <xsl:choose>
-     <xsl:when test="*[contains(@class,' topic/tgroup ')]/@colsep"><xsl:value-of select="*[contains(@class,' topic/tgroup ')]/@colsep"/></xsl:when>
-     <xsl:when test="@colsep"><xsl:value-of select="@colsep"/></xsl:when>
-   </xsl:choose>
- </xsl:variable>
- <xsl:variable name="rowsep">
-   <xsl:choose>
-     <xsl:when test="*[contains(@class,' topic/tgroup ')]/@rowsep"><xsl:value-of select="*[contains(@class,' topic/tgroup ')]/@rowsep"/></xsl:when>
-     <xsl:when test="@rowsep"><xsl:value-of select="@rowsep"/></xsl:when>
-   </xsl:choose>
- </xsl:variable>
- <xsl:choose>
-  <xsl:when test="@frame='all' and $colsep='0' and $rowsep='0'">
-    <table cellpadding="4" cellspacing="0" border="1" class="tableborder"><tr><td><xsl:value-of select="$newline"/>
-     <xsl:call-template name="dotable"/>
-    </td></tr></table>
-  </xsl:when>
-  <xsl:when test="not(@frame) and $colsep='0' and $rowsep='0'">
-    <table cellpadding="4" cellspacing="0" border="1" class="tableborder"><tr><td><xsl:value-of select="$newline"/>
-     <xsl:call-template name="dotable"/>
-    </td></tr></table>
-  </xsl:when>
-  <xsl:otherwise>
-   <div class="tablenoborder">
-   <xsl:call-template name="dotable"/>
-   </div>
-  </xsl:otherwise>
- </xsl:choose><xsl:value-of select="$newline"/>
-</xsl:template>
-
-<xsl:template name="dotable">
- <xsl:call-template name="flagit"/>
- <xsl:call-template name="start-revflag"/>
- <xsl:call-template name="setaname"/>
-
- <!-- Fix this; this table has no summary -->
-
-
-
- <table cellpadding="4" cellspacing="0">
-
-   <xsl:attribute name="summary">
-     <xsl:call-template name="CREATE-CAPTION-TEXT"/>
-   </xsl:attribute>
-
-
-
-  <xsl:variable name="colsep">
-    <xsl:choose>
-      <xsl:when test="*[contains(@class,' topic/tgroup ')]/@colsep"><xsl:value-of select="*[contains(@class,' topic/tgroup ')]/@colsep"/></xsl:when>
-      <xsl:when test="@colsep"><xsl:value-of select="@colsep"/></xsl:when>
-    </xsl:choose>
-  </xsl:variable>
-  <xsl:variable name="rowsep">
-    <xsl:choose>
-      <xsl:when test="*[contains(@class,' topic/tgroup ')]/@rowsep"><xsl:value-of select="*[contains(@class,' topic/tgroup ')]/@rowsep"/></xsl:when>
-      <xsl:when test="@rowsep"><xsl:value-of select="@rowsep"/></xsl:when>
-    </xsl:choose>
-  </xsl:variable>
-  <xsl:call-template name="setid"/>
-  <xsl:call-template name="commonattributes"/>
-  <xsl:call-template name="setscale"/>
-  <!-- When a table's width is set to page or column, force it's width to 100%. If it's in a list, use 90%.
-       Otherwise, the table flows to the content -->
-  <xsl:choose>
-   <xsl:when test="(@expanse='page' or @pgwide='1')and (ancestor::*[contains(@class,' topic/li ')] or ancestor::*[contains(@class,' topic/dd ')] )">
-    <xsl:attribute name="width">90%</xsl:attribute>
-   </xsl:when>
-   <xsl:when test="(@expanse='column' or @pgwide='0') and (ancestor::*[contains(@class,' topic/li ')] or ancestor::*[contains(@class,' topic/dd ')] )">
-    <xsl:attribute name="width">90%</xsl:attribute>
-   </xsl:when>
-   <xsl:when test="(@expanse='page' or @pgwide='1')">
-    <xsl:attribute name="width">100%</xsl:attribute>
-   </xsl:when>
-   <xsl:when test="(@expanse='column' or @pgwide='0')">
-    <xsl:attribute name="width">100%</xsl:attribute>
-   </xsl:when>
-  </xsl:choose>
-  <xsl:choose>
-   <xsl:when test="@frame='all' and $colsep='0' and $rowsep='0'">
-    <xsl:attribute name="border">0</xsl:attribute>
-   </xsl:when>
-   <xsl:when test="not(@frame) and $colsep='0' and $rowsep='0'">
-    <xsl:attribute name="border">0</xsl:attribute>
-   </xsl:when>
-   <xsl:when test="@frame='sides'">
-    <xsl:attribute name="frame">vsides</xsl:attribute>
-    <xsl:attribute name="border">1</xsl:attribute>
-   </xsl:when>
-   <xsl:when test="@frame='top'">
-    <xsl:attribute name="frame">above</xsl:attribute>
-    <xsl:attribute name="border">1</xsl:attribute>
-   </xsl:when>
-   <xsl:when test="@frame='bottom'">
-    <xsl:attribute name="frame">below</xsl:attribute>
-    <xsl:attribute name="border">1</xsl:attribute>
-   </xsl:when>
-   <xsl:when test="@frame='topbot'">
-    <xsl:attribute name="frame">hsides</xsl:attribute>
-    <xsl:attribute name="border">1</xsl:attribute>
-   </xsl:when>
-   <xsl:when test="@frame='none'">
-    <xsl:attribute name="frame">void</xsl:attribute>
-    <xsl:attribute name="border">1</xsl:attribute>
-   </xsl:when>
-   <xsl:otherwise>
-    <xsl:attribute name="frame">border</xsl:attribute>
-    <xsl:attribute name="border">1</xsl:attribute>
-   </xsl:otherwise>
-  </xsl:choose>
-  <xsl:choose>
-   <xsl:when test="@frame='all' and $colsep='0' and $rowsep='0'">
-    <xsl:attribute name="border">0</xsl:attribute>
-   </xsl:when>
-   <xsl:when test="not(@frame) and $colsep='0' and $rowsep='0'">
-    <xsl:attribute name="border">0</xsl:attribute>
-   </xsl:when>
-   <xsl:when test="$colsep='0' and $rowsep='0'">
-    <xsl:attribute name="rules">none</xsl:attribute>
-    <xsl:attribute name="border">0</xsl:attribute>
-   </xsl:when>
-   <xsl:when test="$colsep='0'">
-    <xsl:attribute name="rules">rows</xsl:attribute>
-   </xsl:when>
-   <xsl:when test="$rowsep='0'">
-    <xsl:attribute name="rules">cols</xsl:attribute>
-   </xsl:when>
-   <xsl:otherwise>
-    <xsl:attribute name="rules">all</xsl:attribute>
-   </xsl:otherwise>
-  </xsl:choose>
-  <xsl:call-template name="place-tbl-lbl"/>
-  <!-- title and desc are processed elsewhere -->
-  <xsl:apply-templates select="*[contains(@class,' topic/tgroup ')]"/>
- </table><xsl:value-of select="$newline"/>
- <xsl:call-template name="end-revflag"/>
-</xsl:template>
-
-<xsl:template match="*[contains(@class,' topic/tgroup ')]" name="topic.tgroup">
- <xsl:apply-templates/>
-</xsl:template>
-
-<xsl:template match="*[contains(@class,' topic/colspec ')]"></xsl:template>
-
-<xsl:template match="*[contains(@class,' topic/spanspec ')]"></xsl:template>
-
-<xsl:template match="*[contains(@class,' topic/thead ')]" name="topic.thead">
-  <thead>
-  <xsl:call-template name="commonattributes"/>
-    <xsl:choose>
-     <xsl:when test="@align">
-      <xsl:attribute name="align">
-        <xsl:value-of select="@align"/>
-      </xsl:attribute>
-     </xsl:when>
-     <xsl:otherwise>
-      <xsl:call-template name="th-align"/>
-     </xsl:otherwise>
-    </xsl:choose>
-    <xsl:if test="@char">
-      <xsl:attribute name="char">
-        <xsl:value-of select="@char"/>
-      </xsl:attribute>
-    </xsl:if>
-    <xsl:if test="@charoff">
-      <xsl:attribute name="charoff">
-        <xsl:value-of select="@charoff"/>
-      </xsl:attribute>
-    </xsl:if>
-    <xsl:if test="@valign">
-      <xsl:attribute name="valign">
-        <xsl:value-of select="@valign"/>
-      </xsl:attribute>
-    </xsl:if>
-    <xsl:apply-templates/>
-  </thead><xsl:value-of select="$newline"/>
-</xsl:template>
-
-<!-- Table footer processing. Ignore fall-thru tfoot; process them from the table body -->
-<xsl:template match="*[contains(@class,' topic/tfoot ')]"/>
-
-<xsl:template match="*[contains(@class,' topic/tbody ')]" name="topic.tbody">
-  <tbody>
-    <xsl:call-template name="commonattributes"/>
-    <xsl:if test="@align">
-      <xsl:attribute name="align">
-        <xsl:value-of select="@align"/>
-      </xsl:attribute>
-    </xsl:if>
-    <xsl:if test="@char">
-      <xsl:attribute name="char">
-        <xsl:value-of select="@char"/>
-      </xsl:attribute>
-    </xsl:if>
-    <xsl:if test="@charoff">
-      <xsl:attribute name="charoff">
-        <xsl:value-of select="@charoff"/>
-      </xsl:attribute>
-    </xsl:if>
-    <xsl:if test="@valign">
-      <xsl:attribute name="valign">
-        <xsl:value-of select="@valign"/>
-      </xsl:attribute>
-    </xsl:if>
-    <xsl:apply-templates/>
-    <!-- process table footer -->
-    <xsl:apply-templates select="../*[contains(@class,' topic/tfoot ')]" mode="gen-tfoot" />
-  </tbody><xsl:value-of select="$newline"/>
-</xsl:template>
-
-<!-- special mode for table footers -->
-<xsl:template match="*[contains(@class,' topic/tfoot ')]" mode="gen-tfoot">
-  <xsl:apply-templates/><xsl:value-of select="$newline"/>
-</xsl:template>
-
-<xsl:template match="*[contains(@class,' topic/row ')]" name="topic.row">
-  <tr>
-    <xsl:call-template name="setid"/>
-    <xsl:call-template name="commonattributes"/>
-    <xsl:if test="@align">
-      <xsl:attribute name="align">
-        <xsl:value-of select="@align"/>
-      </xsl:attribute>
-    </xsl:if>
-    <xsl:if test="@char">
-      <xsl:attribute name="char">
-        <xsl:value-of select="@char"/>
-      </xsl:attribute>
-    </xsl:if>
-    <xsl:if test="@charoff">
-      <xsl:attribute name="charoff">
-        <xsl:value-of select="@charoff"/>
-      </xsl:attribute>
-    </xsl:if>
-    <xsl:if test="@valign">
-      <xsl:attribute name="valign">
-        <xsl:value-of select="@valign"/>
-      </xsl:attribute>
-    </xsl:if>
-    <xsl:apply-templates/>
-  </tr><xsl:value-of select="$newline"/>
-</xsl:template>
-
-<xsl:template match="*[contains(@class,' topic/entry ')]" name="topic.entry">
-  <xsl:choose>
-      <xsl:when test="parent::*/parent::*[contains(@class,' topic/thead ')]">
-          <xsl:call-template name="topic.thead_entry"/>
-      </xsl:when>
-      <xsl:otherwise>
-          <xsl:call-template name="topic.tbody_entry"/>
-      </xsl:otherwise>
-  </xsl:choose>
-</xsl:template>
-
-<!-- do header entries -->
-<xsl:template name="topic.thead_entry">
- <th>
-  <xsl:call-template name="doentry"/>
- </th><xsl:value-of select="$newline"/>
-</xsl:template>
-
-<!-- do body entries -->
-<xsl:template name="topic.tbody_entry">
-  <xsl:variable name="startpos">
-    <xsl:if test="../../../../@rowheader='firstcol'"><xsl:call-template name="find-entry-start-position"/></xsl:if>
-  </xsl:variable>
-  <xsl:choose>
-    <xsl:when test="$startpos=1"><th><xsl:call-template name="doentry"/></th></xsl:when>
-    <xsl:otherwise><td><xsl:call-template name="doentry"/></td></xsl:otherwise>
-  </xsl:choose>
-  <xsl:value-of select="$newline"/>
-</xsl:template>
-
-<xsl:template name="doentry">
-  <xsl:call-template name="commonattributes"/>
-  <xsl:if test="@morerows">
-    <xsl:attribute name="rowspan"> <!-- set the number of rows to span -->
-      <xsl:value-of select="@morerows+1"/>
-    </xsl:attribute>
-  </xsl:if>
-  <xsl:if test="@spanname">
-    <xsl:attribute name="colspan"> <!-- get the number of columns to span from the corresponding spanspec -->
-      <xsl:call-template name="find-spanspec-colspan"/>
-    </xsl:attribute>
-  </xsl:if>
-  <xsl:if test="@namest and @nameend"> <!-- get the number of columns to span from the specified named column values -->
-    <xsl:attribute name="colspan">
-      <xsl:call-template name="find-colspan"/>
-    </xsl:attribute>
-  </xsl:if>
-  <!-- If align is on the tgroup, use it (parent=row, then tbody|thead|tfoot, then tgroup) -->
-  <xsl:if test="../../../@align">
-    <xsl:attribute name="align">
-      <xsl:value-of select="../../../@align"/>
-    </xsl:attribute>
-  </xsl:if>
-  <!-- If align is specified on a colspec or spanspec, that takes priority over tgroup -->
-  <xsl:if test="@colname">
-    <xsl:variable name="this-colname"><xsl:value-of select="@colname"/></xsl:variable>
-    <xsl:if test="../../../*[contains(@class,' topic/colspec ')][@colname=$this-colname][@align]">
-      <xsl:attribute name="align">
-        <xsl:value-of select="../../../*[contains(@class,' topic/colspec ')][@colname=$this-colname]/@align"/>
-      </xsl:attribute>
-    </xsl:if>
-  </xsl:if>
-  <xsl:if test="@spanname">
-    <xsl:variable name="this-spanname"><xsl:value-of select="@spanname"/></xsl:variable>
-    <xsl:if test="../../../*[contains(@class,' topic/spanspec ')][@spanname=$this-spanname][@align]">
-      <xsl:attribute name="align">
-        <xsl:value-of select="../../../*[contains(@class,' topic/spanspec ')][@spanname=$this-spanname]/@align"/>
-      </xsl:attribute>
-    </xsl:if>
-  </xsl:if>
-  <!-- If align is locally specified, that takes priority over all -->
-  <xsl:if test="@align">
-    <xsl:attribute name="align">
-      <xsl:value-of select="@align"/>
-    </xsl:attribute>
-  </xsl:if>
-  <xsl:if test="@char">
-    <xsl:attribute name="char">
-      <xsl:value-of select="@char"/>
-    </xsl:attribute>
-  </xsl:if>
-  <xsl:if test="@charoff">
-    <xsl:attribute name="charoff">
-      <xsl:value-of select="@charoff"/>
-    </xsl:attribute>
-  </xsl:if>
-  <xsl:choose>
-   <xsl:when test="@valign">
-    <xsl:attribute name="valign">
-      <xsl:value-of select="@valign"/>
-    </xsl:attribute>
-   </xsl:when>
-   <xsl:when test="ancestor::*[contains(@class,' topic/row ')]/@valign">
-    <xsl:attribute name="valign">
-      <xsl:value-of select="ancestor::*[contains(@class,' topic/row ')]/@valign"/>
-    </xsl:attribute>
-   </xsl:when>
-   <xsl:otherwise>
-    <xsl:attribute name="valign">top</xsl:attribute>
-   </xsl:otherwise>
-  </xsl:choose>
-  <xsl:if test="../../../*[contains(@class,' topic/colspec ')]/@colwidth and
-                not(@namest) and not(@nameend) and not(@spanspec)">
-    <xsl:variable name="entrypos">    <!-- Current column -->
-      <xsl:call-template name="find-entry-start-position"/>
-    </xsl:variable>
-    <xsl:variable name="totalwidth">  <!-- Total width of the column, in units -->
-      <xsl:apply-templates select="../../../*[contains(@class,' topic/colspec ')][1]" mode="count-colwidth"/>
-    </xsl:variable>
-    <xsl:variable name="thiswidth">   <!-- Width of this column, in units -->
-      <xsl:choose>
-        <xsl:when test="../../../*[contains(@class,' topic/colspec ')][number($entrypos)]/@colwidth">
-          <xsl:value-of select="substring-before(../../../*[contains(@class,' topic/colspec ')][number($entrypos)]/@colwidth,'*')"/>
-        </xsl:when>
-        <xsl:otherwise>1</xsl:otherwise>
-      </xsl:choose>
-    </xsl:variable>
-    <!-- Width = width of this column / width of table, times 100 to make a percent -->
-    <xsl:attribute name="width">
-      <xsl:value-of select="($thiswidth div $totalwidth) * 100"/><xsl:text>%</xsl:text>
-    </xsl:attribute>
-  </xsl:if>
-
-  <!-- If @rowheader='firstcol' on table, and this entry is in the first column,
-       output an ID and the firstcol class -->
-  <xsl:if test="../../../../@rowheader='firstcol'">
-    <xsl:variable name="startpos">
-      <xsl:call-template name="find-entry-start-position"/>
-    </xsl:variable>
-    <xsl:if test="number($startpos)=1">
-      <xsl:attribute name="class">firstcol</xsl:attribute>
-      <xsl:attribute name="id">
-        <xsl:value-of select="generate-id(.)"/>
-      </xsl:attribute>
-     </xsl:if>
-  </xsl:if>
-
-  <xsl:choose>
-    <!-- When entry is in a thead, output the ID -->
-    <xsl:when test="parent::*/parent::*[contains(@class,' topic/thead ')]">
-      <xsl:attribute name="id">
-        <xsl:value-of select="generate-id(.)"/>
-      </xsl:attribute>
-    </xsl:when>
-    <!-- otherwise, add @headers if needed -->
-    <xsl:otherwise>
-      <xsl:call-template name="add-headers-attribute"/>
-    </xsl:otherwise>
-  </xsl:choose>
-
-  <xsl:choose>
-    <!-- When entry is empty, output a blank -->
-    <xsl:when test="not(*|text()|processing-instruction())">
-      <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>  <!-- nbsp -->
-    </xsl:when>
-    <xsl:otherwise>
-      <xsl:variable name="revtest">
-        <xsl:if test="@rev and not($FILTERFILE='') and ($DRAFT='yes')"> 
-          <xsl:call-template name="find-active-rev-flag">               
-            <xsl:with-param name="allrevs" select="@rev"/>
-          </xsl:call-template>
-        </xsl:if>
-      </xsl:variable>
-      <xsl:variable name="revtest-row">
-        <xsl:if test="../@rev and not($FILTERFILE='') and ($DRAFT='yes')"> 
-          <xsl:call-template name="find-active-rev-flag">   
-            <xsl:with-param name="allrevs" select="../@rev"/>
-          </xsl:call-template>
-        </xsl:if>
-      </xsl:variable>
-      <xsl:choose>
-        <xsl:when test="$revtest=1">   <!-- Entry Rev is active - add the span -->
-          <span class="{@rev}">
-          <xsl:call-template name="start-revflag-parent"/>
-          <xsl:call-template name="start-revflag"/>            
-          <xsl:apply-templates/>
-          <xsl:call-template name="end-revflag"/>
-          <xsl:call-template name="end-revflag-parent"/>
-          </span>
-        </xsl:when>
-        <xsl:when test="$revtest-row=1">   <!-- Row Rev is active - add the span -->
-          <span class="{../@rev}">
-          <xsl:call-template name="start-revflag-parent"/>
-          <xsl:call-template name="start-revflag"/>
-          <xsl:apply-templates/>
-          <xsl:call-template name="end-revflag"/>
-          <xsl:call-template name="end-revflag-parent"/>
-          </span>
-        </xsl:when>
-        <xsl:otherwise>  <!-- Rev wasn't active - process normally -->
-          <xsl:call-template name="start-revflag-parent"/>
-          <xsl:call-template name="start-revflag"/>
-          <xsl:apply-templates/>
-          <xsl:call-template name="end-revflag"/>
-          <xsl:call-template name="end-revflag-parent"/>
-        </xsl:otherwise>
-      </xsl:choose>
-    </xsl:otherwise>
-  </xsl:choose>
-</xsl:template>
-
-<xsl:template match="*[contains(@class,' topic/colspec ')]" mode="count-colwidth">
-  <xsl:param name="totalwidth">0</xsl:param> <!-- Total counted width so far -->
-  <xsl:variable name="thiswidth">            <!-- Width of this column -->
-    <xsl:choose>
-      <xsl:when test="@colwidth"><xsl:value-of select="substring-before(@colwidth,'*')"/></xsl:when>
-      <xsl:otherwise>1</xsl:otherwise>
-    </xsl:choose>
-  </xsl:variable>
-  <!-- If there are more colspecs, continue, otherwise return the current count -->
-  <xsl:choose>
-    <xsl:when test="following-sibling::*[contains(@class,' topic/colspec ')]">
-      <xsl:apply-templates select="following-sibling::*[contains(@class,' topic/colspec ')][1]" mode="count-colwidth">
-        <xsl:with-param name="totalwidth" select="$totalwidth + $thiswidth"/>
-      </xsl:apply-templates>
-    </xsl:when>
-    <xsl:otherwise><xsl:value-of select="$totalwidth + $thiswidth"/></xsl:otherwise>
-  </xsl:choose>
-</xsl:template>
-
-<!-- Find the starting column of an entry in a row. -->
-<xsl:template name="find-entry-start-position">
-  <xsl:choose>
-
-    <!-- if the column number is specified, use it -->
-    <xsl:when test="@colnum">
-      <xsl:value-of select="@colnum"/>
-    </xsl:when>
-
-    <!-- If there is a defined column name, check the colspans to determine position -->
-    <xsl:when test="@colname">
-      <!-- count the number of colspans before the one this entry references, plus one -->
-      <xsl:value-of select="number(count(../../../*[contains(@class,' topic/colspec ')][@colname=current()/@colname]/preceding-sibling::*)+1)"/>
-    </xsl:when>
-
-    <!-- If the starting column is defined, check colspans to determine position -->
-    <xsl:when test="@namest">
-      <xsl:value-of select="number(count(../../../*[contains(@class,' topic/colspec ')][@colname=current()/@namest]/preceding-sibling::*)+1)"/>
-    </xsl:when>
-
-    <!-- Need a test for spanspec -->
-    <xsl:when test="@spanname">
-      <xsl:variable name="startspan">  <!-- starting column for this span -->
-        <xsl:value-of select="../../../*[contains(@class,' topic/spanspec ')][@spanname=current()/@spanname]/@namest"/>
-      </xsl:variable>
-      <xsl:value-of select="number(count(../../../*[contains(@class,' topic/colspec ')][@colname=$startspan]/preceding-sibling::*)+1)"/>
-    </xsl:when>
-
-    <!-- Otherwise, just use the count of cells in this row -->
-    <xsl:otherwise>
-      <xsl:variable name="prev-sib">
-        <xsl:value-of select="count(preceding-sibling::*)"/>
-      </xsl:variable>
-      <xsl:value-of select="$prev-sib+1"/>
-    </xsl:otherwise>
-
-  </xsl:choose>
-</xsl:template>
-
-<!-- Find the end column of a cell. If the cell does not span any columns,
-     the end position is the same as the start position. -->
-<xsl:template name="find-entry-end-position">
-  <xsl:param name="startposition" select="0"/>
-  <xsl:choose>
-    <xsl:when test="@nameend">
-      <xsl:value-of select="number(count(../../../*[contains(@class,' topic/colspec ')][@colname=current()/@nameend]/preceding-sibling::*)+1)"/>
-    </xsl:when>
-    <xsl:when test="@spanname">
-      <xsl:variable name="endspan">  <!-- starting column for this span -->
-        <xsl:value-of select="../../../*[contains(@class,' topic/spanspec ')][@spanname=current()/@spanname]/@nameend"/>
-      </xsl:variable>
-      <xsl:value-of select="number(count(../../../*[contains(@class,' topic/colspec ')][@colname=$endspan]/preceding-sibling::*)+1)"/>
-    </xsl:when>
-    <xsl:otherwise>
-      <xsl:value-of select="$startposition"/>
-    </xsl:otherwise>
-  </xsl:choose>
-</xsl:template>
-
-<!-- Check <thead> entries, and return IDs for those which match the desired column -->
-<xsl:template match="*[contains(@class,' topic/thead ')]/*[contains(@class,' topic/row ')]/*[contains(@class,' topic/entry ')]" mode="findmatch">
-  <xsl:param name="startmatch">1</xsl:param>  <!-- start column of the tbody cell -->
-  <xsl:param name="endmatch">1</xsl:param>    <!-- end column of the tbody cell -->
-  <xsl:variable name="entrystartpos">         <!-- start column of this thead cell -->
-    <xsl:call-template name="find-entry-start-position"/>
-  </xsl:variable>
-  <xsl:variable name="entryendpos">           <!-- end column of this thead cell -->
-    <xsl:call-template name="find-entry-end-position">
-      <xsl:with-param name="startposition" select="$entrystartpos"/>
-    </xsl:call-template>
-  </xsl:variable>
-
-  <xsl:choose>
-    <!-- Ignore this header cell if it  starts after the tbody cell we are testing -->
-    <xsl:when test="number($endmatch) &lt; number($entrystartpos)"/>
-    <!-- Ignore this header cell if it ends before the tbody cell we are testing -->
-    <xsl:when test="number($startmatch) > number($entryendpos)"/>
-    <!-- Otherwise, this header lines up with the tbody cell, so use the ID -->
-    <xsl:otherwise>
-      <xsl:value-of select="generate-id(.)"/><xsl:text> </xsl:text>
-    </xsl:otherwise>
-  </xsl:choose>
-</xsl:template>
-
-<!-- Check the first column for entries that line up with the test row.
-     Any entries that line up need to have the header saved. This template is first
-     called with the first entry of the first row in <tbody>. It is called from here
-     on the next cell in column one.            -->
-<xsl:template match="*[contains(@class,' topic/entry ')]" mode="check-first-column">
-  <xsl:param name="startMatchRow" select="1"/>   <!-- First row of the tbody cell we are matching -->
-  <xsl:param name="endMatchRow" select="1"/>     <!-- Last row of the tbody cell we are matching -->
-  <xsl:param name="startCurrentRow" select="1"/> <!-- First row of the column-1 cell we are testing -->
-  <xsl:variable name="endCurrentRow">            <!-- Last row of the column-1 cell we are testing -->
-    <xsl:choose>
-      <!-- If @morerows, the cell ends at startCurrentRow + @morerows. Otherise, start=end. -->
-      <xsl:when test="@morerows"><xsl:value-of select="number($startCurrentRow)+number(@morerows)"/></xsl:when>
-      <xsl:otherwise><xsl:value-of select="$startCurrentRow"/></xsl:otherwise>
-    </xsl:choose>
-  </xsl:variable>
-  <xsl:choose>
-    <!-- When the current column-1 cell ends before the tbody cell we are matching -->
-    <xsl:when test="number($endCurrentRow) &lt; number($startMatchRow)">
-      <!-- Call this template again with the next entry in column one -->
-      <xsl:if test="parent::*/parent::*/*[number($endCurrentRow)+1]">
-        <xsl:apply-templates select="parent::*/parent::*/*[number($endCurrentRow)+1]/*[1]" mode="check-first-column">
-          <xsl:with-param name="startMatchRow" select="$startMatchRow"/>
-          <xsl:with-param name="endMatchRow" select="$endMatchRow"/>
-          <xsl:with-param name="startCurrentRow" select="number($endCurrentRow)+1"/>
-        </xsl:apply-templates>
-      </xsl:if>
-    </xsl:when>
-    <!-- If this column-1 cell starts after the tbody cell we are matching, jump out of recursive loop -->
-    <xsl:when test="number($startCurrentRow) &gt; number($endMatchRow)"/>
-    <!-- Otherwise, the column-1 cell is aligned with the tbody cell, so save the ID and continue -->
-    <xsl:otherwise>
-      <xsl:value-of select="generate-id(.)"/><xsl:text> </xsl:text>
-      <!-- If we are not at the end of the tbody cell, and more rows exist, continue testing column 1 -->
-      <xsl:if test="number($endCurrentRow) &lt; number($endMatchRow) and
-                    parent::*/parent::*/*[number($endCurrentRow)+1]">
-        <xsl:apply-templates select="parent::*/parent::*/*[number($endCurrentRow)+1]/*[1]" mode="check-first-column">
-          <xsl:with-param name="startMatchRow" select="$startMatchRow"/>
-          <xsl:with-param name="endMatchRow" select="$endMatchRow"/>
-          <xsl:with-param name="startCurrentRow" select="number($endCurrentRow)+1"/>
-        </xsl:apply-templates>
-      </xsl:if>
-    </xsl:otherwise>
-  </xsl:choose>
-</xsl:template>
-
-<!-- Add @headers to cells in the body of a table. -->
-<xsl:template name="add-headers-attribute">
-  <!-- Determine the start column for the current cell -->
-  <xsl:variable name="entrystartpos">
-    <xsl:call-template name="find-entry-start-position"/>
-  </xsl:variable>
-  <!-- Determine the end column for the current cell -->
-  <xsl:variable name="entryendpos">
-    <xsl:call-template name="find-entry-end-position">
-      <xsl:with-param name="startposition" select="$entrystartpos"/>
-    </xsl:call-template>
-  </xsl:variable>
-  <!-- Find the IDs of headers that are aligned above this cell. This is done by applying
-       templates on all headers, using mode=findmatch; matching IDs are returned. -->
-  <xsl:variable name="hdrattr">
-    <xsl:apply-templates select="../../../*[contains(@class,' topic/thead ')]/*[contains(@class,' topic/row ')]/*" mode="findmatch">
-      <xsl:with-param name="startmatch" select="$entrystartpos"/>
-      <xsl:with-param name="endmatch" select="$entryendpos"/>
-    </xsl:apply-templates>
-  </xsl:variable>
-  <!-- Find the IDs of headers in the first column, which are aligned with this cell -->
-  <xsl:variable name="rowheader">
-    <!-- If this entry is not in the first column or in thead, and @rowheader=firstcol on table -->
-    <xsl:if test="not(number($entrystartpos)=1) and
-                  not(parent::*/parent::*[contains(@class,' topic/thead ')]) and
-                  ../../../../@rowheader='firstcol'">
-      <!-- Find the start row for this entry -->
-      <xsl:variable name="startrow" select="number(count(parent::*/preceding-sibling::*)+1)"/>
-      <!-- Find the end row for this entry -->
-      <xsl:variable name="endrow">
-        <xsl:if test="@morerows"><xsl:value-of select="number($startrow) + number(@morerows)"/></xsl:if>
-        <xsl:if test="not(@morerows)"><xsl:value-of select="$startrow"/></xsl:if>
-      </xsl:variable>
-      <!-- Scan first-column entries for ones that align with this cell, starting with
-           the first entry in the first row -->
-      <xsl:apply-templates select="../../*[contains(@class,' topic/row ')][1]/*[contains(@class,' topic/entry ')][1]" mode="check-first-column">
-        <xsl:with-param name="startMatchRow" select="$startrow"/>
-        <xsl:with-param name="endMatchRow" select="$endrow"/>
-      </xsl:apply-templates>
-    </xsl:if>
-  </xsl:variable>
-   <xsl:if test="string-length($rowheader)>0 or string-length($hdrattr)>0">
-     <!-- <xsl:attribute name="headers"><xsl:value-of select="$rowheader"/><xsl:value-of select="$hdrattr"/></xsl:attribute> -->
-     <xsl:attribute name="headers"><xsl:value-of select="normalize-space($rowheader)"/><xsl:value-of select="normalize-space($hdrattr)"/></xsl:attribute>
-  </xsl:if>
-</xsl:template>
-
-<!-- Find the number of column spans between name-start and name-end attrs -->
-<xsl:template name="find-colspan">
-  <xsl:variable name="startpos">
-    <xsl:call-template name="find-entry-start-position"/>
-  </xsl:variable>
-  <xsl:variable name="endpos">
-    <xsl:call-template name="find-entry-end-position"/>
-  </xsl:variable>
-  <xsl:value-of select="$endpos - $startpos + 1"/>
-</xsl:template>
-
-<xsl:template name="find-spanspec-colspan">
-  <xsl:variable name="spanname"><xsl:value-of select="@spanname"/></xsl:variable>
-  <xsl:variable name="startcolname">
-    <xsl:value-of select="../../../*[contains(@class,' topic/spanspec ')][@spanname=$spanname][1]/@namest"/>
-  </xsl:variable>
-  <xsl:variable name="endcolname">
-    <xsl:value-of select="../../../*[contains(@class,' topic/spanspec ')][@spanname=$spanname][1]/@nameend"/>
-  </xsl:variable>
-  <xsl:variable name="startpos">
-   <xsl:value-of select="number(count(../../../*[contains(@class,' topic/colspec ')][@colname=$startcolname]/preceding-sibling::*)+1)"/>
-  </xsl:variable>
-  <xsl:variable name="endpos">
-   <xsl:value-of select="number(count(../../../*[contains(@class,' topic/colspec ')][@colname=$endcolname]/preceding-sibling::*)+1)"/>
-  </xsl:variable>
-  <xsl:value-of select="$endpos - $startpos + 1"/>
-</xsl:template>
-
-<!-- end of table section -->
-
-
-<!-- ===================================================================== -->
-
-<!-- =========== SimpleTable - SEMANTIC TABLE =========== -->
-
-<xsl:template match="*[contains(@class,' topic/simpletable ')]" name="topic.simpletable">
- <xsl:variable name="revtest">
-   <xsl:if test="@rev and not($FILTERFILE='') and ($DRAFT='yes')"> 
-     <xsl:call-template name="find-active-rev-flag">

[... 5801 lines stripped ...]