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 "&#xA9;">
+	]>
+<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 &copyright; 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; 
+}
+