blob: 57652cfac974c362e2e2a0fae1ff9d706fbfe678 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="Apache Forrest" name="Generator">
<meta name="Forrest-version" content="0.9-dev">
<meta name="Forrest-skin-name" content="pelt">
<title>OpenOffice Documents with Lenya</title>
<link type="text/css" href="../../../../skin/basic.css" rel="stylesheet">
<link media="screen" type="text/css" href="../../../../skin/screen.css" rel="stylesheet">
<link media="print" type="text/css" href="../../../../skin/print.css" rel="stylesheet">
<link type="text/css" href="../../../../skin/profile.css" rel="stylesheet">
<script src="../../../../skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="../../../../skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="../../../../skin/fontsize.js" language="javascript" type="text/javascript"></script>
<link rel="shortcut icon" href="../../../../favicon.ico">
</head>
<body onload="init()">
<script type="text/javascript">ndeSetTextSize();</script>
<div id="top">
<!--+
|breadtrail
+-->
<div class="breadtrail">
<a href="http://www.apache.org/">apache</a> &gt; <a href="http://lenya.apache.org/">lenya</a><script src="../../../../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
</div>
<!--+
|header
+-->
<div class="header">
<!--+
|start group logo
+-->
<div class="grouplogo">
<a href=""><img class="logoImage" alt="Lenya" src="../../../../images/apache-lenya-light.png" title=""></a>
</div>
<!--+
|end group logo
+-->
<!--+
|start Project Logo
+-->
<div class="projectlogo">
<a href=""></a>
</div>
<!--+
|end Project Logo
+-->
<!--+
|start Search
+-->
<div class="searchbox">
<form action="http://www.google.com/search" method="get" class="roundtopsmall">
<input value="lenya.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with ');" size="25" name="q" id="query" type="text" value="Search the site with ">&nbsp;
<input name="Search" value="Search" type="submit">
</form>
</div>
<!--+
|end search
+-->
<!--+
|start Tabs
+-->
<ul id="tabs">
<li>
<a class="unselected" href="../../../../index.html">Project</a>
</li>
<li>
<a class="unselected" href="../../../../docs/index.html">Developer</a>
</li>
<li>
<a class="unselected" href="../../../../community/index.html">Community</a>
</li>
<li>
<a class="unselected" href="../../../../docs/2_0_x/index.html">Version 2.0</a>
</li>
<li class="current">
<a class="selected" href="../../../../docs/1_2_x/index.html">Version 1.2</a>
</li>
</ul>
<!--+
|end Tabs
+-->
</div>
</div>
<div id="main">
<div id="publishedStrip">
<!--+
|start Subtabs
+-->
<div id="level2tabs"></div>
<!--+
|end Endtabs
+-->
<script type="text/javascript"><!--
document.write("Last Published: " + document.lastModified);
// --></script>
</div>
<!--+
|breadtrail
+-->
<div class="breadtrail">
&nbsp;
</div>
<!--+
|start Menu, mainarea
+-->
<!--+
|start Menu
+-->
<div id="menu">
<div onclick="SwitchMenu('menu_selected_1.1', '../../../../skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('../../../../skin/images/chapter_open.gif');">Version 1.2</div>
<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
<div class="menuitem">
<a href="../../../../docs/1_2_x/index.html">Index</a>
</div>
<div onclick="SwitchMenu('menu_1.1.2', '../../../../skin/')" id="menu_1.1.2Title" class="menutitle">Installation</div>
<div id="menu_1.1.2" class="menuitemgroup">
<div class="menuitem">
<a href="../../../../docs/1_2_x/installation/index.html">Download</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/installation/subversion.html">Subversion Access</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/installation/source_version.html">Install Instructions</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.3', '../../../../skin/')" id="menu_1.1.3Title" class="menutitle">Tutorial</div>
<div id="menu_1.1.3" class="menuitemgroup">
<div class="menuitem">
<a href="../../../../docs/1_2_x/tutorial/index.html">Introduction</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/tutorial/understanding_lenya.html">1. Understanding Lenya</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/tutorial/installing_lenya.html">2. Installing Lenya</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/tutorial/anatomy_of_the_pipeline.html">3. Anatomy of the Pipeline</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/tutorial/editing_in_lenya.html">4. Editing in Lenya</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/tutorial/custom_navigation.html">5. Custom Navigation in Lenya</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/tutorial/mod_proxy_and_lenya.html">6a. Mod Proxy and Lenya</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/tutorial/mod_proxy_and_lenya_continued.html">6b. Mod Proxy and Lenya</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.4', '../../../../skin/')" id="menu_1.1.4Title" class="menutitle">How-To</div>
<div id="menu_1.1.4" class="menuitemgroup">
<div class="menuitem">
<a href="../../../../docs/1_2_x/how-to/faq.html">FAQ</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/how-to/new_publication.html">New Publication</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/how-to/deploy_publication.html">Deploy Publication</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/how-to/look_and_feel.html">Look and Feel</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/how-to/custom_resourcetype.html">Custom Resource Type</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/how-to/new_mime_type.html">Adding Mime Types</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/how-to/site_navigation.html">Site Navigation</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/how-to/ldap_authentication.html">LDAP Authentication</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/how-to/cms_menus.html">CMS Menus</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/how-to/cms_screens.html">CMS Screens</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/how-to/search.html">Search Publications</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/how-to/external_data.html">External Data</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/how-to/unittests.html">Unit Tests</a>
</div>
</div>
<div onclick="SwitchMenu('menu_selected_1.1.5', '../../../../skin/')" id="menu_selected_1.1.5Title" class="menutitle" style="background-image: url('../../../../skin/images/chapter_open.gif');">Components</div>
<div id="menu_selected_1.1.5" class="selectedmenuitemgroup" style="display: block;">
<div onclick="SwitchMenu('menu_1.1.5.1', '../../../../skin/')" id="menu_1.1.5.1Title" class="menutitle">Access&nbsp;Control</div>
<div id="menu_1.1.5.1" class="menuitemgroup">
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/accesscontrol/terms.html">Basic Terms</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/accesscontrol/accesscontrollers.html">Access&nbsp;Controllers</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/accesscontrol/accesscontrollerresolvers.html">Access Controller Resolvers</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/accesscontrol/authenticators.html">Authenticators</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/accesscontrol/authorizers.html">Authorizers</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/accesscontrol/policymanagers.html">Policies and Policy&nbsp;Managers</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/accesscontrol/accreditablemanagers.html">Accreditable&nbsp;Managers</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/accesscontrol/ssl.html">SSL Encryption</a>
</div>
</div>
<div onclick="SwitchMenu('menu_selected_1.1.5.2', '../../../../skin/')" id="menu_selected_1.1.5.2Title" class="menutitle" style="background-image: url('../../../../skin/images/chapter_open.gif');">Authoring</div>
<div id="menu_selected_1.1.5.2" class="selectedmenuitemgroup" style="display: block;">
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/authoring/adding-document-creator.html">Adding a new document creator</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/authoring/image-upload.html">Image Upload</a>
</div>
<div class="menupage">
<div class="menupagetitle">OpenOffice</div>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.5.3', '../../../../skin/')" id="menu_1.1.5.3Title" class="menutitle">Deployment</div>
<div id="menu_1.1.5.3" class="menuitemgroup">
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/deployment/proxying.html">Proxying</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.5.4', '../../../../skin/')" id="menu_1.1.5.4Title" class="menutitle">Editors</div>
<div id="menu_1.1.5.4" class="menuitemgroup">
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/editors/htmlform.html">HTML Form Editor</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/editors/1form.html">HTML One Form Editor</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/editors/bxe.html">Bitflux Editor</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/editors/kupu.html">Kupu</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/editors/xopus.html">Xopus</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.5.5', '../../../../skin/')" id="menu_1.1.5.5Title" class="menutitle">Layout</div>
<div id="menu_1.1.5.5" class="menuitemgroup">
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/layout/navigation.html">Navigation</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/layout/xhtml-templating.html">XHTML templating</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/layout/static-resources.html">Serving static resources</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/layout/lenya-menubar.html">Lenya Menubar</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.5.6', '../../../../skin/')" id="menu_1.1.5.6Title" class="menutitle">Publication</div>
<div id="menu_1.1.5.6" class="menuitemgroup">
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/publication/pageenvelopemodule.html">PageEnvelopeModule</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/publication/siteTree.html">Site tree</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.5.7', '../../../../skin/')" id="menu_1.1.5.7Title" class="menutitle">Resource&nbsp;Types</div>
<div id="menu_1.1.5.7" class="menuitemgroup">
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/resource-types/resource-types.html">Resource&nbsp;Types</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.5.8', '../../../../skin/')" id="menu_1.1.5.8Title" class="menutitle">Revision Control</div>
<div id="menu_1.1.5.8" class="menuitemgroup">
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/revisioncontrol/revisioncontroller.html">Revision Controller</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/revisioncontrol/rcml.html">RCML</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/revisioncontrol/checkin.html">Check In</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/revisioncontrol/checkout.html">Check Out</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/revisioncontrol/version.html">Revisions</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/revisioncontrol/rollback.html">Rollback</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.5.9', '../../../../skin/')" id="menu_1.1.5.9Title" class="menutitle">Repository</div>
<div id="menu_1.1.5.9" class="menuitemgroup">
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/repository/index.html">WebDAV Servers</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.5.10', '../../../../skin/')" id="menu_1.1.5.10Title" class="menutitle">Search</div>
<div id="menu_1.1.5.10" class="menuitemgroup">
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/search/lucene.html">Searching with Lucene</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.5.11', '../../../../skin/')" id="menu_1.1.5.11Title" class="menutitle">URI Handling</div>
<div id="menu_1.1.5.11" class="menuitemgroup">
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/uri-handling/URIParametrizer.html">URI Parametrizer</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/uri-handling/standardURI.html">URI Scheme</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/uri-handling/usecases.html">Usecases</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.5.12', '../../../../skin/')" id="menu_1.1.5.12Title" class="menutitle">Asset Management</div>
<div id="menu_1.1.5.12" class="menuitemgroup">
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/asset-management/management.html">Asset Management</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.5.13', '../../../../skin/')" id="menu_1.1.5.13Title" class="menutitle">Link Management</div>
<div id="menu_1.1.5.13" class="menuitemgroup">
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/link-management/link-management.html">Link Management</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.5.14', '../../../../skin/')" id="menu_1.1.5.14Title" class="menutitle">Meta Data</div>
<div id="menu_1.1.5.14" class="menuitemgroup">
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/metadata/metadata.html">Meta Data Handling</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.5.15', '../../../../skin/')" id="menu_1.1.5.15Title" class="menutitle">Multilingual Documents</div>
<div id="menu_1.1.5.15" class="menuitemgroup">
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/multilingual/multilingual.html">Multilingual Document Handling</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.5.16', '../../../../skin/')" id="menu_1.1.5.16Title" class="menutitle">Tasks</div>
<div id="menu_1.1.5.16" class="menuitemgroup">
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/tasks/concept.html">The Task Concept</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/tasks/defining.html">Defining Tasks</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/tasks/taskaction.html">The TaskAction</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/tasks/scheduling.html">Scheduling a Task</a>
</div>
<div onclick="SwitchMenu('menu_1.1.5.16.5', '../../../../skin/')" id="menu_1.1.5.16.5Title" class="menutitle">Included tasks</div>
<div id="menu_1.1.5.16.5" class="menuitemgroup">
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/tasks/anttask.html">AntTask</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/tasks/publisher.html">DefaultFilePublisher</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/tasks/exporter.html">StaticHTMLExporter</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/tasks/mailtask.html">MailTask</a>
</div>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/tasks/development.html">Developing Tasks</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.5.17', '../../../../skin/')" id="menu_1.1.5.17Title" class="menutitle">Workflow</div>
<div id="menu_1.1.5.17" class="menuitemgroup">
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/workflow/terms.html">Terms</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/workflow/state-machine.html">The State Machine</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/workflow/configuration.html">Configuration</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/workflow/implementation.html">Implementation</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.5.18', '../../../../skin/')" id="menu_1.1.5.18Title" class="menutitle">Site Management</div>
<div id="menu_1.1.5.18" class="menuitemgroup">
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/sitemanagement/archive.html">Archive</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/sitemanagement/copy.html">Copy</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/sitemanagement/deactivate.html">Deactivate</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/sitemanagement/delete.html">Delete</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/sitemanagement/deletetrash.html">Delete the trash</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/sitemanagement/move.html">Move</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/sitemanagement/moveupdown.html">Move Up/Down</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/sitemanagement/rename.html">Rename</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/components/sitemanagement/restore.html">Restore</a>
</div>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.6', '../../../../skin/')" id="menu_1.1.6Title" class="menutitle">Miscellaneous</div>
<div id="menu_1.1.6" class="menuitemgroup">
<div class="menuitem">
<a href="../../../../docs/1_2_x/misc/namespaces.html">Namespaces</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/misc/reserved_names.html">Reserved Names</a>
</div>
<div class="menuitem">
<a href="../../../../docs/1_2_x/misc/xinclude-processor.html">XInclude Processor</a>
</div>
</div>
<div class="menuitem">
<a href="../../../../apidocs/1.2/index.html">1.2 API (Javadoc)</a>
</div>
</div>
<div id="credit"></div>
<div id="roundbottom">
<img style="display: none" class="corner" height="15" width="15" alt="" src="../../../../skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
<!--+
|alternative credits
+-->
<div id="credit2">
<a href="http://wiki.apache.org/lenya/MeetingFreiburg2008"><img border="0" title="Meeting Freiburg 2008" alt="Meeting Freiburg 2008 - logo" src="../../../../images/apache-lenya-meeting-freiburg-2008.png" style="width: 160px;height: 40px;"></a>
</div>
</div>
<!--+
|end Menu
+-->
<!--+
|start content
+-->
<div id="content">
<div title="Portable Document Format" class="pdflink">
<a class="dida" href="openoffice.pdf"><img alt="PDF -icon" src="../../../../skin/images/pdfdoc.gif" class="skin"><br>
PDF</a>
</div>
<h1>OpenOffice Documents with Lenya</h1>
<div id="front-matter">
<div class="abstract">This document describes the integration of Openoffice with Lenya
CMS</div>
<div id="minitoc-area">
<ul class="minitoc">
<li>
<a href="#Goals">Goals</a>
</li>
<li>
<a href="#Prerequisites">Prerequisites</a>
<ul class="minitoc">
<li>
<a href="#OpenOffice+DTD">OpenOffice DTD</a>
</li>
<li>
<a href="#XML+Catalog">XML Catalog</a>
</li>
<li>
<a href="#OpenOffice2HTML+XSTL">OpenOffice2HTML XSTL</a>
</li>
<li>
<a href="#Slide">Slide</a>
</li>
</ul>
</li>
<li>
<a href="#Pipelines">Pipelines</a>
<ul class="minitoc">
<li>
<a href="#Read+the+zip%2Fjar+file">Read the zip/jar file</a>
</li>
<li>
<a href="#Unpack+zip+file+and+transform+the+OO+xml+to+xhtml">Unpack zip file and transform the OO xml to xhtml</a>
</li>
<li>
<a href="#Aggregate+with+navigation">Aggregate with navigation</a>
</li>
</ul>
</li>
<li>
<a href="#Problems">Problems</a>
</li>
<li>
<a href="#To+do%27s">To do's</a>
</li>
</ul>
</div>
</div>
<a name="N10018"></a><a name="Goals"></a>
<h2 class="h3">Goals</h2>
<div class="section">
<p>This document describes the integration of Openoffice with Lenya
CMS. The integration is guided by the following goals:</p>
<ul>
<li>Use OpenOffice as a content editor for static web
pages</li>
<li>Migrate OpenOffice document to a custom xml format</li>
</ul>
</div>
<a name="N1002B"></a><a name="Prerequisites"></a>
<h2 class="h3">Prerequisites</h2>
<div class="section">
<p>In order to seamlessly integrate Openoffice into the
publication process of Lenya/Cocoon the following prerequisites need
to be met:</p>
<a name="N10034"></a><a name="OpenOffice+DTD"></a>
<h3 class="h4">OpenOffice DTD</h3>
<p>The DTDs for the OpenOffice documents has to be available
on the system.</p>
<p>It's best to get them directly from your OpenOffice
installation. They are located in the share directory of your
installation. Copy the dtd's into your Lenya installation, e.g. as
follows:</p>
<pre class="code">cp ~/Office/share/dtd/* ~/build/jakarta-tomcat-4.1.18-LE-jdk14/webapps/lenya/lenya/resources/dtd/openoffice/</pre>
<div class="fixme">
<div class="label">Fixme (ce)</div>
<div class="content">The DTDs should probably go into
/usr/share/sgml/openoffice/*</div>
</div>
<div class="note">
<div class="label">Note</div>
<div class="content">There's a bug in the xml parser. As a workaround we uncomment
all the <span class="codefrag">draw:text-box</span> stuff.</div>
</div>
<a name="N1004F"></a><a name="XML+Catalog"></a>
<h3 class="h4">XML Catalog</h3>
<p>In order for Lenya/Cocoon to find the DTDs you need to setup an XML
catalog as follows:</p>
<pre class="code">
xmlcatalog --noout --create openoffice.cat
xmlcatalog --noout --add "public" \
"-//OpenOffice.org//DTD OfficeDocument 1.0//EN"
"file:///home/slide/build/jakarta-tomcat-4.1.18-LE-jdk14/webapps/lenya/lenya/resources/dtd/openoffice/officedocument/1_0/office.dtd" \
openoffice.cat
</pre>
<p>Alternatively you can simply use the attached catalog.</p>
<p>Store this newly created catalog and edit CatalogManager.properties to
make sure Cocoon finds this catalog and hence the OpenOffice DTDs.</p>
<p>Add the location of the OpenOffice catalog to Cocoon's
CatalogManager.properties (which can be found in
<span class="codefrag">~/build/jakarta-tomcat-4.1.18-LE-jdk14/webapps/lenya/WEB-INF/classes/CatalogManager.properties</span>)
by adding the following lines to this file:</p>
<pre class="code">
#catalogs=/path/to/local/catalog
catalogs=/home/slide/build/jakarta-tomcat-4.1.18-LE-jdk14/webapps/lenya/lenya/resources/dtd/openoffice/catalog.xml
</pre>
<a name="N1006D"></a><a name="OpenOffice2HTML+XSTL"></a>
<h3 class="h4">OpenOffice2HTML XSTL</h3>
<p>In order to render the OpenOffice xml as html we need XSLT stylesheets
to provide the necessary transformations.</p>
<p>A very good XSLT which is fairly complete can be fetched
from zope.org (<a href="http://www.zope.org/Members/philikon/ZooDocument">http://www.zope.org/Members/philikon/ZooDocument</a>).</p>
<a name="N1007E"></a><a name="Slide"></a>
<h3 class="h4">Slide</h3>
<p>Slide is an Apache project which offers amongst other things a a
WebDAV access module (implemented as a servlet). This will allow us to
deploy the OpenOffice documents directly via WebDAV.</p>
<p>For a very basic installation the following changes need to be applied
to a file named Domain.xml in the Slide webapp directory:</p>
<ul>
<li>Change permissions</li>
<li>ContentStore: set to parent dir of OpenOffice dir</li>
<li>Replace folder "files" by OpenOffice dir name</li>
</ul>
<p>The following patch will apply all changes you need:</p>
<pre class="code">
diff -u Domain.xml.orig Domain.xml
--- Domain.xml.orig Thu Nov 1 15:47:52 2001
+++ Domain.xml Thu Mar 20 16:44:09 2003
@@ -44,7 +44,7 @@
&lt;reference store="nodestore" /&gt;
&lt;/revisiondescriptorstore&gt;
&lt;contentstore classname="slidestore.reference.FileContentStore"&gt;
- &lt;parameter name="rootpath"&gt;contentstore&lt;/parameter&gt;
+ &lt;parameter name="rootpath"&gt;/home/slide/build/jakarta-tomcat-4.1.18-LE-jdk14/webapps/lenya/lenya/pubs/computerworld/content/authoring&lt;/parameter&gt;
&lt;parameter name="version"&gt;false&lt;/parameter&gt;
&lt;parameter name="resetBeforeStarting"&gt;true&lt;/parameter&gt;
&lt;/contentstore&gt;
@@ -136,7 +136,7 @@
&lt;!-- Paths configuration --&gt;
&lt;userspath&gt;/users&lt;/userspath&gt;
&lt;guestpath&gt;guest&lt;/guestpath&gt;
- &lt;filespath&gt;/files&lt;/filespath&gt;
+ &lt;filespath&gt;/openoffice&lt;/filespath&gt;
&lt;parameter name="dav"&gt;true&lt;/parameter&gt;
&lt;parameter name="standalone"&gt;true&lt;/parameter&gt;
@@ -245,13 +245,12 @@
&lt;/objectnode&gt;
- &lt;objectnode classname="org.apache.slide.structure.SubjectNode"
- uri="/files"&gt;
+ &lt;objectnode classname="org.apache.slide.structure.SubjectNode" uri="/openoffice"&gt;
&lt;!-- ### Give read/write/manage permission to guest ###
Uncomment the following line to give permission to do
all actions on /files to guest (unauthenticated users) --&gt;
- &lt;!-- &lt;permission action="/actions" subject="/users/guest"/&gt; --&gt;
+ &lt;permission action="/actions" subject="/users/guest"/&gt;
&lt;permission action="/actions/manage" subject="/users/john"/&gt;
&lt;permission action="/actions/write" subject="+/users/groupA"/&gt;
</pre>
</div>
<a name="N1009F"></a><a name="Pipelines"></a>
<h2 class="h3">Pipelines</h2>
<div class="section">
<p>In order for Lenya/Cocoon to be able to read the content of the
OpenOffice document, a set of pipelines need to be set up.</p>
<a name="N100A8"></a><a name="Read+the+zip%2Fjar+file"></a>
<h3 class="h4">Read the zip/jar file</h3>
<p>To read the OpenOffice documents we need to setup a simple reader
which as follows:</p>
<pre class="code">
&lt;map:match pattern="**.sxw"&gt;
&lt;map:read src="content/{1}.sxw"/&gt;
&lt;/map:match&gt;
</pre>
<a name="N100B6"></a><a name="Unpack+zip+file+and+transform+the+OO+xml+to+xhtml"></a>
<h3 class="h4">Unpack zip file and transform the OO xml to xhtml</h3>
<p>OpenOffice documents are actually a zip file containing xml files for
content and style plus other additional files such as jpg etc.</p>
<p>Zip is the same file format as jar. JDK supports jar unpacking
natively with the jar protocol. The pipeline to read a jar file looks
as follows:</p>
<pre class="code">
&lt;map:match pattern="**.oo"&gt;
&lt;map:generate src="jar:http://localhost:38080/lenya/computerworld/authoring/{1}.sxw!/content.xml"/&gt;
&lt;map:transform src="../../xslt/openoffice/ooo2html.xsl"/&gt;
&lt;map:serialize/&gt;
&lt;/map:match&gt;
</pre>
<a name="N100C7"></a><a name="Aggregate+with+navigation"></a>
<h3 class="h4">Aggregate with navigation</h3>
<p>Additionaly we want to embed the OpenOffice document in the usual
navigation, header and footer. The following is fairly specific to the
Computerworld publication but can easily be adapted:</p>
<pre class="code">
&lt;map:match pattern="**.html"&gt;
&lt;map:aggregate element="lenya"&gt;
&lt;map:part src="cocoon:/menus/static/{1}.html"/&gt;
&lt;map:part element="cmsbody" src="content/authoring/wrapper.html"/&gt;
&lt;map:part src="cocoon:/{1}.oo" element="wrapper"/&gt;
&lt;map:part src="content/authoring/small-preview.xml"/&gt;
&lt;map:part src="content/authoring/sitetree.xml"/&gt;
&lt;map:part src="cocoon:/today"/&gt;
&lt;/map:aggregate&gt;
&lt;map:transform src="xslt/authoring/wrapper.xsl"&gt;
&lt;map:parameter name="id" value="/{1}"/&gt;
&lt;map:parameter name="authoring" value="true"/&gt;
&lt;/map:transform&gt;
&lt;map:transform src="xslt/authoring/images.xsl"/&gt;
&lt;map:serialize type="html"/&gt;
&lt;/map:match&gt;
</pre>
</div>
<a name="N100D6"></a><a name="Problems"></a>
<h2 class="h3">Problems</h2>
<div class="section">
<ul>
<li>Caching prevents an update OO file (zip file) from being
displayed.</li>
<li>If you restart tomcat (slide) you lose the NodeContentStore so that
WebDAV loses the nodes (documents and folders).</li>
<li>xml parser cannot handle openoffice dtd's due to a parser bug</li>
</ul>
</div>
<a name="N100E9"></a><a name="To+do%27s"></a>
<h2 class="h3">To do's</h2>
<div class="section">
<ul>
<li>Set permissions in tomcat/slide: authorization and autorisation</li>
<li>Complete and improve OpenOffice2Html xslt (images, tables, etc.)</li>
<li> Add pipelines for other files in zip like images</li>
<li> Integration slide and lenya</li>
</ul>
</div>
<span class="version">
v0.1Initial version</span>
</div>
<!--+
|end content
+-->
<div class="clearboth">&nbsp;</div>
</div>
<div id="footer">
<!--+
|start bottomstrip
+-->
<div class="lastmodified">
<script type="text/javascript"><!--
document.write("Last Published: " + document.lastModified);
// --></script>
</div>
<div class="copyright">
Copyright &copy;
2002-2007 <a href="http://www.apache.org/licenses/LICENSE-2.0">The Apache Software Foundation.</a>
</div>
<div id="feedback">
Send feedback about the website to:
<a id="feedbackto" href="mailto:dev@lenya.apache.org?subject=Feedback%C2%A0for%C2%A0docs/1_2_x/components/authoring/openoffice.html">dev@lenya.apache.org</a>
</div>
<!--+
|end bottomstrip
+-->
</div>
</body>
</html>