]> source.dussan.org Git - poi.git/commitdiff
"poi-skin": Original Skin (Forrest) for Jakarta POI Project
authortetsuya <tetsuya@unknown>
Sat, 11 Oct 2003 18:23:03 +0000 (18:23 +0000)
committertetsuya <tetsuya@unknown>
Sat, 11 Oct 2003 18:23:03 +0000 (18:23 +0000)
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@353386 13f79535-47bb-0310-9956-ffa450edef68

43 files changed:
forrest.properties
src/documentation/skins/common/images/README.txt [new file with mode: 0644]
src/documentation/skins/common/images/built-with-forrest-button.png [new file with mode: 0644]
src/documentation/skins/common/images/pdfdoc.gif [new file with mode: 0644]
src/documentation/skins/common/images/printer.gif [new file with mode: 0644]
src/documentation/skins/common/images/spacer.gif [new file with mode: 0644]
src/documentation/skins/common/images/valid-html401.png [new file with mode: 0644]
src/documentation/skins/common/images/xmldoc.gif [new file with mode: 0644]
src/documentation/skins/common/xslt/fo/document2fo.xsl [new file with mode: 0644]
src/documentation/skins/common/xslt/fo/footerinfo.xsl [new file with mode: 0644]
src/documentation/skins/common/xslt/fo/pdfoutline.xsl [new file with mode: 0644]
src/documentation/skins/common/xslt/html/book2menu.xsl [new file with mode: 0644]
src/documentation/skins/common/xslt/html/document2html.xsl [new file with mode: 0644]
src/documentation/skins/common/xslt/html/dotdots.xsl [new file with mode: 0644]
src/documentation/skins/common/xslt/html/pathutils.xsl [new file with mode: 0644]
src/documentation/skins/common/xslt/html/renderlogo.xsl [new file with mode: 0644]
src/documentation/skins/common/xslt/html/site2xhtml.xsl [new file with mode: 0644]
src/documentation/skins/common/xslt/html/split.xsl [new file with mode: 0644]
src/documentation/skins/common/xslt/html/tab2menu.xsl [new file with mode: 0644]
src/documentation/skins/common/xslt/html/tabutils.xsl [new file with mode: 0644]
src/documentation/skins/poi-site/css/mysite.css [new file with mode: 0644]
src/documentation/skins/poi-site/css/print.css [new file with mode: 0644]
src/documentation/skins/poi-site/css/site.css [new file with mode: 0644]
src/documentation/skins/poi-site/css/tigris.css [new file with mode: 0644]
src/documentation/skins/poi-site/images/add.jpg [new file with mode: 0644]
src/documentation/skins/poi-site/images/favicon.ico [new file with mode: 0644]
src/documentation/skins/poi-site/images/note.gif [new file with mode: 0644]
src/documentation/skins/poi-site/images/nw_maj_rond.gif [new file with mode: 0644]
src/documentation/skins/poi-site/images/nw_min.gif [new file with mode: 0644]
src/documentation/skins/poi-site/images/pdfdoc.gif [new file with mode: 0644]
src/documentation/skins/poi-site/images/remove.jpg [new file with mode: 0644]
src/documentation/skins/poi-site/images/spacer.gif [new file with mode: 0644]
src/documentation/skins/poi-site/images/strich.gif [new file with mode: 0644]
src/documentation/skins/poi-site/images/update.jpg [new file with mode: 0644]
src/documentation/skins/poi-site/images/valid-html401.png [new file with mode: 0644]
src/documentation/skins/poi-site/images/vcss.png [new file with mode: 0644]
src/documentation/skins/poi-site/images/void.gif [new file with mode: 0644]
src/documentation/skins/poi-site/images/xmldoc.gif [new file with mode: 0644]
src/documentation/skins/poi-site/xslt/fo/document2fo.xsl [new file with mode: 0644]
src/documentation/skins/poi-site/xslt/html/book2menu.xsl [new file with mode: 0644]
src/documentation/skins/poi-site/xslt/html/document2html.xsl [new file with mode: 0644]
src/documentation/skins/poi-site/xslt/html/site2xhtml.xsl [new file with mode: 0644]
src/documentation/skins/poi-site/xslt/html/tab2menu.xsl [new file with mode: 0644]

index 98e8f08143dbf82908a5fe74203425b38df33013..be6f2e013abe23f992c3ae6d91707327c33fc4d9 100644 (file)
@@ -12,7 +12,7 @@
 #project.skin=forrest-site
 #project.skin=avalon-tigris
 #project.skin=krysalis-site
-
+project.skin=poi-site
 
 ##############
 # layout properties
diff --git a/src/documentation/skins/common/images/README.txt b/src/documentation/skins/common/images/README.txt
new file mode 100644 (file)
index 0000000..24bf01a
--- /dev/null
@@ -0,0 +1,3 @@
+This directory is currently useless, as the sitemap only looks in
+skins/{forrest:skin}, so files must be kept in synch manually until this is
+fixed.
diff --git a/src/documentation/skins/common/images/built-with-forrest-button.png b/src/documentation/skins/common/images/built-with-forrest-button.png
new file mode 100644 (file)
index 0000000..4a787ab
Binary files /dev/null and b/src/documentation/skins/common/images/built-with-forrest-button.png differ
diff --git a/src/documentation/skins/common/images/pdfdoc.gif b/src/documentation/skins/common/images/pdfdoc.gif
new file mode 100644 (file)
index 0000000..00dee28
Binary files /dev/null and b/src/documentation/skins/common/images/pdfdoc.gif differ
diff --git a/src/documentation/skins/common/images/printer.gif b/src/documentation/skins/common/images/printer.gif
new file mode 100644 (file)
index 0000000..5021187
Binary files /dev/null and b/src/documentation/skins/common/images/printer.gif differ
diff --git a/src/documentation/skins/common/images/spacer.gif b/src/documentation/skins/common/images/spacer.gif
new file mode 100644 (file)
index 0000000..35d42e8
Binary files /dev/null and b/src/documentation/skins/common/images/spacer.gif differ
diff --git a/src/documentation/skins/common/images/valid-html401.png b/src/documentation/skins/common/images/valid-html401.png
new file mode 100644 (file)
index 0000000..3855210
Binary files /dev/null and b/src/documentation/skins/common/images/valid-html401.png differ
diff --git a/src/documentation/skins/common/images/xmldoc.gif b/src/documentation/skins/common/images/xmldoc.gif
new file mode 100644 (file)
index 0000000..ca1224f
Binary files /dev/null and b/src/documentation/skins/common/images/xmldoc.gif differ
diff --git a/src/documentation/skins/common/xslt/fo/document2fo.xsl b/src/documentation/skins/common/xslt/fo/document2fo.xsl
new file mode 100644 (file)
index 0000000..cbb7f12
--- /dev/null
@@ -0,0 +1,705 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:fo="http://www.w3.org/1999/XSL/Format"
+                version="1.0">
+
+  <xsl:output method="xml"/>
+  <xsl:param name="numbersections" select="'true'"/>
+
+  <!-- Section depth at which we stop numbering and just indent -->
+  <xsl:param name="numbering-max-depth" select="'3'"/>
+  <xsl:param name="ctxbasedir" select="."/>
+  <xsl:param name="xmlbasedir"/>
+  <xsl:include href="pdfoutline.xsl"/>
+  <xsl:include href="footerinfo.xsl"/>
+
+  <xsl:template match="/">
+    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+      <fo:layout-master-set>
+
+        <fo:simple-page-master master-name="first-page"
+          page-height="11in" 
+          page-width="8.5in"
+          margin-top="1in" 
+          margin-bottom="1in" 
+          margin-left="1.25in" 
+          margin-right="1in">
+          <fo:region-body
+            margin-top="0.5in"
+            margin-bottom=".5in"/>
+          <fo:region-after 
+            region-name="first-footer"
+            extent=".5in"
+            display-align="before"/>
+        </fo:simple-page-master>
+
+        <fo:simple-page-master master-name="even-page"
+          page-height="11in" 
+          page-width="8.5in"
+          margin-top="1in" 
+          margin-bottom="1in" 
+          margin-left="1.25in" 
+          margin-right="1in">
+          <fo:region-before
+            region-name="even-header"
+            extent="0.5in"
+            border-bottom="0.5pt solid"/>
+          <fo:region-body
+            margin-top="0.5in"
+            margin-bottom=".5in"/>
+          <fo:region-after 
+            region-name="even-footer"
+            extent=".5in"
+            display-align="before"/>
+        </fo:simple-page-master>
+
+        <fo:simple-page-master master-name="odd-page"
+          page-height="11in" 
+          page-width="8.5in"
+          margin-top="1in" 
+          margin-bottom="1in" 
+          margin-left="1.25in" 
+          margin-right="1in">
+          <fo:region-before
+            region-name="odd-header"
+            extent="0.5in"
+            border-bottom="0.5pt solid"/>
+          <fo:region-body
+            margin-top="0.5in"
+            margin-bottom=".5in"/>
+          <fo:region-after 
+            region-name="odd-footer"
+            extent=".5in"
+            display-align="before"/>
+        </fo:simple-page-master>
+
+        <fo:page-sequence-master master-name="book">
+          <fo:repeatable-page-master-alternatives>
+            <fo:conditional-page-master-reference
+              page-position="first"
+              master-reference="first-page"/>
+            <fo:conditional-page-master-reference
+              odd-or-even="odd"
+              master-reference="odd-page"/>
+            <fo:conditional-page-master-reference
+              odd-or-even="even"
+              master-reference="even-page"/>
+          </fo:repeatable-page-master-alternatives>
+        </fo:page-sequence-master>
+      </fo:layout-master-set>
+
+      <xsl:apply-templates select="/document" mode="outline"/>
+
+      <fo:page-sequence master-reference="book">
+        <fo:title><xsl:value-of select="document/header/title"/></fo:title>
+        <xsl:apply-templates/>
+      </fo:page-sequence>
+      
+    </fo:root>
+  </xsl:template>
+
+  <xsl:template match="document">
+    <fo:title><xsl:value-of select="header/title"/></fo:title>
+    
+    <fo:static-content flow-name="first-footer">
+      <fo:block
+        border-top="0.25pt solid"
+        padding-before="6pt"
+        text-align="center">
+        <xsl:apply-templates select="footer"/>
+      </fo:block>
+      <fo:block
+        text-align="start">
+        Page <fo:page-number/>
+      </fo:block>
+      <xsl:call-template name="info"/>
+    </fo:static-content>
+
+    <fo:static-content flow-name="even-header">
+      <fo:block
+        text-align="end"
+        font-style="italic">
+        <xsl:value-of select="header/title"/>
+      </fo:block>
+    </fo:static-content>
+
+    <fo:static-content flow-name="even-footer">
+      <fo:block
+        border-top="0.25pt solid"
+        padding-before="6pt"
+        text-align="center">
+        <xsl:apply-templates select="footer"/>
+      </fo:block>
+      <fo:block
+        text-align="end">
+        Page <fo:page-number/>
+      </fo:block>
+      <xsl:call-template name="info"/>
+    </fo:static-content>
+
+    <fo:static-content flow-name="odd-header">
+      <fo:block
+        text-align="start"
+        font-style="italic">
+        <xsl:value-of select="header/title"/>
+      </fo:block>
+    </fo:static-content>
+    
+    <fo:static-content flow-name="odd-footer">
+      <fo:block
+        border-top="0.25pt solid"
+        padding-before="6pt"
+        text-align="center">
+        <xsl:apply-templates select="footer"/>
+      </fo:block>
+      <fo:block
+        text-align="start">
+        Page <fo:page-number/>
+      </fo:block>
+      <xsl:call-template name="info"/>
+    </fo:static-content>
+
+    <fo:flow flow-name="xsl-region-body">
+      <fo:block
+        padding-before="24pt"
+        padding-after="24pt"
+        font-size="24pt"
+        font-weight="bold"
+        id="{generate-id()}">
+
+        <xsl:value-of select="header/title"/>
+      </fo:block>
+      
+      <fo:block
+        text-align="justify"
+        padding-before="18pt"
+        padding-after="18pt">
+        <xsl:apply-templates/>
+      </fo:block>
+    </fo:flow>
+  </xsl:template>
+  
+  <xsl:template match="abstract">
+    <fo:block
+      font-size="12pt"
+      text-align="center"
+      space-before="20pt"
+      space-after="25pt"
+      width="7.5in"
+      font-family="serif"
+      font-style="italic">
+      <xsl:apply-templates/>
+    </fo:block>
+  </xsl:template>
+  
+  <xsl:template match="notice">
+    <fo:block
+      font-size="10pt"
+      text-align="left"
+      space-before="20pt"
+      width="7.5in"
+      font-family="serif"
+      border-top="0.25pt solid"
+      border-bottom="0.25pt solid"
+      padding-before="6pt"
+      padding-after="6pt">
+      NOTICE: <xsl:apply-templates/>
+    </fo:block>
+  </xsl:template>
+
+  <xsl:template match="anchor">
+    <fo:block id="{@id}"/>
+    <xsl:apply-templates/>
+  </xsl:template>
+
+  <xsl:template match="section">
+    
+    <xsl:param name="level">0</xsl:param>
+
+    <xsl:variable name="size">
+      <xsl:choose>
+        <xsl:when test="number($level) = 1">
+          <xsl:value-of select="14"/>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:value-of select="12"/>
+        </xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
+    
+    <fo:block
+      font-family="serif"
+      font-size="{$size}pt"
+      font-weight="bold"
+      space-before="12pt"
+      space-after="4pt">
+
+      <xsl:attribute name="id">
+        <xsl:choose>
+          <xsl:when test="normalize-space(@id)!=''">
+            <xsl:value-of select="@id"/>
+          </xsl:when>
+          <xsl:otherwise>
+            <xsl:value-of select="generate-id()"/>
+          </xsl:otherwise>
+        </xsl:choose>
+      </xsl:attribute>
+
+      <xsl:if test="$numbersections = 'true' and number($level) &lt; $numbering-max-depth+1">
+        <xsl:number format="1.1.1.1.1.1.1" count="section" level="multiple"/>
+        <xsl:text>. </xsl:text>
+      </xsl:if>
+
+      <!-- For sections 4  or more nestings deep, indent instead of number -->
+      <xsl:if test="number($level) &gt; $numbering-max-depth+1">
+        <xsl:attribute name="start-indent">
+          <xsl:value-of select="4+number($level)"/><xsl:text>pt</xsl:text>
+        </xsl:attribute>
+      </xsl:if>
+
+      <xsl:value-of select="title"/>
+    </fo:block>
+    <xsl:apply-templates>
+      <xsl:with-param name="level" select="number($level)+1"/>
+    </xsl:apply-templates>
+    
+  </xsl:template>
+  
+  <xsl:template match="title">
+    <!-- do nothing as titles are handled in their parent templates -->
+  </xsl:template>
+  
+  <xsl:template match="subtitle">
+    <xsl:param name="level">0</xsl:param>
+    <xsl:variable name="size" select="16-(number($level)*1.5)"/>
+
+    <fo:block
+      font-weight="bold"
+      font-size="{$size}pt">
+      <xsl:apply-templates/>
+    </fo:block>
+  </xsl:template>
+
+  <xsl:template match="authors">
+    <fo:block
+      space-before="20pt"
+      font-weight="bold"
+      font-size="9pt">
+      by
+      <xsl:for-each select="person">
+        <xsl:value-of select="@name"/>
+        <xsl:if test="not(position() = last())">, </xsl:if>
+      </xsl:for-each>
+    </fo:block>
+  </xsl:template>
+
+  <xsl:template match="p">
+    <fo:block
+      space-before="4pt"
+      space-after="4pt"
+      font-family="serif">
+      <xsl:apply-templates/>
+    </fo:block>
+  </xsl:template>
+  
+
+  <xsl:template match="source">
+    <fo:block
+      font-family="monospace"
+      font-size="10pt"
+      background-color="#f0f0f0"
+      white-space-collapse="false"
+      linefeed-treatment="preserve"
+      white-space-treatment="preserve"
+      wrap-option="no-wrap"
+      text-align="start">
+      <xsl:apply-templates/>
+    </fo:block>
+  </xsl:template>
+  
+  
+  <xsl:template match="ol|ul">
+    <fo:list-block 
+      provisional-distance-between-starts="18pt"
+      provisional-label-separation="3pt"
+      text-align="start">
+      <xsl:apply-templates/>
+    </fo:list-block>
+  </xsl:template>
+  
+  <xsl:template match="ol/li">
+    <fo:list-item>
+      <fo:list-item-label 
+        end-indent="label-end()">
+        <fo:block>
+          <xsl:number format="1."/>
+        </fo:block>
+      </fo:list-item-label>
+      <fo:list-item-body 
+        start-indent="body-start()">
+        <fo:block
+          font-family="serif">
+          <xsl:apply-templates/>
+        </fo:block>
+      </fo:list-item-body>
+    </fo:list-item>
+  </xsl:template>
+
+  <!-- Emulate browser handling of these invalid combinations that our DTD
+  unfortunately allows -->
+  <xsl:template match="ul/ul | ul/ol | ol/ul | ol/ol">
+    <fo:list-item>
+      <fo:list-item-label end-indent="label-end()">
+        <fo:block></fo:block>
+      </fo:list-item-label>
+      <fo:list-item-body start-indent="body-start()">
+        <fo:block font-family="serif">
+          <xsl:apply-templates/>
+        </fo:block>
+      </fo:list-item-body>
+    </fo:list-item>
+  </xsl:template>
+
+  <xsl:template match="ul/li">
+    <fo:list-item>
+      <fo:list-item-label end-indent="label-end()">
+        <fo:block>&#x2022;</fo:block>
+      </fo:list-item-label>
+      <fo:list-item-body start-indent="body-start()">
+        <fo:block
+          font-family="serif">
+          <xsl:apply-templates/>
+        </fo:block>
+      </fo:list-item-body>
+    </fo:list-item>
+  </xsl:template>
+  
+  <xsl:template match="dl">
+    <fo:list-block
+      provisional-distance-between-starts="18pt"
+      provisional-label-separation="3pt"
+      text-align="start">
+      <xsl:apply-templates/>
+    </fo:list-block>
+  </xsl:template>
+  
+  <xsl:template match="dt">
+    <fo:list-item>
+      <fo:list-item-label end-indent="label-end()">
+        <fo:block></fo:block>
+      </fo:list-item-label>
+      <fo:list-item-body start-indent="body-start()">
+        <fo:block
+          font-weight="bold">
+          <xsl:apply-templates/>
+        </fo:block>
+      </fo:list-item-body>
+    </fo:list-item>
+  </xsl:template>
+  
+  <xsl:template match="dd">
+    <fo:list-item>
+      <fo:list-item-label end-indent="label-end()">
+        <fo:block></fo:block>
+      </fo:list-item-label>
+      <fo:list-item-body start-indent="body-start()">
+        <fo:block>
+          <xsl:apply-templates/>
+        </fo:block>
+      </fo:list-item-body>
+    </fo:list-item>
+  </xsl:template>
+  
+  <xsl:template match="strong">
+    <fo:inline font-weight="bold"><xsl:apply-templates/></fo:inline>
+  </xsl:template>
+  
+  <xsl:template match="em">
+    <fo:inline font-style="italic"><xsl:apply-templates/></fo:inline>
+  </xsl:template>
+
+  <xsl:template match="code">
+    <fo:inline font-family="monospace"><xsl:apply-templates/></fo:inline>
+  </xsl:template>
+
+  <xsl:template match="warning">
+    <fo:block
+      margin-left="0.25in"
+      margin-right="0.25in"
+      font-weight="bold"
+      font-size="10pt"
+      font-family="serif"
+      space-before="10pt"
+      border-before-style="solid"
+      border-start-style="solid"
+      border-end-style="solid"
+      border-color="#D00000"
+      background-color="#D00000"
+      color="#ffffff">
+      <xsl:choose>
+        <xsl:when test="@label"><xsl:value-of select="@label"/></xsl:when>
+        <xsl:otherwise>Note: </xsl:otherwise>
+      </xsl:choose><xsl:value-of select="title"/>       
+    </fo:block>
+    <fo:block
+      margin-left="0.25in"
+      margin-right="0.25in"
+      font-family="serif"
+      font-size="8pt"
+      border-after-style="solid"
+      border-start-style="solid"
+      border-end-style="solid"
+      border-color="#D00000"
+      background-color="#fff0f0"
+      padding-start="3pt"
+      padding-end="3pt"
+      padding-before="3pt"
+      padding-after="3pt"
+      space-after="10pt">
+      <xsl:apply-templates/>
+    </fo:block>
+  </xsl:template>
+
+  <xsl:template match="note">
+    <fo:block
+      margin-left="0.25in"
+      margin-right="0.25in"
+      font-weight="bold"
+      font-size="10pt"
+      color="#ffffff"
+      font-family="serif"
+      space-before="10pt"
+      border-before-style="solid"
+      border-start-style="solid"
+      border-end-style="solid"
+      border-color="#A0C9F5"
+      background-color="#A0C9F5">
+      <xsl:choose>
+        <xsl:when test="@label"><xsl:value-of select="@label"/></xsl:when>
+        <xsl:otherwise>Note: </xsl:otherwise>
+      </xsl:choose><xsl:value-of select="title"/>
+    </fo:block>
+    <fo:block
+      margin-left="0.25in"
+      margin-right="0.25in"
+      font-family="serif"
+      font-size="8pt"
+      space-after="10pt"
+      border-after-style="solid"
+      border-start-style="solid"
+      border-end-style="solid"
+      border-color="#A0C9F5"
+      background-color="#F0F0FF"
+      padding-start="3pt"
+      padding-end="3pt"
+      padding-before="3pt"
+      padding-after="3pt">
+      <xsl:apply-templates/>
+    </fo:block>
+  </xsl:template>
+
+  <xsl:template match="fixme">
+    <fo:block
+      margin-left="0.25in"
+      margin-right="0.25in"
+      font-weight="bold"
+      font-size="10pt"
+      color="#FFFFFF"
+      font-family="serif"
+      space-before="10pt"
+      border-before-style="solid"
+      border-start-style="solid"
+      border-end-style="solid"
+      border-color="#C6C650"
+      background-color="#C6C650">
+      FIXME (<xsl:value-of select="@author"/>): <xsl:value-of select="title"/>
+    </fo:block>
+    <fo:block
+      margin-left="0.25in"
+      margin-right="0.25in"
+      font-family="serif"
+      font-size="8pt"
+      space-after="10pt"
+      border-after-style="solid"
+      border-start-style="solid"
+      border-end-style="solid"
+      border-color="#C6C650"
+      background-color="#FFF0F0"
+      padding-start="3pt"
+      padding-end="3pt"
+      padding-before="3pt"
+      padding-after="3pt">
+      <xsl:apply-templates/>
+    </fo:block>
+  </xsl:template>
+
+  <xsl:template match="link">
+    <xsl:choose>
+      <xsl:when test="starts-with(@href, '#')">
+    <fo:basic-link color="blue" text-decoration="underline" internal-destination="{substring(@href,2)}">
+      <xsl:apply-templates/>
+    </fo:basic-link>
+      </xsl:when>
+      <xsl:otherwise>
+    <fo:basic-link color="blue" text-decoration="underline" external-destination="{@href}"><xsl:apply-templates/></fo:basic-link>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+  <xsl:template match="figure|img">
+    <fo:block text-align="center">
+      <xsl:if test="normalize-space(@id)!=''">
+          <xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
+      </xsl:if>
+
+      <!-- Make relative paths absolute -->
+      <xsl:variable name="imgpath">
+      <xsl:choose>
+        <xsl:when test="starts-with(string(@src), 'images/') or contains(string(@src), '../images')">
+          <xsl:value-of select="concat($ctxbasedir, 'resources/images/' , substring-after(@src, 'images'))"/>
+        </xsl:when>
+        <xsl:otherwise><xsl:value-of select="concat($ctxbasedir, $xmlbasedir, @src)"/></xsl:otherwise>
+      </xsl:choose>
+      </xsl:variable>
+      <fo:external-graphic src="{$imgpath}">
+        <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>
+      </fo:external-graphic>
+      <!-- alt text -->
+      <xsl:if test="normalize-space(@alt)!=''">
+          <fo:block><xsl:value-of select="@alt"/></fo:block>
+      </xsl:if>
+    </fo:block>
+  </xsl:template>
+
+  <xsl:template match="table">
+    <!-- FIXME: Apache FOP must have column widths specified at present,
+         this section can be removed when this limitation is removed from Fop. 
+         Unfortunately, this means that each column is a fixed width,
+         but at least the table displays! -->
+
+    <xsl:variable name="max-number-columns">
+      <xsl:for-each select="tr">
+        <xsl:sort select="count(td|th)" data-type="number" order="descending"/>
+        <xsl:if test="position() = 1">
+          <xsl:value-of select="count(td|th)"/>
+        </xsl:if>
+      </xsl:for-each>
+    </xsl:variable>
+
+
+    <xsl:variable name="column-width">
+      <xsl:value-of select="6.25 div number($max-number-columns)"/>in
+    </xsl:variable>
+
+    <fo:table>
+                  
+      <fo:table-column>
+        <xsl:attribute name="column-width">
+          <xsl:value-of select="$column-width"/>
+        </xsl:attribute>
+
+        <xsl:attribute name="number-columns-repeated">
+          <xsl:value-of select="number($max-number-columns)"/>
+        </xsl:attribute>
+      </fo:table-column>
+
+      <!-- End of hack for Fop support (if removing this hack, remember 
+           you need the <fo:table> element) -->
+
+      <fo:table-body
+        font-size="10pt"
+        font-family="sans-serif">
+        <xsl:apply-templates select="tr"/>
+      </fo:table-body>
+    </fo:table>
+
+    <!-- FIXME: Apache Fop does not support the caption element yet.
+         This hack will display the table caption accordingly. -->
+    <xsl:if test="caption">
+      <fo:block
+        text-align="center"
+        font-weight="bold">
+        Table
+        <xsl:text> </xsl:text>
+        <xsl:number count="table" level="multiple"/>
+        <xsl:text>: </xsl:text>
+        <xsl:value-of select="caption"/>
+      </fo:block>
+    </xsl:if>
+  </xsl:template>
+
+  <xsl:template match="tr">
+    <fo:table-row>
+      <xsl:apply-templates/>
+    </fo:table-row>
+  </xsl:template>
+
+  <xsl:template match="th">
+      <fo:table-cell
+        padding-before="4pt"
+        padding-after="4pt"
+        padding-start="4pt"
+        padding-end="4pt"
+        background-color="#A0C9F5">
+        <xsl:attribute name="number-columns-spanned">
+          <xsl:value-of select="@colspan"/>
+        </xsl:attribute>
+        <xsl:attribute name="number-rows-spanned">
+          <xsl:value-of select="@rowspan"/>
+        </xsl:attribute>
+        <fo:block
+          text-align="center">
+          <xsl:apply-templates/>
+        </fo:block>
+      </fo:table-cell>
+  </xsl:template>
+
+  <xsl:template match="td">
+    <fo:table-cell
+      padding-before="4pt"
+      padding-after="4pt"
+      padding-start="4pt"
+      padding-end="4pt"
+      border="1pt solid #A0C9F5">
+      <xsl:attribute name="number-columns-spanned">
+          <xsl:value-of select="@colspan"/>
+        </xsl:attribute>
+        <xsl:attribute name="number-rows-spanned">
+          <xsl:value-of select="@rowspan"/>
+        </xsl:attribute>
+      <fo:block>
+        <xsl:apply-templates/>
+      </fo:block>
+    </fo:table-cell>
+  </xsl:template>
+
+  <xsl:template match="br">
+    <fo:block></fo:block>
+  </xsl:template>
+
+  <xsl:template match="legal">
+    <fo:inline
+      font-size="8pt">
+      <xsl:apply-templates/>
+    </fo:inline>
+  </xsl:template>
+
+<!-- ====================================================================== -->
+<!-- Local Extensions section -->
+<!-- ====================================================================== -->
+
+ <xsl:template match="citation">
+   <fo:inline>
+     [<xsl:value-of select="@def"/>]
+   </fo:inline>
+ </xsl:template>
+
+
+
+</xsl:stylesheet>
diff --git a/src/documentation/skins/common/xslt/fo/footerinfo.xsl b/src/documentation/skins/common/xslt/fo/footerinfo.xsl
new file mode 100644 (file)
index 0000000..355ae3e
--- /dev/null
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:fo="http://www.w3.org/1999/XSL/Format"
+                version="1.0">
+
+<!--
+Named template to generate a short message in the PDF footer, from text in
+skinconf.xml.  By default, the message is a copyright statement.  If a credit
+with @role='pdf' is present, that is used instead.  Eg:
+
+<credit role="pdf">
+  <name>Generated by Apache FOP 1.0-dev</name>
+  <url>http://xml.apache.org/forrest/fop/dev/</url>
+</credit>
+-->
+
+  <xsl:param name="config-file" select="'../../../../skinconf.xml'"/>
+  <xsl:variable name="config" select="document($config-file)/skinconfig"/>
+
+  <xsl:template name="info">
+    <xsl:variable name="pdfcredit" select="$config/credits/credit[@role = 'pdf']"/>
+    <xsl:variable name="text">
+      <xsl:if test="$pdfcredit">
+        <xsl:value-of select="$pdfcredit/name"/>
+      </xsl:if>
+      <xsl:if test="not($pdfcredit)">
+        <xsl:text>Copyright &#169; </xsl:text><xsl:value-of select="$config/year"/>&#160;<xsl:value-of
+          select="$config/vendor"/><xsl:text> All rights reserved.</xsl:text>
+      </xsl:if>
+    </xsl:variable>
+    <xsl:variable name="url" select="$pdfcredit/url"/>
+
+    <fo:block-container font-style="italic" absolute-position="absolute"
+      left="0pt" top="0pt" right="6.25in" bottom="150pt"
+      font-size="10pt">
+      <xsl:if test="not($url)">
+        <fo:block text-align="center" color="lightgrey">
+          <xsl:value-of select="$text"/>
+        </fo:block>
+      </xsl:if>
+      <xsl:if test="$url">
+        <fo:block text-align="center">
+          <fo:basic-link color="lightgrey"
+            external-destination="{$url}">
+            <xsl:value-of select="$text"/>
+          </fo:basic-link>
+        </fo:block>
+        <fo:block text-align="center">
+          <fo:basic-link color="lightgrey"
+            external-destination="{$url}">
+            <xsl:value-of select="$url"/>
+          </fo:basic-link>
+        </fo:block>
+      </xsl:if>
+    </fo:block-container>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/documentation/skins/common/xslt/fo/pdfoutline.xsl b/src/documentation/skins/common/xslt/fo/pdfoutline.xsl
new file mode 100644 (file)
index 0000000..e90850d
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:fo="http://www.w3.org/1999/XSL/Format"
+                xmlns:fox="http://xml.apache.org/fop/extensions"
+                version="1.0">
+
+<xsl:template match="document" mode="outline">
+      <xsl:apply-templates select="body/section" mode="outline"/>
+</xsl:template>
+
+<xsl:template match="section" mode="outline">
+  <fox:outline>
+    <xsl:attribute name="internal-destination">
+      <xsl:choose>
+        <xsl:when test="normalize-space(@id)!=''">
+          <xsl:value-of select="@id"/>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:value-of select="generate-id()"/>
+        </xsl:otherwise>
+      </xsl:choose>
+    </xsl:attribute>
+    <fox:label>
+      <xsl:number format="1.1.1.1.1.1.1" count="section" level="multiple"/>
+      <xsl:text> </xsl:text>
+      <xsl:value-of select="title"/>
+
+    </fox:label>
+    <xsl:apply-templates select="section" mode="outline"/>
+  </fox:outline>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/documentation/skins/common/xslt/html/book2menu.xsl b/src/documentation/skins/common/xslt/html/book2menu.xsl
new file mode 100644 (file)
index 0000000..263f16a
--- /dev/null
@@ -0,0 +1,163 @@
+<?xml version="1.0"?>
+<!--
+book2menu.xsl generates the HTML menu. It outputs XML/HTML of the form:
+  <div class="menu">
+     ...
+  </div>
+which is then merged with other HTML by site2xhtml.xsl
+
+$Id$
+-->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+  <!-- ================================================================ -->
+  <!-- These templates SHOULD be overridden                             -->
+  <!-- ================================================================ -->
+
+  <xsl:template name="selected">
+    <xsl:value-of select="@label"/>
+  </xsl:template>
+
+  <xsl:template name="unselected">
+    <a href="{@href}">
+      <xsl:if test="@description">
+        <xsl:attribute name="title">
+          <xsl:value-of select="@description"/>
+        </xsl:attribute>
+      </xsl:if>
+      <xsl:value-of select="@label"/>
+    </a>
+  </xsl:template>
+
+  <xsl:template name="print-external">
+    <!-- Use apply-imports when overriding -->
+    <xsl:value-of select="@label"/>
+  </xsl:template>
+
+
+  <!-- ================================================================ -->
+  <!-- These templates CAN be overridden                                -->
+  <!-- ================================================================ -->
+
+  <!-- Eg, if tab href is 'index.html#foo', this will be called when index.html
+  is selected -->
+  <xsl:template name="selected-anchor">
+    <!-- By default, render as unselected so that it is clickable (takes user
+    to the anchor) -->
+    <xsl:call-template name="unselected"/>
+  </xsl:template>
+
+  <xsl:template name="unselected-anchor">
+    <xsl:call-template name="unselected"/>
+  </xsl:template>
+
+
+  <xsl:template match="book">
+    <xsl:apply-templates select="menu"/>
+  </xsl:template>
+
+
+  <xsl:template match="menu">
+    <div class="menu">
+      <xsl:call-template name="base-menu"/>
+    </div>
+  </xsl:template>
+
+  <xsl:template match="menu-item">
+    <!-- Use apply-imports when overriding -->
+
+    <xsl:variable name="href-nofrag">
+      <xsl:call-template name="path-nofrag">
+        <xsl:with-param name="path" select="@href"/>
+      </xsl:call-template>
+    </xsl:variable>
+
+    <xsl:variable name="node-path">
+      <xsl:call-template name="normalize">
+        <xsl:with-param name="path" select="concat($dirname, $href-nofrag)"/>
+      </xsl:call-template>
+    </xsl:variable>
+
+    <xsl:choose>
+      <!-- Compare with extensions stripped -->
+      <xsl:when test="$node-path = $path-nofrag">
+        <xsl:choose>
+          <xsl:when test="contains(@href, '#')">
+            <xsl:call-template name="selected-anchor"/>
+          </xsl:when>
+          <xsl:otherwise>
+            <xsl:call-template name="selected"/>
+          </xsl:otherwise>
+        </xsl:choose>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:choose>
+          <xsl:when test="contains(@href, '#')">
+            <xsl:call-template name="unselected-anchor"/>
+          </xsl:when>
+          <xsl:otherwise>
+            <xsl:call-template name="unselected"/>
+          </xsl:otherwise>
+        </xsl:choose>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+  <!-- ================================================================ -->
+  <!-- These templates SHOULD NOT be overridden                         -->
+  <!-- ================================================================ -->
+
+
+  <xsl:param name="path"/>
+
+  <xsl:include href="pathutils.xsl"/>
+
+  <xsl:variable name="filename">
+    <xsl:call-template name="filename">
+      <xsl:with-param name="path" select="$path"/>
+    </xsl:call-template>
+  </xsl:variable>
+
+  <xsl:variable name="path-nofrag">
+    <xsl:call-template name="path-nofrag">
+      <xsl:with-param name="path" select="$path"/>
+    </xsl:call-template>
+  </xsl:variable>
+
+  <xsl:variable name="path-nofrag">
+    <xsl:call-template name="path-nofrag">
+      <xsl:with-param name="path" select="$path"/>
+    </xsl:call-template>
+  </xsl:variable>
+
+  <xsl:variable name="dirname">
+    <xsl:call-template name="dirname">
+      <xsl:with-param name="path" select="$path"/>
+    </xsl:call-template>
+  </xsl:variable>
+
+  <xsl:template match="external">
+    <li>
+      <xsl:choose>
+        <xsl:when test="starts-with(@href, $path-nofrag)">
+          <span class="externalSelected">
+            <xsl:call-template name="print-external"/>
+          </span>
+        </xsl:when>
+        <xsl:otherwise>
+          <a href="{@href}" target="_blank"><xsl:value-of select="@label"/></a>
+        </xsl:otherwise>
+      </xsl:choose>
+    </li>
+  </xsl:template>
+
+  <xsl:template match="menu-item[@type='hidden']"/>
+
+  <xsl:template match="external[@type='hidden']"/>
+
+  <xsl:template name="base-menu">
+    <xsl:apply-templates/>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/documentation/skins/common/xslt/html/document2html.xsl b/src/documentation/skins/common/xslt/html/document2html.xsl
new file mode 100644 (file)
index 0000000..4dc5214
--- /dev/null
@@ -0,0 +1,450 @@
+<?xml version="1.0"?>
+<!--
+This stylesheet contains the majority of templates for converting documentv11
+to HTML.  It renders XML as HTML in this form:
+
+  <div class="content">
+   ...
+  </div>
+
+..which site2xhtml.xsl then combines with HTML from the index (book2menu.xsl)
+and tabs (tab2menu.xsl) to generate the final HTML.
+
+Section handling
+  - <a name/> anchors are added if the id attribute is specified
+
+$Id$
+-->
+<xsl:stylesheet version="1.0" 
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+  <!-- the skinconf file -->
+  <xsl:param name="config-file" select="'../../../../skinconf.xml'"/>
+  <xsl:variable name="config" select="document($config-file)/skinconfig"/>
+  
+  <!-- If true, a PDF link for this page will not be generated -->
+  <xsl:variable name="disable-pdf-link" select="$config/disable-pdf-link"/>
+  <!-- If true, a "print" link for this page will not be generated -->
+  <xsl:variable name="disable-print-link" select="$config/disable-print-link"/>
+  <!-- If true, an XML link for this page will not be generated -->
+  <xsl:variable name="disable-xml-link" select="$config/disable-xml-link"/>  
+  <!-- Get the section depth to use when generating the minitoc (default is 2) -->
+  <xsl:variable name="config-max-depth" select="$config/toc/@level"/>
+  <!-- Whether to obfuscate email links -->
+  <xsl:variable name="obfuscate-mail-links" select="$config/obfuscate-mail-links"/>
+
+  <xsl:variable name="max-depth">
+    <xsl:choose>
+      <xsl:when test="string-length($config-max-depth)&gt;0">
+        <xsl:value-of select="$config-max-depth"/>
+      </xsl:when>
+      <xsl:otherwise>2</xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+    
+  <xsl:param name="notoc"/>
+  <xsl:param name="path"/>
+  <!-- <xsl:include href="split.xsl"/> -->
+  <xsl:include href="dotdots.xsl"/>
+  <xsl:include href="pathutils.xsl"/>
+
+  <!-- Path to site root, eg '../../' -->
+  <xsl:variable name="root">
+    <xsl:call-template name="dotdots">
+      <xsl:with-param name="path" select="$path"/>
+    </xsl:call-template>
+  </xsl:variable>
+
+  <xsl:variable name="filename-noext">
+    <xsl:call-template name="filename-noext">
+      <xsl:with-param name="path" select="$path"/>
+    </xsl:call-template>
+  </xsl:variable>
+  <xsl:variable name="skin-img-dir" select="concat(string($root), 'skin/images')"/>
+
+  <xsl:template match="document">
+    <div class="content">
+      <table summary="" class="title">
+        <tr> 
+          <td valign="middle"> 
+            <xsl:if test="normalize-space(header/title)!=''">
+              <h1>
+                <xsl:value-of select="header/title"/>
+              </h1>
+            </xsl:if>
+          </td>
+          <xsl:call-template name="printlink"/> 
+          <xsl:call-template name="pdflink"/>
+          <xsl:call-template name="xmllink"/>
+        </tr>
+      </table>
+      <xsl:if test="normalize-space(header/subtitle)!=''">
+        <h3>
+          <xsl:value-of select="header/subtitle"/>
+        </h3>
+      </xsl:if>
+      <xsl:apply-templates select="header/type"/>
+      <xsl:apply-templates select="header/notice"/>
+      <xsl:apply-templates select="header/abstract"/>
+      <xsl:apply-templates select="body"/>
+      <div class="attribution">
+        <xsl:apply-templates select="header/authors"/>
+        <xsl:if test="header/authors and header/version">
+          <xsl:text>; </xsl:text>
+        </xsl:if>
+        <xsl:apply-templates select="header/version"/>
+      </div>
+    </div>
+  </xsl:template>
+
+  <!-- Generates the "printer friendly version" link -->
+  <xsl:template name="printlink">
+    <xsl:if test="$disable-print-link = 'false'"> 
+<script type="text/javascript" language="Javascript">
+function printit() {  
+if (window.print) {
+    window.print() ;  
+} else {
+    var WebBrowser = '&lt;OBJECT ID="WebBrowser1" WIDTH="0" HEIGHT="0" CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2">&lt;/OBJECT>';
+document.body.insertAdjacentHTML('beforeEnd', WebBrowser);
+    WebBrowser1.ExecWB(6, 2);//Use a 1 vs. a 2 for a prompting dialog box    WebBrowser1.outerHTML = "";  
+}
+}
+</script>
+
+<script type="text/javascript" language="Javascript">
+var NS = (navigator.appName == "Netscape");
+var VERSION = parseInt(navigator.appVersion);
+if (VERSION > 3) {
+    document.write('<td align="center" width="40" nowrap="nowrap">');
+    document.write('  <a href="javascript:printit()" class="dida">');
+    document.write('    <img class="skin" src="{$skin-img-dir}/printer.gif" alt="Print this Page"/><br />');
+    document.write('  print</a>');
+    document.write('</td>');
+}
+</script>
+
+    </xsl:if>
+  </xsl:template>
+
+  <!-- Generates the PDF link -->
+  <xsl:template name="pdflink">
+    <xsl:if test="not($config/disable-pdf-link) or $disable-pdf-link = 'false'"> 
+      <td align="center" width="40" nowrap="nowrap"><a href="{$filename-noext}.pdf" class="dida">
+          <img class="skin" src="{$skin-img-dir}/pdfdoc.gif" alt="PDF"/><br/>
+          PDF</a>
+      </td>
+    </xsl:if>
+  </xsl:template>
+  
+
+  <!-- Generates the XML link -->
+  <xsl:template name="xmllink">
+    <xsl:if test="$disable-xml-link = 'false'">
+      <td align="center" width="40" nowrap="nowrap"><a href="{$filename-noext}.xml" class="dida">
+          <img class="skin" src="{$skin-img-dir}/xmldoc.gif" alt="xml"/><br/>
+          xml</a>
+      </td>
+    </xsl:if>
+  </xsl:template>
+  
+  <xsl:template match="body">
+    <xsl:if test="$max-depth&gt;0 and not($notoc='true')" >
+      <xsl:call-template name="minitoc">
+        <xsl:with-param name="tocroot" select="."/>
+        <xsl:with-param name="depth">1</xsl:with-param>
+      </xsl:call-template>
+    </xsl:if>
+    <xsl:apply-templates/>
+  </xsl:template>
+
+
+  <!-- Generate a <a name="..."> tag for an @id -->
+  <xsl:template match="@id">
+    <xsl:if test="normalize-space(.)!=''">
+      <a name="{.}"/>
+    </xsl:if>
+  </xsl:template>
+
+  <xsl:template match="section">
+    <!-- count the number of section in the ancestor-or-self axis to compute
+         the title element name later on -->
+    <xsl:variable name="sectiondepth" select="count(ancestor-or-self::section)"/>
+    <a name="{generate-id()}"/>
+    <xsl:apply-templates select="@id"/>
+    <!-- generate a title element, level 1 -> h3, level 2 -> h4 and so on... -->
+    <xsl:element name="{concat('h',$sectiondepth + 2)}">
+      <xsl:value-of select="title"/>
+      <xsl:if test="$notoc='true' and $sectiondepth = 3">
+        <span style="float: right"><a href="#{@id}-menu">^</a></span>
+      </xsl:if>
+    </xsl:element>
+
+    <!-- Indent FAQ entry text 15 pixels -->
+    <xsl:variable name="indent">
+      <xsl:choose>
+        <xsl:when test="$notoc='true' and $sectiondepth = 3">
+          <xsl:text>15</xsl:text>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:text>0</xsl:text>
+        </xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
+
+    <div style="margin-left: {$indent} ; border: 2px">
+          <xsl:apply-templates select="*[not(self::title)]"/>
+    </div>
+  </xsl:template>
+
+  <xsl:template match="note | warning | fixme">
+    <xsl:apply-templates select="@id"/>
+    <div class="frame {local-name()}">
+      <div class="label">
+        <xsl:choose>
+          <xsl:when test="@label"><xsl:value-of select="@label"/></xsl:when>
+          <xsl:when test="local-name() = 'note'">Note</xsl:when>
+          <xsl:when test="local-name() = 'warning'">Warning</xsl:when>
+          <xsl:otherwise>Fixme (<xsl:value-of select="@author"/>)</xsl:otherwise>
+        </xsl:choose>
+      </div>
+      <div class="content">
+        <xsl:apply-templates/>
+      </div>
+    </div>
+  </xsl:template>
+
+  <xsl:template match="notice">
+    <div class="notice">
+    <!-- FIXME: i18n Transformer here -->
+    <xsl:text>Notice: </xsl:text>
+      <xsl:apply-templates/>
+    </div>
+  </xsl:template>
+
+  <xsl:template match="link">
+    <xsl:apply-templates select="@id"/>
+    <xsl:choose>
+      <xsl:when test="$obfuscate-mail-links='true' and starts-with(@href, 'mailto:') and contains(@href, '@')">
+        <xsl:variable name="mailto-1" select="substring-before(@href,'@')"/>
+        <xsl:variable name="mailto-2" select="substring-after(@href,'@')"/>
+          <a href="{$mailto-1}.at.{$mailto-2}">
+            <xsl:apply-templates/>
+          </a>
+       </xsl:when>
+       <xsl:otherwise>
+          <a href="{@href}">
+            <xsl:apply-templates/>
+          </a>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+  <xsl:template match="jump">
+    <xsl:apply-templates select="@id"/>
+    <a href="{@href}" target="_top">
+      <xsl:apply-templates/>
+    </a>
+  </xsl:template>
+
+  <xsl:template match="fork">
+    <xsl:apply-templates select="@id"/>
+    <a href="{@href}" target="_blank">
+      <xsl:apply-templates/>
+    </a>
+  </xsl:template>
+
+  <xsl:template match="p[@xml:space='preserve']">
+    <xsl:apply-templates select="@id"/>
+    <div class="pre">
+      <xsl:apply-templates/>
+    </div>
+  </xsl:template>
+
+  <xsl:template match="source">
+    <xsl:apply-templates select="@id"/>
+    <pre class="code">
+<!-- Temporarily removed long-line-splitter ... gives out-of-memory problems -->
+      <xsl:apply-templates/>
+<!--
+    <xsl:call-template name="format">
+    <xsl:with-param select="." name="txt" /> 
+     <xsl:with-param name="width">80</xsl:with-param> 
+     </xsl:call-template>
+-->
+    </pre>
+  </xsl:template>
+
+  <xsl:template match="anchor">
+    <a name="{@id}"/>
+  </xsl:template>
+
+  <xsl:template match="icon">
+    <xsl:apply-templates select="@id"/>
+    <img src="{@src}" alt="{@alt}" class="icon">
+      <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>
+    </img>
+  </xsl:template>
+
+  <xsl:template match="code">
+    <xsl:apply-templates select="@id"/>
+    <span class="codefrag"><xsl:value-of select="."/></span>
+  </xsl:template>
+
+  <xsl:template match="figure">
+    <xsl:apply-templates select="@id"/>
+    <div align="center">
+      <img src="{@src}" alt="{@alt}" class="figure">
+        <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>
+      </img>
+    </div>
+  </xsl:template>
+
+  <xsl:template match="table">
+    <xsl:apply-templates select="@id"/>
+    <table cellpadding="4" cellspacing="1" class="ForrestTable">
+      <xsl:if test="@cellspacing"><xsl:attribute name="cellspacing"><xsl:value-of select="@cellspacing"/></xsl:attribute></xsl:if>
+      <xsl:if test="@cellpadding"><xsl:attribute name="cellpadding"><xsl:value-of select="@cellpadding"/></xsl:attribute></xsl:if>
+      <xsl:if test="@border"><xsl:attribute name="border"><xsl:value-of select="@border"/></xsl:attribute></xsl:if>
+      <xsl:if test="@class"><xsl:attribute name="class"><xsl:value-of select="@class"/></xsl:attribute></xsl:if>
+      <xsl:if test="@bgcolor"><xsl:attribute name="bgcolor"><xsl:value-of select="@bgcolor"/></xsl:attribute></xsl:if>
+      <xsl:apply-templates/>
+    </table>
+  </xsl:template>
+
+  <xsl:template match="acronym/@title">
+    <xsl:attribute name="title">
+      <xsl:value-of select="normalize-space(.)"/>
+    </xsl:attribute>
+  </xsl:template>
+
+  <xsl:template name="minitoc">  
+    <xsl:param name="tocroot"/>
+    <xsl:param name="depth"/>     
+    <xsl:if test="count($tocroot/section) > 0">
+      <ul class="minitoc">
+        <xsl:for-each select="$tocroot/section">
+          <li>
+            <xsl:call-template name="toclink"/>
+            <xsl:if test="$depth&lt;$max-depth">
+              <xsl:call-template name="minitoc">
+                <xsl:with-param name="tocroot" select="."/>
+                <xsl:with-param name="depth" select="$depth + 1"/>
+              </xsl:call-template>
+            </xsl:if>
+          </li>
+        </xsl:for-each>
+      </ul>
+    </xsl:if>
+  </xsl:template>
+
+  <xsl:template name="toclink">
+    <xsl:variable name="tocitem" select="normalize-space(title)"/>
+    <xsl:if test="string-length($tocitem)>0">
+      <a>
+        <xsl:attribute name="href">
+          <xsl:text>#</xsl:text>
+          <xsl:if test="@id">
+            <xsl:value-of select="@id"/>
+          </xsl:if>
+        </xsl:attribute>
+        <xsl:value-of select="$tocitem"/>
+      </a>
+    </xsl:if>
+  </xsl:template>
+
+  <xsl:template match="header/authors">
+    <xsl:for-each select="person">
+      <xsl:choose>
+        <xsl:when test="position()=1">by&#160;</xsl:when>
+        <xsl:otherwise>,&#160;</xsl:otherwise>
+      </xsl:choose>
+      <xsl:value-of select="@name"/>
+    </xsl:for-each>
+  </xsl:template>
+
+  <xsl:template match="version">
+    <span class="version">
+      <xsl:apply-templates select="@major"/>
+      <xsl:apply-templates select="@minor"/>
+      <xsl:apply-templates select="@fix"/>
+      <xsl:apply-templates select="@tag"/>
+      <xsl:choose>
+        <xsl:when test="starts-with(., '$Revision: ')">
+          version <xsl:value-of select="substring(., 12, string-length(.) -11-2)"/>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:value-of select="."/>
+        </xsl:otherwise>
+      </xsl:choose>
+    </span>
+  </xsl:template>
+  
+  <xsl:template match="@major">
+     v<xsl:value-of select="."/>
+  </xsl:template>
+  
+  <xsl:template match="@minor">
+     <xsl:value-of select="concat('.',.)"/>
+  </xsl:template>
+  
+  <xsl:template match="@fix">
+     <xsl:value-of select="concat('.',.)"/>
+  </xsl:template>
+  
+  <xsl:template match="@tag">
+     <xsl:value-of select="concat('-',.)"/>
+  </xsl:template>
+
+  <xsl:template match="type">
+    <p class="type">
+    <!-- FIXME: i18n Transformer here -->
+    <xsl:text>Type: </xsl:text>
+    <xsl:value-of select="."/>
+    </p>
+  </xsl:template>
+
+  <xsl:template match="abstract">
+    <p>
+      <xsl:apply-templates/>
+    </p>
+  </xsl:template>
+
+  <xsl:template name="email">
+    <a>
+    <xsl:attribute name="href">
+      <xsl:choose>
+      <xsl:when test="$obfuscate-mail-links='true'">
+        <xsl:variable name="user" select="substring-before(@email,'@')"/>
+       <xsl:variable name="host" select="substring-after(@email,'@')"/>
+       <xsl:value-of select="concat('mailto:',$user,'.at.',$host)"/>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:value-of select="concat('mailto:',@email)"/>
+      </xsl:otherwise>
+      </xsl:choose>
+    </xsl:attribute>
+       <xsl:value-of select="@name"/>
+    </a>
+  </xsl:template>
+
+  <xsl:template match="node()|@*" priority="-1">
+    <xsl:copy>
+      <xsl:apply-templates select="@*"/>
+      <xsl:apply-templates/>
+    </xsl:copy>
+  </xsl:template>
+  
+</xsl:stylesheet>
+
diff --git a/src/documentation/skins/common/xslt/html/dotdots.xsl b/src/documentation/skins/common/xslt/html/dotdots.xsl
new file mode 100644 (file)
index 0000000..f0436c0
--- /dev/null
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+Contains the 'dotdots' template, which, given a path, will output a set of
+directory traversals to get back to the source directory. Handles both '/' and
+'\' directory separators.
+
+Examples:
+  Input                           Output 
+    index.html                    ""
+    dir/index.html                "../"
+    dir/subdir/index.html         "../../"
+    dir//index.html              "../"
+    dir/                          "../"
+    dir//                         "../"
+    \some\windows\path            "../../"
+    \some\windows\path\           "../../../"
+    \Program Files\mydir          "../"
+
+Cannot handle ..'s in the path, so don't expect 'dir/subdir/../index.html' to
+work.
+
+jefft@apache.org
+-->
+
+<xsl:stylesheet
+  version="1.0"
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+  <xsl:template name="dotdots">
+    <xsl:param name="path"/>
+    <xsl:variable name="dirs" select="normalize-space(translate(concat($path, 'x'), ' /\', '_  '))"/>
+    <!-- The above does the following:
+       o Adds a trailing character to the path. This prevents us having to deal
+         with the special case of ending with '/'
+       o Translates all directory separators to ' ', and normalize spaces,
+                cunningly eliminating duplicate '//'s. We also translate any real
+                spaces into _ to preserve them.
+    -->
+    <xsl:variable name="remainder" select="substring-after($dirs, ' ')"/>
+    <xsl:if test="$remainder">
+      <xsl:text>../</xsl:text>
+      <xsl:call-template name="dotdots">
+        <xsl:with-param name="path" select="translate($remainder, ' ', '/')"/>
+               <!-- Translate back to /'s because that's what the template expects. -->
+      </xsl:call-template>
+    </xsl:if>
+  </xsl:template>
+
+<!--
+  Uncomment to test.
+  Usage: saxon dotdots.xsl dotdots.xsl path='/my/test/path'
+
+  <xsl:param name="path"/>
+  <xsl:template match="/">
+    <xsl:message>Path: <xsl:value-of select="$path"/></xsl:message>
+    <xsl:call-template name="dotdots">
+      <xsl:with-param name="path" select="$path"/>
+    </xsl:call-template>
+  </xsl:template>
+ -->
+
+</xsl:stylesheet>
diff --git a/src/documentation/skins/common/xslt/html/pathutils.xsl b/src/documentation/skins/common/xslt/html/pathutils.xsl
new file mode 100644 (file)
index 0000000..5590575
--- /dev/null
@@ -0,0 +1,224 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<!--
+PathUtils.xsl
+
+A set of XSLT templates useful for parsing URI paths:
+
+dirname: return the directory part of a path
+filename: return the file part of a path
+ext: return the last extension of the filename in a path
+filename-noext: return the file part of a path without its last extension
+
+@author Jeff Turner <jefft@apache.org>
+$Id$
+-->
+
+<!-- Returns the directory part of a path.  Equivalent to Unix 'dirname'.
+Examples:
+'' -> ''
+'foo/index.html' -> 'foo/'
+-->
+<xsl:template name="dirname">
+  <xsl:param name="path" />
+  <xsl:if test="contains($path, '/')">
+    <xsl:value-of select="concat(substring-before($path, '/'), '/')" />
+    <xsl:call-template name="dirname">
+      <xsl:with-param name="path"
+        select="substring-after($path, '/')" />
+    </xsl:call-template>
+  </xsl:if>
+</xsl:template>
+
+<!-- Normalized (..'s eliminated) version of 'dirname' -->
+<xsl:template name="dirname-nz">
+  <xsl:param name="path" />
+  <xsl:call-template name="normalize">
+    <xsl:with-param name="path">
+      <xsl:call-template name="dirname">
+        <xsl:with-param name="path" select="$path" />
+      </xsl:call-template>
+    </xsl:with-param>
+  </xsl:call-template>
+</xsl:template>
+
+
+<!-- Returns the filename part of a path.  Equivalent to Unix 'basename'
+Examples:
+'index.html'  ->  'index.html' 
+'foo/bar/'  ->  '' 
+'foo/bar/index.html'  ->  'index.html' 
+-->
+<xsl:template name="filename">
+  <xsl:param name="path"/>
+  <xsl:choose>
+    <xsl:when test="contains($path, '/')">
+      <xsl:call-template name="filename">
+        <xsl:with-param name="path" select="substring-after($path, '/')"/>
+      </xsl:call-template>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:value-of select="$path"/>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+<!-- Returns the last extension of a filename in a path.
+Examples:
+'index.html'  ->  '.html' 
+'index.dtdx.html'  ->  '.html' 
+'foo/bar/'  ->  '' 
+'foo/bar/index.html'  ->  '.html' 
+'foo/bar/index'  ->  '' 
+-->
+<xsl:template name="ext">
+  <xsl:param name="path"/>
+  <xsl:param name="subflag"/> <!-- Outermost call? -->
+  <xsl:choose>
+    <xsl:when test="contains($path, '.')">
+      <xsl:call-template name="ext">
+        <xsl:with-param name="path" select="substring-after($path, '.')"/>
+        <xsl:with-param name="subflag" select="'sub'"/>
+      </xsl:call-template>
+    </xsl:when>
+    <!-- Handle extension-less filenames by returning '' -->
+    <xsl:when test="not($subflag) and not(contains($path, '.'))">
+      <xsl:text/>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:value-of select="concat('.', $path)"/>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+<!-- Returns a filename of a path stripped of its last extension.
+Examples:
+'foo/bar/index.dtdx.html' -> 'index.dtdx'
+-->
+<xsl:template name="filename-noext">
+  <xsl:param name="path"/>
+  <xsl:variable name="filename">
+    <xsl:call-template name="filename">
+      <xsl:with-param name="path" select="$path"/>
+    </xsl:call-template>
+  </xsl:variable>
+  <xsl:variable name="ext">
+    <xsl:call-template name="ext">
+      <xsl:with-param name="path" select="$filename"/>
+    </xsl:call-template>
+  </xsl:variable>
+  <xsl:value-of select="substring($filename, 1, string-length($filename) - string-length($ext))"/>
+</xsl:template>
+
+<!-- Returns a path with the filename stripped of its last extension.
+Examples:
+'foo/bar/index.dtdx.html' -> 'foo/bar/index.dtdx'
+-->
+<xsl:template name="path-noext">
+  <xsl:param name="path"/>
+  <xsl:variable name="ext">
+    <xsl:call-template name="ext">
+      <xsl:with-param name="path" select="$path"/>
+    </xsl:call-template>
+  </xsl:variable>
+  <xsl:value-of select="substring($path, 1, string-length($path) - string-length($ext))"/>
+</xsl:template>
+
+<!-- Normalized (..'s eliminated) version of 'path-noext' -->
+<xsl:template name="path-noext-nz">
+  <xsl:param name="path" />
+  <xsl:call-template name="normalize">
+    <xsl:with-param name="path">
+      <xsl:call-template name="path-noext">
+        <xsl:with-param name="path" select="$path" />
+      </xsl:call-template>
+    </xsl:with-param>
+  </xsl:call-template>
+</xsl:template>
+
+<!-- Returns a path with any fragment identifier ('#...') stripped off
+Examples:
+'foo/bar/index.dtdx.html#blah' -> 'foo/bar/index.dtdx.html'
+-->
+<xsl:template name="path-nofrag">
+  <xsl:param name="path"/>
+  <xsl:if test="not(contains($path, '#'))">
+    <xsl:value-of select="$path"/>
+  </xsl:if>
+  <xsl:if test="contains($path, '#')">
+    <xsl:value-of select="substring-before($path, '#')"/>
+  </xsl:if>
+</xsl:template>
+
+
+
+<!-- Normalizes a path, converting '/' to '\' and eliminating ..'s
+Examples:
+'foo/bar/../baz/index.html' -> foo/baz/index.html'
+-->
+<xsl:template name="normalize">
+  <xsl:param name="path"/>
+  <xsl:variable name="path-" select="translate($path, '\', '/')"/>
+  <xsl:choose>
+    <xsl:when test="contains($path-, '/../')">
+
+      <xsl:variable name="pa" select="substring-before($path-, '/../')"/>
+      <xsl:variable name="th" select="substring-after($path-, '/../')"/>
+      <xsl:variable name="pa-">
+        <xsl:call-template name="dirname">
+          <xsl:with-param name="path" select="$pa"/>
+        </xsl:call-template>
+      </xsl:variable>
+      <xsl:variable name="pa-th" select="concat($pa-, $th)"/>
+      <xsl:call-template name="normalize">
+        <xsl:with-param name="path" select="$pa-th"/>
+      </xsl:call-template>
+    </xsl:when>
+
+    <xsl:otherwise>
+      <xsl:value-of select="$path-"/>
+    </xsl:otherwise>
+  </xsl:choose>
+
+</xsl:template>
+
+<!--
+Uncomment this to test.
+Usage: saxon pathutils.xsl pathutils.xsl path=foo/bar
+
+<xsl:param name="path" select="'/foo/bar/../baz/index.html'"/>
+<xsl:template match="/">
+  <xsl:message>
+    path           = <xsl:value-of select="$path"/>
+    normalize      = <xsl:call-template name="normalize">
+      <xsl:with-param name="path" select="$path"/>
+    </xsl:call-template>
+    dirname        = <xsl:call-template name="dirname">
+      <xsl:with-param name="path" select="$path"/>
+    </xsl:call-template>
+    dirname-nz     = <xsl:call-template name="dirname-nz">
+      <xsl:with-param name="path" select="$path"/>
+    </xsl:call-template>
+    filename       = <xsl:call-template name="filename">
+      <xsl:with-param name="path" select="$path"/>
+    </xsl:call-template>
+    ext            = <xsl:call-template name="ext">
+      <xsl:with-param name="path" select="$path"/>
+    </xsl:call-template>
+    filename-noext = <xsl:call-template name="filename-noext">
+      <xsl:with-param name="path" select="$path"/>
+    </xsl:call-template>
+    path-noext     = <xsl:call-template name="path-noext">
+      <xsl:with-param name="path" select="$path"/>
+    </xsl:call-template>
+    path-noext-nz  = <xsl:call-template name="path-noext-nz">
+      <xsl:with-param name="path" select="$path"/>
+    </xsl:call-template>
+    path-nofrag    = <xsl:call-template name="path-nofrag">
+      <xsl:with-param name="path" select="$path"/>
+    </xsl:call-template>
+  </xsl:message>
+</xsl:template>
+-->
+
+</xsl:stylesheet>
diff --git a/src/documentation/skins/common/xslt/html/renderlogo.xsl b/src/documentation/skins/common/xslt/html/renderlogo.xsl
new file mode 100644 (file)
index 0000000..7e96385
--- /dev/null
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+A simple callable template that renders a logo for an entity. The logo will 
+be a hyperlink and may include an image (with width and height if specified)
+or else it will just include the specified text.
+
+Note that text and image are mandatory parts of the template.
+-->
+
+<xsl:stylesheet
+  version="1.0"
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+  <xsl:template name="renderlogo">
+    <xsl:param name="name"/>
+    <xsl:param name="url"/>
+    <xsl:param name="logo"/>
+    <xsl:param name="width"/>
+    <xsl:param name="height"/>
+    <xsl:param name="root"/>
+    <xsl:param name="description"/>
+    <a href="{$url}">
+      <xsl:choose>
+        <xsl:when test="$logo and not($logo = '')">
+          <img alt="{$name}" class="logoImage" border="0">
+            <xsl:attribute name="src">
+             <xsl:if test="not(starts-with($logo, 'http://'))"><xsl:value-of select="$root"/></xsl:if>
+              <xsl:value-of select="$logo"/>
+            </xsl:attribute>
+            <xsl:if test="$width">
+              <xsl:attribute name="width"><xsl:value-of select="$width"/></xsl:attribute>
+            </xsl:if>
+            <xsl:if test="$height">
+              <xsl:attribute name="height"><xsl:value-of select="$height"/></xsl:attribute>
+            </xsl:if>
+            <xsl:if test="$description">
+              <xsl:attribute name="title"><xsl:value-of select="$description"/></xsl:attribute>
+            </xsl:if>
+         </img>
+        </xsl:when>
+        <xsl:otherwise><xsl:value-of select="$name"/></xsl:otherwise>
+      </xsl:choose>
+    </a>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/documentation/skins/common/xslt/html/site2xhtml.xsl b/src/documentation/skins/common/xslt/html/site2xhtml.xsl
new file mode 100644 (file)
index 0000000..9757dae
--- /dev/null
@@ -0,0 +1,138 @@
+<?xml version="1.0"?>
+<!--
+site2xhtml.xsl is the final stage in HTML page production.  It merges HTML from
+document2html.xsl, tab2menu.xsl and book2menu.xsl, and adds the site header,
+footer, searchbar, css etc.  As input, it takes XML of the form:
+
+<site>
+  <div class="menu">
+    ...
+  </div>
+  <div class="tab">
+    ...
+  </div>
+  <div class="content">
+    ...
+  </div>
+</site>
+
+$Id$
+-->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+  <!-- Default skinconf.xml in the skins/ directory -->
+  <xsl:param name="config-file" select="'../../../../skinconf.xml'"/>
+  <xsl:variable name="config" select="document($config-file)/skinconfig"/>
+  <xsl:param name="path"/>
+
+  <xsl:include href="dotdots.xsl"/>
+  <xsl:include href="pathutils.xsl"/>
+  <xsl:include href="renderlogo.xsl"/>
+
+  <!-- Path (..'s) to the root directory -->
+  <xsl:variable name="root">
+    <xsl:call-template name="dotdots">
+      <xsl:with-param name="path" select="$path"/>
+    </xsl:call-template>
+  </xsl:variable>
+
+  <!-- Source filename (eg 'foo.xml') of current page -->
+  <xsl:variable name="filename">
+    <xsl:call-template name="filename">
+      <xsl:with-param name="path" select="$path"/>
+    </xsl:call-template>
+  </xsl:variable>
+
+  <xsl:variable name="skin-img-dir" select="concat(string($root), 'skin/images')"/>
+  <xsl:variable name="spacer" select="concat($root, 'skin/images/spacer.gif')"/>
+
+  <xsl:template match="site">
+    <html>
+      <head>
+        <title><xsl:value-of select="div[@class='content']/table/tr/td/h1"/></title>
+      </head>
+      <body>
+        <xsl:if test="$config/group-url">
+          <xsl:call-template name="renderlogo">
+            <xsl:with-param name="name" select="$config/group-name"/>
+            <xsl:with-param name="url" select="$config/group-url"/>
+            <xsl:with-param name="logo" select="$config/group-logo"/>
+            <xsl:with-param name="root" select="$root"/>
+            <xsl:with-param name="description" select="$config/group-description"/>
+          </xsl:call-template>
+        </xsl:if>
+        <xsl:call-template name="renderlogo">
+          <xsl:with-param name="name" select="$config/project-name"/>
+          <xsl:with-param name="url" select="$config/project-url"/>
+          <xsl:with-param name="logo" select="$config/project-logo"/>
+          <xsl:with-param name="root" select="$root"/>
+          <xsl:with-param name="description" select="$config/project-description"/>
+        </xsl:call-template>
+        <xsl:comment>================= start Tabs ==================</xsl:comment>
+        <xsl:apply-templates select="div[@class='tab']"/>
+        <xsl:comment>================= end Tabs ==================</xsl:comment>
+        <xsl:comment>================= start Menu items ==================</xsl:comment>
+        <xsl:apply-templates select="div[@class='menu']"/>
+        <xsl:comment>================= end Menu items ==================</xsl:comment>
+        <xsl:comment>================= start Content==================</xsl:comment>
+        <xsl:apply-templates select="div[@class='content']"/>
+        <xsl:comment>================= end Content==================</xsl:comment>
+
+        <xsl:comment>================= start Footer ==================</xsl:comment>
+        Copyright &#169; <xsl:value-of select="$config/year"/>&#160;<xsl:value-of
+          select="$config/vendor"/> All rights reserved.
+        <script language="JavaScript" type="text/javascript"><![CDATA[<!--
+          document.write(" - "+"Last Published: " + document.lastModified);
+          //  -->]]></script>
+        <xsl:if test="$config/host-logo and not($config/host-logo = '')">
+          <a href="{$config/host-url}">
+            <xsl:call-template name="renderlogo">
+              <xsl:with-param name="name" select="$config/host-name"/>
+              <xsl:with-param name="url" select="$config/host-url"/>
+              <xsl:with-param name="logo" select="$config/host-logo"/>
+              <xsl:with-param name="root" select="$root"/>
+            </xsl:call-template>
+          </a>
+        </xsl:if>
+        <xsl:if test="$filename = 'index.html' and $config/credits">
+          <xsl:for-each select="$config/credits/credit[not(@role='pdf')]">
+            <xsl:call-template name="renderlogo">
+              <xsl:with-param name="name" select="name"/>
+              <xsl:with-param name="url" select="url"/>
+              <xsl:with-param name="logo" select="image"/>
+              <xsl:with-param name="root" select="$root"/>
+              <xsl:with-param name="width" select="width"/>
+              <xsl:with-param name="height" select="height"/>
+            </xsl:call-template>
+          </xsl:for-each>
+        </xsl:if>
+        <a href="http://validator.w3.org/check/referer"><img class="skin" border="0"
+            src="http://www.w3.org/Icons/valid-html401"
+            alt="Valid HTML 4.01!" height="31" width="88"/></a>
+      </body>
+    </html>
+  </xsl:template>
+
+  <!-- Add links to any standards-compliance logos -->
+  <xsl:template name="compliancy-logos">
+    <xsl:if test="$config/disable-compliance-links = 'false'">
+      <a href="http://validator.w3.org/check/referer"><img class="logoImage" 
+          src="{$skin-img-dir}/valid-html401.png"
+          alt="Valid HTML 4.01!" height="31" width="88"/></a>
+          
+      <a href="http://jigsaw.w3.org/css-validator/"><img class="logoImage" 
+          src="{$skin-img-dir}/vcss.png" 
+          alt="Valid CSS!" height="31" width="88"/></a>
+    </xsl:if>
+  </xsl:template>
+
+
+  <xsl:template match="node()|@*" priority="-1">
+    <xsl:copy>
+      <xsl:apply-templates select="@*"/>
+      <xsl:apply-templates/>
+    </xsl:copy>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/documentation/skins/common/xslt/html/split.xsl b/src/documentation/skins/common/xslt/html/split.xsl
new file mode 100644 (file)
index 0000000..0076a36
--- /dev/null
@@ -0,0 +1,141 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+<!--
+ This stylesheet was taken from the XSLT FAQ http://www.dpawson.co.uk/xsl/
+ Comments and adaption to be used without normalize-space()
+  by Nicola Ken Barozzi nicolaken@apache.org
+--> 
+
+<!--
+  Input:
+
+<doc>
+
+<para>
+ 123456 2345 343434 545454 43434 343 
+ 12345 343434 545454 43434 343 
+ 32345645 343434 545454 43434 343 
+ 3422222225 343434 545454 43434 343 
+ llllllllllllllllllllllooooooooooooooonnnnnnnnnnnggggggggg
+ 345 343434 545454 43434 343 
+</para>
+
+</doc>
+
+Output:
+
+<HTML>
+<BODY>
+<PRE>123456 2345 343434 545454 
+43434 343 12345 343434 545454 
+43434 343 32345645 343434 
+545454 43434 343 3422222225 
+343434 545454 43434 343 
+lllllllllllllllllllllloooooooo
+ooooooonnnnnnnnnnnggggggggg 
+345 343434 545454 43434 
+343
+</PRE>
+</BODY>
+</HTML>
+
+Fragment ised: 
+
+ <xsl:template match="/doc">
+ <HTML><BODY><PRE>
+    <xsl:call-template name="format">
+    <xsl:with-param select="normalize-space(para)" name="txt" /> 
+     <xsl:with-param name="width">30</xsl:with-param> 
+     </xsl:call-template>
+  </PRE></BODY></HTML>
+  </xsl:template>
+
+
+-->
+
+ <xsl:template match="/body">
+   <body>
+    <xsl:call-template name="format">
+    <xsl:with-param select="source" name="txt" /> 
+     <xsl:with-param name="width">40</xsl:with-param> 
+     </xsl:call-template>
+  </body>
+  </xsl:template>
+  
+  <xsl:template name="format">
+    <xsl:param name="txt" /> 
+    <xsl:param name="width" /> 
+
+    <!-- if there is still text left -->
+    <xsl:if test="$txt">
+    
+    <xsl:variable name = "pretxt" select = "substring($txt,0, $width)" />
+    
+    <xsl:choose>
+      <xsl:when test="contains($pretxt, '&#xA;')">
+        <xsl:value-of select="substring-before($pretxt, '&#xA;')"/>
+        <xsl:text>&#xA;</xsl:text> 
+        <xsl:call-template name="format">
+          <xsl:with-param name="txt" select="substring-after($txt,'&#xA;')"/>
+          <xsl:with-param select="$width" name="width" />           
+        </xsl:call-template>
+      </xsl:when>
+      
+      <xsl:otherwise>
+      <!-- get the width at which to break-->
+      <xsl:variable name="real-width">
+        <xsl:call-template name="tune-width">
+          <xsl:with-param select="$txt" name="txt" /> 
+          <xsl:with-param select="$width" name="width" /> 
+          <xsl:with-param select="$width" name="def" /> 
+        </xsl:call-template>
+      </xsl:variable>
+
+      <!-- output the first part of the broken string -->
+      <xsl:value-of select="substring($txt, 1, $real-width)" /> 
+
+      <!-- output a newline -->
+      <xsl:text>&#xA;</xsl:text> 
+
+      <!-- call itself with the remaining part of the text -->
+      <xsl:call-template name="format">
+       <xsl:with-param select="substring($txt,$real-width + 1)" name="txt" /> 
+       <xsl:with-param select="$width" name="width" /> 
+      </xsl:call-template>
+      </xsl:otherwise>
+      </xsl:choose>
+    </xsl:if>
+  </xsl:template>
+  
+   
+  <!-- used by template "format", it calculates the width at the given def 
+       
+       It starts at def length and comes back till it finds a space -->
+  <xsl:template name="tune-width">
+    <xsl:param name="txt" /> 
+    <xsl:param name="width" /> 
+    <xsl:param name="def" /> 
+
+    <xsl:choose>
+      <xsl:when test="$width = 0">
+       <xsl:value-of select="$def" /> 
+      </xsl:when>
+                 
+      <xsl:when test="substring($txt, $width, 1 ) = ' '">
+          <xsl:value-of select="$width" /> 
+       </xsl:when>
+       
+       <xsl:otherwise>
+         <!-- otherwise need to tune again, trying with $width - 1 -->
+         <xsl:call-template name="tune-width">
+           <xsl:with-param select="$width - 1" name="width" /> 
+           <xsl:with-param select="$txt" name="txt" /> 
+           <xsl:with-param select="$def" name="def" /> 
+         </xsl:call-template>
+       </xsl:otherwise>
+     </xsl:choose>
+
+  </xsl:template>
+
+  </xsl:stylesheet>
diff --git a/src/documentation/skins/common/xslt/html/tab2menu.xsl b/src/documentation/skins/common/xslt/html/tab2menu.xsl
new file mode 100644 (file)
index 0000000..cb95ecb
--- /dev/null
@@ -0,0 +1,159 @@
+<?xml version="1.0"?>
+<!--
+This stylesheet generates 'tabs' at the top left of the screen.  Tabs are
+visual indicators that a certain subsection of the URI space is being browsed.
+For example, if we had tabs with paths:
+
+Tab1:  ''
+Tab2:  'community'
+Tab3:  'community/howto'
+Tab4:  'community/howto/xmlform/index.html'
+
+Then if the current path was 'community/howto/foo', Tab3 would be highlighted.
+The rule is: the tab with the longest path that forms a prefix of the current
+path is enabled.
+
+The output of this stylesheet is HTML of the form:
+    <div class="tab">
+      ...
+    </div>
+
+which is then merged by site2xhtml.xsl
+
+$Id$
+-->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+  <!-- ================================================================ -->
+  <!-- These templates SHOULD be overridden                             -->
+  <!-- ================================================================ -->
+
+  <!-- Called before first tag -->
+  <xsl:template name="pre-separator">
+  </xsl:template>
+
+  <!-- Called after last tag -->
+  <xsl:template name="post-separator">
+  </xsl:template>
+
+  <!-- Called between tags -->
+  <xsl:template name="separator">
+    <xsl:text> | </xsl:text>
+  </xsl:template>
+
+  <!--
+  Note: sub-stylesheets can't do apply-imports here, because it would choose
+  the 'tags' template and infinitely recurse. Hence call-template used instead.
+  -->
+
+  <!-- Display a selected tab node -->
+  <xsl:template name="selected">
+    <xsl:call-template name="base-selected"/>
+  </xsl:template>
+
+  <!-- Display an unselected tab node -->
+  <xsl:template name="not-selected">
+    <xsl:call-template name="base-not-selected"/>
+  </xsl:template>
+
+
+  <!-- ================================================================ -->
+  <!-- These templates CAN be overridden                             -->
+  <!-- ================================================================ -->
+
+  <xsl:template match="tabs">
+    <div class="tab">
+      <xsl:call-template name="base-tabs"/>
+    </div>
+  </xsl:template>
+
+
+  <!-- ================================================================ -->
+  <!-- These templates SHOULD NOT be overridden                         -->
+  <!-- ================================================================ -->
+
+  <xsl:param name="path"/>
+
+  <xsl:include href="dotdots.xsl"/>
+  <xsl:include href="tabutils.xsl"/>
+
+  <!-- NOTE: Xalan has a bug (race condition?) where sometimes $root is only half-evaluated -->
+  <xsl:variable name="root">
+    <xsl:call-template name="dotdots">
+      <xsl:with-param name="path" select="$path"/>
+    </xsl:call-template>
+  </xsl:variable>
+
+  <xsl:variable name="skin-img-dir" select="concat(string($root), 'skin/images')"/>
+
+  <!--
+    The longest path of any tab, whose path is a subset of the current URL.  Ie,
+    the path of the 'current' tab.
+  -->
+  <xsl:variable name="longest-dir">
+    <xsl:call-template name="longest-dir">
+      <xsl:with-param name="tabfile" select="/"/>
+    </xsl:call-template>
+  </xsl:variable>
+
+  <xsl:variable name="matching-id">
+    <xsl:call-template name="matching-id">
+      <xsl:with-param name="tabfile" select="/"/>
+    </xsl:call-template>
+  </xsl:variable>
+
+
+  <!-- Called from tabs, after it has written the outer 'div class=tabs' and
+  any other HTML -->
+  <xsl:template name="base-tabs">
+    <xsl:call-template name="pre-separator"/>
+    <xsl:for-each select="//tab">
+      <xsl:if test="position()!=1"><xsl:call-template name="separator"/></xsl:if>
+      <xsl:apply-templates select="."/>
+    </xsl:for-each>
+    <xsl:call-template name="post-separator"/>
+  </xsl:template>
+
+
+  <xsl:template match="tab">
+    <xsl:choose>
+      <xsl:when test="@id and @id = $matching-id">
+        <xsl:call-template name="selected"/>
+      </xsl:when>
+      <xsl:when test="not(@id) and @dir = $longest-dir or @href = $longest-dir">
+        <xsl:call-template name="selected"/>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:call-template name="not-selected"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+  <!-- Called from 'selected' -->
+  <xsl:template name="base-selected">
+    <a class="base-selected">
+      <xsl:attribute name="href">
+        <xsl:call-template name="calculate-tab-href">
+          <xsl:with-param name="tab" select="."/>
+          <xsl:with-param name="path" select="$path"/>
+        </xsl:call-template>
+      </xsl:attribute>
+        <xsl:value-of select="@label"/>
+    </a>
+  </xsl:template>
+
+  <!-- Called from 'not-selected' -->
+  <xsl:template name="base-not-selected">
+    <a class="base-not-selected">
+      <xsl:attribute name="href">
+        <xsl:call-template name="calculate-tab-href">
+          <xsl:with-param name="tab" select="."/>
+          <xsl:with-param name="path" select="$path"/>
+        </xsl:call-template>
+      </xsl:attribute>
+        <xsl:value-of select="@label"/>
+    </a>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/documentation/skins/common/xslt/html/tabutils.xsl b/src/documentation/skins/common/xslt/html/tabutils.xsl
new file mode 100644 (file)
index 0000000..2208e02
--- /dev/null
@@ -0,0 +1,78 @@
+<?xml version="1.0"?>
+
+<!--
+Some callable templates useful when dealing with tab paths.  Mostly used in
+tab2menu.xsl
+-->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+  <xsl:param name="site-file" select="'cocoon://abs-menulinks'"/>
+  <xsl:variable name="site" select="document($site-file)"/>
+  <!-- Given the current path and a tabs.xml entry, returns a relative path to
+  the specified tab's URL.  When rendering a set of tabs, this template will be
+  called once per tab.
+  -->
+  <xsl:template name="calculate-tab-href">
+
+    <xsl:param name="dir_index" select="'index.html'"/>
+
+    <xsl:param name="tab"/> <!-- current 'tab' node -->
+    <xsl:param name="path" select="$path"/>
+
+    <xsl:if test="starts-with($tab/@href, 'http')">  <!-- Absolute URL -->
+      <xsl:value-of select="$tab/@href"/>
+    </xsl:if>
+    <xsl:if test="not(starts-with($tab/@href, 'http'))">  <!-- Root-relative path -->
+      <xsl:variable name="backpath">
+        <xsl:call-template name="dotdots">
+          <xsl:with-param name="path" select="$path"/>
+        </xsl:call-template>
+        <xsl:text>/</xsl:text>
+        <xsl:value-of select="$tab/@dir | $tab/@href"/>
+        <!-- If we obviously have a directory, add /index.html -->
+        <xsl:if test="$tab/@dir or substring($tab/@href, string-length($tab/@href),
+          string-length($tab/@href)) = '/'">
+          <xsl:text>/</xsl:text>
+          <xsl:if test="$tab/@indexfile">
+            <xsl:value-of select="$tab/@indexfile"/>
+          </xsl:if>
+          <xsl:if test="not(@indexfile)">
+            <xsl:value-of select="$dir_index"/>
+          </xsl:if>
+        </xsl:if>
+      </xsl:variable>
+
+      <xsl:value-of
+        select="translate(normalize-space(translate($backpath, ' /', '/ ')), ' /', '/ ')"/>
+      <!-- Link to backpath, normalizing slashes -->
+    </xsl:if>
+  </xsl:template>
+
+  <!--
+    The id of any tab, whose path is a subset of the current URL.  Ie,
+    the path of the 'current' tab.
+  -->
+  <xsl:template name="matching-id" xmlns:l="http://apache.org/forrest/linkmap/1.0">
+    <xsl:value-of select="$site//*[starts-with(@href, $path)]/@tab"/>
+  </xsl:template>
+  <!--
+    The longest path of any tab, whose path is a subset of the current URL.  Ie,
+    the path of the 'current' tab.
+  -->
+  <xsl:template name="longest-dir">
+    <xsl:param name="tabfile"/>
+    <xsl:for-each select="$tabfile/tabs/tab[starts-with($path, @dir|@href)]">
+      <xsl:sort select="string-length(@dir|@href)"
+        data-type="number" order="descending"/>
+      <xsl:if test="position()=1">
+        <xsl:value-of select="@dir|@href"/>
+      </xsl:if>
+    </xsl:for-each>
+  </xsl:template>
+
+
+</xsl:stylesheet>
+
diff --git a/src/documentation/skins/poi-site/css/mysite.css b/src/documentation/skins/poi-site/css/mysite.css
new file mode 100644 (file)
index 0000000..a979b0b
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * Other colors:
+ *  - dark blue: #036
+ *  - bluish: #269
+ *
+ */
+
+/*
+ * The Banner section.
+ */
+.banner, .projectLogo, .groupLogo, .projectLogo a, .groupLogo a,
+    .groupLogo a:visited, .projectLogo a:visited,
+    .groupLogo a:link, .projectLogo a:link {
+}
+
+/*
+ * The Status + Footer section.
+ */
+.status, .breadcrumb, .searcher, .tabs {
+}
+
+.selectedTab {
+}
+
+/*
+ * The Menu section.
+ */
+.menuColumn {
+}
+.menubar {
+}
+.menu {
+}
+.menuLabel {
+}
+.menuItem {
+}
+
+/*
+ * The Content section.
+ */
+.contentColumn {
+}
+
+h1, h2, h3, h4 {
+}
+
+h3, h4 {
+ }
+h3 {
+  }
+h4 {  
+}
+
+.code {
+}
+
+.section {
+}
+
+.subsection {
+}
+
+/*
+ * The Footer section.
+ */
+.footer, .copyright, .host, .credit {
+}
+
+/*
+ * General Settings
+ */
+body {
+}
+
+a:link, .menuItem a:visited, .status a:visited {
+ color: #036;
+}
+
+a:active, a:hover {
+
+}
+
+body, th, td {
+}
+
+.logoImage {
+}
diff --git a/src/documentation/skins/poi-site/css/print.css b/src/documentation/skins/poi-site/css/print.css
new file mode 100644 (file)
index 0000000..059fd68
--- /dev/null
@@ -0,0 +1,16 @@
+#banner, #footer, #leftcol, #breadcrumbs, .docs #toc, .docs .courtesylinks     {
+       display: none;
+       }
+body.docs div.docs     {
+       margin: 0 !important;
+       border: none !important
+       }
+
+/* just to be sure */
+#navcolumn {
+ width: 0px;
+}
+
+#leftcol {
+ width: 0px;
+}
diff --git a/src/documentation/skins/poi-site/css/site.css b/src/documentation/skins/poi-site/css/site.css
new file mode 100644 (file)
index 0000000..b4842df
--- /dev/null
@@ -0,0 +1,81 @@
+div#banner {
+ border-top: 1px solid #fff;
+ border-bottom: 1px solid #aaa;
+}
+
+#banner, #banner td {
+ background: #fff;
+ color: #036;
+}
+
+#tabs {
+  text-align: right;
+}
+
+.selectedTab {
+  color: #036; 
+}
+
+ a.unselectedTab {
+  color: #888888;      
+}
+
+#source {
+ background-color: #fff;
+ color: #000;
+ border-right: 1px solid #888;
+ border-left: 1px solid #888;
+ border-top: 1px solid #888;
+ border-bottom: 1px solid #888;
+ margin-right: 7px;
+ margin-left: 7px;
+ margin-top: 1em;
+}
+
+#source pre {
+ margin-right: 7px;
+ margin-left: 7px;
+}
+
+/* make the whole column grey */
+#navcolumn {
+ width: 150px;
+ }
+
+#leftcol {
+ width: 150px;
+}
+
+/*
+ * The Menu section.
+ */
+.menuColumn {
+}
+
+.menu {
+  padding-bottom: .2em;
+  font-size: x-small;
+  text-decoration: none;
+}
+.menuLabel { font-weight: bold; }
+.menuItem {
+  padding-left: 12px;
+  text-decoration: none;
+}
+
+/* breadcrumbs */
+#breadcrumbs
+{
+       font-weight: bold;
+}
+.breadcrumbTrail
+{
+       padding-left: 5px;
+}
+.breadcrumb
+{
+       font-weight: bold;
+}
+.crumbSeparator
+{
+}
diff --git a/src/documentation/skins/poi-site/css/tigris.css b/src/documentation/skins/poi-site/css/tigris.css
new file mode 100644 (file)
index 0000000..2fc461c
--- /dev/null
@@ -0,0 +1,434 @@
+/* contains rules unsuitable for Netscape 4.x; simpler rules are in ns4_only.css. see <http://style.tigris.org/> */
+
+/* colors, backgrounds, borders, link indication */ 
+
+body {
+ background: #fff;
+ color: #000;
+ }
+.app h3, .app h4, .app th, .tabs td, .tabs th, .functnbar {
+ background-image: url(images/nw_maj_rond.gif);
+ background-repeat: no-repeat;
+ }
+#navcolumn div div, body.docs #toc li li  {
+ background-image: url(images/strich.gif);
+ background-repeat: no-repeat;
+ background-position: .5em .5em;
+ }
+#navcolumn div div.heading  {
+ background-image: none;
+ }
+.app h3, .app h4 {
+ color: #fff;
+ }
+.app h3 {
+ background-color: #036;
+ }
+.app h4 {
+ background-color: #888;
+ }
+.a td {
+ background: #ddd;
+ }
+.b td {
+ background: #efefef;
+ }
+table, th, td {
+ border: none
+ }
+.mtb {
+ border-top: solid 1px #ddd;
+ }
+div.colbar {
+ background: #bbb;
+ }
+div#banner {
+ border-top: 1px solid #369;
+ border-bottom: 1px solid #003;
+ }
+div#helptext th {
+ border-bottom: 1px solid #996;
+ border-right: 1px solid #996;
+ }
+div#helptext td {
+ border-bottom: 1px solid #cc9;
+ border-right: 1px solid #cc9;
+ }
+.tabs { 
+ border-bottom: .75em #888 solid;
+ }
+.tabs th, .tabs td {
+ border-right: 1px solid #333;
+ }
+.tabs td {
+ border-bottom: 1px solid #ddd;
+ }
+#navcolumn {
+ background: #eee;
+ border-right: 1px solid #aaa;
+ border-bottom: 1px solid #aaa;
+ }
+#breadcrumbs {
+ border-bottom: 1px solid #aaa;
+ background-color: #ddd;
+ }
+#navcolumn, #breadcrumbs {
+ border-top: 1px solid #fff;
+ }
+#rightcol div.www, #rightcol div.help {
+ border: 1px solid #ddd;
+ }
+div#navcolumn div.focus {
+ border-top: 1px solid #aaa;
+ border-left: 1px solid #aaa;
+ background-color: #fff;
+ } 
+body.docs div.docs { 
+ background: #fff;
+ border-left: 1px solid #ddd;
+ border-top: 1px solid #ddd;
+ }
+body.docs { 
+ background: #eee url(images/help_logo.gif) top right no-repeat !important;
+ }
+.docs h3, .docs h4 {
+ border-top: solid 1px #000;
+ }
+#alerterrormessage { 
+ background: url(images/icon_alert.gif) top left no-repeat !important;
+ }
+.functnbar {
+ background-color: #aaa;
+ }
+.functnbar2, .functnbar3  {
+ background: #aaa;
+ }
+.functnbar3 {
+ background-color: #ddd;
+ }
+.functnbar, .functnbar2, .functnbar3 {
+ color: #000;
+ }
+.functnbar a, .functnbar2 a, .functnbar3 a {
+ color: #000;
+ text-decoration: underline;
+ }
+#topmodule {
+ background: #ddd;
+ border-top: 1px solid #fff;
+ border-bottom: 1px solid #aaa; 
+ border-right: 1px solid #aaa; 
+ }
+#topmodule #issueid {
+ border-right: 1px solid #aaa;
+ }
+a:link, #navcolumn a:visited, .app a:visited, .tasknav a:visited {
+ color: blue;
+ }
+a:active, a:hover, #leftcol a:active, #leftcol a:hover {
+ color: #f30 !important;
+ }
+#login a:link, #login a:visited {
+ color: white; 
+ text-decoration: underline;
+ }
+#banner a:active, #banner a:hover {
+ color: #f90 !important;
+ }
+#leftcol a, #breadcrumbs a  {
+ text-decoration: none;
+ }
+a:link.selfref, a:visited.selfref {
+ color: #555 !important;
+ text-decoration: none;
+ }
+h2 .lastchild {
+ color: #777
+ } 
+.tabs td, .tabs th {
+ background-color: #ddd;
+ }
+.app th {
+ background-color: #bbb;
+ }
+.tabs th {
+ background-color: #888;
+ color: #fff;
+ }
+.axial th {
+ background-color: #ddd;
+ color: black
+ }
+.tabs td {
+ background-color: #ddd;
+ }
+.alert { 
+ color: #c00;
+ }
+.confirm {
+ color: green;
+ }
+.info {
+ color: blue;
+ }
+.selection {
+ background: #ffc;
+ }
+#login {
+ color: #fff;
+ }
+#helptext th {
+ background: #cc9;
+ }
+#helptext td {
+ background: #ffc;
+ }
+.tabs a  {
+ text-decoration: none;
+ }
+#navcolumn div strong {
+ color: #000;
+ }
+#banner, #banner td { 
+ background: #036;
+ color: #fff;
+ }
+body #banner #login a { 
+ color: #fff;
+ }
+
+
+/* font and text properties, exclusive of link indication, alignment, text-indent */
+
+body, th, td, input, select, textarea, h2 small {
+ font-family: Verdana, Helvetica, Arial, sans-serif;
+ }
+code, pre {
+ font-family: 'Andale Mono', Courier, monospace;
+ }
+html body, body th, body td, textarea, h2 small, .app h3, .app h4, #rightcol h3, #bodycol pre, #bodycol code {
+ font-size: x-small;
+ voice-family: "\"}\"";
+ voice-family: inherit;
+ font-size: small
+ }
+html>body, html>body th, html>body td, html>body input, html>body select, html>body textarea, html>body h2 small, html>body .app h3, html>body .app h4, html>body #rightcol h3, html>body #bodycol pre, html>body #bodycol code {
+ font-size: small
+ }
+small, div#footer td, div#login, div.tabs th, div.tabs td, input, select, .paginate, .functnbar, .functnbar2, .functnbar3, #breadcrumbs td, .courtesylinks, #rightcol div.help, .colbar, .tasknav, body.docs div#toc, #leftcol {
+ font-size: x-small;
+ voice-family: "\"}\"";
+ voice-family: inherit;
+ font-size: x-small
+ }
+html>body small, html>body div#footer td, html>body div#login, html>body div#helptext td, html>body div#helptext th, html>body div.tabs th, html>body div.tabs td, html>body input, html>body select, html>body .paginate, html>body .functnbar, html>body .functnbar2, html>body .functnbar3, html>body #breadcrumbs td, html>body .courtesylinks, html>body #rightcol div.help, html>body .colbar, html>body .tasknav, html>body.docs #toc {
+ font-size: x-small
+ }
+#bodycol h2 {
+ font-family: Tahoma, Verdana, Helvetica, Arial, sans-serif;
+ font-size: 1.5em;
+ font-weight: normal;
+ }
+h2 small {
+ font-weight: bold;
+ letter-spacing: .06em;
+ }
+dt {
+ font-weight: bold
+ }
+#login .username {
+ font-weight: bold;
+ }
+h4 {
+ font-size: 1em;
+ }
+#breadcrumbs td {
+ font-weight: bold;
+ } 
+.selection {
+ font-weight: bold
+ }
+
+
+/* box properties (exclusive of borders), positioning, alignments, list types, text-indent */
+
+#bodycol h2 {
+ margin-top: .3em;
+ margin-bottom: .5em;
+ }
+p, ul, ol, dl {
+ margin-top: .67em;
+ margin-bottom: .67em;
+ }
+h3, h4 {
+ margin-bottom: 0;
+ }
+form {
+ margin-top: 0;
+ margin-bottom: 0;
+ }
+#bodycol {
+ padding-left: 12px;
+ padding-right: 12px;
+ width: 100%;
+ voice-family: "\"}\"";
+ voice-family: inherit;
+ width: auto;
+ }
+html>body #bodycol {
+ width: auto;
+ }
+.docs {
+ line-height: 1.4;
+ }
+.app h3, .app h4 {
+ padding: 5px;
+ margin-right: 2px;
+ margin-left: 2px;
+ }
+.h3 p, .h4 p, .h3 dt, .h4 dt {
+ margin-right: 7px;
+ margin-left: 7px;
+ }
+.tasknav {
+ margin-bottom: 1.33em
+ }
+div.colbar {
+ padding: 4px;
+ margin: 2px 2px 0;
+ }
+.tabs { 
+ margin-top: .67em;
+ margin-right: 2px;
+ margin-left: 2px;
+ }
+#leftcol {
+ padding-bottom: .5em;
+ }
+#breadcrumbs td {
+ vertical-align: middle;
+ padding: 2px 8px;
+ } 
+#rightcol div.www, #rightcol div.help {
+ padding: 0 .5em
+ }
+#navcolumn {
+ margin: -8px -8px 0 -8px;
+ padding: 4px;
+ }
+#navcolumn div {
+ padding-left: 5px
+ }
+div#navcolumn div div {
+ margin-top: .3em;
+ margin-bottom: .3em;
+ }
+div#navcolumn div.focus { 
+ margin-top: -.1em;
+ padding: .2em 4px; 
+ } 
+body.docs #toc { 
+ position: absolute;
+ top: 15px;
+ left: 0px;
+ width: 120px;
+ padding: 0 20px 0 0
+ }
+body.docs #toc ul, #toc ol {
+ margin-left: 0;
+ padding-left: 0;
+ }
+body.docs #toc li {
+ margin-top: 7px;
+ padding-left: 10px;
+ list-style-type: none;
+ }
+body.docs div.docs { 
+ margin: 61px 0 0 150px;
+ padding: 1em 2em 1em 1em !important;
+ }
+.docs p+p {
+ text-indent: 5%;
+ margin-top: -.67em
+ }
+.docs h3, .docs h4 {
+ margin-bottom: .1em;
+ padding-top: .3em;
+ }
+#alerterrormessage { 
+ padding-left: 100px;
+ }
+.functnbar, .functnbar2, .functnbar3 {
+ padding: 5px;
+ margin: .67em 2px;
+ }
+#topmodule td {
+ vertical-align: middle;
+ padding: 2px 8px
+ } 
+body {
+ padding: 1em;
+ }
+body.composite, body.docs {
+ margin: 0;
+ padding: 0;
+ }
+th, td {
+ text-align: left;
+ vertical-align: top 
+ }
+.right {
+ text-align: right !important;
+ }
+.center {
+ text-align: center !important;
+ }
+.tabs td, .tabs th {
+ padding-left: 7px;
+ padding-right: 7px;
+ }
+.axial th {
+ text-align: right;
+ }
+.app .axial td th {
+ text-align: left;
+ }
+body td .stb {
+ margin-top: 1em;
+ text-indent: 0;
+ }
+body td .mtb {
+ margin-top: 2em;
+ text-indent: 0;
+ }
+dd {
+ margin-bottom: .67em;
+ }
+#footer {
+ margin: 4px
+ }
+#helptext {
+ margin-top: 1em
+ }
+#helptext td div {
+ margin: .5em
+ }
+.courtesylinks {
+ margin-top: 1em;
+ padding-top: 1em
+ }
+#navcolumn div {
+ margin-bottom: .5em;
+ }
+#navcolumn div div {
+ margin-top: .3em
+ }
+#navcolumn div div {
+ padding-left: 1em;
+ }
+#banner, #banner td { 
+ vertical-align: middle;
+ }
+body.docs, body.nonav {
+ margin: 1em
+ }
diff --git a/src/documentation/skins/poi-site/images/add.jpg b/src/documentation/skins/poi-site/images/add.jpg
new file mode 100644 (file)
index 0000000..06831ee
Binary files /dev/null and b/src/documentation/skins/poi-site/images/add.jpg differ
diff --git a/src/documentation/skins/poi-site/images/favicon.ico b/src/documentation/skins/poi-site/images/favicon.ico
new file mode 100644 (file)
index 0000000..161bcf7
Binary files /dev/null and b/src/documentation/skins/poi-site/images/favicon.ico differ
diff --git a/src/documentation/skins/poi-site/images/note.gif b/src/documentation/skins/poi-site/images/note.gif
new file mode 100644 (file)
index 0000000..83ce9ec
Binary files /dev/null and b/src/documentation/skins/poi-site/images/note.gif differ
diff --git a/src/documentation/skins/poi-site/images/nw_maj_rond.gif b/src/documentation/skins/poi-site/images/nw_maj_rond.gif
new file mode 100644 (file)
index 0000000..add42a4
Binary files /dev/null and b/src/documentation/skins/poi-site/images/nw_maj_rond.gif differ
diff --git a/src/documentation/skins/poi-site/images/nw_min.gif b/src/documentation/skins/poi-site/images/nw_min.gif
new file mode 100644 (file)
index 0000000..bf4bc75
Binary files /dev/null and b/src/documentation/skins/poi-site/images/nw_min.gif differ
diff --git a/src/documentation/skins/poi-site/images/pdfdoc.gif b/src/documentation/skins/poi-site/images/pdfdoc.gif
new file mode 100644 (file)
index 0000000..00dee28
Binary files /dev/null and b/src/documentation/skins/poi-site/images/pdfdoc.gif differ
diff --git a/src/documentation/skins/poi-site/images/remove.jpg b/src/documentation/skins/poi-site/images/remove.jpg
new file mode 100644 (file)
index 0000000..8c9b9ef
Binary files /dev/null and b/src/documentation/skins/poi-site/images/remove.jpg differ
diff --git a/src/documentation/skins/poi-site/images/spacer.gif b/src/documentation/skins/poi-site/images/spacer.gif
new file mode 100644 (file)
index 0000000..35d42e8
Binary files /dev/null and b/src/documentation/skins/poi-site/images/spacer.gif differ
diff --git a/src/documentation/skins/poi-site/images/strich.gif b/src/documentation/skins/poi-site/images/strich.gif
new file mode 100644 (file)
index 0000000..a33e79d
Binary files /dev/null and b/src/documentation/skins/poi-site/images/strich.gif differ
diff --git a/src/documentation/skins/poi-site/images/update.jpg b/src/documentation/skins/poi-site/images/update.jpg
new file mode 100644 (file)
index 0000000..beb9207
Binary files /dev/null and b/src/documentation/skins/poi-site/images/update.jpg differ
diff --git a/src/documentation/skins/poi-site/images/valid-html401.png b/src/documentation/skins/poi-site/images/valid-html401.png
new file mode 100644 (file)
index 0000000..3855210
Binary files /dev/null and b/src/documentation/skins/poi-site/images/valid-html401.png differ
diff --git a/src/documentation/skins/poi-site/images/vcss.png b/src/documentation/skins/poi-site/images/vcss.png
new file mode 100644 (file)
index 0000000..9b2f596
Binary files /dev/null and b/src/documentation/skins/poi-site/images/vcss.png differ
diff --git a/src/documentation/skins/poi-site/images/void.gif b/src/documentation/skins/poi-site/images/void.gif
new file mode 100644 (file)
index 0000000..75b945d
Binary files /dev/null and b/src/documentation/skins/poi-site/images/void.gif differ
diff --git a/src/documentation/skins/poi-site/images/xmldoc.gif b/src/documentation/skins/poi-site/images/xmldoc.gif
new file mode 100644 (file)
index 0000000..ca1224f
Binary files /dev/null and b/src/documentation/skins/poi-site/images/xmldoc.gif differ
diff --git a/src/documentation/skins/poi-site/xslt/fo/document2fo.xsl b/src/documentation/skins/poi-site/xslt/fo/document2fo.xsl
new file mode 100644 (file)
index 0000000..9b845e7
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:fo="http://www.w3.org/1999/XSL/Format"
+                version="1.0">
+
+<xsl:import href="../../../common/xslt/fo/document2fo.xsl"/>
+
+</xsl:stylesheet>
+
+
diff --git a/src/documentation/skins/poi-site/xslt/html/book2menu.xsl b/src/documentation/skins/poi-site/xslt/html/book2menu.xsl
new file mode 100644 (file)
index 0000000..a0775a4
--- /dev/null
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<!--
+book2menu.xsl generates the HTML menu.  See the imported book2menu.xsl for
+details.
+-->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+  <xsl:import href="../../../common/xslt/html/book2menu.xsl"/>
+
+  <xsl:template match="book">
+    <div class="menuBar">
+      <xsl:apply-templates select="menu"/>
+    </div>
+  </xsl:template>
+
+  <xsl:template match="menu">
+    <div class="menu">
+      <span class="menuLabel"><xsl:value-of select="@label"/></span>
+      <xsl:call-template name="base-menu"/>
+    </div>
+  </xsl:template>
+
+  <xsl:template match="menu-item[@type='hidden']"/>
+
+  <xsl:template match="menu-item">
+    <div class="menuItem">
+      <xsl:apply-imports/>
+    </div>
+  </xsl:template>
+
+  <xsl:template name="selected">
+    <span class="menuSelected">
+      <xsl:value-of select="@label"/>
+    </span>
+  </xsl:template>
+
+  <xsl:template name="print-external">
+    <font color="#ffcc00">
+      <span class="externalSelected">
+        <xsl:apply-imports/>
+      </span>
+    </font>
+  </xsl:template>
+
+
+</xsl:stylesheet>
diff --git a/src/documentation/skins/poi-site/xslt/html/document2html.xsl b/src/documentation/skins/poi-site/xslt/html/document2html.xsl
new file mode 100644 (file)
index 0000000..7ac9509
--- /dev/null
@@ -0,0 +1,274 @@
+<?xml version="1.0"?>
+<!--
+This stylesheet contains the majority of templates for converting documentv11
+to HTML.  It renders XML as HTML in this form:
+
+  <div class="content">
+   ...
+  </div>
+
+..which site2xhtml.xsl then combines with HTML from the index (book2menu.xsl)
+and tabs (tab2menu.xsl) to generate the final HTML.
+
+$Id$
+-->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+  <xsl:import href="../../../common/xslt/html/document2html.xsl"/>
+
+<!-- ====================================================================== -->
+<!-- document section -->
+<!-- ====================================================================== -->
+
+ <xsl:template match="document">
+  <!-- checks if this is the included document to avoid neverending loop -->
+  <xsl:if test="not(book)">
+      <document>
+      <xsl:choose>
+               <xsl:when test="header/title">
+                     <title><xsl:value-of select="header/title"/></title>
+               </xsl:when>
+               <xsl:otherwise>
+                       <title>NO TITLE</title>
+               </xsl:otherwise>
+       </xsl:choose>
+      <body>
+        <xsl:apply-templates/>
+        <xsl:if test="header/authors">
+            <div align="right" id="authors">       
+               <xsl:for-each select="header/authors/person">
+                     <xsl:choose>
+                        <xsl:when test="position()=1">by&#160;</xsl:when>
+
+                        <xsl:otherwise>,&#160;</xsl:otherwise>
+                     </xsl:choose>
+                     <!-- <a href="mailto:{@email}"> -->
+                      <xsl:value-of select="@name" />
+                     <!-- </a> -->
+                  </xsl:for-each>
+              </div>
+         </xsl:if>         
+        <xsl:call-template name="pdflink"/>
+      </body>
+      </document>
+   </xsl:if>
+
+  
+    
+   <xsl:if test="book">
+    <xsl:apply-templates/>
+   </xsl:if>
+  </xsl:template>
+
+   <xsl:template match="body">
+    <xsl:apply-templates/>
+  </xsl:template>
+  
+<!-- ====================================================================== -->
+<!-- header section -->
+<!-- ====================================================================== -->
+
+ <xsl:template match="header">
+  <!-- ignore on general document -->
+ </xsl:template>
+
+<!-- ====================================================================== -->
+<!-- body section -->
+<!-- ====================================================================== -->
+
+   <xsl:template match="section">
+       
+        <xsl:variable name = "level" select = "count(ancestor::section)+1" />
+        
+        <xsl:choose>
+               <xsl:when test="$level=1">
+                 <div class="h3"><h3><xsl:value-of select="title"/></h3></div>
+             <xsl:apply-templates/>
+               </xsl:when>
+               <xsl:when test="$level=2">
+                 <div class="h4"><h4><xsl:value-of select="title"/></h4></div>
+             <xsl:apply-templates/>
+               </xsl:when>
+               <xsl:when test="$level=3">
+                 <div class="h2"><h2><xsl:value-of select="title"/></h2></div>
+             <xsl:apply-templates/>
+               </xsl:when>
+               <xsl:otherwise>
+                 <div class="h5"><h5><xsl:value-of select="title"/></h5></div>
+             <xsl:apply-templates/>             
+               </xsl:otherwise>
+        </xsl:choose>
+
+       </xsl:template>  
+
+ <xsl:template match="title">
+ </xsl:template>
+              
+<!-- ====================================================================== -->
+<!-- footer section -->
+<!-- ====================================================================== -->
+
+ <xsl:template match="footer">
+  <!-- ignore on general documents -->
+ </xsl:template>
+
+<!-- ====================================================================== -->
+<!-- paragraph section -->
+<!-- ====================================================================== -->
+
+  <xsl:template match="p">
+    <xsl:apply-imports/>
+  </xsl:template>
+
+  <xsl:template match="note">
+    <xsl:apply-imports/>
+  </xsl:template>
+
+  <xsl:template match="source">
+    <xsl:apply-imports/>
+  </xsl:template>
+  
+  <xsl:template match="//source/font">
+    <font color="{@color}"><xsl:apply-templates/></font>
+  </xsl:template>
+    
+  <xsl:template match="fixme">
+    <xsl:apply-imports/>
+  </xsl:template>
+
+<!-- ====================================================================== -->
+<!-- list section -->
+<!-- ====================================================================== -->
+
+ <xsl:template match="ul|ol|dl">
+    <xsl:apply-imports/>
+ </xsl:template>
+ <xsl:template match="li">
+    <xsl:apply-imports/>
+ </xsl:template>
+
+ <xsl:template match="sl">
+    <xsl:apply-imports/>
+ </xsl:template>
+
+ <xsl:template match="dt">
+    <xsl:apply-imports/>
+ </xsl:template>
+
+<!-- ====================================================================== -->
+<!-- table section -->
+<!-- ====================================================================== -->
+
+  <xsl:template match="table">
+    <xsl:apply-imports/>
+  </xsl:template>
+
+  <xsl:template match="tr">
+    <xsl:variable name="index"><xsl:number/></xsl:variable>
+    <tr>
+       <xsl:choose>
+          <xsl:when test="($index mod 2) = 0">
+             <xsl:attribute name="class">a</xsl:attribute>
+          </xsl:when>
+          <xsl:otherwise>
+             <xsl:attribute name="class">b</xsl:attribute>
+          </xsl:otherwise>
+       </xsl:choose>
+     
+       <xsl:apply-templates/>
+    </tr>
+  </xsl:template>
+
+  <xsl:template match="th">
+    <xsl:apply-imports/>
+  </xsl:template>
+
+  <xsl:template match="td">
+    <xsl:apply-imports/>
+  </xsl:template>
+
+  <xsl:template match="tn">
+    <xsl:apply-imports/>
+  </xsl:template>
+  
+  <xsl:template match="caption">
+    <!-- ignore since already used -->
+  </xsl:template>
+
+<!-- ====================================================================== -->
+<!-- markup section -->
+<!-- ====================================================================== -->
+
+ <xsl:template match="strong">
+    <xsl:apply-imports/>
+ </xsl:template>
+
+ <xsl:template match="em">
+    <xsl:apply-imports/>
+ </xsl:template>
+
+ <xsl:template match="code">
+    <xsl:apply-imports/>
+ </xsl:template>
+<!-- ====================================================================== -->
+<!-- images section -->
+<!-- ====================================================================== -->
+
+ <xsl:template match="figure">
+    <xsl:apply-imports/>
+ </xsl:template>
+ <xsl:template match="img">
+    <xsl:apply-imports/>
+ </xsl:template>
+
+ <xsl:template match="icon">
+    <xsl:apply-imports/>
+ </xsl:template>
+
+<!-- ====================================================================== -->
+<!-- links section -->
+<!-- ====================================================================== -->
+
+ <xsl:template match="link">
+    <xsl:apply-imports/>
+ </xsl:template>
+
+ <xsl:template match="connect">
+    <xsl:apply-imports/>
+ </xsl:template>
+
+ <xsl:template match="jump">
+    <xsl:apply-imports/>
+ </xsl:template>
+
+ <xsl:template match="fork">
+    <xsl:apply-imports/>
+ </xsl:template>
+
+ <xsl:template match="anchor">
+    <xsl:apply-imports/>
+ </xsl:template>  
+
+<!-- ====================================================================== -->
+<!-- specials section -->
+<!-- ====================================================================== -->
+
+ <xsl:template match="br">
+    <xsl:apply-imports/>
+ </xsl:template>
+
+  <!-- Generates the PDF link -->
+  <xsl:template name="pdflink">
+    <xsl:if test="not($config/disable-pdf-link) or $disable-pdf-link = 'false'"> 
+      <div align="right" id="pdf"><a href="{$filename-noext}.pdf">
+          <img class="skin" src="{$skin-img-dir}/pdfdoc.gif" alt="PDF"/><br/>
+          PDF</a>
+      </div>
+    </xsl:if>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/documentation/skins/poi-site/xslt/html/site2xhtml.xsl b/src/documentation/skins/poi-site/xslt/html/site2xhtml.xsl
new file mode 100644 (file)
index 0000000..9b1c995
--- /dev/null
@@ -0,0 +1,253 @@
+<?xml version="1.0"?>
+<!--
+site2xhtml.xsl is the final stage in HTML page production.  It merges HTML from
+document2html.xsl, tab2menu.xsl and book2menu.xsl, and adds the site header,
+footer, searchbar, css etc.  As input, it takes XML of the form:
+
+<site>
+  <div class="menu">
+    ...
+  </div>
+  <div class="tab">
+    ...
+  </div>
+  <div class="content">
+    ...
+  </div>
+</site>
+
+$Id$
+-->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+  <xsl:import href="../../../common/xslt/html/site2xhtml.xsl"/>
+
+  <xsl:template match="site">
+      <html>
+         <head>
+            <xsl:comment>*** This is a generated file.  Do not edit.  ***</xsl:comment>
+            <link type="text/css" href="{$root}skin/tigris.css" rel="stylesheet" />
+            <link type="text/css" href="{$root}skin/mysite.css" rel="stylesheet" />
+            <link type="text/css" href="{$root}skin/site.css"   rel="stylesheet" />
+            <link type="text/css" href="{$root}skin/print.css"  rel="stylesheet" media="print" />
+
+            <title>
+              <xsl:value-of select="/site/document/title" />
+            </title>
+         </head>
+    
+  <body class="composite" bgcolor="white">
+    
+    <xsl:comment>================= start Banner ==================</xsl:comment>
+      <div id="banner">
+        <table border="0" summary="banner" cellspacing="0" cellpadding="8" width="100%">
+         <tbody>        
+          <tr>
+            <xsl:comment>================= start Group Logo ==================</xsl:comment>
+            <xsl:if test="$config/group-name">
+            <td align="left">
+              <div class="groupLogo">
+                <xsl:call-template name="renderlogo">
+                  <xsl:with-param name="name" select="$config/group-name"/>
+                  <xsl:with-param name="url" select="$config/group-url"/>
+                  <xsl:with-param name="logo" select="$config/group-logo"/>
+                  <xsl:with-param name="root" select="$root"/>
+                </xsl:call-template>
+              </div>
+            </td>
+            </xsl:if>
+            <xsl:comment>================= end Group Logo ==================</xsl:comment>
+            <xsl:comment>================= start Project Logo ==================</xsl:comment>
+            <td align="right">
+              <div class="projectLogo">
+                <xsl:call-template name="renderlogo">
+                  <xsl:with-param name="name" select="$config/project-name"/>
+                  <xsl:with-param name="url" select="$config/project-url"/>
+                  <xsl:with-param name="logo" select="$config/project-logo"/>
+                  <xsl:with-param name="root" select="$root"/>
+                </xsl:call-template>
+              </div>
+            </td>
+            <xsl:comment>================= end Project Logo ==================</xsl:comment>
+            <xsl:comment>================= start Search ==================</xsl:comment>
+            <td class="search" align="right" rowspan="2" valign="top">
+              <xsl:if test="not($config/disable-search) or
+                $config/disable-search='false' and $config/searchsite-domain and
+                $config/searchsite-name">
+                <form method="get" action="http://www.google.com/search" target="_blank">
+                  <table cellpadding="0" cellspacing="0" border="0" summary="search">
+                    <tr>
+                      <td colspan="3" bgcolor="#a5b6c6"><img class="spacer" src="{$spacer}" alt="" width="1" height="10" /></td>
+                    </tr>
+                    <tr>
+                      <td colspan="3"><img class="spacer" src="{$spacer}" alt="" width="1" height="8" /></td>
+                    </tr>
+                    <tr>
+                      <td><img class="spacer" src="{$spacer}" alt="" width="1" height="1" /></td>
+                      <td nowrap="nowrap">
+                        <input type="hidden" name="sitesearch" value="{$config/searchsite-domain}"/>
+                        <input type="text" id="query" name="q" size="10"/>
+                        <img class="spacer" src="{$spacer}" alt="" width="5" height="1" />
+                        <input type="submit" value="Search" name="Search"/>
+                        <br />
+                          Search <xsl:value-of select="$config/searchsite-name"/>
+                          <!-- setting search options off for the moment -->
+                          <!--
+                          <input type="radio" name="web" value="web"/>web site&#160;&#160;<input type="radio" name="mail" value="mail"/>mail lists
+                          -->
+                      </td>
+                      <td><img class="spacer" src="{$spacer}" alt="" width="1" height="1" /></td>
+                    </tr>
+
+                    <tr>
+                      <td colspan="3"><img class="spacer" src="{$spacer}" alt="" width="1" height="7" /></td>
+                    </tr>
+
+                    <tr>
+                      <td class="bottom-left-thick"></td>
+                      <td bgcolor="#a5b6c6"><img class="spacer" src="{$spacer}" alt="" width="1" height="1" /></td>
+                      <td class="bottom-right-thick"></td>
+                    </tr>
+                  </table>
+                </form>
+              </xsl:if>
+            </td>
+            <xsl:comment>================= end Search ==================</xsl:comment>
+          </tr>
+         </tbody>          
+        </table>
+      </div>
+    <xsl:comment>================= end Banner ==================</xsl:comment>
+
+    <xsl:comment>================= start Main ==================</xsl:comment>
+    <table id="breadcrumbs" summary="nav" border="0" cellspacing="0" cellpadding="0" width="100%">
+     <tbody>    
+      <xsl:comment>================= start Status ==================</xsl:comment>
+      <tr class="status">
+        <td>
+          <xsl:comment>================= start BreadCrumb ==================</xsl:comment>
+            <a href="{$config/trail/link1/@href}"><xsl:value-of select="$config/trail/link1/@name" /></a> 
+            <xsl:if test = "($config/trail/link2/@name)and(normalize-space($config/trail/link2/@name)!='')"><xsl:text> | </xsl:text></xsl:if>                                 
+            <a href="{$config/trail/link2/@href}"><xsl:value-of select="$config/trail/link2/@name" /></a>
+            <xsl:if test = "($config/trail/link3/@name)and(normalize-space($config/trail/link3/@name)!='')"><xsl:text> | </xsl:text></xsl:if>                                 
+            <a href="{$config/trail/link3/@href}"><xsl:value-of select="$config/trail/link3/@name" /></a>
+          <!-- useful when we have <link> elements instead of link(n:=1..3)  
+          <xsl:for-each select="$config/trail/link">
+            <xsl:if test="position()!=1">|</xsl:if>
+            <a href="{@href}"><xsl:value-of select="@name"/></a>
+          </xsl:for-each>
+          -->
+          <xsl:comment>================= end BreadCrumb ==================</xsl:comment>
+        </td>
+        <td id="tabs">
+          <xsl:comment>================= start Tabs ==================</xsl:comment>
+          <xsl:apply-templates select="div[@class='tab']"/>
+          <xsl:comment>================= end Tabs ==================</xsl:comment>
+        </td>
+      </tr>
+     </tbody>      
+    </table>      
+      <xsl:comment>================= end Status ==================</xsl:comment>
+
+
+    <table border="0" summary="" cellspacing="0" cellpadding="8" width="100%" id="main">
+     <tbody>
+      <tr valign="top">
+        <xsl:comment>================= start Menu ==================</xsl:comment>
+        <td id="leftcol">
+          <div id="navcolumn">
+            <xsl:apply-templates select="div[@class='menuBar']"/>
+          </div>
+        </td>
+        <xsl:comment>================= end Menu ==================</xsl:comment>
+
+        <xsl:comment>================= start Content ==================</xsl:comment>
+        <td>
+          <div id="bodycol">
+            <div class="app">
+              <div align="center">
+                <h1><xsl:value-of select="/site/document/title" /></h1>
+                <xsl:if test="/site/document/subtitle">
+                  <h2><xsl:value-of select="/site/document/subtitle" /></h2>
+                </xsl:if>
+               </div>
+                <div class="h3">
+                   <xsl:copy-of select="/site/document/body/node()|@*" />
+                </div>
+              </div>
+            </div>
+        </td>
+        <xsl:comment>================= end Content ==================</xsl:comment>
+      </tr>
+     </tbody>      
+    </table>
+    <xsl:comment>================= end Main ==================</xsl:comment>
+
+    <xsl:comment>================= start Footer ==================</xsl:comment>
+    <div id="footer">
+    <table border="0" width="100%" cellpadding="4" cellspacing="0" summary="footer">
+     <tbody>
+      <tr>
+        <xsl:comment>================= start Copyright ==================</xsl:comment>
+        <td colspan="2">
+          <div align="center">
+            <div class="copyright">
+              Copyright &#169; <xsl:value-of select="$config/year"/>&#160;<xsl:value-of
+              select="$config/vendor"/>. All rights reserved.
+            </div>
+          </div>
+        </td>
+        <xsl:comment>================= end Copyright ==================</xsl:comment>
+      </tr>
+      <tr>
+      <td align="left">
+        <xsl:comment>================= start Host ==================</xsl:comment>
+        <xsl:if test="$config/host-logo and not($config/host-logo = '')">
+          <div align="left">
+            <div class="host">
+              <xsl:call-template name="renderlogo">
+                <xsl:with-param name="name" select="$config/host-name"/>
+                <xsl:with-param name="url" select="$config/host-url"/>
+                <xsl:with-param name="logo" select="$config/host-logo"/>
+                <xsl:with-param name="root" select="$root"/>
+              </xsl:call-template>
+            </div>
+          </div>
+        </xsl:if>
+        <xsl:comment>================= end Host ==================</xsl:comment>
+      </td>
+      <td align="right">
+        <xsl:comment>================= start Credits ==================</xsl:comment>
+        <div align="right">
+          <div class="credit">
+            <xsl:if test="$filename = 'index.html'">
+              <xsl:call-template name="compliancy-logos"/>
+              <xsl:if test="$config/credits">
+                <xsl:for-each select="$config/credits/credit[not(@role='pdf')]">
+                  <xsl:call-template name="renderlogo">
+                    <xsl:with-param name="name" select="name"/>
+                    <xsl:with-param name="url" select="url"/>
+                    <xsl:with-param name="logo" select="image"/>
+                    <xsl:with-param name="root" select="$root"/>
+                    <xsl:with-param name="width" select="width"/>
+                    <xsl:with-param name="height" select="height"/>
+                  </xsl:call-template>
+                </xsl:for-each>
+              </xsl:if>
+            </xsl:if>
+          </div>
+        </div>
+        <xsl:comment>================= end Credits ==================</xsl:comment>
+        </td>
+      </tr>
+     </tbody>
+    </table>
+    </div>
+    <xsl:comment>================= end Footer ==================</xsl:comment>
+
+      </body>
+    </html>
+    </xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/documentation/skins/poi-site/xslt/html/tab2menu.xsl b/src/documentation/skins/poi-site/xslt/html/tab2menu.xsl
new file mode 100644 (file)
index 0000000..e279133
--- /dev/null
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<!--
+This stylesheet generates 'tabs' at the top left of the screen.
+See the imported tab2menu.xsl for details.
+-->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+  <xsl:import href="../../../common/xslt/html/tab2menu.xsl"/>
+
+  <xsl:template name="pre-separator">
+  </xsl:template>
+
+  <xsl:template name="post-separator">
+  </xsl:template>
+
+  <xsl:template name="separator">
+    <xsl:text> | </xsl:text>
+  </xsl:template>
+
+  <xsl:template name="selected" mode="print">
+    <span class="selectedTab">
+      <xsl:call-template name="base-selected"/>
+    </span>
+  </xsl:template>
+
+  <xsl:template name="not-selected" mode="print">
+    <span class="unselectedTab">
+    <!-- Called from 'not-selected' -->
+     <a>
+      <xsl:attribute name="href">
+        <xsl:call-template name="calculate-tab-href">
+          <xsl:with-param name="tab" select="."/>
+          <xsl:with-param name="path" select="$path"/>
+        </xsl:call-template>
+      </xsl:attribute>
+      <xsl:value-of select="@label"/>
+     </a>
+    </span>
+  </xsl:template>
+</xsl:stylesheet>