| <!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> > <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 "> |
| <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"> |
| |
| |
| </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"><resource-types></span> section of this file: |
| </p> |
| <pre class="code"><publication> |
| ... |
| <resource-types> |
| <resource-type name="xhtml" workflow="fallback://config/workflow/workflow.xml"/> |
| <resource-type name="homepage" workflow="fallback://config/workflow/workflow.xml"/> |
| <resource-type name="links" workflow="fallback://config/workflow/workflow.xml"/> |
| <resource-type name="profile" workflow="fallback://config/workflow/workflow.xml"/> |
| ... |
| </resource-types> |
| ... |
| </publication> |
| </pre> |
| <p> |
| You can add references to any resource types configured in |
| <span class="codefrag"><lenya-webapp>/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"><component-instance name="profile" ... |
| ... |
| <sample-name name="Empty Profile" mime-type="application/xml"> |
| fallback://lenya/modules/profile/samples/empty.xml</sample-name> |
| <sample-name name="Example Profile" mime-type="application/xml"> |
| fallback://lenya/modules/profile/samples/example.xml</sample-name> |
| ... |
| </component-instance> |
| </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"><component-instance name="profile" ... |
| ... |
| <samples uri="fallback://lenya/modules/profile/samples/samples.xml"/> |
| ... |
| </component-instance> |
| </pre> |
| <p> |
| The <span class="codefrag">samples.xml</span> file uses the same syntax: |
| </p> |
| <pre class="code"><?xml version="1.0" encoding="utf-8"?> |
| <samples> |
| <sample-name name="Empty Profile" mime-type="application/xml"> |
| fallback://lenya/modules/profile/samples/empty.xml</sample-name> |
| <sample-name name="Example Profile" mime-type="application/xml"> |
| fallback://lenya/modules/profile/samples/example.xml</sample-name> |
| </samples></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"><expires seconds="3600" /></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"><map:act type="set-header"> |
| <map:parameter name="Expires" |
| value="{date-iso8601-rfc822:{doc-info:{pubId}:{area}:{uuid}:{language}:expires}}"/> |
| </map:act></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"><xconf xpath="/cocoon/resource-types" |
| unless="/cocoon/resource-types/component-instance[@name = 'profile']"> |
| |
| <component-instance name="profile" |
| logger="lenya.resourcetypes.profile" |
| class="org.apache.lenya.cms.publication.ResourceTypeImpl"> |
| |
| <schema src="fallback://lenya/modules/profile/resources/schemas/profile.rng" |
| language="http://relaxng.org/ns/structure/0.9"/> |
| |
| <sample-name name="Empty Profile" mime-type="application/xml"> |
| fallback://lenya/modules/profile/samples/empty.xml</sample-name> |
| |
| <sample-name name="Example Profile" mime-type="application/xml"> |
| fallback://lenya/modules/profile/samples/example.xml</sample-name> |
| |
| <link-attribute xpath="//*[namespace-uri() = 'http://foo.bar.org/profile']/@href"/> |
| |
| <format name="xhtml" uri="cocoon://modules/profile/profile.xml"/> |
| |
| <expires seconds="3600" /> |
| |
| </component-instance> |
| |
| </xconf></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"><lenya-webapp>/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"><?xml version="1.0" encoding="UTF-8"?> |
| <catalogue xml:lang="en" xmlns:xhtml="http://www.w3.org/1999/xhtml"> |
| <message key="resourceType-profile">Profile</message> |
| </catalogue></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"><item uc:usecase="sitemanagement.create" href="?doctype=profile"> |
| <i18n:translate> |
| <i18n:text>New ... Document</i18n:text> |
| <i18n:param><i18n:text>resourceType-profile</i18n:text></i18n:param> |
| </i18n:translate> |
| </item></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"> |
| <format name="xhtml" uri="cocoon://modules/profile/xhtml.xml"/> |
| <format name="include" uri="cocoon://modules/profile/xhtml-inline.xml"/> |
| </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"> |
| <!-- apply a format --> |
| <!-- {format}.xml (current document) --> |
| <map:match pattern="*.xml"> |
| <map:generate src="cocoon:/{1}/{page-envelope:publication-id}/ \ |
| {page-envelope:area}/ \ |
| {page-envelope:document-uuid}/ \ |
| {page-envelope:document-language}"/> |
| <map:serialize type="xml"/> |
| </map:match> |
| |
| <!-- {format}.xml/{pubId}/{area}/{uuid}/{language} (specific document) --> |
| <map:match pattern="*.xml/*/*/*/*"> |
| <map:generate src="lenya-document:{4},lang={5}{link:rev}"/> |
| <map:transform src="fallback://lenya/modules/profile/xslt/profile2{1}.xsl"> |
| <map:parameter name="rendertype" value="{request-param:rendertype}"/> |
| <map:parameter name="nodeid" value="{doc-info:{2}:{3}:{4}:{5}:nodeName}"/> |
| <map:parameter name="language" value="{4}"/> |
| </map:transform> |
| <map:serialize type="xml"/> |
| </map:match> |
| </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"> |
| <!-- aggregate navigation components and XHTML-formatted content --> |
| <map:aggregate element="cmsbody"> |
| <map:part src="cocoon://modules/sitetree/{2}/{3}/breadcrumb/{5}.xml"/> |
| <map:part src="cocoon://modules/sitetree/{2}/{3}/tabs/{5}.xml"/> |
| <map:part src="cocoon://modules/sitetree/{2}/{3}/menu/{5}.xml"/> |
| <map:part src="cocoon://modules/sitetree/{2}/{3}/search/{5}.xml"/> |
| <map:part src="lenya-document:{page-envelope:documente-uuid}?format=xhtml"/> |
| </map:aggregate> |
| |
| </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"><ci:include src="site:/{$language}{$path}?format=teaser"/></pre> |
| <pre class="code"><ci:include src="lenya-document:{$uuid}?format=teaser"/></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"><map:generate src="lenya-document:{page-envelope:uuid}?format={dublincore:format}"/></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"> </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 © |
| 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> |