You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by gr...@apache.org on 2005/04/24 16:10:32 UTC
svn commit: r164477 [1/3] - in /lenya/site: ./ 1_2_x/ 1_2_x/tutorial/
1_2_x/tutorial/images/ community/
Author: gregor
Date: Sun Apr 24 07:10:31 2005
New Revision: 164477
URL: http://svn.apache.org/viewcvs?rev=164477&view=rev
Log:
Added articles by Jon Linczak
Added:
lenya/site/1_2_x/tutorial/
lenya/site/1_2_x/tutorial/anatomy_of_the_pipeline.html (with props)
lenya/site/1_2_x/tutorial/anatomy_of_the_pipeline.pdf (with props)
lenya/site/1_2_x/tutorial/custom_navigation.html (with props)
lenya/site/1_2_x/tutorial/custom_navigation.pdf (with props)
lenya/site/1_2_x/tutorial/editing_in_lenya.html (with props)
lenya/site/1_2_x/tutorial/editing_in_lenya.pdf (with props)
lenya/site/1_2_x/tutorial/images/
lenya/site/1_2_x/tutorial/images/bxet.gif (with props)
lenya/site/1_2_x/tutorial/images/kuput.gif (with props)
lenya/site/1_2_x/tutorial/index.html (with props)
lenya/site/1_2_x/tutorial/index.pdf (with props)
lenya/site/1_2_x/tutorial/installing_lenya.html (with props)
lenya/site/1_2_x/tutorial/installing_lenya.pdf (with props)
lenya/site/1_2_x/tutorial/mod_proxy_and_lenya.html (with props)
lenya/site/1_2_x/tutorial/mod_proxy_and_lenya.pdf (with props)
lenya/site/1_2_x/tutorial/mod_proxy_and_lenya_continued.html (with props)
lenya/site/1_2_x/tutorial/mod_proxy_and_lenya_continued.pdf (with props)
lenya/site/1_2_x/tutorial/understanding_lenya.html (with props)
lenya/site/1_2_x/tutorial/understanding_lenya.pdf (with props)
Modified:
lenya/site/1_2_x/index.html
lenya/site/community/acknowledgements.html
lenya/site/community/acknowledgements.pdf
lenya/site/index.html
lenya/site/index.pdf
Modified: lenya/site/1_2_x/index.html
URL: http://svn.apache.org/viewcvs/lenya/site/1_2_x/index.html?rev=164477&r1=164476&r2=164477&view=diff
==============================================================================
--- lenya/site/1_2_x/index.html (original)
+++ lenya/site/1_2_x/index.html Sun Apr 24 07:10:31 2005
@@ -127,10 +127,37 @@
<a title="" href="../1_2_x/installation/source_version.html">Install Instructions</a>
</div>
</div>
-<div onclick="SwitchMenu('menu_1.1.3', '../skin/')" id="menu_1.1.3Title" class="menutitle">Components</div>
+<div onclick="SwitchMenu('menu_1.1.3', '../skin/')" id="menu_1.1.3Title" class="menutitle">Tutorial</div>
<div id="menu_1.1.3" class="menuitemgroup">
-<div onclick="SwitchMenu('menu_1.1.3.1', '../skin/')" id="menu_1.1.3.1Title" class="menutitle">Access Control</div>
-<div id="menu_1.1.3.1" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../1_2_x/tutorial/index.html">Introduction</a>
+</div>
+<div class="menuitem">
+<a title="" href="../1_2_x/tutorial/understanding_lenya.html">1. Understanding Lenya</a>
+</div>
+<div class="menuitem">
+<a title="" href="../1_2_x/tutorial/installing_lenya.html">2. Installing Lenya</a>
+</div>
+<div class="menuitem">
+<a title="" href="../1_2_x/tutorial/anatomy_of_the_pipeline.html">3. Anatomy of the Pipeline</a>
+</div>
+<div class="menuitem">
+<a title="" href="../1_2_x/tutorial/editing_in_lenya.html">4. Editing in Lenya</a>
+</div>
+<div class="menuitem">
+<a title="" href="../1_2_x/tutorial/custom_navigation.html">5. Custom Navigation in Lenya</a>
+</div>
+<div class="menuitem">
+<a title="" href="../1_2_x/tutorial/mod_proxy_and_lenya.html">6a. Mod Proxy and Lenya</a>
+</div>
+<div class="menuitem">
+<a title="" href="../1_2_x/tutorial/mod_proxy_and_lenya_continued.html">6b. Mod Proxy and Lenya</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4', '../skin/')" id="menu_1.1.4Title" class="menutitle">Components</div>
+<div id="menu_1.1.4" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.4.1', '../skin/')" id="menu_1.1.4.1Title" class="menutitle">Access Control</div>
+<div id="menu_1.1.4.1" class="menuitemgroup">
<div class="menuitem">
<a title="" href="../1_2_x/components/accesscontrol/terms.html">Basic Terms</a>
</div>
@@ -156,8 +183,8 @@
<a title="" href="../1_2_x/components/accesscontrol/ssl.html">SSL Encryption</a>
</div>
</div>
-<div onclick="SwitchMenu('menu_1.1.3.2', '../skin/')" id="menu_1.1.3.2Title" class="menutitle">Authoring</div>
-<div id="menu_1.1.3.2" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.4.2', '../skin/')" id="menu_1.1.4.2Title" class="menutitle">Authoring</div>
+<div id="menu_1.1.4.2" class="menuitemgroup">
<div class="menuitem">
<a title="" href="../1_2_x/components/authoring/adding-document-creator.html">Adding a new document creator</a>
</div>
@@ -168,14 +195,14 @@
<a title="" href="../1_2_x/components/authoring/openoffice.html">OpenOffice</a>
</div>
</div>
-<div onclick="SwitchMenu('menu_1.1.3.3', '../skin/')" id="menu_1.1.3.3Title" class="menutitle">Deployment</div>
-<div id="menu_1.1.3.3" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.4.3', '../skin/')" id="menu_1.1.4.3Title" class="menutitle">Deployment</div>
+<div id="menu_1.1.4.3" class="menuitemgroup">
<div class="menuitem">
<a title="" href="../1_2_x/components/deployment/proxying.html">Proxying</a>
</div>
</div>
-<div onclick="SwitchMenu('menu_1.1.3.4', '../skin/')" id="menu_1.1.3.4Title" class="menutitle">Editors</div>
-<div id="menu_1.1.3.4" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.4.4', '../skin/')" id="menu_1.1.4.4Title" class="menutitle">Editors</div>
+<div id="menu_1.1.4.4" class="menuitemgroup">
<div class="menuitem">
<a title="" href="../1_2_x/components/editors/htmlform.html">HTML Form Editor</a>
</div>
@@ -192,8 +219,8 @@
<a title="" href="../1_2_x/components/editors/xopus.html">Xopus</a>
</div>
</div>
-<div onclick="SwitchMenu('menu_1.1.3.5', '../skin/')" id="menu_1.1.3.5Title" class="menutitle">Layout</div>
-<div id="menu_1.1.3.5" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.4.5', '../skin/')" id="menu_1.1.4.5Title" class="menutitle">Layout</div>
+<div id="menu_1.1.4.5" class="menuitemgroup">
<div class="menuitem">
<a title="" href="../1_2_x/components/layout/navigation.html">Navigation</a>
</div>
@@ -207,8 +234,8 @@
<a title="" href="../1_2_x/components/layout/lenya-menubar.html">Lenya Menubar</a>
</div>
</div>
-<div onclick="SwitchMenu('menu_1.1.3.6', '../skin/')" id="menu_1.1.3.6Title" class="menutitle">Publication</div>
-<div id="menu_1.1.3.6" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.4.6', '../skin/')" id="menu_1.1.4.6Title" class="menutitle">Publication</div>
+<div id="menu_1.1.4.6" class="menuitemgroup">
<div class="menuitem">
<a title="" href="../1_2_x/components/publication/pageenvelopemodule.html">PageEnvelopeModule</a>
</div>
@@ -216,14 +243,14 @@
<a title="" href="../1_2_x/components/publication/siteTree.html">Site tree</a>
</div>
</div>
-<div onclick="SwitchMenu('menu_1.1.3.7', '../skin/')" id="menu_1.1.3.7Title" class="menutitle">Resource Types</div>
-<div id="menu_1.1.3.7" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.4.7', '../skin/')" id="menu_1.1.4.7Title" class="menutitle">Resource Types</div>
+<div id="menu_1.1.4.7" class="menuitemgroup">
<div class="menuitem">
<a title="" href="../1_2_x/components/resource-types/resource-types.html">Resource Types</a>
</div>
</div>
-<div onclick="SwitchMenu('menu_1.1.3.8', '../skin/')" id="menu_1.1.3.8Title" class="menutitle">Revision Control</div>
-<div id="menu_1.1.3.8" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.4.8', '../skin/')" id="menu_1.1.4.8Title" class="menutitle">Revision Control</div>
+<div id="menu_1.1.4.8" class="menuitemgroup">
<div class="menuitem">
<a title="" href="../1_2_x/components/revisioncontrol/revisioncontroller.html">Revision Controller</a>
</div>
@@ -243,20 +270,20 @@
<a title="" href="../1_2_x/components/revisioncontrol/rollback.html">Rollback</a>
</div>
</div>
-<div onclick="SwitchMenu('menu_1.1.3.9', '../skin/')" id="menu_1.1.3.9Title" class="menutitle">Repository</div>
-<div id="menu_1.1.3.9" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.4.9', '../skin/')" id="menu_1.1.4.9Title" class="menutitle">Repository</div>
+<div id="menu_1.1.4.9" class="menuitemgroup">
<div class="menuitem">
<a title="" href="../1_2_x/components/repository/webdav.html">WebDAV Servers</a>
</div>
</div>
-<div onclick="SwitchMenu('menu_1.1.3.10', '../skin/')" id="menu_1.1.3.10Title" class="menutitle">Search</div>
-<div id="menu_1.1.3.10" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.4.10', '../skin/')" id="menu_1.1.4.10Title" class="menutitle">Search</div>
+<div id="menu_1.1.4.10" class="menuitemgroup">
<div class="menuitem">
<a title="" href="../1_2_x/components/search/lucene.html">Searching with Lucene</a>
</div>
</div>
-<div onclick="SwitchMenu('menu_1.1.3.11', '../skin/')" id="menu_1.1.3.11Title" class="menutitle">URI Handling</div>
-<div id="menu_1.1.3.11" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.4.11', '../skin/')" id="menu_1.1.4.11Title" class="menutitle">URI Handling</div>
+<div id="menu_1.1.4.11" class="menuitemgroup">
<div class="menuitem">
<a title="" href="../1_2_x/components/uri-handling/URIParametrizer.html">URI Parametrizer</a>
</div>
@@ -267,32 +294,32 @@
<a title="" href="../1_2_x/components/uri-handling/usecases.html">Usecases</a>
</div>
</div>
-<div onclick="SwitchMenu('menu_1.1.3.12', '../skin/')" id="menu_1.1.3.12Title" class="menutitle">Asset Management</div>
-<div id="menu_1.1.3.12" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.4.12', '../skin/')" id="menu_1.1.4.12Title" class="menutitle">Asset Management</div>
+<div id="menu_1.1.4.12" class="menuitemgroup">
<div class="menuitem">
<a title="" href="../1_2_x/components/asset-management/management.html">Asset Management</a>
</div>
</div>
-<div onclick="SwitchMenu('menu_1.1.3.13', '../skin/')" id="menu_1.1.3.13Title" class="menutitle">Link Management</div>
-<div id="menu_1.1.3.13" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.4.13', '../skin/')" id="menu_1.1.4.13Title" class="menutitle">Link Management</div>
+<div id="menu_1.1.4.13" class="menuitemgroup">
<div class="menuitem">
<a title="" href="../1_2_x/components/link-management/link-management.html">Link Management</a>
</div>
</div>
-<div onclick="SwitchMenu('menu_1.1.3.14', '../skin/')" id="menu_1.1.3.14Title" class="menutitle">Meta Data</div>
-<div id="menu_1.1.3.14" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.4.14', '../skin/')" id="menu_1.1.4.14Title" class="menutitle">Meta Data</div>
+<div id="menu_1.1.4.14" class="menuitemgroup">
<div class="menuitem">
<a title="" href="../1_2_x/components/metadata/metadata.html">Meta Data Handling</a>
</div>
</div>
-<div onclick="SwitchMenu('menu_1.1.3.15', '../skin/')" id="menu_1.1.3.15Title" class="menutitle">Multilingual Documents</div>
-<div id="menu_1.1.3.15" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.4.15', '../skin/')" id="menu_1.1.4.15Title" class="menutitle">Multilingual Documents</div>
+<div id="menu_1.1.4.15" class="menuitemgroup">
<div class="menuitem">
<a title="" href="../1_2_x/components/multilingual/multilingual.html">Multilingual Document Handling</a>
</div>
</div>
-<div onclick="SwitchMenu('menu_1.1.3.16', '../skin/')" id="menu_1.1.3.16Title" class="menutitle">Tasks</div>
-<div id="menu_1.1.3.16" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.4.16', '../skin/')" id="menu_1.1.4.16Title" class="menutitle">Tasks</div>
+<div id="menu_1.1.4.16" class="menuitemgroup">
<div class="menuitem">
<a title="" href="../1_2_x/components/tasks/concept.html">The Task Concept</a>
</div>
@@ -305,8 +332,8 @@
<div class="menuitem">
<a title="" href="../1_2_x/components/tasks/scheduling.html">Scheduling a Task</a>
</div>
-<div onclick="SwitchMenu('menu_1.1.3.16.5', '../skin/')" id="menu_1.1.3.16.5Title" class="menutitle">Included tasks</div>
-<div id="menu_1.1.3.16.5" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.4.16.5', '../skin/')" id="menu_1.1.4.16.5Title" class="menutitle">Included tasks</div>
+<div id="menu_1.1.4.16.5" class="menuitemgroup">
<div class="menuitem">
<a title="" href="../1_2_x/components/tasks/anttask.html">AntTask</a>
</div>
@@ -324,8 +351,8 @@
<a title="" href="../1_2_x/components/tasks/development.html">Developing Tasks</a>
</div>
</div>
-<div onclick="SwitchMenu('menu_1.1.3.17', '../skin/')" id="menu_1.1.3.17Title" class="menutitle">Workflow</div>
-<div id="menu_1.1.3.17" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.4.17', '../skin/')" id="menu_1.1.4.17Title" class="menutitle">Workflow</div>
+<div id="menu_1.1.4.17" class="menuitemgroup">
<div class="menuitem">
<a title="" href="../1_2_x/components/workflow/terms.html">Terms</a>
</div>
@@ -339,8 +366,8 @@
<a title="" href="../1_2_x/components/workflow/implementation.html">Implementation</a>
</div>
</div>
-<div onclick="SwitchMenu('menu_1.1.3.18', '../skin/')" id="menu_1.1.3.18Title" class="menutitle">Site Management</div>
-<div id="menu_1.1.3.18" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.4.18', '../skin/')" id="menu_1.1.4.18Title" class="menutitle">Site Management</div>
+<div id="menu_1.1.4.18" class="menuitemgroup">
<div class="menuitem">
<a title="" href="../1_2_x/components/sitemanagement/archive.html">Archive</a>
</div>
@@ -370,8 +397,8 @@
</div>
</div>
</div>
-<div onclick="SwitchMenu('menu_1.1.4', '../skin/')" id="menu_1.1.4Title" class="menutitle">Miscellaneous</div>
-<div id="menu_1.1.4" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.5', '../skin/')" id="menu_1.1.5Title" class="menutitle">Miscellaneous</div>
+<div id="menu_1.1.5" class="menuitemgroup">
<div class="menuitem">
<a title="" href="../1_2_x/misc/namespaces.html">Namespaces</a>
</div>
Added: lenya/site/1_2_x/tutorial/anatomy_of_the_pipeline.html
URL: http://svn.apache.org/viewcvs/lenya/site/1_2_x/tutorial/anatomy_of_the_pipeline.html?rev=164477&view=auto
==============================================================================
--- lenya/site/1_2_x/tutorial/anatomy_of_the_pipeline.html (added)
+++ lenya/site/1_2_x/tutorial/anatomy_of_the_pipeline.html Sun Apr 24 07:10:31 2005
@@ -0,0 +1,702 @@
+<!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.6">
+<meta name="Forrest-skin-name" content="pelt">
+<title>Part 3: Anatomy of the pipeline</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="http://lenya.apache.org"><img class="logoImage" alt="Lenya" src="../../images/apache-lenya-light.png" title="
+ Apache Lenya is a Java-based Open-Source Content Management System.
+ It is based on open standards such as XML and XSLT.
+ One of its core components is Cocoon from the Apache Software Foundation.
+ "></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 :');" value="Search the site with :" size="25" name="q" id="query" type="text">
+ <input name="Search" value="Search" type="submit">
+</form>
+</div>
+<!--+
+ |end search
+ +-->
+<!--+
+ |start Tabs
+ +-->
+<ul id="tabs">
+<li>
+<a class="base-not-selected" href="../../index.html">Project</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../1_4/index.html">Version 1.4</a>
+</li>
+<li class="current">
+<a class="base-selected" href="../../1_2_x/index.html">Version 1.2</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../community/index.html">Community</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" language="JavaScript"><!--
+ document.write("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 1.2</div>
+<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a title="" href="../../1_2_x/index.html">Index</a>
+</div>
+<div onclick="SwitchMenu('menu_1.1.2', '../../skin/')" id="menu_1.1.2Title" class="menutitle">Installation</div>
+<div id="menu_1.1.2" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/installation/index.html">Download</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/installation/subversion.html">Subversion Access</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/installation/source_version.html">Install Instructions</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.1.3', '../../skin/')" id="menu_selected_1.1.3Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">Tutorial</div>
+<div id="menu_selected_1.1.3" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a title="" href="../../1_2_x/tutorial/index.html">Introduction</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/tutorial/understanding_lenya.html">1. Understanding Lenya</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/tutorial/installing_lenya.html">2. Installing Lenya</a>
+</div>
+<div class="menupage">
+<div class="menupagetitle">3. Anatomy of the Pipeline</div>
+<div class="menupageitemgroup">
+<div class="menupageitem">
+<a title="What are pipelines?" href="#what_are_pipelines">What are pipelines?...</a>
+</div>
+<div class="menupageitem">
+<a title="Minimum Requirements" href="#minimum_requirements">Minimum Requirement...</a>
+</div>
+<div class="menupageitem">
+<a title="How about something more usable?" href="#how_about_something_more_usable">How about something...</a>
+</div>
+<div class="menupageitem">
+<a title="The Lenya pipeline" href="#the_lenya_pipeline">The Lenya pipeline...</a>
+</div>
+<div class="menupageitem">
+<a href="#the_matcher">The Matcher</a>
+</div>
+<div class="menupageitem">
+<a href="#the_aggregator">The Aggregator</a>
+</div>
+<div class="menupageitem">
+<a href="#the_transformer">The Transformer</a>
+</div>
+<div class="menupageitem">
+<a href="#the_selector">The Selector</a>
+</div>
+<div class="menupageitem">
+<a href="#the_serializer">The Serializer</a>
+</div>
+<div class="menupageitem">
+<a href="#fin">Fin</a>
+</div>
+</div>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/tutorial/editing_in_lenya.html">4. Editing in Lenya</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/tutorial/custom_navigation.html">5. Custom Navigation in Lenya</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/tutorial/mod_proxy_and_lenya.html">6a. Mod Proxy and Lenya</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/tutorial/mod_proxy_and_lenya_continued.html">6b. Mod Proxy and Lenya</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4', '../../skin/')" id="menu_1.1.4Title" class="menutitle">Components</div>
+<div id="menu_1.1.4" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.4.1', '../../skin/')" id="menu_1.1.4.1Title" class="menutitle">Access Control</div>
+<div id="menu_1.1.4.1" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/accesscontrol/terms.html">Basic Terms</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/accesscontrol/accesscontrollers.html">Access Controllers</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/accesscontrol/accesscontrollerresolvers.html">Access Controller Resolvers</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/accesscontrol/authenticators.html">Authenticators</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/accesscontrol/authorizers.html">Authorizers</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/accesscontrol/policymanagers.html">Policies and Policy Managers</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/accesscontrol/accreditablemanagers.html">Accreditable Managers</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/accesscontrol/ssl.html">SSL Encryption</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.2', '../../skin/')" id="menu_1.1.4.2Title" class="menutitle">Authoring</div>
+<div id="menu_1.1.4.2" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/authoring/adding-document-creator.html">Adding a new document creator</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/authoring/image-upload.html">Image Upload</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/authoring/openoffice.html">OpenOffice</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.3', '../../skin/')" id="menu_1.1.4.3Title" class="menutitle">Deployment</div>
+<div id="menu_1.1.4.3" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/deployment/proxying.html">Proxying</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.4', '../../skin/')" id="menu_1.1.4.4Title" class="menutitle">Editors</div>
+<div id="menu_1.1.4.4" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/editors/htmlform.html">HTML Form Editor</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/editors/1form.html">HTML One Form Editor</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/editors/bxe.html">Bitflux Editor</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/editors/kupu.html">Kupu</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/editors/xopus.html">Xopus</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.5', '../../skin/')" id="menu_1.1.4.5Title" class="menutitle">Layout</div>
+<div id="menu_1.1.4.5" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/layout/navigation.html">Navigation</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/layout/xhtml-templating.html">XHTML templating</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/layout/static-resources.html">Serving static resources</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/layout/lenya-menubar.html">Lenya Menubar</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.6', '../../skin/')" id="menu_1.1.4.6Title" class="menutitle">Publication</div>
+<div id="menu_1.1.4.6" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/publication/pageenvelopemodule.html">PageEnvelopeModule</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/publication/siteTree.html">Site tree</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.7', '../../skin/')" id="menu_1.1.4.7Title" class="menutitle">Resource Types</div>
+<div id="menu_1.1.4.7" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/resource-types/resource-types.html">Resource Types</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.8', '../../skin/')" id="menu_1.1.4.8Title" class="menutitle">Revision Control</div>
+<div id="menu_1.1.4.8" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/revisioncontrol/revisioncontroller.html">Revision Controller</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/revisioncontrol/rcml.html">RCML</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/revisioncontrol/checkin.html">Check In</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/revisioncontrol/checkout.html">Check Out</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/revisioncontrol/version.html">Revisions</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/revisioncontrol/rollback.html">Rollback</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.9', '../../skin/')" id="menu_1.1.4.9Title" class="menutitle">Repository</div>
+<div id="menu_1.1.4.9" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/repository/webdav.html">WebDAV Servers</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.10', '../../skin/')" id="menu_1.1.4.10Title" class="menutitle">Search</div>
+<div id="menu_1.1.4.10" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/search/lucene.html">Searching with Lucene</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.11', '../../skin/')" id="menu_1.1.4.11Title" class="menutitle">URI Handling</div>
+<div id="menu_1.1.4.11" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/uri-handling/URIParametrizer.html">URI Parametrizer</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/uri-handling/standardURI.html">URI Scheme</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/uri-handling/usecases.html">Usecases</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.12', '../../skin/')" id="menu_1.1.4.12Title" class="menutitle">Asset Management</div>
+<div id="menu_1.1.4.12" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/asset-management/management.html">Asset Management</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.13', '../../skin/')" id="menu_1.1.4.13Title" class="menutitle">Link Management</div>
+<div id="menu_1.1.4.13" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/link-management/link-management.html">Link Management</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.14', '../../skin/')" id="menu_1.1.4.14Title" class="menutitle">Meta Data</div>
+<div id="menu_1.1.4.14" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/metadata/metadata.html">Meta Data Handling</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.15', '../../skin/')" id="menu_1.1.4.15Title" class="menutitle">Multilingual Documents</div>
+<div id="menu_1.1.4.15" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/multilingual/multilingual.html">Multilingual Document Handling</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.16', '../../skin/')" id="menu_1.1.4.16Title" class="menutitle">Tasks</div>
+<div id="menu_1.1.4.16" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/tasks/concept.html">The Task Concept</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/tasks/defining.html">Defining Tasks</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/tasks/taskaction.html">The TaskAction</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/tasks/scheduling.html">Scheduling a Task</a>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.16.5', '../../skin/')" id="menu_1.1.4.16.5Title" class="menutitle">Included tasks</div>
+<div id="menu_1.1.4.16.5" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/tasks/anttask.html">AntTask</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/tasks/publisher.html">DefaultFilePublisher</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/tasks/exporter.html">StaticHTMLExporter</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/tasks/mailtask.html">MailTask</a>
+</div>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/tasks/development.html">Developing Tasks</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.17', '../../skin/')" id="menu_1.1.4.17Title" class="menutitle">Workflow</div>
+<div id="menu_1.1.4.17" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/workflow/terms.html">Terms</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/workflow/state-machine.html">The State Machine</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/workflow/configuration.html">Configuration</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/workflow/implementation.html">Implementation</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.18', '../../skin/')" id="menu_1.1.4.18Title" class="menutitle">Site Management</div>
+<div id="menu_1.1.4.18" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/sitemanagement/archive.html">Archive</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/sitemanagement/copy.html">Copy</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/sitemanagement/deactivate.html">Deactivate</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/sitemanagement/delete.html">Delete</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/sitemanagement/deletetrash.html">Delete the trash</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/sitemanagement/move.html">Move</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/sitemanagement/moveupdown.html">Move Up/Down</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/sitemanagement/rename.html">Rename</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/sitemanagement/restore.html">Restore</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.5', '../../skin/')" id="menu_1.1.5Title" class="menutitle">Miscellaneous</div>
+<div id="menu_1.1.5" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/misc/namespaces.html">Namespaces</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/misc/coding-guidelines.html">Coding Guidelines</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/misc/unittests.html">Unit Tests</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/misc/xinclude-processor.html">XInclude Processor</a>
+</div>
+</div>
+<div class="menuitem">
+<a title="" href="../../../apidocs/1.2/index.html">1.2 API (Javadoc)</a>
+</div>
+</div>
+<div id="credit"></div>
+<div id="roundbottom">
+<img style="display: none" class="corner" height="15" width="15" alt="" src="../../skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
+<!--+
+ |alternative credits
+ +-->
+</div>
+<!--+
+ |end Menu
+ +-->
+<!--+
+ |start content
+ +-->
+<div id="content">
+<div id="skinconf-txtlink"></div>
+<div title="Portable Document Format" class="pdflink">
+<a class="dida" href="anatomy_of_the_pipeline.pdf"><img alt="PDF -icon" src="../../skin/images/pdfdoc.gif" class="skin"><br>
+ PDF</a>
+</div>
+<h1>Part 3: Anatomy of the pipeline</h1>
+
+<p>With Lenya installed, you're itching to figure out how to get around this thing so
+ you can start creating a website. But, you want to put it all together the way
+ you're used to. Well, bring out the frozen dinners, because this is not your
+ momma's cooking. Instead of opening up a file, adding our HTML, and throwing in
+ some CSS, we'll be working with pipelines, XML, XSLT to get the job done.</p>
+
+
+<a name="N10011"></a><a name="what_are_pipelines"></a>
+<h2 class="h3">What are pipelines?</h2>
+<div class="section">
+<p>Pipelines aren't a Lenya thing - it's a Cocoon thing. If you want to master Lenya,
+ you'll have to get your hands around Cocoon, and that's not an easy thing. Let me
+ remind you that the articles we write here are not because I'm an expert in Lenya or
+ Cocoon. Far from it. But, we have learned some things along the way that we see being
+ asked over and over, so we think it's important to keep the open-source spirit
+ alive and document what I've learned.</p>
+<p>OK, so back to pipelines. Pipelines are basically part of a set of items that can be
+ found in a sitemap of your publication, which include the components, views,
+ resources, etc. We'll save all those for another time. Pipelines are a way to
+ match a request coming to your publication and act on them in some way. So, for
+ example, if you are accessing a particular page within your publication using
+ your web browser, a pipeline can find a match for that request and possibly send
+ back a page for you to view.</p>
+</div>
+<a name="N1001C"></a><a name="minimum_requirements"></a>
+<h2 class="h3">Minimum Requirements</h2>
+<div class="section">
+<p>For a pipeline to work, you'll need to match an incoming request, generate
+ something to be used, and then send it back in a format that is recognizable and can
+ be dealt with easily. Here's an example pipeline:</p>
+<pre class="code">
+ 1. <map:pipeline>
+ 2. <map:match pattern="example">
+ 3. <map:generate type="file" src="example.xml"/>
+ 4. <map:serialize type="xml"/>
+ 5. </map:match>
+ 6. </map:pipeline>
+ </pre>
+<p>Let's walk through this line by line. Line 1 starts the definition of the pipeline.
+ Everything starts with "map:" because all of this XML is part of the map namespace
+ defined by Cocoon. Line 2 tries to match an incoming request to see if it looks like
+ "example". If it does, we keep going. If not, this pipeline gets skipped over.
+ Line 3 is the generator. In this case, we'll be generating "stuff" from a file, and
+ that file is example.xml. So, what do we do with this stuff inside the file? Well,
+ we need to send it back to the user making the request for "example" in something
+ they (or it) can understand. In line 4, we're doing just that by using a serializer
+ to take all that stuff in example.xml and sending back to the user as XML.</p>
+</div>
+<a name="N1002B"></a><a name="how_about_something_more_usable"></a>
+<h2 class="h3">How about something more usable?</h2>
+<div class="section">
+<p>OK, admittedly, that was a boring example. The file was already XML, so the only
+ thing the serializer did was probably add in our declaration at the top of the page
+ and send it back to the user. Let's add in some spice and relate it to web pages:</p>
+<pre class="code">
+ 1. <map:pipeline>
+ 2. <map:match pattern="test.html">
+ 3. <map:generate type="file" src="test.xml"/>
+ 4. <map:transform type="xslt" src="test2html.xsl"/>
+ 5. <map:serialize type="html"/>
+ 6. </map:match>
+ 7. </map:pipeline>
+ </pre>
+<p>OK, so here, we're trying to match the request for test.html. Now, keep in mind, it
+ could very well be that test.html doesn't exist (and in this case it doesn't).
+ That's OK - we're just matching requests for something, and in return, we can send
+ back whatever we like. Think of it as a virtual link to another file we're creating
+ on the fly.</p>
+<p>So, if we do match test.html, we'll grab the contents of the file test.xml, but
+ before we send it back, we'll transform that XML into something else using the
+ transformer (line 4). Using XSLT, we can convert that batch of XML into an HTML
+ page! That's done using the file test2html.xsl. When that's all said and done,
+ off we go to serialize it back to the user, but this time as HTML instead of XML.</p>
+<p>We won't have time to show you how the XSL transformation works, but we can throw you
+ over to
+ <a href="http://www.w3schools.com/xsl/xsl_languages.asp">
+ W3Schools</a> and they'll give you a nice intro.</p>
+</div>
+<a name="N10044"></a><a name="the_lenya_pipeline"></a>
+<h2 class="h3">The Lenya pipeline</h2>
+<div class="section">
+<p>So now that we know the basics, how does Lenya use the pipeline in creating it's
+ pages? Well, it's not too much different. While it looks more complicated, the
+ basics are still there.</p>
+<p>Below is the pipeline that is used in the publication-sitemap.xmap file in
+ Lenya's default publication:</p>
+<pre class="code">
+ 1. <map:pipeline>
+ 2. <!--/lenyabody-{rendertype}/{publication-id}/{area}/{doctype}/{url}-->
+ 3. <map:match pattern="lenyabody-*/*/*/*/**">
+ 4. <map:aggregate element="cmsbody">
+ 5. <map:part src="cocoon://navigation/{2}/{3}/breadcrumb/{5}.xml"/>
+ 6. <map:part src="cocoon://navigation/{2}/{3}/tabs/{5}.xml"/>
+ 7. <map:part src="cocoon://navigation/{2}/{3}/menu/{5}.xml"/>
+ 8. <map:part src="cocoon://navigation/{2}/{3}/search/{5}.xml"/>
+ 9. <map:part src="cocoon:/lenya-document-{1}/{3}/{4}/{page-envelope:document-path}"/>>
+ 10.</map:aggregate>
+ 11.<map:transform src="xslt/page2xhtml-{4}.xsl">
+ 12.<map:parameter name="root" value="{page-envelope:context-prefix}/{2}/{3}"/>
+ 13.<map:parameter name="url" value="{5}"/>
+ 14.<map:parameter name="document-id" value="{page-envelope:document-id}"/>
+ 15.<map:parameter name="document-type" value="{page-envelope:document-type}"/>
+ 16.</map:transform>
+ 17.<map:select type="parameter">
+ 18.<map:parameter name="parameter-selector-test" value="{1}"/>
+ 19.<map:when test="view">
+ 20.<map:transform type="link-rewrite"/>
+ 21.</map:when>
+ 22.</map:select>
+ 23.<map:serialize type="xml"/>
+ 24.</map:match>
+ 25.</map:pipeline>
+ </pre>
+<p>OK, yikes, we know what you're thinking. But seriously, it's not that bad. We still
+ open with a pipeline tag, we match something, we have this aggregation part which
+ I'll explain in a minute, we transform the results, and after another part I'll
+ explain, we serialize the results back the user. Let's start with the
+ matcher.</p>
+</div>
+<a name="N10056"></a><a name="the_matcher"></a>
+<h2 class="h3">The Matcher</h2>
+<div class="section">
+<p>So, um, what exactly are we matching? Without going into too much and getting you
+ swamped with terminology, we're basically trying to match a whole bunch of
+ things at once. The comment right above the matcher tries to tell you what each of
+ the asterisks are. There's the rendertype (whether you're viewing the page, or
+ editing it), the publication ID (which in this case is "default" for the Default
+ Publication), the area (it could be Authoring, or Live, or Admin, etc.), the
+ document type, and the actual URL of the document.</p>
+<p>The document type is pretty interesting. In XML, one document could be for
+ describing a shape, while another could be describing a set of books. It doesn't
+ have to be that way, though. For example, the "homepage" and "xhtml" doctypes
+ provided for you in Lenya are exactly the same, except there's another pipeline
+ that says the top index.html page of the publication will be assigned the doctype
+ of "homepage". It's handy because since most homepages have a different design
+ that the secondary or tertiary pages, you can use a different XSLT file to
+ transform it however you want without having to setup a new pipeline for it. Just
+ think of the possibilities with different doctypes...</p>
+</div>
+<a name="N10061"></a><a name="the_aggregator"></a>
+<h2 class="h3">The Aggregator</h2>
+<div class="section">
+<p>So, after we've matched all of those options (the asterisks mean anything and
+ everything), we get to this aggregate tag. Basically, it's a generator like we
+ saw in the previous examples, it's just aggregating the results of the
+ generation from all these sources together as one.</p>
+<p>So, Lenya separates out the menu (or navigation of the site), the tabs (all the
+ high-level items in the navigation), the breadcrumb trails on the pages, the
+ search box, and the actual content of the page into separate files. See all those
+ {2}'s, {3}'s, and {5}'s? Each one of those points to the value for that numbered
+ asterisk in the matcher. So, whatever happened to have been in the second
+ asterisk in the matcher, we use that in place of {2}. Simple, no?</p>
+</div>
+<a name="N1006C"></a><a name="the_transformer"></a>
+<h2 class="h3">The Transformer</h2>
+<div class="section">
+<p>The transformer is pretty straight-forward. We transform the results of all the
+ aggregated content using the file page2xhtml-{4}.xsl. Except, the {4} is
+ replaced with whatever was in the place of the fourth asterisk, or in this case,
+ the doctype. So, if our doctype was "homepage", we would transform our page using
+ the XSL file page2xhtml-homepage.xsl. If our doctype were "xhtml" (which is
+ what most of the pages are in Lenya), then you would transform it with
+ page2xhtml-xhtml.xsl. See how you can differentiate the design with different
+ transformations and doctypes?</p>
+<p>The parameters inside of the transform tag are basically setting up variables to
+ be passed to the XSL file. In this case, we're passing along the root location of
+ the publication (perhaps it's just a / in http://www.someplace.com/, for
+ example), the URL of the publication (like "some/where.html"), as well as the
+ document ID (the latter half of the URL without the .html extension), and the
+ doctype.</p>
+</div>
+<a name="N10077"></a><a name="the_selector"></a>
+<h2 class="h3">The Selector</h2>
+<div class="section">
+<p>We haven't seen this one yet, but think of the selector as an if/else statement. You
+ have to tell the selector what you are testing against, then test it against some
+ value, and do something. In this case, we're testing the rendertype (that's the
+ first asterisk, or {1}). If the rendertype is "view", as in we're viewing the page
+ and not editing it, then go through one more transformation, called
+ link-rewrite.</p>
+<p>The link-rewrite transformer basically checks where you are, then goes through
+ the contents of the page and rewrites all links in relation to what area you are in.
+ For example, if we are in the Authoring environment in Lenya, then our links could be
+ rewritten to look like "/lenya/default/authoring/some/where.html". If we are
+ in the Live area, they would be rewritten to look like
+ "/lenya/default/live/some/where.html". That way, you just keep track of the
+ organization of the site using the Site tab within Lenya, and Lenya will rewrite
+ your links according to what area you are in when viewing the page so that it all
+ just works!</p>
+</div>
+<a name="N10082"></a><a name="the_serializer"></a>
+<h2 class="h3">The Serializer</h2>
+<div class="section">
+<p>In the end, we serialize everything we've done into XML. So, why XML? Because it's
+ later on in the series of pipelines that the results are serialized again into
+ HTML (or XHTML, if you so choose).</p>
+</div>
+<a name="N1008A"></a><a name="fin"></a>
+<h2 class="h3">Fin</h2>
+<div class="section">
+<p>So hopefully that gets you cracking on understanding how Lenya is setup to handle
+ pages. There's no doubt we've exposed you to quite a bit that deserves more
+ explanation, and it will certainly come.</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-2005 The Apache Software Foundation.</div>
+<div id="feedback">
+ Send feedback about the website to:
+ <a id="feedbackto" href="mailto:dev@lenya.apache.org?subject=Feedback%C2%A0for%C2%A01_2_x/tutorial/anatomy_of_the_pipeline.html">dev@lenya.apache.org</a>
+</div>
+<!--+
+ |end bottomstrip
+ +-->
+</div>
+</body>
+</html>
Propchange: lenya/site/1_2_x/tutorial/anatomy_of_the_pipeline.html
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: lenya/site/1_2_x/tutorial/anatomy_of_the_pipeline.html
------------------------------------------------------------------------------
svn:mime-type = text/html
Added: lenya/site/1_2_x/tutorial/anatomy_of_the_pipeline.pdf
URL: http://svn.apache.org/viewcvs/lenya/site/1_2_x/tutorial/anatomy_of_the_pipeline.pdf?rev=164477&view=auto
==============================================================================
Binary file - no diff available.
Propchange: lenya/site/1_2_x/tutorial/anatomy_of_the_pipeline.pdf
------------------------------------------------------------------------------
svn:mime-type = application/pdf
Added: lenya/site/1_2_x/tutorial/custom_navigation.html
URL: http://svn.apache.org/viewcvs/lenya/site/1_2_x/tutorial/custom_navigation.html?rev=164477&view=auto
==============================================================================
--- lenya/site/1_2_x/tutorial/custom_navigation.html (added)
+++ lenya/site/1_2_x/tutorial/custom_navigation.html Sun Apr 24 07:10:31 2005
@@ -0,0 +1,720 @@
+<!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.6">
+<meta name="Forrest-skin-name" content="pelt">
+<title>Part 5: Custom Navigation in Lenya</title>
+<link type="text/css" href="../../skin/basic.css" rel="stylesheet">
+<link media="screen" type="text/css" href="../../skin/screen.css" rel="stylesheet">
+<link media="print" type="text/css" href="../../skin/print.css" rel="stylesheet">
+<link type="text/css" href="../../skin/profile.css" rel="stylesheet">
+<script src="../../skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="../../skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="../../skin/fontsize.js" language="javascript" type="text/javascript"></script>
+<link rel="shortcut icon" href="../../favicon.ico">
+</head>
+<body onload="init()">
+<script type="text/javascript">ndeSetTextSize();</script>
+<div id="top">
+<!--+
+ |breadtrail
+ +-->
+<div class="breadtrail">
+<a href="http://www.apache.org/">apache</a> > <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="http://lenya.apache.org"><img class="logoImage" alt="Lenya" src="../../images/apache-lenya-light.png" title="
+ Apache Lenya is a Java-based Open-Source Content Management System.
+ It is based on open standards such as XML and XSLT.
+ One of its core components is Cocoon from the Apache Software Foundation.
+ "></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 :');" value="Search the site with :" size="25" name="q" id="query" type="text">
+ <input name="Search" value="Search" type="submit">
+</form>
+</div>
+<!--+
+ |end search
+ +-->
+<!--+
+ |start Tabs
+ +-->
+<ul id="tabs">
+<li>
+<a class="base-not-selected" href="../../index.html">Project</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../1_4/index.html">Version 1.4</a>
+</li>
+<li class="current">
+<a class="base-selected" href="../../1_2_x/index.html">Version 1.2</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../community/index.html">Community</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" language="JavaScript"><!--
+ document.write("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 1.2</div>
+<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a title="" href="../../1_2_x/index.html">Index</a>
+</div>
+<div onclick="SwitchMenu('menu_1.1.2', '../../skin/')" id="menu_1.1.2Title" class="menutitle">Installation</div>
+<div id="menu_1.1.2" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/installation/index.html">Download</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/installation/subversion.html">Subversion Access</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/installation/source_version.html">Install Instructions</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.1.3', '../../skin/')" id="menu_selected_1.1.3Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">Tutorial</div>
+<div id="menu_selected_1.1.3" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a title="" href="../../1_2_x/tutorial/index.html">Introduction</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/tutorial/understanding_lenya.html">1. Understanding Lenya</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/tutorial/installing_lenya.html">2. Installing Lenya</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/tutorial/anatomy_of_the_pipeline.html">3. Anatomy of the Pipeline</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/tutorial/editing_in_lenya.html">4. Editing in Lenya</a>
+</div>
+<div class="menupage">
+<div class="menupagetitle">5. Custom Navigation in Lenya</div>
+<div class="menupageitemgroup">
+<div class="menupageitem">
+<a title="Customizing Lenya
+ navigation items" href="#customizing_lenya_navigation_items">Customizing Lenya
+ ...</a>
+</div>
+<div class="menupageitem">
+<a title="Understanding
+ the site tree" href="#understanding_the_site_tree">Understanding
+ ...</a>
+</div>
+<div class="menupageitem">
+<a title="The nav:
+ namespace" href="#the_nav_namespace">The nav:
+ na...</a>
+</div>
+<div class="menupageitem">
+<a title="Using your
+ new-found knowledge" href="#Using_your_new-found_knowledge">Using your
+ ...</a>
+</div>
+<div class="menupageitem">
+<a href="#give_it_a_try">Give it a try</a>
+</div>
+</div>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/tutorial/mod_proxy_and_lenya.html">6a. Mod Proxy and Lenya</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/tutorial/mod_proxy_and_lenya_continued.html">6b. Mod Proxy and Lenya</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4', '../../skin/')" id="menu_1.1.4Title" class="menutitle">Components</div>
+<div id="menu_1.1.4" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.4.1', '../../skin/')" id="menu_1.1.4.1Title" class="menutitle">Access Control</div>
+<div id="menu_1.1.4.1" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/accesscontrol/terms.html">Basic Terms</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/accesscontrol/accesscontrollers.html">Access Controllers</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/accesscontrol/accesscontrollerresolvers.html">Access Controller Resolvers</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/accesscontrol/authenticators.html">Authenticators</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/accesscontrol/authorizers.html">Authorizers</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/accesscontrol/policymanagers.html">Policies and Policy Managers</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/accesscontrol/accreditablemanagers.html">Accreditable Managers</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/accesscontrol/ssl.html">SSL Encryption</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.2', '../../skin/')" id="menu_1.1.4.2Title" class="menutitle">Authoring</div>
+<div id="menu_1.1.4.2" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/authoring/adding-document-creator.html">Adding a new document creator</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/authoring/image-upload.html">Image Upload</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/authoring/openoffice.html">OpenOffice</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.3', '../../skin/')" id="menu_1.1.4.3Title" class="menutitle">Deployment</div>
+<div id="menu_1.1.4.3" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/deployment/proxying.html">Proxying</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.4', '../../skin/')" id="menu_1.1.4.4Title" class="menutitle">Editors</div>
+<div id="menu_1.1.4.4" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/editors/htmlform.html">HTML Form Editor</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/editors/1form.html">HTML One Form Editor</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/editors/bxe.html">Bitflux Editor</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/editors/kupu.html">Kupu</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/editors/xopus.html">Xopus</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.5', '../../skin/')" id="menu_1.1.4.5Title" class="menutitle">Layout</div>
+<div id="menu_1.1.4.5" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/layout/navigation.html">Navigation</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/layout/xhtml-templating.html">XHTML templating</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/layout/static-resources.html">Serving static resources</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/layout/lenya-menubar.html">Lenya Menubar</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.6', '../../skin/')" id="menu_1.1.4.6Title" class="menutitle">Publication</div>
+<div id="menu_1.1.4.6" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/publication/pageenvelopemodule.html">PageEnvelopeModule</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/publication/siteTree.html">Site tree</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.7', '../../skin/')" id="menu_1.1.4.7Title" class="menutitle">Resource Types</div>
+<div id="menu_1.1.4.7" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/resource-types/resource-types.html">Resource Types</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.8', '../../skin/')" id="menu_1.1.4.8Title" class="menutitle">Revision Control</div>
+<div id="menu_1.1.4.8" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/revisioncontrol/revisioncontroller.html">Revision Controller</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/revisioncontrol/rcml.html">RCML</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/revisioncontrol/checkin.html">Check In</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/revisioncontrol/checkout.html">Check Out</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/revisioncontrol/version.html">Revisions</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/revisioncontrol/rollback.html">Rollback</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.9', '../../skin/')" id="menu_1.1.4.9Title" class="menutitle">Repository</div>
+<div id="menu_1.1.4.9" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/repository/webdav.html">WebDAV Servers</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.10', '../../skin/')" id="menu_1.1.4.10Title" class="menutitle">Search</div>
+<div id="menu_1.1.4.10" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/search/lucene.html">Searching with Lucene</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.11', '../../skin/')" id="menu_1.1.4.11Title" class="menutitle">URI Handling</div>
+<div id="menu_1.1.4.11" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/uri-handling/URIParametrizer.html">URI Parametrizer</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/uri-handling/standardURI.html">URI Scheme</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/uri-handling/usecases.html">Usecases</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.12', '../../skin/')" id="menu_1.1.4.12Title" class="menutitle">Asset Management</div>
+<div id="menu_1.1.4.12" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/asset-management/management.html">Asset Management</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.13', '../../skin/')" id="menu_1.1.4.13Title" class="menutitle">Link Management</div>
+<div id="menu_1.1.4.13" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/link-management/link-management.html">Link Management</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.14', '../../skin/')" id="menu_1.1.4.14Title" class="menutitle">Meta Data</div>
+<div id="menu_1.1.4.14" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/metadata/metadata.html">Meta Data Handling</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.15', '../../skin/')" id="menu_1.1.4.15Title" class="menutitle">Multilingual Documents</div>
+<div id="menu_1.1.4.15" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/multilingual/multilingual.html">Multilingual Document Handling</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.16', '../../skin/')" id="menu_1.1.4.16Title" class="menutitle">Tasks</div>
+<div id="menu_1.1.4.16" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/tasks/concept.html">The Task Concept</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/tasks/defining.html">Defining Tasks</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/tasks/taskaction.html">The TaskAction</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/tasks/scheduling.html">Scheduling a Task</a>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.16.5', '../../skin/')" id="menu_1.1.4.16.5Title" class="menutitle">Included tasks</div>
+<div id="menu_1.1.4.16.5" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/tasks/anttask.html">AntTask</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/tasks/publisher.html">DefaultFilePublisher</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/tasks/exporter.html">StaticHTMLExporter</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/tasks/mailtask.html">MailTask</a>
+</div>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/tasks/development.html">Developing Tasks</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.17', '../../skin/')" id="menu_1.1.4.17Title" class="menutitle">Workflow</div>
+<div id="menu_1.1.4.17" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/workflow/terms.html">Terms</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/workflow/state-machine.html">The State Machine</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/workflow/configuration.html">Configuration</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/workflow/implementation.html">Implementation</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.4.18', '../../skin/')" id="menu_1.1.4.18Title" class="menutitle">Site Management</div>
+<div id="menu_1.1.4.18" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/sitemanagement/archive.html">Archive</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/sitemanagement/copy.html">Copy</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/sitemanagement/deactivate.html">Deactivate</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/sitemanagement/delete.html">Delete</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/sitemanagement/deletetrash.html">Delete the trash</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/sitemanagement/move.html">Move</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/sitemanagement/moveupdown.html">Move Up/Down</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/sitemanagement/rename.html">Rename</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/components/sitemanagement/restore.html">Restore</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.5', '../../skin/')" id="menu_1.1.5Title" class="menutitle">Miscellaneous</div>
+<div id="menu_1.1.5" class="menuitemgroup">
+<div class="menuitem">
+<a title="" href="../../1_2_x/misc/namespaces.html">Namespaces</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/misc/coding-guidelines.html">Coding Guidelines</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/misc/unittests.html">Unit Tests</a>
+</div>
+<div class="menuitem">
+<a title="" href="../../1_2_x/misc/xinclude-processor.html">XInclude Processor</a>
+</div>
+</div>
+<div class="menuitem">
+<a title="" href="../../../apidocs/1.2/index.html">1.2 API (Javadoc)</a>
+</div>
+</div>
+<div id="credit"></div>
+<div id="roundbottom">
+<img style="display: none" class="corner" height="15" width="15" alt="" src="../../skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
+<!--+
+ |alternative credits
+ +-->
+</div>
+<!--+
+ |end Menu
+ +-->
+<!--+
+ |start content
+ +-->
+<div id="content">
+<div id="skinconf-txtlink"></div>
+<div title="Portable Document Format" class="pdflink">
+<a class="dida" href="custom_navigation.pdf"><img alt="PDF -icon" src="../../skin/images/pdfdoc.gif" class="skin"><br>
+ PDF</a>
+</div>
+<h1>Part 5: Custom Navigation in Lenya</h1>
+
+<p>OK, so you have the basics: you know how to install Lenya, you understand it's
+ approach to content management, you understand the pipeline bit, and you know
+ how to edit existing documents. Through playing around, you probably now know
+ how to make new pages, and create the content hierarchy for your site. Now the
+ question becomes, how do we customize the navigation to be marked up the way you
+ want.</p>
+
+
+<a name="N10011"></a><a name="customizing_lenya_navigation_items"></a>
+<h2 class="h3">Customizing Lenya
+ navigation items</h2>
+<div class="section">
+<p>In order to understand customizing navigation items in Lenya, you'll need to
+ understand where that's possible. In the default publication's root
+ directory, you'll see a directory called 'lenya'. It's here where you can
+ add folders and files that override the global defaults set aside for all of
+ Lenya.</p>
+<p>One of the directories is 'navigation'. In there, you'll most likely see a
+ file called tabs.xsl. This is a customized version of the tabs just for the
+ default publication. But you can do others. Here's the list of the file names
+ you can add in the 'navigation' folder that will override the global
+ files:</p>
+<table class="ForrestTable" cellspacing="1" cellpadding="4">
+
+<tr>
+
+<td colspan="1" rowspan="1">breadcrumb.xsl</td>
+ <td colspan="1" rowspan="1">The breadcrumb trails at the top of the page
+ (e.g. Home > Products > Furniture)</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1">menu.xsl</td>
+ <td colspan="1" rowspan="1">The menu at the left of the pages (in the
+ default publication, for example)</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1">tabs.xsl</td>
+ <td colspan="1" rowspan="1">The tabs at the top of the page (in the
+ default publication, they are the highest levels of nav on the
+ site)</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1">search.xsl</td>
+ <td colspan="1" rowspan="1">The search box on the site</td>
+
+</tr>
+
+</table>
+<p>There are others, but these will do for now. You can check out what the
+ originals are in
+ /usr/local/tomcat/webapps/lenya/lenya/xslt/navigation/. It
+ requires some understanding XSLT, which is again beyond the scope of this
+ article.
+ <a href="http://www.w3schools.com/xsl/default.asp">W3Schools</a>
+ has a nice place to learn XSLT quickly.</p>
+<p>We're going to take a look at the sitetree structure to find out what you're
+ capable of knowing about an item in the navigation of the site, then do a quick
+ example of how to create your own menu.</p>
+</div>
+<a name="N1005D"></a><a name="understanding_the_site_tree"></a>
+<h2 class="h3">Understanding
+ the site tree</h2>
+<div class="section">
+<p>The site tree is the place where all the "nodes", or pages in your publication are
+ stored, preserving the hierarchy. The XML file can be found by going to the
+ content/authoring/ directory in the default publication and viewing the
+ sitetree.xml file. Let's take a look at a chunk:</p>
+<pre class="code">
+ <site>
+ <node id="index">
+ <label xml:lang="en">Home</label>
+ <label xml:lang="de">Home</label>
+ </node>
+
+ <node id="tutorial">
+ <label xml:lang="en">Tutorial</label>
+ <label xml:lang="de">Tutorial</label>
+
+ <node id="new_doctype">
+ <label xml:lang="en">Create new doctype</label>
+ </node>
+ </node>
+ </site>
+ </pre>
+<p>The above tells us that each page is characterized by a <node> tag. Each
+ <node> tag has an "id" attribute, which is the name of the document. So, if
+ this publication's address were http://www.someplace.com/, then the ID for
+ the second node would make the address to page
+ http://www.someplace.com/tutorial.html.</p>
+<p>Each node has an inner element called <label>. The label tag's contents are
+ the navigation title for the page. It's the link to the page that you see in menu of
+ the site. The xml:lang attribute signifies the language for this label, and as
+ you can see, this site has multiple supported languages: "en" for English, and
+ "de" for German.</p>
+<p>Nodes can be inside other nodes. In the example above, the "new_doctype" node is
+ inside the "tutorial" node. This means that the "tutorial" page is a parent of the
+ "new_doctype" page, so they fall underneath each other like so:</p>
+<pre class="code">
+ 1. Home
+ 2. Tutorial
+ a. Create new doctype
+ </pre>
+<p>Order is also important - the order of the nodes in the sitetree file is the order in
+ which the pages are displayed in the hierarchy of the site.</p>
+</div>
+<a name="N10079"></a><a name="the_nav_namespace"></a>
+<h2 class="h3">The nav:
+ namespace</h2>
+<div class="section">
+<p>An XML namespace was created for users to grab these nodes with the appropriate
+ information. So, for example, you can reference a node in your XSL using
+ nav:node. Once you reference the node, you can reference it's label too:
+ nav:label. There's some other items you can reference when you are pointing at a
+ specific node:</p>
+<table class="ForrestTable" cellspacing="1" cellpadding="4">
+
+<tr>
+
+<td colspan="1" rowspan="1">@href</td>
+ <td colspan="1" rowspan="1">The location of the page relative to where you
+ are currently in the site</td>
+
+</tr>
+
+
+<tr>
+
+<td colspan="1" rowspan="1">@current</td>
+ <td colspan="1" rowspan="1">A true or false value is possible to determine
+ whether or not the page you are on is the node you are referencing</td>
+
+</tr>
+
+<tr>
+
+<td colspan="1" rowspan="1">@visibleinnav</td>
+ <td colspan="1" rowspan="1">Another true/false value given if the page had
+ been labeled as visible in the navigation</td>
+
+
+</tr>
+
+</table>
+<p>Hiding navigation items can be helpful for situations like form
+ submission/confirmation pages. You don't want the user to go to that page right
+ away from within the site's menu, so you hide it, letting the programming of the
+ form's input redirect the user to that page instead. Other examples abound.</p>
+</div>
+<a name="N100AE"></a><a name="Using_your_new-found_knowledge"></a>
+<h2 class="h3">Using your
+ new-found knowledge</h2>
+<div class="section">
+<p>Let's try putting together a simple menu.xsl file that creates our own simple
+ markup. The contents are below:</p>
+<pre class="code">
+ <?xml version="1.0" encoding="UTF-8" ?>
+
+ <xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:nav="http://apache.org/cocoon/lenya/navigation/1.0"
+ xmlns="http://www.w3.org/1999/xhtml"
+ exclude-result-prefixes="nav">
+
+ <xsl:template match="nav:site">
+
+ <ul>
+
+ <!-- loop through all top-level items and return as list items -->
+ <xsl:for-each select="/*/nav:node[@visibleinnav = 'true']">
+ <xsl:when test="@current = 'true'">
+ <li class="current"><a href="{@href}"><xsl:apply-templates select="nav:label"/></a></li>
+ </xsl:when>
+ <xsl:otherwise>
+ <li><a href="{@href}"><xsl:apply-templates select="nav:label"/></a></li>
+ </xsl:otherwise>
+ </xsl:for-each>
+
+ </ul>
+ </xsl:template>
+
+ <xsl:template match="nav:label">
+ <xsl:value-of select="."/>
+ </xsl:template>
+
+ </xsl:stylesheet>
+ </pre>
+<p>OK, so let's dissect this one. You always start with your XML prologue and
+ stylesheet tags (notice how the root stylesheet tag references the nav
+ namespace?). Then, one template is created to match the <site> tag -
+ that's the root tag that wraps around all the <node> tags in our
+ sitetree.xml file.</p>
+<p>We open up the unordered list, and then we'll just loop through the top-level
+ navigation items on the site. The '/*/nav:node' part of the for-each loop steps
+ down into the site tag that you just matched (/*), and then through the nodes
+ underneath the site tag (/nav:node). Note that this is only the top level nodes,
+ not all the parents and children! Read up on
+ <a href="http://www.w3schools.com/xsl/default.asp">XSLT</a> and
+ <a href="http://www.w3schools.com/xpath/default.asp">XPath</a> to
+ better understand how this notation works.</p>
+<p>For each top-level item, we test to see that node happens to be the page we are
+ looking at right now (@current = 'true'). If it is, then we open up our list tag and
+ assign it the class of "current". Your CSS can then be created to give some special
+ styling to that list item.</p>
+<p>Once the list item is created, we need the link. The address for the link tag is
+ gathered from our handy @href. The text for the link will be the label of the node.
+ So, we call out another template shown at the bottom of our example menu.xsl file
+ where it basically just grabs the value of the contents inside the <label>
+ tags in the sitetree.xml file. We close the the link and the list items.</p>
+<p>Of course, if this isn't the page we are on, then we do the same thing but don't add in
+ our special class. Simple, no?</p>
+</div>
+<a name="N100D1"></a><a name="give_it_a_try"></a>
+<h2 class="h3">Give it a try</h2>
+<div class="section">
+<p>You now pretty much have the basics for putting together your own custom
+ navigation. There are those that feel our methods for generating the menus are
+ incorrect and that we should grab the nodes that we need in one fell swoop instead of
+ looping through each one, but this was the only method we could find where wewould
+ achieve the coding standards we wanted. Go experiment and have fun!</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-2005 The Apache Software Foundation.</div>
+<div id="feedback">
+ Send feedback about the website to:
+ <a id="feedbackto" href="mailto:dev@lenya.apache.org?subject=Feedback%C2%A0for%C2%A01_2_x/tutorial/custom_navigation.html">dev@lenya.apache.org</a>
+</div>
+<!--+
+ |end bottomstrip
+ +-->
+</div>
+</body>
+</html>
Propchange: lenya/site/1_2_x/tutorial/custom_navigation.html
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: lenya/site/1_2_x/tutorial/custom_navigation.html
------------------------------------------------------------------------------
svn:mime-type = text/html
Added: lenya/site/1_2_x/tutorial/custom_navigation.pdf
URL: http://svn.apache.org/viewcvs/lenya/site/1_2_x/tutorial/custom_navigation.pdf?rev=164477&view=auto
==============================================================================
Binary file - no diff available.
Propchange: lenya/site/1_2_x/tutorial/custom_navigation.pdf
------------------------------------------------------------------------------
svn:mime-type = application/pdf
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org