blob: 6e3dd59e5c4c4dcfcfaae11369749f265d3d1ad1 [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>Resource Types</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 class="current">
<a class="selected" href="../../../docs/2_0_x/index.html">Version 2.0</a>
</li>
<li>
<a class="unselected" 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 2.0</div>
<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
<div class="menuitem">
<a href="../../../docs/2_0_x/index.html">Index</a>
</div>
<div class="menuitem">
<a href="../../../docs/2_0_x/faq.html">FAQs</a>
</div>
<div onclick="SwitchMenu('menu_1.1.3', '../../../skin/')" id="menu_1.1.3Title" class="menutitle">Installation</div>
<div id="menu_1.1.3" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/2_0_x/installation/index.html">Download</a>
</div>
<div class="menuitem">
<a href="../../../docs/2_0_x/installation/subversion.html">Subversion Access</a>
</div>
<div class="menuitem">
<a href="../../../docs/2_0_x/installation/source_version.html">Install Instructions</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.4', '../../../skin/')" id="menu_1.1.4Title" class="menutitle">Tutorials</div>
<div id="menu_1.1.4" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/2_0_x/tutorials/newpublication/index.html">Create a Publication</a>
</div>
<div onclick="SwitchMenu('menu_1.1.4.2', '../../../skin/')" id="menu_1.1.4.2Title" class="menutitle">Create a Resource Type</div>
<div id="menu_1.1.4.2" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/2_0_x/tutorials/resourcetype/part1.html">Declaration</a>
</div>
<div class="menuitem">
<a href="../../../docs/2_0_x/tutorials/resourcetype/part2.html">Creation</a>
</div>
<div class="menuitem">
<a href="../../../docs/2_0_x/tutorials/resourcetype/part3.html">Presentation</a>
</div>
<div class="menuitem">
<a href="../../../docs/2_0_x/tutorials/resourcetype/part4.html">Editing (One-Form)</a>
</div>
<div class="menuitem">
<a href="../../../docs/2_0_x/tutorials/resourcetype/part5.html">Editing (BXE)</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.4.3', '../../../skin/')" id="menu_1.1.4.3Title" class="menutitle">Implement a Usecase</div>
<div id="menu_1.1.4.3" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/2_0_x/tutorials/usecase/part1.html">Prerequisites</a>
</div>
<div class="menuitem">
<a href="../../../docs/2_0_x/tutorials/usecase/part2.html">The Usecase</a>
</div>
</div>
<div class="menuitem">
<a href="../../../docs/2_0_x/tutorials/setupide/index.html">Setting up Eclipse</a>
</div>
<div onclick="SwitchMenu('menu_1.1.4.5', '../../../skin/')" id="menu_1.1.4.5Title" class="menutitle">Proxying</div>
<div id="menu_1.1.4.5" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/2_0_x/tutorials/proxy/proxying.html">Proxying</a>
</div>
<div class="menuitem">
<a href="../../../docs/2_0_x/tutorials/proxy/proxy.html">mod_proxy</a>
</div>
<div class="menuitem">
<a href="../../../docs/2_0_x/tutorials/proxy/mod_proxy_ajp.html">mod_proxy_ajp</a>
</div>
</div>
<div class="menuitem">
<a href="../../../docs/2_0_x/tutorials/bestpractises.html">Best Practises</a>
</div>
<div class="menuitem">
<a href="../../../docs/2_0_x/tutorials/production.html">Production Checklist</a>
</div>
<div class="menuitem">
<a href="../../../docs/2_0_x/tutorials/tests.html">Writing Tests</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.5', '../../../skin/')" id="menu_1.1.5Title" class="menutitle">Concepts</div>
<div id="menu_1.1.5" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/2_0_x/concepts/publication.html">Publication</a>
</div>
<div class="menuitem">
<a href="../../../docs/2_0_x/concepts/documents.html">Working with Documents</a>
</div>
<div class="menuitem">
<a href="../../../docs/2_0_x/concepts/authoring_live.html">Authoring and Live mode</a>
</div>
<div class="menuitem">
<a href="../../../docs/2_0_x/concepts/wysiwyg.html">WYSIWYG</a>
</div>
</div>
<div onclick="SwitchMenu('menu_selected_1.1.6', '../../../skin/')" id="menu_selected_1.1.6Title" class="menutitle" style="background-image: url('../../../skin/images/chapter_open.gif');">Technical Reference</div>
<div id="menu_selected_1.1.6" class="selectedmenuitemgroup" style="display: block;">
<div class="menuitem">
<a href="../../../docs/2_0_x/reference/lenya-sitemaps.html">Overview of Lenya Sitemaps</a>
</div>
<div class="menuitem">
<a href="../../../docs/2_0_x/reference/repository/index.html">Repository</a>
</div>
<div class="menuitem">
<a href="../../../docs/2_0_x/reference/ac.html">Access Control Specification</a>
</div>
<div onclick="SwitchMenu('menu_1.1.6.4', '../../../skin/')" id="menu_1.1.6.4Title" class="menutitle">Usecase Framework</div>
<div id="menu_1.1.6.4" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/2_0_x/reference/usecase-framework/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../docs/2_0_x/reference/usecase-framework/abstractusecase.html">AbstractUsecase</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.6.5', '../../../skin/')" id="menu_1.1.6.5Title" class="menutitle">Publications</div>
<div id="menu_1.1.6.5" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/2_0_x/reference/publication/configuration.html">Configuration</a>
</div>
<div class="menuitem">
<a href="../../../docs/2_0_x/reference/publication/publication-templating/index.html">Publication Templating</a>
</div>
</div>
<div class="menupage">
<div class="menupagetitle">Resource Types</div>
</div>
<div class="menuitem">
<a href="../../../docs/2_0_x/reference/modules/index.html">Modules</a>
</div>
<div class="menuitem">
<a href="../../../docs/2_0_x/reference/metadata.html">Meta data</a>
</div>
<div onclick="SwitchMenu('menu_1.1.6.9', '../../../skin/')" id="menu_1.1.6.9Title" class="menutitle">Protocols</div>
<div id="menu_1.1.6.9" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/2_0_x/reference/protocols/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../docs/2_0_x/reference/protocols/lenya.html">lenya Protocol</a>
</div>
<div class="menuitem">
<a href="../../../docs/2_0_x/reference/protocols/lenya-document.html">lenya-document Protocol</a>
</div>
<div class="menuitem">
<a href="../../../docs/2_0_x/reference/protocols/site.html">site Protocol</a>
</div>
<div class="menuitem">
<a href="../../../docs/2_0_x/reference/protocols/lenyadoc.html">lenyadoc Protocol</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.6.10', '../../../skin/')" id="menu_1.1.6.10Title" class="menutitle">URLs and Links</div>
<div id="menu_1.1.6.10" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/2_0_x/reference/urlMapping.html">URL Mapping</a>
</div>
<div class="menuitem">
<a href="../../../docs/2_0_x/reference/link-management.html">Link Management</a>
</div>
</div>
</div>
<div class="menuitem">
<a href="../../../apidocs/2.0/index.html">Core API</a>
</div>
<div onclick="SwitchMenu('menu_1.1.8', '../../../skin/')" id="menu_1.1.8Title" class="menutitle">Core Modules</div>
<div id="menu_1.1.8" class="menuitemgroup">
<div onclick="SwitchMenu('menu_1.1.8.1', '../../../skin/')" id="menu_1.1.8.1Title" class="menutitle">ac</div>
<div id="menu_1.1.8.1" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/ac/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/ac/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.8.2', '../../../skin/')" id="menu_1.1.8.2Title" class="menutitle">acusecases</div>
<div id="menu_1.1.8.2" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/acusecases/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/acusecases/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.8.3', '../../../skin/')" id="menu_1.1.8.3Title" class="menutitle">administration</div>
<div id="menu_1.1.8.3" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/administration/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/administration/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.8.4', '../../../skin/')" id="menu_1.1.8.4Title" class="menutitle">cache</div>
<div id="menu_1.1.8.4" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/cache/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/cache/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.8.5', '../../../skin/')" id="menu_1.1.8.5Title" class="menutitle">janitor</div>
<div id="menu_1.1.8.5" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/janitor/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/janitor/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.8.6', '../../../skin/')" id="menu_1.1.8.6Title" class="menutitle">ldap</div>
<div id="menu_1.1.8.6" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/ldap/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/ldap/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.8.7', '../../../skin/')" id="menu_1.1.8.7Title" class="menutitle">linking</div>
<div id="menu_1.1.8.7" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/linking/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/linking/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.8.8', '../../../skin/')" id="menu_1.1.8.8Title" class="menutitle">observation</div>
<div id="menu_1.1.8.8" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/observation/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/observation/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.8.9', '../../../skin/')" id="menu_1.1.8.9Title" class="menutitle">properties</div>
<div id="menu_1.1.8.9" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/properties/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/properties/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.8.10', '../../../skin/')" id="menu_1.1.8.10Title" class="menutitle">sitemanagement</div>
<div id="menu_1.1.8.10" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/sitemanagement/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/sitemanagement/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.8.11', '../../../skin/')" id="menu_1.1.8.11Title" class="menutitle">templating</div>
<div id="menu_1.1.8.11" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/templating/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/templating/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.8.12', '../../../skin/')" id="menu_1.1.8.12Title" class="menutitle">usecase</div>
<div id="menu_1.1.8.12" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/usecase/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/usecase/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.8.13', '../../../skin/')" id="menu_1.1.8.13Title" class="menutitle">workflow</div>
<div id="menu_1.1.8.13" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/workflow/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/workflow/index.html">API</a>
</div>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9', '../../../skin/')" id="menu_1.1.9Title" class="menutitle">Standard Modules</div>
<div id="menu_1.1.9" class="menuitemgroup">
<div onclick="SwitchMenu('menu_1.1.9.1', '../../../skin/')" id="menu_1.1.9.1Title" class="menutitle">blog</div>
<div id="menu_1.1.9.1" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/blog/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/blog/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.2', '../../../skin/')" id="menu_1.1.9.2Title" class="menutitle">bxe</div>
<div id="menu_1.1.9.2" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/bxe/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/bxe/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.3', '../../../skin/')" id="menu_1.1.9.3Title" class="menutitle">cforms</div>
<div id="menu_1.1.9.3" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/cforms/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/cforms/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.4', '../../../skin/')" id="menu_1.1.9.4Title" class="menutitle">collection</div>
<div id="menu_1.1.9.4" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/collection/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/collection/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.5', '../../../skin/')" id="menu_1.1.9.5Title" class="menutitle">contactform</div>
<div id="menu_1.1.9.5" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/contactform/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/contactform/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.6', '../../../skin/')" id="menu_1.1.9.6Title" class="menutitle">development</div>
<div id="menu_1.1.9.6" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/development/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/development/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.7', '../../../skin/')" id="menu_1.1.9.7Title" class="menutitle">editors</div>
<div id="menu_1.1.9.7" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/editors/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/editors/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.8', '../../../skin/')" id="menu_1.1.9.8Title" class="menutitle">export</div>
<div id="menu_1.1.9.8" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/export/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/export/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.9', '../../../skin/')" id="menu_1.1.9.9Title" class="menutitle">fckeditor</div>
<div id="menu_1.1.9.9" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/fckeditor/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/fckeditor/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.10', '../../../skin/')" id="menu_1.1.9.10Title" class="menutitle">kupu</div>
<div id="menu_1.1.9.10" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/kupu/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/kupu/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.11', '../../../skin/')" id="menu_1.1.9.11Title" class="menutitle">languageselector</div>
<div id="menu_1.1.9.11" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/languageselector/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/languageselector/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.12', '../../../skin/')" id="menu_1.1.9.12Title" class="menutitle">lenyadoc</div>
<div id="menu_1.1.9.12" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/lenyadoc/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/lenyadoc/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.13', '../../../skin/')" id="menu_1.1.9.13Title" class="menutitle">linkcheck</div>
<div id="menu_1.1.9.13" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/linkcheck/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/linkcheck/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.14', '../../../skin/')" id="menu_1.1.9.14Title" class="menutitle">links</div>
<div id="menu_1.1.9.14" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/links/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/links/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.15', '../../../skin/')" id="menu_1.1.9.15Title" class="menutitle">lucene</div>
<div id="menu_1.1.9.15" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/lucene/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/lucene/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.16', '../../../skin/')" id="menu_1.1.9.16Title" class="menutitle">migration</div>
<div id="menu_1.1.9.16" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/migration/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/migration/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.17', '../../../skin/')" id="menu_1.1.9.17Title" class="menutitle">neutron</div>
<div id="menu_1.1.9.17" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/neutron/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/neutron/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.18', '../../../skin/')" id="menu_1.1.9.18Title" class="menutitle">news</div>
<div id="menu_1.1.9.18" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/news/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/news/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.19', '../../../skin/')" id="menu_1.1.9.19Title" class="menutitle">notification</div>
<div id="menu_1.1.9.19" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/notification/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/notification/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.20', '../../../skin/')" id="menu_1.1.9.20Title" class="menutitle">opendocument</div>
<div id="menu_1.1.9.20" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/opendocument/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/opendocument/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.21', '../../../skin/')" id="menu_1.1.9.21Title" class="menutitle">prettyprinting</div>
<div id="menu_1.1.9.21" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/prettyprinting/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/prettyprinting/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.22', '../../../skin/')" id="menu_1.1.9.22Title" class="menutitle">profiling</div>
<div id="menu_1.1.9.22" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/profiling/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/profiling/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.23', '../../../skin/')" id="menu_1.1.9.23Title" class="menutitle">resource</div>
<div id="menu_1.1.9.23" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/resource/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/resource/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.24', '../../../skin/')" id="menu_1.1.9.24Title" class="menutitle">simplesite</div>
<div id="menu_1.1.9.24" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/simplesite/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/simplesite/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.25', '../../../skin/')" id="menu_1.1.9.25Title" class="menutitle">sitetree</div>
<div id="menu_1.1.9.25" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/sitetree/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/sitetree/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.26', '../../../skin/')" id="menu_1.1.9.26Title" class="menutitle">sourcerepository</div>
<div id="menu_1.1.9.26" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/sourcerepository/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/sourcerepository/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.27', '../../../skin/')" id="menu_1.1.9.27Title" class="menutitle">svg</div>
<div id="menu_1.1.9.27" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/svg/roundedcorners.html">Rounded Corners</a>
</div>
<div class="menuitem">
<a href="../../../docs/modules/svg/resizeimages.html">Resizing Images</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/svg/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.28', '../../../skin/')" id="menu_1.1.9.28Title" class="menutitle">tinymce</div>
<div id="menu_1.1.9.28" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/tinymce/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/tinymce/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.29', '../../../skin/')" id="menu_1.1.9.29Title" class="menutitle">usecasedocument</div>
<div id="menu_1.1.9.29" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/usecasedocument/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/usecasedocument/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.30', '../../../skin/')" id="menu_1.1.9.30Title" class="menutitle">webdav</div>
<div id="menu_1.1.9.30" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/webdav/index.html">Getting started</a>
</div>
<div class="menuitem">
<a href="../../../docs/modules/webdav/monitoring.html">Monitoring</a>
</div>
<div class="menuitem">
<a href="../../../docs/modules/webdav/webdav.html">WebDAV Servers</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/webdav/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.31', '../../../skin/')" id="menu_1.1.9.31Title" class="menutitle">xhtml</div>
<div id="menu_1.1.9.31" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/xhtml/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/xhtml/index.html">API</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.1.9.32', '../../../skin/')" id="menu_1.1.9.32Title" class="menutitle">xopus</div>
<div id="menu_1.1.9.32" class="menuitemgroup">
<div class="menuitem">
<a href="../../../docs/modules/xopus/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="../../../../apidocs/2.0/modules/xopus/index.html">API</a>
</div>
</div>
</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="resource-types.pdf"><img alt="PDF -icon" src="../../../skin/images/pdfdoc.gif" class="skin"><br>
PDF</a>
</div>
<h1>Resource Types</h1>
<div id="front-matter">
<div id="minitoc-area">
<ul class="minitoc">
<li>
<a href="#Introduction">Introduction</a>
</li>
<li>
<a href="#Choose+a+Unique+Resource+Type+Name">Choose a Unique Resource Type Name</a>
</li>
<li>
<a href="#Adding+the+Resource+Type+to+a+Publication">Adding the Resource Type to a Publication</a>
</li>
<li>
<a href="#Providing+One+or+More+Sample+XML+Documents">Providing One or More Sample XML Documents</a>
</li>
<li>
<a href="#Providing+an+XML+Structure+Definition">Providing an XML Structure Definition</a>
</li>
<li>
<a href="#Creating+a+Workflow+Schema">Creating a Workflow Schema</a>
</li>
<li>
<a href="#expiration">Cache Expiration Time</a>
</li>
<li>
<a href="#The+Resource+Type+Definition">The Resource Type Definition</a>
</li>
<li>
<a href="#I18n+for+the+Resource+Type+Label">I18n for the Resource Type Label</a>
</li>
<li>
<a href="#Define+a+Custom+Menubar">Define a Custom Menubar</a>
</li>
<li>
<a href="#Formats">Formats</a>
</li>
<li>
<a href="#Presentation">Presentation</a>
</li>
</ul>
</div>
</div>
<a name="N1000D"></a><a name="Introduction"></a>
<h2 class="h3">Introduction</h2>
<div class="section">
<p>
A resource type defines a certain (XML or binary) source format, together with processing options.
It typically consists of
</p>
<ul>
<li>an XML structure definition (e.g., Relax NG), if the resource type is XML-based,</li>
<li>some presentation pipelines,</li>
<li>some presentation XSLT stylesheets,</li>
<li>usecases to manipulate documents.</li>
</ul>
<p>
All of these can be shared between several resource types.
</p>
<p>
The information describing a resource type is managed by a
<a href="http://lenya.apache.org/apidocs/2.0/org/apache/lenya/cms/publication/ResourceType.html"><span class="codefrag">ResourceType</span></a>
service. The default implementation is <span class="codefrag">ResourceTypeImpl</span>.
It implements <span class="codefrag">ThreadSafe</span>, which ensures that only a single instance of every resource type is created.
It is not possible to declare multiple resource types with the same name.
</p>
</div>
<a name="N10037"></a><a name="Choose+a+Unique+Resource+Type+Name"></a>
<h2 class="h3">Choose a Unique Resource Type Name</h2>
<div class="section">
<p>
You should choose a reasonable name for your resource type.
</p>
<div class="note">
<div class="label">Note</div>
<div class="content">
In the examples, we use the name <em>profile</em> (page with information about a person).
</div>
</div>
</div>
<a name="N10046"></a><a name="Adding+the+Resource+Type+to+a+Publication"></a>
<h2 class="h3">Adding the Resource Type to a Publication</h2>
<div class="section">
<p>
The resource types used by a publication are declared in <span class="codefrag">publication.xml</span>,
including the assignment of a workflow schema to a resource type. You have to add your
resource type to the <span class="codefrag">&lt;resource-types&gt;</span> section of this file:
</p>
<pre class="code">&lt;publication&gt;
...
&lt;resource-types&gt;
&lt;resource-type name="xhtml" workflow="fallback://config/workflow/workflow.xml"/&gt;
&lt;resource-type name="homepage" workflow="fallback://config/workflow/workflow.xml"/&gt;
&lt;resource-type name="links" workflow="fallback://config/workflow/workflow.xml"/&gt;
&lt;resource-type name="profile" workflow="fallback://config/workflow/workflow.xml"/&gt;
...
&lt;/resource-types&gt;
...
&lt;/publication&gt;
</pre>
<p>
You can add references to any resource types configured in
<span class="codefrag">&lt;lenya-webapp&gt;/WEB-INF/cocoon.xconf</span> (see below),
containing
</p>
<ul>
<li>resource types provided by modules,</li>
<li>resource types of template publications, and</li>
<li>resource types of the publication itself.</li>
</ul>
</div>
<a name="N1006C"></a><a name="Providing+One+or+More+Sample+XML+Documents"></a>
<h2 class="h3">Providing One or More Sample XML Documents</h2>
<div class="section">
<p>
If you want to enable users to create new resources belonging to
your resource type, it is useful to provide one more more sample XML documents.
</p>
<p>
The sample document(s) are typically placed in the directory
<span class="codefrag">$MODULE_HOME/samples</span>.
You can choose arbitrary filenames, but for a single sample
it is recommended to use the resource type name
(e.g., <span class="codefrag">profile.xml</span>).
</p>
<p>
There are two ways of declaring the samples. The first option is very
convenient if you don't need custom samples per publication. You just add
the samples to the resource type declaration:
</p>
<pre class="code">&lt;component-instance name="profile" ...
...
&lt;sample-name name="Empty Profile" mime-type="application/xml"&gt;
fallback://lenya/modules/profile/samples/empty.xml&lt;/sample-name&gt;
&lt;sample-name name="Example Profile" mime-type="application/xml"&gt;
fallback://lenya/modules/profile/samples/example.xml&lt;/sample-name&gt;
...
&lt;/component-instance&gt;
</pre>
<p>
The second option allows you to specify a file where the samples declarations
are stored. This enables you to override this file in your publications,
providing a different sample list per publication:
</p>
<pre class="code">&lt;component-instance name="profile" ...
...
&lt;samples uri="fallback://lenya/modules/profile/samples/samples.xml"/&gt;
...
&lt;/component-instance&gt;
</pre>
<p>
The <span class="codefrag">samples.xml</span> file uses the same syntax:
</p>
<pre class="code">&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;samples&gt;
&lt;sample-name name="Empty Profile" mime-type="application/xml"&gt;
fallback://lenya/modules/profile/samples/empty.xml&lt;/sample-name&gt;
&lt;sample-name name="Example Profile" mime-type="application/xml"&gt;
fallback://lenya/modules/profile/samples/example.xml&lt;/sample-name&gt;
&lt;/samples&gt;</pre>
</div>
<a name="N10096"></a><a name="Providing+an+XML+Structure+Definition"></a>
<h2 class="h3">Providing an XML Structure Definition</h2>
<div class="section">
<p>
This step is only needed if you want to edit resources with Lenya
or validate them after they have been imported or manipulated.
The type of the structure definition
(<a href="http://www.w3.org/XML/Schema">XML Schema</a>,
<a href="http://www.relaxng.org/">Relax NG</a>, ...)
depends on the editor or validator you want to use. For instance,
the <a href="http://www.bitfluxeditor.org/">BXE</a> WYSIWYG
editor requires a Relax NG document.
</p>
<p>The structure definition document is typically placed in the directory
<span class="codefrag">$MODULE_HOME/resources/schemas</span>. The name
of the file is arbitrary, but it is recommended to use the
resource type name (e.g., <span class="codefrag">profile.rng</span>).
</p>
</div>
<a name="N100B4"></a><a name="Creating+a+Workflow+Schema"></a>
<h2 class="h3">Creating a Workflow Schema</h2>
<div class="section">
<p>
If your resources should have a workflow, you have to add a workflow
schema for your resource type as described in
<a href="../../../docs/1_2_x/components/workflow/configuration.html">Workflow Configuration</a>.
A workflow schema can be shared between multiple resource types.
The workflow schema is assigned to a resource type in
<span class="codefrag">$PUB_HOME/config/publication.xml</span>
(see section <em>Adding Resource Types to a Publication</em>).
</p>
</div>
<a name="N100C7"></a><a name="expiration"></a>
<h2 class="h3">Cache Expiration Time</h2>
<div class="section">
<p>
For each resource type, you can configure how long the documents shall be cached by
the client, for instance:
</p>
<pre class="code">&lt;expires seconds="3600" /&gt;</pre>
<p>
This value can be accessed via the <span class="codefrag">getExpires()</span> methods of the
<span class="codefrag">ResourceType</span> and <span class="codefrag">Document</span> interfaces. You can use the
header action to set the corresponding HTTP response header in your publication:
</p>
<pre class="code">&lt;map:act type="set-header"&gt;
&lt;map:parameter name="Expires"
value="{date-iso8601-rfc822:{doc-info:{pubId}:{area}:{uuid}:{language}:expires}}"/&gt;
&lt;/map:act&gt;</pre>
</div>
<a name="N100E5"></a><a name="The+Resource+Type+Definition"></a>
<h2 class="h3">The Resource Type Definition</h2>
<div class="section">
<p>
To declare a custom resource type and assign the creator, schema etc. to it,
add the component instance to an XPatch file (e.g.,
<span class="codefrag">$MODULE_HOME/config/cocoon-xconf/resourcetype-profile.xconf</span>):
</p>
<pre class="code">&lt;xconf xpath="/cocoon/resource-types"
unless="/cocoon/resource-types/component-instance[@name = 'profile']"&gt;
&lt;component-instance name="profile"
logger="lenya.resourcetypes.profile"
class="org.apache.lenya.cms.publication.ResourceTypeImpl"&gt;
&lt;schema src="fallback://lenya/modules/profile/resources/schemas/profile.rng"
language="http://relaxng.org/ns/structure/0.9"/&gt;
&lt;sample-name name="Empty Profile" mime-type="application/xml"&gt;
fallback://lenya/modules/profile/samples/empty.xml&lt;/sample-name&gt;
&lt;sample-name name="Example Profile" mime-type="application/xml"&gt;
fallback://lenya/modules/profile/samples/example.xml&lt;/sample-name&gt;
&lt;link-attribute xpath="//*[namespace-uri() = 'http://foo.bar.org/profile']/@href"/&gt;
&lt;format name="xhtml" uri="cocoon://modules/profile/profile.xml"/&gt;
&lt;expires seconds="3600" /&gt;
&lt;/component-instance&gt;
&lt;/xconf&gt;</pre>
<p>
This XPatch file will be used when the publication is deployed (e.g., when you issue
a <span class="codefrag">./build</span> command). Its contents will be patched into
<span class="codefrag">&lt;lenya-webapp&gt;/WEB-INF/cocoon.xconf</span>.
</p>
</div>
<a name="N100FE"></a><a name="I18n+for+the+Resource+Type+Label"></a>
<h2 class="h3">I18n for the Resource Type Label</h2>
<div class="section">
<p>
There is a convention that the message key <em>resourceType-{name}</em> is used for a
human-readable, translated resource type label:
</p>
<pre class="code">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;catalogue xml:lang="en" xmlns:xhtml="http://www.w3.org/1999/xhtml"&gt;
&lt;message key="resourceType-profile"&gt;Profile&lt;/message&gt;
&lt;/catalogue&gt;</pre>
</div>
<a name="N1010F"></a><a name="Define+a+Custom+Menubar"></a>
<h2 class="h3">Define a Custom Menubar</h2>
<div class="section">
<p>
If you want to use a custom menubar for your resource type,
follow the guidelines on the page
<a href="../../../docs/1_2_x/components/layout/lenya-menubar.html">The Lenya Menubar</a>.
Typically, a menubar is shared between multiple resource types.
Small customizations can be achieved with Java code in the menubar XSP.
</p>
<p>
To let the user create new resources using the <span class="codefrag">DefaultBranchCreator</span>,
you have to add the following menu item:
</p>
<pre class="code">&lt;item uc:usecase="sitemanagement.create" href="?doctype=profile"&gt;
&lt;i18n:translate&gt;
&lt;i18n:text&gt;New ... Document&lt;/i18n:text&gt;
&lt;i18n:param&gt;&lt;i18n:text&gt;resourceType-profile&lt;/i18n:text&gt;&lt;/i18n:param&gt;
&lt;/i18n:translate&gt;
&lt;/item&gt;</pre>
</div>
<a name="N10126"></a><a name="Formats"></a>
<h2 class="h3">Formats</h2>
<div class="section">
<p>
A resource type provides a set of <em>formats</em> to provide different ways of presenting content documents.
The formats are defined in the resource type declaration in
<span class="codefrag">$MODULE_HOME/config/cocoon-xconf/resourcetype-profile.xconf</span>:
</p>
<pre class="code">
&lt;format name="xhtml" uri="cocoon://modules/profile/xhtml.xml"/&gt;
&lt;format name="include" uri="cocoon://modules/profile/xhtml-inline.xml"/&gt;
</pre>
<p>
The following figure illustrates some usage examples of formats:
</p>
<div id="" style="text-align: center;">
<img id="" class="figure" alt="Resource type formats" src="../../../images/live/resourcetype/resourceTypeFormats.png"></div>
<ul>
<li>
Example <strong>A</strong> shows the most typical case - a <em>msg</em> (message) document
is rendered using the format <em>xhtml</em> to be displayed as page content.
</li>
<li>
In example <strong>B</strong>, the format <em>teaser</em> is used to render teaser versions
of the <em>msg</em> documents to be displayed in the sidebar. This is usually done using
an include mechanism (see below).
</li>
<li>
In example <strong>C</strong>, a <em>news</em> document includes the <em>teaser</em>
versions of message documents. The <em>news</em> document in turn provides the format
<em>xhtml</em> to be rendered as page content.
</li>
</ul>
<p>
The <span class="codefrag">uri</span> attribute of the <span class="codefrag">format</span> element may refer to an arbitrary URL,
which is typically a request into the module itself. This URI is matched inside the module
sitemap (in our case, <span class="codefrag">modules/profile/sitemap.xmap</span>).
</p>
<p>
There are two ways in which the format can be requested:
</p>
<ul>
<li>for the current document - without parameters</li>
<li>for a specific document - with the parameters <span class="codefrag">/{pubId}/{area}/{uuid}/{language}</span>
</li>
</ul>
<p>
Typically, an XSLT is applied to the content document to transform
it into another format (XHTML, XSL-FO, ...). In the following example,
the name of the XSLT stylesheet is supposed to end with the format name
(e.g., <span class="codefrag">profile2xhtml.xsl</span>):
</p>
<pre class="code">
&lt;!-- apply a format --&gt;
&lt;!-- {format}.xml (current document) --&gt;
&lt;map:match pattern="*.xml"&gt;
&lt;map:generate src="cocoon:/{1}/{page-envelope:publication-id}/ \
{page-envelope:area}/ \
{page-envelope:document-uuid}/ \
{page-envelope:document-language}"/&gt;
&lt;map:serialize type="xml"/&gt;
&lt;/map:match&gt;
&lt;!-- {format}.xml/{pubId}/{area}/{uuid}/{language} (specific document) --&gt;
&lt;map:match pattern="*.xml/*/*/*/*"&gt;
&lt;map:generate src="lenya-document:{4},lang={5}{link:rev}"/&gt;
&lt;map:transform src="fallback://lenya/modules/profile/xslt/profile2{1}.xsl"&gt;
&lt;map:parameter name="rendertype" value="{request-param:rendertype}"/&gt;
&lt;map:parameter name="nodeid" value="{doc-info:{2}:{3}:{4}:{5}:nodeName}"/&gt;
&lt;map:parameter name="language" value="{4}"/&gt;
&lt;/map:transform&gt;
&lt;map:serialize type="xml"/&gt;
&lt;/map:match&gt;
</pre>
<p>
To request a formatted document, you can use the <em>format</em> parameter of the
<span class="codefrag">site:</span> and <span class="codefrag">lenya-document:</span> protocols. You can issue such
a request from an arbitrary sitemap (e.g., from your publication sitemap or from
a different module sitemap).
</p>
<pre class="code">
&lt;!-- aggregate navigation components and XHTML-formatted content --&gt;
&lt;map:aggregate element="cmsbody"&gt;
&lt;map:part src="cocoon://modules/sitetree/{2}/{3}/breadcrumb/{5}.xml"/&gt;
&lt;map:part src="cocoon://modules/sitetree/{2}/{3}/tabs/{5}.xml"/&gt;
&lt;map:part src="cocoon://modules/sitetree/{2}/{3}/menu/{5}.xml"/&gt;
&lt;map:part src="cocoon://modules/sitetree/{2}/{3}/search/{5}.xml"/&gt;
&lt;map:part src="lenya-document:{page-envelope:documente-uuid}?format=xhtml"/&gt;
&lt;/map:aggregate&gt;
</pre>
<p>
Another usage scenario is to include formatted documents in other documents, e.g. as a teaser or summary
(see the figure above):
</p>
<pre class="code">&lt;ci:include src="site:/{$language}{$path}?format=teaser"/&gt;</pre>
<pre class="code">&lt;ci:include src="lenya-document:{$uuid}?format=teaser"/&gt;</pre>
<p>
Since formats allow you to select the presentation style of a document
on demand, you can use them as layout templates. But unfortunately formats have to
be declared in <span class="codefrag">cocoon.xconf</span>, so you can't add new templates at
runtime with this approach at the moment. Here's an example how to use formats to select templates:
</p>
<ul>
<li>
Set the Dublin Core element <span class="codefrag">format</span> when you create the document,
e.g. using a combo box. We use the Dublin Core for simplicity here, for a cleaner
approach you should define your own meta data element set.
</li>
<li>
In the resource type module, provide an XSLT stylesheet
<span class="codefrag">{resource-type}2{format}.xsl</span> for each format (see above)
</li>
<li>
<p>
Add the format parameter to the <span class="codefrag">lenya-document</span> call:
</p>
<pre class="code">&lt;map:generate src="lenya-document:{page-envelope:uuid}?format={dublincore:format}"/&gt;</pre>
</li>
</ul>
</div>
<a name="N101CF"></a><a name="Presentation"></a>
<h2 class="h3">Presentation</h2>
<div class="section">
<p>
To make your resources available as HTTP pages, you have to add the
appropriate pipelines and XSLT stylesheets. In general, there are no
restrictions.
</p>
<p>
The pipelines have to be placed in
<span class="codefrag">$MODULE_HOME/sitemap.xmap</span>. The stylesheets are typically located in
<span class="codefrag">$MODULE_HOME/xslt/</span> and named <span class="codefrag">{resource-type}2{format}.xsl</span>
(e.g., <span class="codefrag">profile2xhtml.xsl</span>).
</p>
<p>
In the case of the <em>xhtml</em> format, the stylesheet is supposed to generate
a valid XHTML document (in the XHTML namespace). The output of other formats depends
on the purpose of the respective format.
</p>
</div>
</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/2_0_x/reference/resource-types.html">dev@lenya.apache.org</a>
</div>
<!--+
|end bottomstrip
+-->
</div>
</body>
</html>