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)]|//[EMAIL PROTECTED]'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::[EMAIL PROTECTED]'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>
