FELIX-1743 first commit of the apache felix karaf user guide module
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@824730 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/karaf/manual/pom.xml b/karaf/manual/pom.xml
new file mode 100644
index 0000000..ca56b8d
--- /dev/null
+++ b/karaf/manual/pom.xml
@@ -0,0 +1,150 @@
+<?xml version="1.0"?>
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <parent>
+ <groupId>org.apache.felix.karaf</groupId>
+ <artifactId>karaf</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ </parent>
+
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.apache.felix.karaf</groupId>
+ <artifactId>manual</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ <packaging>pom</packaging>
+ <name>Karaf :: Manual</name>
+ <description>The Karaf Manual which generates a HTML and PDF representation of the manual.</description>
+
+ <build>
+ <plugins>
+
+ <plugin>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <version>1.2</version>
+ <executions>
+ <execution>
+ <configuration>
+ <tasks>
+ <taskdef name="for" classname="net.sf.antcontrib.logic.ForTask" classpathref="maven.plugin.classpath"/>
+ <property name="ant.regexp.regexpimpl" value="org.apache.tools.ant.util.regexp.Jdk14RegexpRegexp" />
+ <mkdir dir="target/site/manual"/>
+ <get src="http://cwiki.apache.org/confluence/display/FELIX/Karaf+Users%27+Guide+in+one+page"
+ dest="target/site/manual/manual.html" />
+ <for list="1,2,3,4,5,6,7,8,9,10" param="letter">
+ <sequential>
+ <replaceregexp
+ file="target/site/manual/manual.html"
+ flags="g"
+ match='"/confluence/display/FELIX/([^"]*)\+([^"+]*)"'
+ replace='"/confluence/display/FELIX/\1\2"' />
+ </sequential>
+ </for>
+ <replaceregexp
+ file="target/site/manual/manual.html"
+ flags="g"
+ match='"/confluence/display/FELIX/([^"]*)"'
+ replace='"#KarafUsers%27Guideinonepage-\1"' />
+ <replaceregexp
+ file="target/site/manual/manual.html"
+ flags="g"
+ match='"/confluence/([^"]*)"'
+ replace='"http://cwiki.apache.org/confluence/\1"' />
+ </tasks>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ <phase>generate-resources</phase>
+ </execution>
+ </executions>
+ <dependencies>
+ <dependency>
+ <groupId>ant-contrib</groupId>
+ <artifactId>ant-contrib</artifactId>
+ <version>1.0b3</version>
+ </dependency>
+ <dependency>
+ <groupId>ant</groupId>
+ <artifactId>ant-optional</artifactId>
+ <version>1.5.3-1</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>maven-html-to-pdf</artifactId>
+ <version>2.0.0</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>compile</goal>
+ </goals>
+ <phase>compile</phase>
+ </execution>
+ </executions>
+ <configuration>
+ <page>file://${basedir}/target/site/manual/manual.html</page>
+ <head><![CDATA[
+ <link href="file:${basedir}/src/styles/print.css" rel="stylesheet" type="text/css" />
+ <style type="text/css">
+ @page :left {
+ @top-left {
+ content: "Apache Felix Karaf ${pom.version} Developer's Manual";
+ }
+ }
+ </style>
+ ]]></head>
+ <replaceToken><![CDATA[
+ >top</a>
+ ]]></replaceToken>
+ <replaceValue><![CDATA[
+ ></a>
+ ]]></replaceValue>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>attach-artifacts</id>
+ <phase>package</phase>
+ <goals>
+ <goal>attach-artifact</goal>
+ </goals>
+ <configuration>
+ <artifacts>
+ <!-- Don't need to attach PDF here because the html-to-pdf plugin did that already -->
+ <artifact>
+ <file>${project.build.directory}/site/manual/manual-${project.version}.html</file>
+ <type>html</type>
+ </artifact>
+ </artifacts>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+
+</project>
diff --git a/karaf/manual/src/styles/chapter-rounded-bottom.png b/karaf/manual/src/styles/chapter-rounded-bottom.png
new file mode 100644
index 0000000..7b1d53d
--- /dev/null
+++ b/karaf/manual/src/styles/chapter-rounded-bottom.png
Binary files differ
diff --git a/karaf/manual/src/styles/docbook-fo.xsl b/karaf/manual/src/styles/docbook-fo.xsl
new file mode 100644
index 0000000..4458809
--- /dev/null
+++ b/karaf/manual/src/styles/docbook-fo.xsl
@@ -0,0 +1,385 @@
+<?xml version="1.0"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!--
+ This XSL is based heavily on the Spring Frameworks' XSL script
+-->
+<!DOCTYPE xsl:stylesheet [
+ <!ENTITY admon_gfx_path "src/docbkx/images/admons/">
+ <!ENTITY copyright "©">
+ ]>
+<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="urn:docbkx:stylesheet"/>
+ <xsl:template match="imagedata">
+ <xsl:variable name="imagefile">
+ <xsl:value-of select="substring-after(@fileref,'images/')"/>
+ </xsl:variable>
+ <fo:block>
+ <!-- TODO: make this more dynamic-->
+ <fo:external-graphic
+ src="{concat('file:target/site/book/images/',$imagefile)}"/>
+ </fo:block>
+ </xsl:template>
+ <!--###################################################
+ Custom Title Page
+ ################################################### -->
+ <xsl:template name="book.titlepage.recto">
+ <fo:block>
+ <fo:table table-layout="fixed" width="175mm">
+ <fo:table-column column-width="175mm"/>
+ <fo:table-body>
+ <fo:table-row>
+ <fo:table-cell text-align="center">
+ <fo:block>
+ <fo:external-graphic
+ src="file:src/docbkx/images/logo.jpeg"/>
+ </fo:block>
+ <fo:block font-family="Helvetica" font-size="22pt"
+ padding-before="10mm">
+ <xsl:value-of select="bookinfo/subtitle"/>
+ </fo:block>
+ <fo:block font-family="Helvetica" font-size="12pt"
+ padding="10mm"> Version <xsl:value-of
+ select="bookinfo/releaseinfo"/> </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ <fo:table-row>
+ <fo:table-cell text-align="center">
+ <fo:block font-family="Helvetica" font-size="14pt"
+ padding="10mm">
+ <xsl:value-of select="bookinfo/pubdate"/>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ <fo:table-row>
+ <fo:table-cell text-align="center">
+ <fo:block font-family="Helvetica" font-size="12pt"
+ padding="10mm">
+ <xsl:text>Copyright ©right; 2004-2007,
+ Apache Software Foundation</xsl:text>
+ </fo:block>
+ <!--<fo:block>-->
+ <!--<fo:external-graphic src="file:src/docbkx/images/asf-logo.gif"/>-->
+ <!--</fo:block>-->
+ <fo:block font-family="Helvetica" font-size="10pt"
+ padding="1mm">
+ <xsl:apply-templates
+ select="bookinfo/legalnotice/*"/>
+ <!--<xsl:value-of select="bookinfo/legalnotice"/>-->
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block>
+ </xsl:template>
+ <!-- Prevent blank pages in output -->
+ <xsl:template name="book.titlepage.before.verso">
+ </xsl:template>
+ <xsl:template name="book.titlepage.verso">
+ </xsl:template>
+ <xsl:template name="book.titlepage.separator">
+ </xsl:template>
+ <!--###################################################
+ Header
+ ################################################### -->
+ <!-- More space in the center header for long text -->
+ <xsl:attribute-set name="header.content.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$body.font.family"/>
+ </xsl:attribute>
+ <xsl:attribute name="margin-left">-5em</xsl:attribute>
+ <xsl:attribute name="margin-right">-5em</xsl:attribute>
+ </xsl:attribute-set>
+ <!--###################################################
+ Custom Footer
+ ################################################### -->
+ <xsl:template name="footer.content">
+ <xsl:param name="pageclass" select="''"/>
+ <xsl:param name="sequence" select="''"/>
+ <xsl:param name="position" select="''"/>
+ <xsl:param name="gentext-key" select="''"/>
+ <xsl:variable name="Version">
+ <xsl:if test="//releaseinfo">
+ <xsl:text>Apache ActiveMQ (</xsl:text>
+ <xsl:value-of select="//releaseinfo"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$sequence='blank'">
+ <xsl:if test="$position = 'center'">
+ <xsl:value-of select="$Version"/>
+ </xsl:if>
+ </xsl:when>
+ <!-- for double sided printing, print page numbers on alternating sides (of the page) -->
+ <xsl:when test="$double.sided != 0">
+ <xsl:choose>
+ <xsl:when test="$sequence = 'even' and $position='left'">
+ <fo:page-number/>
+ </xsl:when>
+ <xsl:when test="$sequence = 'odd' and $position='right'">
+ <fo:page-number/>
+ </xsl:when>
+ <xsl:when test="$position='center'">
+ <xsl:value-of select="$Version"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:when>
+ <!-- for single sided printing, print all page numbers on the right (of the page) -->
+ <xsl:when test="$double.sided = 0">
+ <xsl:choose>
+ <xsl:when test="$position='center'">
+ <xsl:value-of select="$Version"/>
+ </xsl:when>
+ <xsl:when test="$position='right'">
+ <fo:page-number/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+ <!--###################################################
+ Extensions
+ ################################################### -->
+ <!-- These extensions are required for table printing and other stuff -->
+ <xsl:param name="use.extensions">1</xsl:param>
+ <xsl:param name="tablecolumns.extension">0</xsl:param>
+ <xsl:param name="callout.extensions">1</xsl:param>
+ <!-- FOP provide only PDF Bookmarks at the moment -->
+ <xsl:param name="fop.extensions">1</xsl:param>
+ <!--###################################################
+ Table Of Contents
+ ################################################### -->
+ <!-- Generate the TOCs for named components only -->
+ <xsl:param name="generate.toc"> book toc </xsl:param>
+ <!-- Show only Sections up to level 3 in the TOCs -->
+ <!--<xsl:param name="toc.section.depth">2</xsl:param>-->
+ <!-- Dot and Whitespace as separator in TOC between Label and Title-->
+ <!--<xsl:param name="autotoc.label.separator" select="'. '"/>-->
+ <!--###################################################
+ Paper & Page Size
+ ################################################### -->
+ <!-- Paper type, no headers on blank pages, no double sided printing -->
+ <xsl:param name="paper.type" select="'A4'"/>
+ <xsl:param name="double.sided">0</xsl:param>
+ <xsl:param name="headers.on.blank.pages">0</xsl:param>
+ <xsl:param name="footers.on.blank.pages">0</xsl:param>
+ <!-- Space between paper border and content (chaotic stuff, don't touch) -->
+ <xsl:param name="page.margin.top">5mm</xsl:param>
+ <xsl:param name="region.before.extent">10mm</xsl:param>
+ <xsl:param name="body.margin.top">10mm</xsl:param>
+ <xsl:param name="body.margin.bottom">15mm</xsl:param>
+ <xsl:param name="region.after.extent">10mm</xsl:param>
+ <xsl:param name="page.margin.bottom">0mm</xsl:param>
+ <xsl:param name="page.margin.outer">18mm</xsl:param>
+ <xsl:param name="page.margin.inner">18mm</xsl:param>
+ <!-- No intendation of Titles -->
+ <xsl:param name="title.margin.left">0pc</xsl:param>
+ <!--###################################################
+ Fonts & Styles
+ ################################################### -->
+ <!-- Left aligned text and no hyphenation -->
+ <xsl:param name="alignment">justify</xsl:param>
+ <xsl:param name="hyphenate">false</xsl:param>
+ <!-- Default Font size -->
+ <xsl:param name="body.font.master">11</xsl:param>
+ <xsl:param name="body.font.small">8</xsl:param>
+ <!-- Line height in body text -->
+ <xsl:param name="line-height">1.4</xsl:param>
+ <!-- Monospaced fonts are smaller than regular text -->
+ <xsl:attribute-set name="monospace.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$monospace.font.family"/>
+ </xsl:attribute>
+ <xsl:attribute name="font-size">0.8em</xsl:attribute>
+ </xsl:attribute-set>
+ <!--###################################################
+ Tables
+ ################################################### -->
+ <!-- The table width should be adapted to the paper size -->
+ <xsl:param name="default.table.width">17.4cm</xsl:param>
+ <!-- Some padding inside tables -->
+ <xsl:attribute-set name="table.cell.padding">
+ <xsl:attribute name="padding-left">4pt</xsl:attribute>
+ <xsl:attribute name="padding-right">4pt</xsl:attribute>
+ <xsl:attribute name="padding-top">4pt</xsl:attribute>
+ <xsl:attribute name="padding-bottom">4pt</xsl:attribute>
+ </xsl:attribute-set>
+ <!-- Only hairlines as frame and cell borders in tables -->
+ <xsl:param name="table.frame.border.thickness">0.1pt</xsl:param>
+ <xsl:param name="table.cell.border.thickness">0.1pt</xsl:param>
+ <!--###################################################
+ Labels
+ ################################################### -->
+ <!-- Label Chapters and Sections (numbering) -->
+ <xsl:param name="chapter.autolabel">1</xsl:param>
+ <xsl:param name="section.autolabel" select="1"/>
+ <xsl:param name="section.label.includes.component.label" select="1"/>
+ <!--###################################################
+ Titles
+ ################################################### -->
+ <!-- Chapter title size -->
+ <xsl:attribute-set name="chapter.titlepage.recto.style">
+ <xsl:attribute name="text-align">left</xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 1.8"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ </xsl:attribute-set>
+ <!-- Why is the font-size for chapters hardcoded in the XSL FO templates?
+ Let's remove it, so this sucker can use our attribute-set only... -->
+ <xsl:template match="title" mode="chapter.titlepage.recto.auto.mode">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xsl:use-attribute-sets="chapter.titlepage.recto.style">
+ <xsl:call-template name="component.title">
+ <xsl:with-param name="node"
+ select="ancestor-or-self::chapter[1]"/>
+ </xsl:call-template>
+ </fo:block>
+ </xsl:template>
+ <!-- Sections 1, 2 and 3 titles have a small bump factor and padding -->
+ <xsl:attribute-set name="section.title.level1.properties">
+ <xsl:attribute name="space-before.optimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">0.8em</xsl:attribute>
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 1.5"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ <xsl:attribute name="space-after.optimum">0.1em</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0.1em</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">0.1em</xsl:attribute>
+ </xsl:attribute-set>
+ <xsl:attribute-set name="section.title.level2.properties">
+ <xsl:attribute name="space-before.optimum">0.6em</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0.6em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">0.6em</xsl:attribute>
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 1.25"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ <xsl:attribute name="space-after.optimum">0.1em</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0.1em</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">0.1em</xsl:attribute>
+ </xsl:attribute-set>
+ <xsl:attribute-set name="section.title.level3.properties">
+ <xsl:attribute name="space-before.optimum">0.4em</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0.4em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">0.4em</xsl:attribute>
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master * 1.0"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ <xsl:attribute name="space-after.optimum">0.1em</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0.1em</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">0.1em</xsl:attribute>
+ </xsl:attribute-set>
+ <!-- Titles of formal objects (tables, examples, ...) -->
+ <xsl:attribute-set name="formal.title.properties"
+ use-attribute-sets="normal.para.spacing">
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.master"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ <xsl:attribute name="hyphenate">false</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0.4em</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">0.6em</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">0.8em</xsl:attribute>
+ </xsl:attribute-set>
+ <!--###################################################
+ Programlistings
+ ################################################### -->
+ <!-- Verbatim text formatting (programlistings) -->
+ <xsl:attribute-set name="monospace.verbatim.properties">
+ <xsl:attribute name="font-size">
+ <xsl:value-of select="$body.font.small * 1.0"/>
+ <xsl:text>pt</xsl:text>
+ </xsl:attribute>
+ <xsl:attribute name="wrap-option">wrap</xsl:attribute>
+ </xsl:attribute-set>
+ <xsl:attribute-set name="verbatim.properties">
+ <xsl:attribute name="space-before.minimum">1em</xsl:attribute>
+ <xsl:attribute name="space-before.optimum">1em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">1em</xsl:attribute>
+ <xsl:attribute name="border-color">#444444</xsl:attribute>
+ <xsl:attribute name="border-style">solid</xsl:attribute>
+ <xsl:attribute name="border-width">0.1pt</xsl:attribute>
+ <xsl:attribute name="padding-top">0.5em</xsl:attribute>
+ <xsl:attribute name="padding-left">0.5em</xsl:attribute>
+ <xsl:attribute name="padding-right">0.5em</xsl:attribute>
+ <xsl:attribute name="padding-bottom">0.5em</xsl:attribute>
+ <xsl:attribute name="margin-left">0.5em</xsl:attribute>
+ <xsl:attribute name="margin-right">0.5em</xsl:attribute>
+ </xsl:attribute-set>
+ <!-- Shade (background) programlistings -->
+ <xsl:param name="shade.verbatim">1</xsl:param>
+ <xsl:attribute-set name="shade.verbatim.style">
+ <xsl:attribute name="background-color">#F0F0F0</xsl:attribute>
+ </xsl:attribute-set>
+ <!--###################################################
+ Callouts
+ ################################################### -->
+ <!-- Use images for callouts instead of (1) (2) (3) -->
+ <xsl:param name="callout.graphics">0</xsl:param>
+ <xsl:param name="callout.unicode">1</xsl:param>
+ <!-- Place callout marks at this column in annotated areas -->
+ <xsl:param name="callout.defaultcolumn">90</xsl:param>
+ <!--###################################################
+ Admonitions
+ ################################################### -->
+ <!-- Use nice graphics for admonitions -->
+ <xsl:param name="admon.graphics">'1'</xsl:param>
+ <xsl:param name="admon.graphics.path">&admon_gfx_path;</xsl:param>
+ <!--###################################################
+ Misc
+ ################################################### -->
+ <!-- Placement of titles -->
+ <xsl:param name="formal.title.placement"> figure after example before
+ equation before table before procedure before </xsl:param>
+ <!-- Format Variable Lists as Blocks (prevents horizontal overflow) -->
+ <xsl:param name="variablelist.as.blocks">1</xsl:param>
+ <!-- The horrible list spacing problems -->
+ <xsl:attribute-set name="list.block.spacing">
+ <xsl:attribute name="space-before.optimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">0.8em</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">0.1em</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0.1em</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">0.1em</xsl:attribute>
+ </xsl:attribute-set>
+ <!--###################################################
+ colored and hyphenated links
+ ################################################### -->
+ <xsl:template match="ulink">
+ <fo:basic-link external-destination="{@url}"
+ xsl:use-attribute-sets="xref.properties"
+ text-decoration="underline" color="blue">
+ <xsl:choose>
+ <xsl:when test="count(child::node())=0">
+ <xsl:value-of select="@url"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:basic-link>
+ </xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
diff --git a/karaf/manual/src/styles/print.css b/karaf/manual/src/styles/print.css
new file mode 100644
index 0000000..b6f85af
--- /dev/null
+++ b/karaf/manual/src/styles/print.css
@@ -0,0 +1,644 @@
+/*
+
+Copyright (c) 2005 Hakon Wium Lie and Bert Bos
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+*/
+html {
+ margin: 0; padding: 0;
+ font: 10pt/1.26 "Gill Sans", sans-serif;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ font-family: "Gill Sans", sans-serif;
+ margin: 2em 0 0.5em 0;
+ page-break-after: avoid;
+}
+
+h1 {
+ font-size: 2.0em;
+ font-weight: 900;
+
+ margin: 0;
+ margin-left:-2cm;
+ margin-top:-1cm;
+ margin-bottom:1.5cm;
+ top: 0cm;
+ left: 0cm;
+ padding: 2cm;
+ padding-top: 0cm;
+ padding-bottom: 1cm;
+ background: #888;
+ border-bottom-right-radius: 2cm;
+ page-break-before: always;
+ page-break-inside: avoid;
+}
+
+@media screen, handheld {
+h1 {
+ margin-top:1cm;
+ background-image: url("chapter-rounded-bottom.png");
+ background-repeat: no-repeat;
+ background-position: bottom right;
+}
+div.page-reset > h1 {
+ margin-top:0cm;
+}
+}
+
+
+h2 {
+ font-size: 1.2em;
+ text-transform: uppercase;
+ font-weight: bold;
+}
+
+h3 {
+ font-size: 1em;
+ font-weight: bold;
+}
+
+q::before {
+ content: "\201C";
+}
+
+q::after {
+ content: "\201D";
+}
+
+p { margin: 0 }
+p + p { text-indent: 1.3em ; margin-top: 0.2em; }
+p.sidenote + p, p.caption, p.art { text-indent: 0 }
+
+p.author {
+ margin-top: 2em;
+ text-indent: 0;
+ text-align: right;
+}
+
+a { text-decoration: none; color: black }
+
+/* cross-references */
+
+a.pageref::after { content: " on page " target-counter(attr(href), page); }
+a.chapref::before { content: " Chapter " target-counter(attr(href), chapter) ", "; }
+a.figref { content: " Figure " target-counter(attr(href), figure); }
+a.tableref { content: " Table " target-counter(attr(href), figure); }
+a.listingref { content: " Listing " target-counter(attr(href), listing); }
+
+/* sidenotes */
+
+.sidenote {
+ float: left;
+ clear: left;
+ margin: 0 0 1em -41%;
+ width: 37%;
+ font-size: 0.9em;
+ font-style: normal;
+ text-indent: 0;
+ text-align: right;
+ page-break-inside: avoid;
+}
+
+/* sidebars */
+
+div.sidebar {
+ float: top-next;
+ margin: 1.2em 0 1.2em 0;
+ border: thin solid;
+ background: #CCC;
+ padding: 0.5em 1em;
+ page-break-inside: avoid;
+ column-count: 2;
+ column-gap: 1.5em;
+}
+
+div.sidebar h2 {
+ margin-top: 0;
+}
+
+/* frontpage */
+
+.title p{
+ font-size:22pt;
+ font-family: "Gill Sans", sans-serif;
+ text-align: center;
+}
+
+.copyright-section {
+ text-align: center;
+ font-size: 9pt;
+ page-break-after: always;
+ margin-top: 50pt;
+ margin-bottom: 20pt;
+}
+
+.toc-title {
+ font-size:18pt;
+ font-family: "Gill Sans", sans-serif;
+ text-align: left;
+ margin-left:20pt;
+ margin-bottom: 40pt;
+
+}
+
+/* figures, tables, and listings */
+
+div.confluenceTableSmall th.confluenceTh {
+ font-size: 11px;
+}
+
+div.confluenceTableSmall td.confluenceTd {
+ font-size: 7px;
+}
+
+div.figure {
+ margin: 1em 0;
+ counter-increment: figure;
+}
+
+div.figure .caption, div.table .caption {
+ font-size: 0.9em;
+ font-style: italic;
+}
+
+div.figure .caption::before {
+ content: "Figure " counter(figure) ". ";
+ font-weight: bold;
+ font-style: normal;
+}
+
+div.table .caption::before {
+ content: "Table " counter(table) ". ";
+ font-weight: bold;
+ font-style: normal;
+}
+
+div.table {
+ margin: 1em 0;
+ counter-increment: table;
+}
+
+div.table th {
+ text-align: left;
+}
+
+table th, table td {
+ text-align: left;
+ padding-right: 1em;
+ page-break-inside: avoid;
+}
+
+table th {
+ border-top: thin solid;
+ border-bottom: thin solid;
+ padding-top: 0.2em;
+ padding-bottom: 0.2em;
+}
+table td {
+ border-top: none;
+ border-bottom: thin dotted;
+ padding-top: 0.2em;
+ padding-bottom: 0.2em;
+}
+
+div.Scrollbar {
+ display: none;
+}
+
+
+/* Weird div.codeHeader a b::before would be a better selection
+ but prince does not properly match it.. Firefox does. */
+div.codeHeader::before {
+ content: "Listing " counter(listing) ". ";
+ font-weight: bold;
+ font-style: normal;
+}
+div.codeHeader a b {
+ font-style: italic;
+ font-weight: normal;
+}
+div.codeHeader {
+ font-size: 0.9em;
+ counter-increment: listing;
+}
+div.code {
+ border: 1px dashed #c0c0c0;
+ font-size: 12px;
+ font-family: Courier;
+ margin: 5px;
+ line-height: 13px;
+ padding: 3px;
+ background-color: #f8f8f8;
+
+}
+
+
+@page {
+ margin: 2cm;
+ size: 7in 9.25in;
+
+ @footnotes {
+ border-top: thin solid black;
+ padding-top: 0.3em;
+ margin-top: 0.6em;
+ }
+}
+
+
+/* define default page and names pages: cover, blank, frontmatter */
+div.page-reset {
+ counter-reset: page 1;
+}
+
+@page :left {
+ @top-left-corner {
+ font-weight: 900; font: 9pt "Gill Sans", serif;
+ content: counter(page);
+ text-align: left;
+ margin-left: 1cm;
+ visibility: hidden;
+ }
+ @top-left {
+ font-weight: 900;
+ font: 9pt "Gill Sans", serif; white-space: pre; text-transform: uppercase; letter-spacing: 0.1em;
+ content: string(header, first);
+ visibility: hidden;
+ }
+ @bottom-left-corner {
+ font-weight: 900; font: 9pt "Gill Sans", serif;
+ content: counter(page);
+ text-align: left;
+ margin-left: 1cm;
+ }
+ @bottom-left {
+ font-weight: 900;
+ font: 9pt "Gill Sans", serif; white-space: pre; text-transform: uppercase; letter-spacing: 0.1em;
+ content: string(header, first);
+ }
+}
+
+@page :right {
+ @top-right-corner {
+ font-weight: 900; font: 9pt "Gill Sans", serif;
+ content: counter(page);
+ text-align: left;
+ margin-left: 1cm;
+ visibility: hidden;
+ }
+ @top-right {
+ font-weight: 900;
+ font: 9pt "Gill Sans", serif; white-space: pre; text-transform: uppercase; letter-spacing: 0.1em;
+ content: string(header, first)
+ visibility: hidden;
+ }
+ @bottom-right-corner {
+ font-weight: 900; font: 9pt "Gill Sans", serif;
+ content: counter(page);
+ text-align: right;
+ margin-right: 1cm;
+ }
+ @bottom-right {
+ font-weight: 900; font: 9pt "Gill Sans", serif;
+ white-space: pre; text-transform: uppercase; letter-spacing: 0.1em;
+ content: string(header, first)
+ }
+}
+
+/*
+ In theory we should be able to use the :first selector so taht
+ we can put the page numbering on the bottom of the first page of the chapter
+ but have the rest of the pages number at the top. But this does not seem
+ to work. See http://www.princexml.com/doc/6.0/page-selectors/
+
+ So for now just always number at the bottom :(
+*/
+/*
+div.chapter { page: bottom-number; }
+@page bottom-number :first {
+ @top-left {
+ visibility: hidden;
+ }
+ @bottom-left {
+ visibility: visible;
+ }
+ @top-right {
+ visibility: hidden;
+ }
+ @bottom-right {
+ visibility: visible;
+ }
+}
+*/
+
+@page cover { margin: 0; }
+
+@page frontmatter :left {
+ @bottom-left-corner {
+ content: counter(page, lower-roman);
+ }
+ @bottom-left-corner {
+ content: counter(page, lower-roman);
+ }
+}
+
+@page frontmatter :right {
+ @bottom-right-corner {
+ content: counter(page, lower-roman);
+ }
+ @bottom-right-corner {
+ content: counter(page, lower-roman);
+ }
+}
+
+@page blank :left {
+ @top-left { visibility: hidden; }
+ @bottom-left { visibility: hidden; }
+ @top-left-corner { visibility: hidden; }
+ @bottom-left-corner { visibility: hidden; }
+}
+
+@page blank :right {
+ @top-right { visibility: hidden; }
+ @bottom-right { visibility: hidden; }
+ @top-right-corner { visibility: hidden; }
+ @bottom-right-corner { visibility: hidden; }
+}
+
+/* footnotes */
+.footnote {
+ display: none; /* default rule */
+
+ display: prince-footnote; /* prince-specific rules */
+ position: footnote;
+ footnote-style-position: inside;
+
+ counter-increment: footnote;
+ margin-left: 1.4em;
+ font-size: 90%;
+ line-height: 1.4;
+}
+
+.footnote::footnote-call {
+ vertical-align: super;
+ font-size: 80%;
+}
+
+.footnote::footnote-marker {
+ vertical-align: super;
+ color: green;
+ padding-right: 0.4em;
+}
+
+/* Confluence contents to hide */
+#labels-section {
+ display: none;
+}
+#comments-section {
+ display: none;
+}
+#footer {
+ display: none;
+}
+.hidden {
+ display: none;
+}
+
+/*
+ A book consists of different types of sections. We propose to use
+ DIV elements with these class names:
+
+ frontcover
+ halftitlepage: contains the title of the book
+ titlepage: contains the title of the book, name of author(s) and publisher
+ imprint: left page with copyright, publisher, library printing information
+ dedication: right page with short dedication
+ foreword: written by someone other than the author(s)
+ toc: table of contents
+ preface: preface, including acknowledgements
+ chapter: each chapter is given its own DIV element
+ references: contains list of references
+ appendix: each appendix is given its own
+ bibliography
+ glossary
+ index
+ colophon: describes how the book was produced
+ backcover
+
+ A book will use several of the types listed above, but few books
+ will use all of them.
+*/
+
+/* which section uses which named page */
+
+div.halftitlepage, div.titlepage, div.imprint, div.dedication { page: blank }
+div.foreword, div.toc, div.preface { page: frontmatter }
+
+
+/* page breaks */
+div.frontcover, div.halftitlepage, div.titlepage { page-break-before: right }
+div.imprint { page-break-before: always; }
+div.chapter { page-break-before: always; }
+div.dedication, div.foreword, div.toc, div.preface, div.reference,
+div.appendix, div.bibliography, div.glossary, div.index, div.colophon {
+ page-break-before: always
+}
+div.backcover { page-break-before: left }
+
+/* titlepage, halftitlepage */
+
+div.titlepage h1, div.halftitlepage h1 { margin-bottom: 2em; }
+div.titlepage h2, div.halftitlepage h2 { font-size: 1.2em; margin-bottom: 3em; }
+div.titlepage h3, div.halftitlepage h3 { font-size: 1em; margin-bottom: 3em; }
+div.titlepage p, div.halftitlepage p {
+ font-size: 1.4em;
+ font-weight: bold;
+ margin: 0; padding: 0;
+}
+
+
+/* TOC */
+
+ul.toc, ul.toc ul {
+ list-style-type: none;
+ margin: 0; padding: 0;
+ margin-left: 3cm;
+}
+ul.toc ul {
+ margin-left: 1em;
+ font-weight: normal;
+}
+ul.toc > li {
+ font-weight: bold;
+ margin-bottom: 0.5em;
+}
+ul.toc a::after {
+ content: leader('.') target-counter(attr(href), page);
+ font-style: normal;
+}
+ul.toc > li.frontmatter a::after {
+ content: leader('.') target-counter(attr(href), page, lower-roman);
+ font-style: normal;
+}
+ul.toc > li.endmatter a::after {
+ content: leader('.') target-counter(attr(href), page);
+ font-style: normal;
+}
+ul.toc > li.chapter::before {
+ content: "Chapter " counter(toc-chapter, decimal);
+ display: block;
+ margin: 1em 0 0.1em -2.5cm;
+ font-weight: normal;
+ counter-increment: toc-chapter;
+ page-break-after: avoid;
+}
+
+/* chapter numbers */
+
+div.chapter { counter-increment: chapter; }
+div.chapter h1::before {
+ text-transform: uppercase;
+ letter-spacing: 0.15em;
+ content: "Chapter " counter(chapter) " \A\B0 \B0 \B0 \B0\A";
+ white-space: pre;
+ font-size: 50%;
+}
+
+div.frontcover h1::before, div.titlepage h1::before, div.halftitlepage h1::before {
+ content: normal; /* that is, none */
+}
+
+h1 { string-set: header content();}
+div.chapter h1 { string-set: header "Chapter " counter(chapter) " - " content(); }
+
+/* index */
+
+ul.index {
+ list-style-type: none;
+ margin: 0; padding: 0;
+ column-count: 2;
+ column-gap: 1em;
+}
+
+ul.index a::after { content: ", " target-counter(attr(href), page); }
+
+
+span.element, span.attribute {
+ text-transform: uppercase;
+ font-weight: bold;
+ font-size: 80%;
+}
+span.property { font-weight: bold }
+code, span.css, span.value, span.declaration {
+ font: 90% "Lucida Console", "Lucida Sans Typewriter", monospace;
+}
+
+
+@media screen, handheld {
+ html {font: 14px "Gill Sans", sans-serif; }
+ h1 { margin-bottom: 0.5em }
+ div.frontcover, div.halftitlepage, div.titlepage, div.imprint,
+ div.dedication, div.foreword, div.toc, div.index { display: none }
+ body {
+ margin: 0cm;
+ margin-left: 2cm;
+ margin-right: 2cm;
+ }
+}
+
+/*
+ * Enhancements to the take advantage of some of the style markup that
+ * Confluence generates
+ */
+a sup img { visibility: hidden; position: absolute;}
+
+img {
+ prince-image-resolution:150dpi;
+}
+
+table {
+ font: "Lucida Console", "Lucida Sans Typewriter", monospace;
+}
+
+table td {
+ font-size: 10pt;
+}
+
+pre {
+ white-space: pre-wrap;
+}
+
+.codeContent {
+ font-size: 80%;
+}
+.code {
+}
+.code-keyword {
+ color: #000091;
+ background-color: inherit;
+}
+
+.code-object {
+ color: #910091;
+ background-color: inherit;
+}
+
+.code-quote {
+ color: #009100;
+ background-color: inherit;
+}
+
+.code-comment {
+ color: #808080;
+ background-color: inherit;
+}
+
+
+.code-xml .code-keyword {
+ color: inherit;
+ font-weight: bold;
+}
+
+.code-tag {
+ color: #000091;
+ background-color: inherit;
+}
+
+.noteMacro { border-color: #F0C000; background-color: #FFFFCE;}
+.warningMacro { border-color: #CC0000; background-color: #FFCCCC }
+.infoMacro { border-color: #3c78b5; background-color: #D8E4F1; }
+.tipMacro { border-color: #090; background-color: #dfd;}
+.noteMacro, .warningMacro, .infoMacro, .tipMacro, .informationMacroPadding {
+ border: thin solid;
+ float: top-next;
+ margin: 1em 0 1.2em 0;
+ padding: 0.5em;
+ column-count: 2;
+ column-gap: 1.5em;
+ width: 100%;
+}
+table.infoMacro td, table.warningMacro td, table.tipMacro td, table.noteMacro td, table.sectionMacro td {
+ border: none;
+}
+table.infoMacro p, table.warningMacro p, table.tipMacro p, table.noteMacro p, table.sectionMacro p {
+ font-size:x-small;
+ margin-top: 1em;
+}
+