blob: 89ba7f0e0cbd85ac6b035282bd0a6e5a6df31819 [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>Link Management</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="menuitem">
<a href="../../../docs/2_0_x/reference/resource-types.html">Resource Types</a>
</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_selected_1.1.6.10', '../../../skin/')" id="menu_selected_1.1.6.10Title" class="menutitle" style="background-image: url('../../../skin/images/chapter_open.gif');">URLs and Links</div>
<div id="menu_selected_1.1.6.10" class="selectedmenuitemgroup" style="display: block;">
<div class="menuitem">
<a href="../../../docs/2_0_x/reference/urlMapping.html">URL Mapping</a>
</div>
<div class="menupage">
<div class="menupagetitle">Link Management</div>
</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="link-management.pdf"><img alt="PDF -icon" src="../../../skin/images/pdfdoc.gif" class="skin"><br>
PDF</a>
</div>
<h1>Link Management</h1>
<div id="front-matter">
<div id="minitoc-area">
<ul class="minitoc">
<li>
<a href="#Introduction">Introduction</a>
</li>
<li>
<a href="#Syntax+for+Internal+Links">Syntax for Internal Links</a>
</li>
<li>
<a href="#Specifying+the+Resource+Type+Format">Specifying the Resource Type Format</a>
</li>
<li>
<a href="#Converting+UUID-based+URLs+to+Web+Application+URLs">Converting UUID-based URLs to Web Application URLs</a>
</li>
<li>
<a href="#Converting+Web+Application+Links+to+Servlet+Container+or+Proxy+Links">Converting Web Application Links to Servlet Container or Proxy Links</a>
<ul class="minitoc">
<li>
<a href="#The+Proxy+Transformer">The Proxy Transformer</a>
</li>
<li>
<a href="#The+Proxy+Input+Module">The Proxy Input Module</a>
</li>
<li>
<a href="#Generating+Relative+URLs">Generating Relative URLs</a>
</li>
</ul>
</li>
<li>
<a href="#URLs+in+CSS+Files">URLs in CSS Files</a>
</li>
</ul>
</div>
</div>
<a name="N1000D"></a><a name="Introduction"></a>
<h2 class="h3">Introduction</h2>
<div class="section">
<p>Link Managements deals with internal links, i.e. documents
that refer to other documents within the same publication. In Lenya 1.2, links
are rewritten each time the URL of the target document changes (see
section <a href="../../../docs/1_2_x/components/link-management/link-management.html">Link Management</a> in the Lenya 1.2 documentation).
</p>
<p>
In Lenya 2.0, documents are identified and referenced using
<acronym title="Universally Unique Identifier">UUID</acronym>s.
The UUID of a document never changes, that's why the internal
links don't have to be rewritten when a document is moved
in the site structure.
</p>
</div>
<a name="N10022"></a><a name="Syntax+for+Internal+Links"></a>
<h2 class="h3">Syntax for Internal Links</h2>
<div class="section">
<p>
Internal links have the following syntax:
</p>
<pre class="code">lenya-document:{uuid}[,lang={&hellip;}][,pub={&hellip;}][,area={&hellip;}][,rev={&hellip;}][{queryString}]</pre>
<ul>
<li>
The <span class="codefrag">{uuid}</span> value is usually present, but optional.
This enables you to create links to "the russian translation of
this page" (<span class="codefrag">&lt;a href="lenya-document:,lang=ru"&gt;...</span>).
The language selector module makes use of this feature.
Other conceivable uses are links to the current document in another area
or revision.
</li>
<li>
The parameters <span class="codefrag">lang</span>, <span class="codefrag">pub</span>, <span class="codefrag">area</span>,
and <span class="codefrag">rev</span> are optional. If omitted, the corresponding values
of the current context and the latest revision are used.
</li>
<li>
The optional query string is not evaluated when resolving the link target.
It can be used to provide information for subsequent processing
steps (e.g., the <span class="codefrag">UuidToUrlTransformer</span>) and to add request
parameters to the resulting HTTP link URL. The query string is separated
from the link URL using a question mark.
</li>
</ul>
<p>Some link URI examples:</p>
<ul>
<li>
<span class="codefrag">lenya-document:031b21e0-d898-11db-b5f3-e5afac0e35a0</span> - document in same language</li>
<li>
<span class="codefrag">lenya-document:031b21e0-d898-11db-b5f3-e5afac0e35a0,lang=de</span> - document in different language</li>
<li>
<span class="codefrag">lenya-document:031b21e0-d898-11db-b5f3-e5afac0e35a0,area=trash</span> - document in different area</li>
<li>
<span class="codefrag">lenya-document:031b21e0-d898-11db-b5f3-e5afac0e35a0?uuid2url.extension=rss</span> - HTML link should use a particular extension</li>
<li>
<span class="codefrag">lenya-document:031b21e0-d898-11db-b5f3-e5afac0e35a0?lenya.usecase=bxe.edit</span> - HTML link with request parameter</li>
</ul>
</div>
<a name="N10070"></a><a name="Specifying+the+Resource+Type+Format"></a>
<h2 class="h3">Specifying the Resource Type Format</h2>
<div class="section">
<p>
Sometimes you want to specify the format of the link target. This can be done using the
<span class="codefrag">format</span> parameter. A typical use case is the inclusion via CInclude.
</p>
<p>
Imagine you're converting a collection of documents to a list of teasers.
The collection source might look like this:
</p>
<pre class="code">&lt;col:collection&gt;
&lt;col:document uuid="031&hellip;"/&gt;
&lt;col:document uuid="a5r&hellip;"/&gt;
&hellip;
&lt;/col:collection&gt;</pre>
<p>
You could use the following XSLT template to generate the CInclude statements for the
teaser list:
</p>
<pre class="code">&lt;xsl:template match="col:document"&gt;
&lt;ci:include src="lenya-document:{@uuid}?format=teaser"/&gt;
&lt;/xsl:template&gt;</pre>
<p>
When the resulting XML is processed by
</p>
<pre class="code">&lt;map:transform type="cinclude"/&gt;</pre>
<p>the teaser version of each document will be included.</p>
</div>
<a name="N10095"></a><a name="Converting+UUID-based+URLs+to+Web+Application+URLs"></a>
<h2 class="h3">Converting UUID-based URLs to Web Application URLs</h2>
<div class="section">
<p>
The <span class="codefrag">UuidToUrlTransformer</span> is responsible for translating <span class="codefrag">lenya-document:</span>
links into the corresponding web application links. The context path or proxy settings
are not considered yet, this is the responsibility of the ProxyTransformer (see below).
So don't forget to apply the ProxyTransformer after the UuidToUrlTransformer.
</p>
<p>
If your source document contains a link like this:
</p>
<pre class="code">&lt;a href="lenya-document:031&hellip;"&gt;News&lt;/a&gt;</pre>
<p>
and your pipeline contains a call to the UuidToUrlTransformer:
</p>
<pre class="code">&lt;map:transform type="uuid2url"/&gt;</pre>
<p>
the resulting HTML link will look like this:
</p>
<pre class="code">&lt;a href="/default/authoring/news.html"&gt;News&lt;/a&gt;</pre>
<a name="N100B9"></a><a name="Specifying+an+Extension"></a>
<h3 class="h4">Specifying an Extension</h3>
<p>
The UuidToUrlTransformer recognizes the query string parameter
<span class="codefrag">uuid2url.extension</span>. You can use it to force a specific extension.
For instance
</p>
<pre class="code">&lt;a type="application/rss+xhtml" href="lenya-document:031&hellip;?uuid2url.extension=rss"&gt;RSS Feed&lt;/a&gt;</pre>
<p>
will result in
</p>
<pre class="code">&lt;a type="application/rss+xhtml" href="/default/authoring/news.rss"&gt;RSS Feed&lt;/a&gt;</pre>
</div>
<a name="N100D2"></a><a name="Converting+Web+Application+Links+to+Servlet+Container+or+Proxy+Links"></a>
<h2 class="h3">Converting Web Application Links to Servlet Container or Proxy Links</h2>
<div class="section">
<a name="N100D8"></a><a name="The+Proxy+Transformer"></a>
<h3 class="h4">The Proxy Transformer</h3>
<p>
The <span class="codefrag">ProxyTransformer</span> converts all web application links to final links
by adding the servlet context path or the proxy URL. For instance, if you run your
Lenya servlet in Tomcat under the context path <em>lenya14</em>, transforming
</p>
<pre class="code">&lt;a href="/default/authoring/news.html"&gt;News&lt;/a&gt;</pre>
<p>
with the ProxyTransformer
</p>
<pre class="code">&lt;map:transform type="proxy"/&gt;</pre>
<p>
will result in
</p>
<pre class="code">&lt;a href="/lenya14/default/authoring/news.html"&gt;News&lt;/a&gt;</pre>
<p>
If you have declared a proxy for the authoring area, the resulting link might look like this:
</p>
<pre class="code">&lt;a href="http://cms.mysite.com/news.html"&gt;News&lt;/a&gt;</pre>
<p>
Typically, the ProxyTransformer is applied right after the UuidToUrlTransformer.
</p>
<p>
The ProxyTransformer can be used to transform attribute values of elements in arbitrary namespaces.
It is recommended to declare a dedicated proxy transformer instance for each type of transformation,
for instance <em>proxy-xhtml</em> for XHTML documents and <em>proxy-rng</em> for Relax NG documents.
For each namespace and element combination, you have to add a <span class="codefrag">&lt;transform/&gt;</span> element
to the configuration. The following snippet shows the configuration to convert XHTML links. Beware
that the XHTML document format supports various elements and attributes which can contain URLs, so
the configuration below won't be sufficient in most cases.
</p>
<pre class="code">&lt;map:transformer name="proxy" logger="lenya.sitemap.transformer.proxy"
src="org.apache.lenya.cms.cocoon.transformation.ProxyTransformer"&gt;
&lt;transform namespace="http://www.w3.org/1999/xhtml" element="a" attribute="href"/&gt;
...
&lt;/map:transformer&gt;</pre>
<p>
The next example declares a proxy transformer for Relax NG include statements:
</p>
<pre class="code">&lt;map:transformer name="proxy-rng" logger="lenya.sitemap.transformer.proxy"
src="org.apache.lenya.cms.cocoon.transformation.ProxyTransformer"&gt;
&lt;transform namespace="http://relaxng.org/ns/structure/1.0" element="include" attribute="href"/&gt;
&lt;/map:transformer&gt;</pre>
<a name="N1011B"></a><a name="The+Proxy+Input+Module"></a>
<h3 class="h4">The Proxy Input Module</h3>
<p>
The <span class="codefrag">ProxyModule</span> provides the same functionality in sitemaps.
It takes a URL as parameter and rewrites it in the same way as the ProxyTransformer:
</p>
<pre class="code">&lt;map:parameter name="url" value="{proxy:/default/authoring/news.html}"/&gt;</pre>
<a name="N1012C"></a><a name="Generating+Relative+URLs"></a>
<h3 class="h4">Generating Relative URLs</h3>
<p>
In some cases it is convenient to use relative URLs in HTML links. This is especially
useful if you want to export the website statically and open it directly from the
filesystem or transfer it to a different root path on the web server. In the example
above, the relative URL would look like this:
</p>
<pre class="code">&lt;a href="../../news.html"&gt;News&lt;/a&gt;</pre>
<p>
Both proxy transformer and proxy module can be configured to generate relative URLs.
For the proxy transformer, the configuration looks like this:
</p>
<pre class="code">&lt;map:transformer name="proxy"
logger="lenya.sitemap.transformer.proxy"
src="org.apache.lenya.cms.cocoon.transformation.ProxyTransformer"&gt;
&lt;urls type="relative"/&gt;
...
&lt;/map:transformer&gt;</pre>
<p>
Alternatively, you can pass the URL type as a parameter when calling the transformer:
</p>
<pre class="code">&lt;map:transform type="proxy"&gt;
&lt;map:parameter name="urls" value="relative"/&gt;
&lt;/map:transform&gt;</pre>
<p>
The configuration of the proxy input module is equivalent, but it doesn't provide
an option to pass a parameter yet.
</p>
</div>
<a name="N1014C"></a><a name="URLs+in+CSS+Files"></a>
<h2 class="h3">URLs in CSS Files</h2>
<div class="section">
<p>
URLs in <acronym title="Cascading StyleSheet">CSS</acronym> files are converted
to valid links automatically. In your CSS, you can just write
</p>
<pre class="code">div.news { background: url('/mypub/live/images/news.png') left top no-repeat }</pre>
<p>
and, according to your proxy settings or context path, this will end up as one of these:
</p>
<pre class="code">div.news { background: url('/lenya14/mypub/live/images/news.png') left top no-repeat }</pre>
<pre class="code">div.news { background: url('http://mysite.com/images/news.png') left top no-repeat }</pre>
<pre class="code">div.news { background: url('../images/news.png') left top no-repeat }</pre>
<p>
This operation cannot be performed by our standard XSLT transformer,
because a CSS file is not well-formed XML. The <a href="http://chaperon.sourceforge.net">Chaperon</a> transformer is
used instead.
</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/link-management.html">dev@lenya.apache.org</a>
</div>
<!--+
|end bottomstrip
+-->
</div>
</body>
</html>