You are viewing a plain text version of this content. The canonical link for it is here.
Posted to svn@forrest.apache.org by fe...@apache.org on 2005/11/11 17:31:10 UTC

svn commit: r332592 [4/6] - in /forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.input.smartSlides: ./ build/ build/classes/ build/site/ build/site/images/ build/site/skin/ build/site/skin/css/ build/site/skin/images/ build/site/skin/scripts/...

Added: forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.input.smartSlides/forrest.properties
URL: http://svn.apache.org/viewcvs/forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.input.smartSlides/forrest.properties?rev=332592&view=auto
==============================================================================
--- forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.input.smartSlides/forrest.properties (added)
+++ forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.input.smartSlides/forrest.properties Fri Nov 11 08:26:33 2005
@@ -0,0 +1,109 @@
+# Copyright 2002-2005 The Apache Software Foundation or its licensors,
+# as applicable.
+#
+# Licensed 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.
+
+##############
+# Properties used by forrest.build.xml for building the website
+# These are the defaults, un-comment them if you need to change them.
+##############
+
+# Prints out a summary of Forrest settings for this project
+#forrest.echo=true
+
+# Project name (used to name .war file)
+#project.name=my-project
+
+# Specifies name of Forrest skin to use
+#project.skin=tigris
+#project.skin=pelt
+
+# comma separated list, file:// is supported
+#forrest.skins.descriptors=http://forrest.apache.org/skins/skins.xml,file:///c:/myskins/skins.xml
+
+##############
+# behavioural properties
+#project.menu-scheme=tab_attributes
+#project.menu-scheme=directories
+
+##############
+# layout properties
+
+# Properties that can be set to override the default locations
+#
+# Parent properties must be set. This usually means uncommenting
+# project.content-dir if any other property using it is uncommented
+
+#project.status=status.xml
+#project.content-dir=src/documentation
+#project.raw-content-dir=${project.content-dir}/content
+#project.conf-dir=${project.content-dir}/conf
+#project.sitemap-dir=${project.content-dir}
+#project.xdocs-dir=${project.content-dir}/content/xdocs
+#project.resources-dir=${project.content-dir}/resources
+#project.stylesheets-dir=${project.resources-dir}/stylesheets
+#project.images-dir=${project.resources-dir}/images
+#project.schema-dir=${project.resources-dir}/schema
+#project.skins-dir=${project.content-dir}/skins
+#project.skinconf=${project.content-dir}/skinconf.xml
+#project.lib-dir=${project.content-dir}/lib
+#project.classes-dir=${project.content-dir}/classes
+#project.translations-dir=${project.content-dir}/translations
+
+##############
+# validation properties
+
+# This set of properties determine if validation is performed
+# Values are inherited unless overridden.
+# e.g. if forrest.validate=false then all others are false unless set to true.
+#forrest.validate=true
+#forrest.validate.xdocs=${forrest.validate}
+#forrest.validate.skinconf=${forrest.validate}
+#forrest.validate.sitemap=${forrest.validate}
+#forrest.validate.stylesheets=${forrest.validate}
+#forrest.validate.skins=${forrest.validate}
+#forrest.validate.skins.stylesheets=${forrest.validate.skins}
+
+# *.failonerror=(true|false) - stop when an XML file is invalid
+#forrest.validate.failonerror=true
+
+# *.excludes=(pattern) - comma-separated list of path patterns to not validate
+# e.g.
+#forrest.validate.xdocs.excludes=samples/subdir/**, samples/faq.xml
+#forrest.validate.xdocs.excludes=
+
+
+##############
+# General Forrest properties
+
+# The URL to start crawling from
+#project.start-uri=linkmap.html
+# Set logging level for messages printed to the console
+# (DEBUG, INFO, WARN, ERROR, FATAL_ERROR)
+#project.debuglevel=ERROR
+# Max memory to allocate to Java
+#forrest.maxmemory=64m
+# Any other arguments to pass to the JVM. For example, to run on an X-less
+# server, set to -Djava.awt.headless=true
+#forrest.jvmargs=
+# The bugtracking URL - the issue number will be appended
+#project.bugtracking-url=http://issues.apache.org/bugzilla/show_bug.cgi?id=
+#project.bugtracking-url=http://issues.apache.org/jira/browse/
+# The issues list as rss
+#project.issues-rss-url=
+#I18n Property only works for the "forrest run" target.
+#project.i18n=true
+# The names of plugins that are required to build the project
+# comma separated list (no spaces)
+# Run "forrest available-plugins" for a list of plug-ins currently available
+project.required.plugins=org.apache.forrest.plugin.input.smartSlides,org.apache.forrest.plugin.input.projectInfo,org.apache.forrest.plugin.output.pdf

Added: forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.input.smartSlides/input.xmap
URL: http://svn.apache.org/viewcvs/forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.input.smartSlides/input.xmap?rev=332592&view=auto
==============================================================================
--- forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.input.smartSlides/input.xmap (added)
+++ forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.input.smartSlides/input.xmap Fri Nov 11 08:26:33 2005
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 1999-2005 The Apache Software Foundation or its licensors,
+  as applicable.
+
+  Licensed 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.
+-->
+<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
+    
+    <map:components>
+        <map:actions>
+            <map:action logger="sitemap.action.sourcetype" name="sourcetype" src="org.apache.forrest.sourcetype.SourceTypeAction">
+                <sourcetype name="SmartSlides-1.0">
+                    <document-declaration public-id="-//APACHE//DTD SmartSlides Presentation V1.0//EN" />
+                </sourcetype>
+                
+            </map:action>
+        </map:actions>
+        
+        <map:selectors default="parameter">
+            <map:selector logger="sitemap.selector.parameter" name="parameter" src="org.apache.cocoon.selection.ParameterSelector" />
+        </map:selectors>
+    </map:components>
+    
+    <map:resources>    
+        <map:resource name="transform-to-document">
+            <map:act type="sourcetype" src="{src}">
+                <map:select type="parameter">
+                    <map:parameter name="parameter-selector-test" value="{sourcetype}" />
+                      <map:when test="SmartSlides-1.0">
+                        <map:generate src="{project:content.xdocs}{../../1}.xml" />
+                          <map:transform src="{forrest:plugins}/org.apache.forrest.plugin.input.smartSlides/resources/stylesheets/presentation-to-document.xsl" />
+                        <map:serialize type="xml-document"/>
+                    </map:when>
+                </map:select>
+            </map:act>
+        </map:resource>
+    </map:resources>
+    
+    <map:pipelines>
+        <map:pipeline internal="true">
+            <map:match pattern="**.xml">
+                <map:call resource="transform-to-document">
+                    <map:parameter name="src" value="{project:content.xdocs}{1}.xml" />
+                </map:call>
+            </map:match>
+        </map:pipeline>
+    </map:pipelines>
+</map:sitemap>
\ No newline at end of file

Added: forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.input.smartSlides/lib/readme.txt
URL: http://svn.apache.org/viewcvs/forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.input.smartSlides/lib/readme.txt?rev=332592&view=auto
==============================================================================
--- forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.input.smartSlides/lib/readme.txt (added)
+++ forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.input.smartSlides/lib/readme.txt Fri Nov 11 08:26:33 2005
@@ -0,0 +1 @@
+Place any libraries required by your plugin in this directory.
\ No newline at end of file

Added: forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.input.smartSlides/locationmap.xml
URL: http://svn.apache.org/viewcvs/forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.input.smartSlides/locationmap.xml?rev=332592&view=auto
==============================================================================
--- forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.input.smartSlides/locationmap.xml (added)
+++ forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.input.smartSlides/locationmap.xml Fri Nov 11 08:26:33 2005
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 2002-2005 The Apache Software Foundation or its licensors,
+  as applicable.
+
+  Licensed 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.
+-->
+<locationmap xmlns="http://apache.org/forrest/locationmap/1.0">
+
+  <components>
+    <matchers default="lm">
+      <matcher 
+        name="lm" 
+        src="org.apache.forrest.locationmap.WildcardLocationMapHintMatcher"/>
+    </matchers>
+    <selectors default="exists">
+          <selector name="exists" logger="sitemap.selector.exists"  
+                    src="org.apache.forrest.sourceexists.SourceExistsSelector" />
+    </selectors>
+  </components>
+  
+  <locator>    
+    <match pattern="daisy.transform.*.*">
+      <location src="resources/stylesheets/{1}-to-{2}.xsl"/>
+    </match>   
+  </locator>
+</locationmap>

Added: forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.input.smartSlides/resources/schema/relaxng/smartslides-v10.rnc
URL: http://svn.apache.org/viewcvs/forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.input.smartSlides/resources/schema/relaxng/smartslides-v10.rnc?rev=332592&view=auto
==============================================================================
--- forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.input.smartSlides/resources/schema/relaxng/smartslides-v10.rnc (added)
+++ forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.input.smartSlides/resources/schema/relaxng/smartslides-v10.rnc Fri Nov 11 08:26:33 2005
@@ -0,0 +1,318 @@
+namespace rng = "http://relaxng.org/ns/structure/1.0"
+
+# This grammar is designed to support transformation of content to several 
+# different output versions:
+# 
+# Complete Version
+#   Output for proofreading by presentation writer
+#   Show all elements in an easily readable layout 
+# Speaker Versions
+#   * Speaker specific versions
+#     All the following versions can be output in different versions
+#     for each individual speaker or a all-speaker version
+#     Speaker specific versions should highlight the speakers active part
+#     while still showing the other speakers parts for orientation and context
+#   Speaker Slides
+#     Presentation Slides with additional info for viewing on the 
+#     speakers screen. This requires a split screen technique of outputting 
+#     two differenet versions (speaker and audience) at the same time.
+#   Speaker Print Version
+#     Content of slides and additional info for speakers prepared for
+#     use in a printed version
+#   Learner Version
+#     Adds didactical explanations to content of explanation-elements 
+#     to speaker versions to help new speakers
+#     familiarize themselves with a new presentation.  
+# Audience Versions 
+#   Audience Slides
+#     The normal presentation slides.
+#   Audience Print Version
+#     Content of presentation slides and additional info prepared
+#     as printed handout for the audience.    
+
+# ******************* Macros **************************************************************************** 
+
+## list of commonly used block elements
+elemenlist.blocks &= text* & numberedList* & bulletList* & para* & table* & code* & section* & TOC? & chapterTOC? & Presenters*
+
+## list of block level special elements
+elementlist.specialblocks &= demo* & talk* & comment* & todo*
+
+## list of commonly used inline elements
+elemenlist.inlines &=
+    
+    ## emphasis 
+    element em { attribList.common, (text & elemenlist.inlines) }*
+    & 
+      ## strong emphasis
+      element strong { attribList.common, (text & elemenlist.inlines) }*
+    & 
+      ## inline image 
+      image*
+    & 
+      ## keyboard input
+      element kbd { attribList.common, (text & elemenlist.inlines) }*
+    & 
+      ## quoted text
+      element quote { attribList.common, (text & elemenlist.inlines) }*
+    & 
+      ## line break
+      br*
+    & PresentationTitle*
+attribList.common &=
+    attribute class { text }?,
+    attribute id { text }?,
+    attribute style { text }?
+attribList.presControl &=
+    
+    ## number of presenter to present this content
+    ## if none is given the presenter is inherited 
+    ## from the parent elements
+    attribute presenter { "1" | "2" | "3" }?,
+    
+    ## attribute to control visibility of any element
+    ## in different output versions
+    ## attribute is passed on to all children that have
+    ## no attribute themselves
+    ## Default rules are:
+    ## 
+    ## - Elements are visible in all Slides unless
+    ##   showOnlyFor has "print" or "slides" in it
+    ## - Elements are only visible in slides if
+    ##   showOnlyFor has "slides" in it
+    ## - Elements are only visible in printed versions if
+    ##   showOnlyFor has "print" in it
+    ## - If showOnlyFor contains "print" and "slides"
+    ##   then element is only used in printouts for speakers!
+    attribute showOnlyFor { "print" | "slides" }?
+# ******************* Grammar  *********************************************************************** 
+start = element presentation { metadata?, content }
+
+## Meta Information about the whole presentation
+metadata =
+    element metadata {
+        
+        ## The title of the presentation
+        element title { text },
+        
+        ## The subtitle of the presentation
+        element subtitle { text }?,
+        abstract?,
+        
+        ## one or more authors of the presentation
+        element author { fullName, email? }*,
+        
+        ## creation date
+        element created { xsd:date },
+        
+        ## update log
+        element updates {
+            
+            ## who has written the updated
+            element updatedby { text },
+            
+            ## when was it saved
+            element changeDate { xsd:date }
+        }*,
+        
+        ## central configuration of all speakers
+        ## These name are inserted into intro slides and used whenever
+        ## there is a switch between speakers
+        ## if no name is given, "Speaker 1", "Speaker 2" etc. is used instead  
+        
+        ## If no presenters are given, the authors are assumed to be the presenters
+        ## First presenter is default presenter for the presenation
+        element presenter { fullName, shortName?, email? }*
+    }
+
+## an abstract of the content and purpose of this presentation
+abstract = element abstract { attribList.presControl, elemenlist.blocks* }
+
+## speaker's shortname for use within the speaker notes
+fullName = element fullName { text }
+shortName = element shortName { text }
+email = element email { text }
+
+## content-element is the frame around all content
+## as opposed to metadata
+content = element content { chapter* & module* & page* }
+
+## chapters group pages or modules to add chapter structure
+## to your presentation. Create chapters to  
+chapter =
+    element chapter {
+        attribList.common,
+        
+        ## title for outline and listing of chapter in toc
+        attribute title { text },
+        
+        ## summary of this chapter
+        ## if present it will be shown on the chapter intro slide
+        attribute summary { text }?,
+        
+        ## Don't show this chapter in Table of Content
+        attribute hideInTOC { empty }?,
+        
+        ## define presenter here to assign a complete chapter to one speaker
+        ## or make her the default speaker for it
+        attribList.presControl,
+        (chapter* & module* & page*)
+    }
+
+## Insert this element to generate a table of content
+## within any of your slides
+## the TOC is embedded in a bulleted list
+TOC = element TOC { attribList.common }
+chapterTOC = element chapterTOC { attribList.common }
+PresentationTitle = element PresentationTitle { attribList.common }
+Presenters = element Presenters { attribList.common }
+
+## modules group pages of a learning unit
+## using modules is optional
+## creating modules simplifies re-use
+module =
+    element module {
+        
+        ## name for listing of module in software to recombine modules
+        attribute name { text },
+        
+        ## define presenter here to assign a complete module to one speaker
+        ## or make her the default speaker for it
+        attribList.presControl,
+        page+
+    }
+
+## individual presentation page
+page =
+    element page {
+        attribList.common,
+        
+        ## title for outline and listing of chapter in toc
+        ## if page has no heading element we'll use title as page title as well 
+        ## so that page title normally shows in toc
+        attribute title { text },
+        
+        ## type of page to determine background and processing
+        ## default is empty
+        attribute type { "slide" | "chapterTitle" | text }?,
+        
+        ## define presenter here to assign a complete page to one speaker
+        ## or make her the default speaker for it
+        attribList.presControl,
+        
+        ## control listing of element in Table of content slides
+        ## by default a slide is not listed anywhere
+        attribute listIn { "chapterTOC" | "globalTOC" | "allTOCs" }?,
+        heading?,
+        (elemenlist.blocks* & elementlist.specialblocks* & image*),
+        addlInfo?
+    }
+
+## linebreak
+br = element br { attribList.common }
+
+## frame element around a bullet list
+bulletList = element bulletList { attribList.common, attribList.presControl, item+ }
+
+## frame element around a bullet list
+numberedList = element numberedList { attribList.common, attribList.presControl, item+ }
+
+## element for each item in a list
+## note that lists can contain other lists
+## listitem for simplicity can directly contain text.
+## if it does processing should consider it being wrapped in para-element
+item = element item { attribList.common, attribList.presControl, (elemenlist.blocks* & elementlist.specialblocks*) }
+para = element para { attribList.common, attribList.presControl, (text & elemenlist.inlines* & xref*) }
+
+## source code quotes
+code = element code { attribList.common, attribList.presControl, (text & elemenlist.inlines* & xref*) }
+image =
+    element image {
+        attribList.common,
+        attribute url { text },
+        attribute alternativeText { text },
+        attribList.presControl
+    }
+
+## Optional element for page heading 
+## if not the same as page title    
+heading = element heading { attribList.common, attribList.presControl, (text & elemenlist.inlines* & xref*) }
+
+## subheadings within the text
+section =
+    element section {
+        attribList.common,
+        attribList.presControl,
+        attribute title { text },
+        (elemenlist.blocks* & elementlist.specialblocks* & image*)
+    }
+table =
+    element table {
+        attribList.common,
+        attribList.presControl,
+        element row {
+            attribList.presControl,
+            
+            ## table cell for simplicity can directly contain text.
+            ## if it does processing should consider it being wrapped in para-element
+            element cell {
+                attribList.common,
+                attribList.presControl,
+                
+                ## span cell over several rows
+                attribute colspan { xsd:integer }?,
+                
+                ## span cell over several columns
+                attribute rowspan { xsd:integer }?,
+                (elemenlist.blocks & elementlist.specialblocks*)
+            }
+        }
+    }
+
+## cross reference    
+xref =
+    element xref {
+        attribList.common,
+        attribute url { text },
+        (elemenlist.inlines* & text*)
+    }
+# special block elements
+
+## element for dictatical comment to be inserted anywhere within a page
+## will only be rendered in full and leaner version of speaker notes
+comment = element comment { attribList.presControl, elemenlist.blocks* }
+
+## describe what is to be shown to the audience
+demo = element demo { attribList.common, attribList.presControl, elemenlist.blocks* }
+
+## additional info for the printed version
+addlInfo =
+    element addlInfo {
+        attribList.common,
+        
+        ## optional title for this part
+        ## if none is given we use a default heading "Additional Information"
+        attribute title { text }?,
+        (elemenlist.blocks* & elementlist.specialblocks*)
+    }
+# special inline elements
+
+## reminder about something that needs to be done
+todo =
+    element todo {
+        attribList.common,
+        
+        ## who is to do it (optional)
+        attribute assignedTo { text }?,
+        
+        ## when we need it
+        attribute doUntil { xsd:date }?,
+        
+        ## importance
+        attribute priority { "showStopper" | "important" | "optional" }?,
+        (elemenlist.blocks* & elementlist.specialblocks*)
+    }
+
+## explain what needs to be said in addition to the info
+## on the slides  
+talk = element talk { attribList.common, attribList.presControl, elemenlist.blocks* }

Added: forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.input.smartSlides/resources/stylesheets/presentation-to-document.xsl
URL: http://svn.apache.org/viewcvs/forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.input.smartSlides/resources/stylesheets/presentation-to-document.xsl?rev=332592&view=auto
==============================================================================
--- forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.input.smartSlides/resources/stylesheets/presentation-to-document.xsl (added)
+++ forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.input.smartSlides/resources/stylesheets/presentation-to-document.xsl Fri Nov 11 08:26:33 2005
@@ -0,0 +1,530 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" extension-element-prefixes="datetime redirect"
+    xmlns:datetime="http://exslt.org/dates-and-times" xmlns:redirect="http://xml.apache.org/xalan/redirect">
+    <xsl:output doctype-public="-//APACHE//DTD Documentation V1.3//EN" doctype-system="http://forrest.apache.org/dtd/document-v13.dtd" encoding="ISO-8859-1"
+        indent="yes" method="xml" />
+    <!-- 
+        
+        Parameters 
+    
+    -->
+    <!--space separated list of all special elements to be visible in target (talk demo addlInfo comment todo) -->
+    <xsl:param name="show"> </xsl:param>
+    <!--Keep this set as long as DIVs are not legal in doc13-->
+    <xsl:param name="noDIVs">1</xsl:param>
+    <xsl:template match="/">
+        <xsl:apply-templates mode="doc13" />
+    </xsl:template>
+    <!-- 
+        
+        Main processing template
+    -->
+    <xsl:template match="presentation" mode="doc13">
+        <document>
+            <header>
+                <xsl:apply-templates select="metadata" mode="doc13" />
+            </header>
+            <xsl:apply-templates select="content" mode="doc13" />
+        </document>
+    </xsl:template>
+    <!-- 
+        
+        Process metadata
+    -->
+    <xsl:template match="metadata" mode="doc13">
+        <title>
+            <xsl:value-of select="title" />
+        </title>
+        <xsl:if test="count(author)">
+            <authors>
+                <xsl:for-each select="author">
+                    <person>
+                        <xsl:attribute name="name">
+                            <xsl:value-of select="fullName" />
+                        </xsl:attribute>
+                        <xsl:if test="email">
+                            <xsl:attribute name="email">
+                                <xsl:value-of select="email" />
+                            </xsl:attribute>
+                        </xsl:if>
+                    </person>
+                </xsl:for-each>
+            </authors>
+        </xsl:if>
+        <abstract>
+            <xsl:value-of select="abstract" />
+        </abstract>
+    </xsl:template>
+    <!-- 
+        
+        Generate visible content
+    -->
+    <xsl:template match="content" mode="doc13">
+        <body>
+            <xsl:attribute name="class">
+                <xsl:value-of select="normalize-space(concat('slidyPresentation ', @class))" />
+            </xsl:attribute>
+            <xsl:copy-of select="@id|@style" />
+            <!--       <section id="main">
+            <title>
+                <xsl:value-of select="/presentation/metadata/title" />
+            </title>-->
+            <xsl:apply-templates mode="doc13" />
+            <!--        </section>-->
+        </body>
+    </xsl:template>
+    <!--
+        
+        Process chapter start
+    -->
+    <xsl:template match="chapter" mode="doc13">
+        <xsl:if test="not(contains(@showOnlyFor,'slides'))">
+            <section>
+                <xsl:attribute name="class">
+                    <xsl:value-of select="normalize-space(concat('chapter ', @class))" />
+                </xsl:attribute>
+                <xsl:copy-of select="@id|@style" />
+                <title>
+                    <xsl:value-of select="@title" />
+                </title>
+                <xsl:apply-templates mode="doc13" />
+            </section>
+        </xsl:if>
+    </xsl:template>
+    <!--
+        
+        Process module (no processing at all)
+    -->
+    <xsl:template match="module" mode="doc13">
+        <xsl:if test="not(contains(@showOnlyFor,'slides'))">
+            <xsl:apply-templates mode="doc13" />
+        </xsl:if>
+    </xsl:template>
+    <!--
+        
+        Process page
+    -->
+    <xsl:template match="page" mode="doc13">
+        <xsl:if test="not(contains(@showOnlyFor,'slides'))">
+            <section>
+                <xsl:attribute name="class">
+                    <xsl:value-of select="normalize-space(concat('slide ', @type))" />
+                </xsl:attribute>
+                <xsl:copy-of select="@id|@style" />
+                <xsl:choose>
+                    <xsl:when test="heading">
+                        <title>
+                            <xsl:copy-of select="heading/@*" />
+                            <xsl:apply-templates mode="doc13Heading" select="heading" />
+                        </title>
+                    </xsl:when>
+                    <xsl:otherwise>
+                        <title>
+                            <xsl:apply-templates mode="doc13" select="@title" />
+                        </title>
+                    </xsl:otherwise>
+                </xsl:choose>
+                <xsl:apply-templates mode="doc13" />
+            </section>
+        </xsl:if>
+    </xsl:template>
+    <!--
+        
+        Special element TOC as a macro for a Table of content
+    -->
+    <xsl:template match="TOC" mode="doc13">
+        <ul>
+            <xsl:for-each select="//chapter[not (@hideInTOC)]|//page[@listIn='allTOCs' or  @listIn='globalTOC']">
+                <li>
+                    <p>
+                        <xsl:attribute name="class">
+                            <xsl:choose>
+                                <xsl:when test="local-name()='chapter'">TOCchapterEntry</xsl:when>
+                                <xsl:otherwise>TOCPageEntry</xsl:otherwise>
+                            </xsl:choose>
+                        </xsl:attribute>
+                        <xsl:choose>
+                            <xsl:when test="@title">
+                                <xsl:value-of select="@title" />
+                            </xsl:when>
+                            <xsl:otherwise>
+                                <xsl:value-of select="heading" />
+                            </xsl:otherwise>
+                        </xsl:choose>
+                    </p>
+                </li>
+            </xsl:for-each>
+        </ul>
+    </xsl:template>
+    <!--
+        
+        Special element chapterTOC as a macro for a Table of content
+    -->
+    <xsl:template match="chapterTOC" mode="doc13">
+        <!-- List of pages -->
+        <xsl:variable name="list" select="ancestor::page/following-sibling::page[@listIn='allTOCs' or @listIn='chapterTOC']|ancestor::
+            page/following-sibling::chapter" />
+        <xsl:if test="$list">
+            <ul>
+                <xsl:for-each select="$list">
+                    <li>
+                        <xsl:value-of select="@title" />
+                    </li>
+                </xsl:for-each>
+            </ul>
+        </xsl:if>
+    </xsl:template>
+    <!--
+        
+        Special element PresentationTitle as a macro for a Table of content
+    -->
+    <xsl:template match="PresentationTitle" mode="doc13">
+        <xsl:value-of select="/presentation/metadata/title" />
+    </xsl:template>
+    <!--
+        
+        Special element Presenters as a macro for a Table of content
+    -->
+    <xsl:template match="Presenters" mode="doc13">
+        <xsl:for-each select="/presentation/metadata/presenter">
+            <p class="Presenter">
+                <xsl:value-of select="fullName" />
+                <br />
+                <link href="mailto:{email}">
+                    <xsl:value-of select="email" />
+                </link>
+            </p>
+        </xsl:for-each>
+    </xsl:template>
+    <!--
+        
+        Heading
+        block processing
+    -->
+    <xsl:template match="heading" mode="doc13" />
+    <!--
+        
+        Heading
+        block processing
+    -->
+    <xsl:template match="heading" mode="doc13Heading">
+        <xsl:apply-templates mode="doc13" />
+    </xsl:template>
+    <!--
+        
+        section
+    -->
+    <xsl:template match="section" mode="doc13">
+        <xsl:if test="not(contains(@showOnlyFor,'slides'))">
+            <section>
+                <xsl:copy-of select="@class|@id|@style" />
+                <title>
+                    <xsl:value-of select="@title" />
+                </title>
+                <xsl:apply-templates mode="doc13" />
+            </section>
+        </xsl:if>
+    </xsl:template>
+    <!--
+        
+        XRef
+    -->
+    <xsl:template match="xref" mode="doc13">
+        <xsl:if test="not(contains(@showOnlyFor,'slides'))">
+            <link>
+                <xsl:copy-of select="@class|@id|@style" />
+                <!-- FIXME: Remove this as soon as we can have divs in docX -->
+                <xsl:choose>
+                    <xsl:when test="$noDIVs and ancestor::talk">
+                        <xsl:attribute name="class">talk</xsl:attribute>
+                    </xsl:when>
+                    <xsl:when test="$noDIVs and ancestor::demo">
+                        <xsl:attribute name="class">demo</xsl:attribute>
+                    </xsl:when>
+                    <xsl:when test="$noDIVs and ancestor::comment">
+                        <xsl:attribute name="class">comment</xsl:attribute>
+                    </xsl:when>
+                </xsl:choose>
+                <xsl:attribute name="href">
+                    <xsl:value-of select="@url" />
+                </xsl:attribute>
+                <xsl:copy-of select="@*[name(.) != 'url']" />
+                <xsl:apply-templates mode="doc13" />
+            </link>
+        </xsl:if>
+    </xsl:template>
+    <!--
+        
+        Image
+    -->
+    <xsl:template match="image" mode="doc13">
+        <xsl:if test="not(contains(@showOnlyFor,'slides'))">
+            <xsl:choose>
+                <xsl:when test="parent::page|parent::section">
+                    <figure>
+                        <xsl:copy-of select="@class|@id|@style" />
+                        <!-- FIXME: Remove this as soon as we can have divs in docX -->
+                        <xsl:choose>
+                            <xsl:when test="$noDIVs and ancestor::talk">
+                                <xsl:attribute name="class">talk</xsl:attribute>
+                            </xsl:when>
+                            <xsl:when test="$noDIVs and ancestor::demo">
+                                <xsl:attribute name="class">demo</xsl:attribute>
+                            </xsl:when>
+                            <xsl:when test="$noDIVs and ancestor::comment">
+                                <xsl:attribute name="class">comment</xsl:attribute>
+                            </xsl:when>
+                        </xsl:choose>
+                        <xsl:attribute name="src">
+                            <xsl:value-of select="@url" />
+                        </xsl:attribute>
+                        <xsl:attribute name="alt">
+                            <xsl:value-of select="@alternativeText" />
+                        </xsl:attribute>
+                    </figure>
+                </xsl:when>
+                <xsl:otherwise>
+                    <icon>
+                        <xsl:copy-of select="@class|@id|@style" />
+                        <!-- FIXME: Remove this as soon as we can have divs in docX -->
+                        <xsl:choose>
+                            <xsl:when test="$noDIVs and ancestor::talk">
+                                <xsl:attribute name="class">talk</xsl:attribute>
+                            </xsl:when>
+                            <xsl:when test="$noDIVs and ancestor::demo">
+                                <xsl:attribute name="class">demo</xsl:attribute>
+                            </xsl:when>
+                            <xsl:when test="$noDIVs and ancestor::comment">
+                                <xsl:attribute name="class">comment</xsl:attribute>
+                            </xsl:when>
+                        </xsl:choose>
+                        <xsl:attribute name="src">
+                            <xsl:value-of select="@url" />
+                        </xsl:attribute>
+                        <xsl:attribute name="alt">
+                            <xsl:value-of select="@alternativeText" />
+                        </xsl:attribute>
+                    </icon>
+                </xsl:otherwise>
+            </xsl:choose>
+        </xsl:if>
+    </xsl:template>
+    <!--
+        
+        numberedList
+    -->
+    <xsl:template match="numberedList" mode="doc13">
+        <xsl:if test="not(contains(@showOnlyFor,'slides'))">
+            <ol>
+                <xsl:copy-of select="@class|@id|@style" />
+                <!-- FIXME: Remove this as soon as we can have divs in docX -->
+                <xsl:choose>
+                    <xsl:when test="$noDIVs and ancestor::talk">
+                        <xsl:attribute name="class">talk</xsl:attribute>
+                    </xsl:when>
+                    <xsl:when test="$noDIVs and ancestor::demo">
+                        <xsl:attribute name="class">demo</xsl:attribute>
+                    </xsl:when>
+                    <xsl:when test="$noDIVs and ancestor::comment">
+                        <xsl:attribute name="class">comment</xsl:attribute>
+                    </xsl:when>
+                </xsl:choose>
+                <xsl:apply-templates mode="doc13" />
+            </ol>
+        </xsl:if>
+    </xsl:template>
+    <!--
+        
+        bulletList
+    -->
+    <xsl:template match="bulletList" mode="doc13">
+        <xsl:if test="not(contains(@showOnlyFor,'slides'))">
+            <ul>
+                <xsl:copy-of select="@class|@id|@style" />
+                <!-- FIXME: Remove this as soon as we can have divs in docX -->
+                <xsl:choose>
+                    <xsl:when test="$noDIVs and ancestor::talk">
+                        <xsl:attribute name="class">talk</xsl:attribute>
+                    </xsl:when>
+                    <xsl:when test="$noDIVs and ancestor::demo">
+                        <xsl:attribute name="class">demo</xsl:attribute>
+                    </xsl:when>
+                    <xsl:when test="$noDIVs and ancestor::comment">
+                        <xsl:attribute name="class">comment</xsl:attribute>
+                    </xsl:when>
+                </xsl:choose>
+                <xsl:apply-templates mode="doc13" />
+            </ul>
+        </xsl:if>
+    </xsl:template>
+    <!--
+        
+        Macro for Abstract in body
+    -->
+    <xsl:template match="Abstract" mode="doc13">
+        <abstract>
+            <xsl:apply-templates select="/presentation/abstract" mode="doc13" />
+        </abstract>
+    </xsl:template>
+    <!--
+        
+        list item
+    -->
+    <xsl:template match="item" mode="doc13">
+        <xsl:if test="not(contains(@showOnlyFor,'slides'))">
+            <li>
+                <xsl:copy-of select="@class|@id|@style" />
+                <!-- FIXME: Remove this as soon as we can have divs in docX -->
+                <xsl:choose>
+                    <xsl:when test="$noDIVs and ancestor::talk">
+                        <xsl:attribute name="class">talk</xsl:attribute>
+                    </xsl:when>
+                    <xsl:when test="$noDIVs and ancestor::demo">
+                        <xsl:attribute name="class">demo</xsl:attribute>
+                    </xsl:when>
+                    <xsl:when test="$noDIVs and ancestor::comment">
+                        <xsl:attribute name="class">comment</xsl:attribute>
+                    </xsl:when>
+                </xsl:choose>
+                <xsl:apply-templates mode="doc13" />
+            </li>
+        </xsl:if>
+    </xsl:template>
+    <!--
+        
+        para
+    -->
+    <xsl:template match="para" mode="doc13">
+        <xsl:if test="not(contains(@showOnlyFor,'slides'))">
+            <p>
+                <xsl:copy-of select="@class|@id|@style" />
+                <!-- FIXME: Remove this as soon as we can have divs in docX -->
+                <xsl:choose>
+                    <xsl:when test="$noDIVs and ancestor::talk">
+                        <xsl:attribute name="class">talk</xsl:attribute>
+                    </xsl:when>
+                    <xsl:when test="$noDIVs and ancestor::demo">
+                        <xsl:attribute name="class">demo</xsl:attribute>
+                    </xsl:when>
+                    <xsl:when test="$noDIVs and ancestor::comment">
+                        <xsl:attribute name="class">comment</xsl:attribute>
+                    </xsl:when>
+                </xsl:choose>
+                <xsl:apply-templates mode="doc13" />
+            </p>
+        </xsl:if>
+    </xsl:template>
+    <!--
+        
+        todo
+    -->
+    <xsl:template match="todo" mode="doc13">
+        <xsl:if test="contains($show,local-name())">
+            <xsl:choose>
+                <!--wrap in divs when allowed, otherwise just pass content-->
+                <xsl:when test="not($noDIVs)">
+                    <div>
+                        <xsl:attribute name="class">
+                            <xsl:value-of select="local-name()" />
+                        </xsl:attribute>
+                        <xsl:copy-of select="@id|@style" />
+                        <xsl:value-of select="assignedTo"/>:<xsl:value-of select="doUntil"/>:<xsl:value-of select="priority"/><br/>
+                        <xsl:apply-templates mode="doc13" />
+                    </div>
+                </xsl:when>
+                <xsl:otherwise>
+                    <xsl:apply-templates mode="doc13" />
+                </xsl:otherwise>
+            </xsl:choose>
+        </xsl:if>
+    </xsl:template>
+    <!--
+        
+        comment,demo,talk
+    -->
+    <xsl:template match="comment|talk|demo" mode="doc13">
+        <xsl:if test="contains($show,local-name())">
+            <xsl:choose>
+                <!--wrap in divs when allowed, otherwise just pass content-->
+                <xsl:when test="not($noDIVs)">
+                    <div>
+                        <xsl:attribute name="class">
+                            <xsl:value-of select="local-name()" />
+                        </xsl:attribute>
+                        <xsl:copy-of select="@id|@style" />
+                        <xsl:apply-templates mode="doc13" />
+                    </div>
+                </xsl:when>
+                <xsl:otherwise>
+                    <xsl:apply-templates mode="doc13" />
+                </xsl:otherwise>
+            </xsl:choose>
+        </xsl:if>
+    </xsl:template>
+    <!--
+        
+        addlInfo
+    -->
+    <xsl:template match="addlInfo" mode="doc13">
+        <xsl:if test="contains($show,local-name())">
+            <section>
+                <xsl:attribute name="class">
+                    <xsl:value-of select="normalize-space(concat('addlInfo ', @class))" />
+                </xsl:attribute>
+                <title>
+                    <xsl:choose>
+                        <xsl:when test="@title">
+                            <xsl:value-of select="@title" />
+                        </xsl:when>
+                        <xsl:otherwise> Additional Information </xsl:otherwise>
+                    </xsl:choose>
+                </title>
+                <xsl:apply-templates mode="doc13" />
+            </section>
+        </xsl:if>
+    </xsl:template>
+    <!--
+        
+        Elements that can be passed on unchanged
+    -->
+    <xsl:template match="em|strong|kbd|quote|code|br" mode="doc13">
+      
+        <xsl:copy>
+            <xsl:copy-of select="@class|@id|@style" />
+            <xsl:apply-templates mode="doc13" />
+        </xsl:copy>
+    </xsl:template>
+    <!--
+        
+        Process bare text in items
+        and wrap it in paras
+    -->
+    <xsl:template match="item/text()|cell/text()|talk/text()|demo/text()|comment/text()" mode="doc13">
+        <!-- Ignore completely empty pieces of text -->
+        <xsl:if test="normalize-space(.)!=''">
+            <p>
+                <!-- FIXME: Remove this as soon as we can have divs in docX -->
+                <xsl:choose>
+                    <xsl:when test="$noDIVs and ancestor::talk">
+                        <xsl:attribute name="class">talk</xsl:attribute>
+                    </xsl:when>
+                    <xsl:when test="$noDIVs and ancestor::demo">
+                        <xsl:attribute name="class">demo</xsl:attribute>
+                    </xsl:when>
+                    <xsl:when test="$noDIVs and ancestor::comment">
+                        <xsl:attribute name="class">comment</xsl:attribute>
+                    </xsl:when>
+                </xsl:choose>
+                <xsl:value-of select="." />
+            </p>
+        </xsl:if>
+    </xsl:template>
+    <!--
+        
+        Catch unblocked elements
+    -->
+    <xsl:template match="node()|text()|comment()">
+        <xsl:message>Ungeblocktes Elemente <xsl:value-of select="." /></xsl:message>
+    </xsl:template>
+    <xsl:template match="processing-instruction()" />
+</xsl:stylesheet>