svn commit: r627209 - in /lenya/sandbox/modules/docustyle: resources/css/page.css sitemap.xmap xslt/addDocumentInclude.xsl xslt/addNavIncludes.xsl xslt/afterCache.xsl xslt/beforeCache.xsl xslt/page2xhtml.xsl

[email protected]
Newsgroups gmane.comp.cms.lenya.cvs
Message-ID <[email protected]>
Author: andreas
Date: Tue Feb 12 16:58:22 2008
New Revision: 627209

URL: http://svn.apache.org/viewvc?rev=627209&view=rev
Log:
Updating docu pub style and pipeline architecture.

Added:
    lenya/sandbox/modules/docustyle/xslt/addDocumentInclude.xsl
    lenya/sandbox/modules/docustyle/xslt/addNavIncludes.xsl
    lenya/sandbox/modules/docustyle/xslt/afterCache.xsl
    lenya/sandbox/modules/docustyle/xslt/beforeCache.xsl
Removed:
    lenya/sandbox/modules/docustyle/xslt/page2xhtml.xsl
Modified:
    lenya/sandbox/modules/docustyle/resources/css/page.css
    lenya/sandbox/modules/docustyle/sitemap.xmap

Modified: lenya/sandbox/modules/docustyle/resources/css/page.css
URL: http://svn.apache.org/viewvc/lenya/sandbox/modules/docustyle/resources/css/page.css?rev=627209&r1=627208&r2=627209&view=diff
==============================================================================
--- lenya/sandbox/modules/docustyle/resources/css/page.css (original)
+++ lenya/sandbox/modules/docustyle/resources/css/page.css Tue Feb 12 16:58:22 2008
@@ -41,7 +41,6 @@
 }
 
 #projectLogo, #tagline {
-  display: table-cell;
   vertical-align: bottom;
 }
 
@@ -103,22 +102,13 @@
 
 /* menu */
 
-#menu, #body {
-  display: table-cell;
-  vertical-align: top;
-  background-color: white;
-}
-
 #menu {
-  width: 160px;
+  float: left;
+  width: 180px;
   list-style-type: none;
-  padding: 3em 20px .5em 20px;
-  margin: 0 0 0 21px;
+  padding: 3em 0 .5em 20px;
+  margin: 0;
   font-size: 10pt;
-  /*
-  background-color: #EEEEEE;
-  border-right: 5px solid #EEEEEE;
-  */
 }
 
 #menu ul {
@@ -229,6 +219,7 @@
 #body {
   border: none;
   padding: 1em 2em 1em 0;
+  margin: 0 0 0 200px;
   font-size: 10pt;
 }
 
@@ -240,7 +231,7 @@
 }
 
 #main {
-  clear: left;
+  background-color: #FFFFFF;
 }
 
 .crossheading {

Modified: lenya/sandbox/modules/docustyle/sitemap.xmap
URL: http://svn.apache.org/viewvc/lenya/sandbox/modules/docustyle/sitemap.xmap?rev=627209&r1=627208&r2=627209&view=diff
==============================================================================
--- lenya/sandbox/modules/docustyle/sitemap.xmap (original)
+++ lenya/sandbox/modules/docustyle/sitemap.xmap Tue Feb 12 16:58:22 2008
@@ -72,66 +72,26 @@
       
     </map:pipeline>
     
-    
-    <map:pipeline type="caching">
-      
-      <!-- {1:rendertype}/{2:pub}/{3:area}/{4:path} -->
-      <map:match pattern="document-content/*/*/*/**">
-        <map:act type="language-exists">
-          <map:generate src="{resource-type:format-xhtml}?rendertype={../1}"/>
-          <map:serialize type="xml"/>
-        </map:act>
-        <!-- if the action fails (i.e. the document does not exist), create a nice error page. -->
-        <map:generate type="serverpages" src="fallback://lenya/content/exception/document-does-not-exist.xsp"/>
-        <map:transform src="fallback://lenya/xslt/exception/document-does-not-exist.xsl">
-          <map:parameter name="requestUrl" value="{request:requestURI}"/>
-          <map:parameter name="contextPath" value="{request:contextPath}"/>
-          <map:parameter name="pub" value="{2}"/>
-          <map:parameter name="path" value="/{4}"/>
-          <map:parameter name="area" value="{3}"/>
+    <map:pipeline>
+      <!-- Cacheable pipeline. -->
+      <!-- {1:pub}/{2:area}/{3:uuid}/{4:defaultLang}/{5:lang}/{6:path} -->
+      <map:match pattern="pageContext/*/*/*/*/*/**">
+        <map:generate src="fallback://lenya/content/util/empty.xml"/>
+        <map:transform src="fallback://lenya/modules/docustyle/xslt/beforeCache.xsl">
+          <map:parameter name="pub" value="{1}"/>
+          <map:parameter name="area" value="{2}"/>
+          <map:parameter name="uuid" value="{3}"/>
+          <map:parameter name="language" value="{5}"/>
         </map:transform>
-        <map:transform type="i18n">
-          <map:parameter name="locale" value="{page-envelope:language}"/>
+        <map:transform src="fallback://lenya/modules/docustyle/xslt/addNavIncludes.xsl">
+          <map:parameter name="params" value="{1}/{2}/{4}/{5}/{6}"/>
         </map:transform>
+        <map:transform type="include"/>
         <map:serialize type="xml"/>
       </map:match>
-      
-      <!-- 
-        This matcher aggregates the Lenya page: breadcrumbs, tabs, menu etc. and the actual document content.
-        /lenyabody-raw-{1:rendertype}/{2:publication-id}/{3:area}/{4:doctype}/{5:default-language}/{6:language}/{7:path} 
-      -->
-      <map:match pattern="lenyabody-raw-*/*/*/*/*/*/**">
-        <map:aggregate element="cmsbody">
-          <map:part src="cocoon://modules/sitetree/breadcrumb/{2}/{3}/{5}/{6}/{7}.xml"/>
-          <map:part src="cocoon://modules/sitetree/tabs/{2}/{3}/{5}/{6}/{7}.xml"/>
-          <map:part src="cocoon://modules/sitetree/menu/{2}/{3}/{5}/{6}/{7}.xml"/>
-          <map:part src="cocoon://modules/sitetree/search/{2}/{3}/{5}/{6}/{7}.xml"/>
-          <map:part src="cocoon:/document-content/{1}/{2}/{3}/{7}"/>
-        </map:aggregate>
-        <map:serialize type="xml"/>
-      </map:match>
-      
-      <!--
-        This match provides the XSLT to render a given doctype to XHTML
-        It checks for the existence of a doctype-specific one, and if none
-        exists, falls back to the default one.
-        /getDoctypeXSLT/{1:doctype}
-      -->
-      <map:match pattern="getDoctypeXSLT/*">
-        <map:select type="resource-exists">
-          <map:parameter name="prefix" value="fallback://"/>
-          <map:when test="fallback://lenya/modules/docustyle/xslt/page2xhtml-{1}.xsl">
-            <map:generate src="fallback://lenya/modules/docustyle/xslt/page2xhtml-{1}.xsl"/>
-          </map:when>
-          <map:otherwise>
-            <map:generate src="fallback://lenya/modules/docustyle/xslt/page2xhtml.xsl"/>
-          </map:otherwise>
-        </map:select>
-        <map:serialize type="xml"/>
-      </map:match>
-      
     </map:pipeline>
     
+    
     <!-- This is the pipeline that ultimately builds the page. -->
     <map:pipeline type="noncaching">
       
@@ -139,32 +99,26 @@
         This matcher takes the raw aggregated page content and applies SVG rendering and a doctype-specific
         XSL transformation. It makes some meta information available to the XSLT, and demonstrates the use
         of the LenyaMetaDataTransformer (see below).
-        /lenyabody-{1:rendertype}/{2:publication-id}/{3:area}/{4:doctype}/{5:path} 
+        /page/{1:publication-id}/{2:area}/{3:uuid}/{4:language}
       -->
-      <map:match pattern="lenyabody-*/*/*/*/**">
-        <map:generate src="cocoon:/lenyabody-raw-{1}/{2}/{3}/{4}/{page-envelope:default-language}/{page-envelope:document-language}/{5}"/>
-        <map:transform src="fallback://lenya/modules/svg/xslt/image2svg.xsl"/>
-        <map:transform src="cocoon:/getDoctypeXSLT/{4}">
-          <map:parameter name="root" value="/{2}/{3}"/>
-          <map:parameter name="publication-id" value="{2}"/>
-          <map:parameter name="area" value="{3}"/>
-          <map:parameter name="url" value="{page-envelope:document-url}"/>
-          <map:parameter name="document-path" value="{page-envelope:document-path}"/>
-          <map:parameter name="document-type" value="{4}"/>
-          <map:parameter name="language" value="{page-envelope:document-language}"/>
-          <map:parameter name="contextprefix" value="{request:contextPath}"/>
+      <map:match pattern="page/*/*/*/*">
+        <map:generate src="cocoon:/pageContext/{1}/{2}/{3}/{page-envelope:default-language}/{4}{page-envelope:document-path}"/>
+        <map:transform src="fallback://lenya/modules/docustyle/xslt/afterCache.xsl">
+          <map:parameter name="pub" value="{1}"/>
+          <map:parameter name="area" value="{2}"/>
+          <map:parameter name="uuid" value="{3}"/>
+          <map:parameter name="language" value="{4}"/>
           <map:parameter name="lastPublishedUser" value="{access-control:user-name:{workflow:lastUser.publish}}"/>
           <map:parameter name="lastPublishedDate" value="{workflow:lastDate.publish}"/>
-          <!-- Following is a show off to explain lenya.properties.xml -->
-          <map:parameter name="author" value="{properties:pubs.default.author}"/>
-          <map:parameter name="nodeName" value="{page-envelope:document-name}"/>
         </map:transform>
+        <map:transform type="include"/>
+        <map:transform src="fallback://lenya/modules/svg/xslt/image2svg.xsl"/>
         <map:transform type="metaData">
-          <map:parameter name='pubid' value='{page-envelope:publication-id}'/>
-          <map:parameter name='area' value='{page-envelope:area}'/>
+          <map:parameter name='pubid' value='{1}'/>
+          <map:parameter name='area' value='{2}'/>
         </map:transform>
         <map:transform type="i18n">      
-          <map:parameter name="locale" value="{page-envelope:language}"/>
+          <map:parameter name="locale" value="{4}"/>
         </map:transform>
         <map:transform type="uuid2url"/>
         <map:serialize type="xml"/>
@@ -202,7 +156,7 @@
           </map:when>
         </map:select>          
         
-        <map:generate src="cocoon:/lenyabody-view/{page-envelope:publication-id}/{page-envelope:area}/{page-envelope:document-type}{page-envelope:document-path}"/>
+        <map:generate src="cocoon:/page/{page-envelope:publication-id}/{1}/{page-envelope:document-uuid}/{page-envelope:language}"/>
         
         <map:select type="parameter">
           <!-- you remember that {1} is the area, right? -->
@@ -248,7 +202,7 @@
           If the action above fails (e.g. the document does not exist), call into the lenyabody pipeline.
           It will generate a nice document-does-not-exist page for us.
         -->
-        <map:generate src="cocoon:/lenyabody-view/{page-envelope:publication-id}/{page-envelope:area}/{page-envelope:document-type}{page-envelope:document-path}"/>
+        <map:generate src="cocoon:/page/{page-envelope:publication-id}/{page-envelope:area}/{page-envelope:document-uuid}/{page-envelope:language}"/>
         <map:select type="parameter">
           <map:parameter name="parameter-selector-test" value="{1}"/>
           <map:when test="live"/>

Added: lenya/sandbox/modules/docustyle/xslt/addDocumentInclude.xsl
URL: http://svn.apache.org/viewvc/lenya/sandbox/modules/docustyle/xslt/addDocumentInclude.xsl?rev=627209&view=auto
==============================================================================
--- lenya/sandbox/modules/docustyle/xslt/addDocumentInclude.xsl (added)
+++ lenya/sandbox/modules/docustyle/xslt/addDocumentInclude.xsl Tue Feb 12 16:58:22 2008
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+  
+  http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<!-- $Id: page2xhtml.xsl 589770 2007-10-29 17:46:58Z andreas $ -->
+
+<xsl:stylesheet version="1.0"
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+  xmlns="http://www.w3.org/1999/xhtml"
+  xmlns:xhtml="http://www.w3.org/1999/xhtml"
+  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
+  xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0" 
+  xmlns:dc="http://purl.org/dc/elements/1.1/"
+  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
+  xmlns:meta="http://apache.org/lenya/meta/1.0/"
+  xmlns:i="http://apache.org/cocoon/include/1.0"
+  exclude-result-prefixes="page xhtml dc lenya"
+  >
+  
+  <xsl:param name="pub"/>
+  <xsl:param name="area"/>
+  <xsl:param name="uuid"/>
+  <xsl:param name="language"/>
+  
+  <xsl:template match="/*">
+    <html>
+      <head>
+        <link rel="stylesheet" href="/modules/docustyle/css/page.css" type="text/css"/>
+        <meta content="Apache Lenya" name="generator"/>
+        
+        <title><meta:value element="title" ns="http://purl.org/dc/elements/1.1/" default="error-404"
+          i18n:attr="default" uuid="{$uuid}" lang="{$language}"/></title>
+        
+        <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8"/>
+        <script language="javascript">
+          function toggleMenu(id) {
+          var element = document.getElementById(id);
+          if (element.className == 'open') {
+          element.className = 'closed';
+          }
+          else if (element.className == 'closed') {
+          element.className = 'open';
+          }
+          }
+        </script>
+      </head>
+      <body>
+        <div id="page">
+          <lenya:navElement name="search"/>
+          
+          <div id="header">
+            <div id="apacheBreadcrumb">
+              <a href="http://www.apache.org">Apache</a> &#187; <a href="http://lenya.apache.org">Lenya</a>
+            </div>
+            <div id="logo">
+              <div id="projectLogo">
+                <a href="/{$pub}/{$area}/"><img src="/modules/docustyle/images/project-logo-small.png" alt="project logo"/></a>
+              </div>
+              <div id="tagline">Open Source Content Management</div>
+            </div>
+            <lenya:navElement name="tabs"/>
+            <div id="tabsSeparator"/>
+          </div>
+          
+          <div id="main">
+            <lenya:navElement name="menu"/>
+            <lenya:navElement name="breadcrumb"/>
+            <div id="body"/>
+            <i:include src="lenya-document:{$uuid},pub={$pub},area={$area},lang={$language}?format=xhtml">
+              <i:fallback>
+                <p>
+                  This document doesn't exist.
+                </p>
+              </i:fallback>
+            </i:include>
+          </div>
+        </div>
+      </body>
+    </html>
+  </xsl:template>
+  
+  
+  <xsl:template match="@*|node()" priority="-1">
+    <xsl:copy>
+      <xsl:apply-templates select="@*|node()"/>
+    </xsl:copy>
+  </xsl:template>
+  
+  
+</xsl:stylesheet> 

Added: lenya/sandbox/modules/docustyle/xslt/addNavIncludes.xsl
URL: http://svn.apache.org/viewvc/lenya/sandbox/modules/docustyle/xslt/addNavIncludes.xsl?rev=627209&view=auto
==============================================================================
--- lenya/sandbox/modules/docustyle/xslt/addNavIncludes.xsl (added)
+++ lenya/sandbox/modules/docustyle/xslt/addNavIncludes.xsl Tue Feb 12 16:58:22 2008
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+  
+  http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
+  xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0"
+  xmlns:i="http://apache.org/cocoon/include/1.0"
+  exclude-result-prefixes="lenya">
+  
+  <xsl:param name="params"/>
+  
+  <xsl:template match="lenya:navElement">
+    <i:include src="cocoon://modules/sitetree/{@name}/{$params}.xml"/>
+  </xsl:template>
+  
+  <xsl:template match="@*|node()|comment()" priority="-1">
+    <xsl:copy>
+      <xsl:apply-templates select="@*|node()|comment()"></xsl:apply-templates>
+    </xsl:copy>
+  </xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file

Added: lenya/sandbox/modules/docustyle/xslt/afterCache.xsl
URL: http://svn.apache.org/viewvc/lenya/sandbox/modules/docustyle/xslt/afterCache.xsl?rev=627209&view=auto
==============================================================================
--- lenya/sandbox/modules/docustyle/xslt/afterCache.xsl (added)
+++ lenya/sandbox/modules/docustyle/xslt/afterCache.xsl Tue Feb 12 16:58:22 2008
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+  
+  http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<!-- $Id: page2xhtml.xsl 589770 2007-10-29 17:46:58Z andreas $ -->
+
+<xsl:stylesheet version="1.0"
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+  xmlns="http://www.w3.org/1999/xhtml"
+  xmlns:xhtml="http://www.w3.org/1999/xhtml"
+  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
+  xmlns:meta="http://apache.org/lenya/meta/1.0/"
+  xmlns:i="http://apache.org/cocoon/include/1.0"
+  exclude-result-prefixes="xhtml"
+  >
+  
+  <xsl:param name="pub"/>
+  <xsl:param name="area"/>
+  <xsl:param name="uuid"/>
+  <xsl:param name="language"/>
+  
+  <xsl:param name="lastPublishedUser"/>
+  <xsl:param name="lastPublishedDate"/>
+  
+  
+  <xsl:template match="xhtml:div[@id = 'search']//xhtml:p">
+    <xsl:copy>
+      Search:
+      <xsl:apply-templates select="node()"/>
+    </xsl:copy>
+  </xsl:template>
+  
+  
+  <xsl:template match="xhtml:input[@class = 'searchsubmit']">
+    <input class="searchsubmit" type="image" src="/modules/docustyle/images/search.png"/>
+  </xsl:template>
+  
+  
+  <xsl:template match="xhtml:div[@id = 'breadcrumb']">
+    <xsl:if test="*">
+      <xsl:copy>
+        <xsl:apply-templates select="@*|node()"/>
+      </xsl:copy>
+    </xsl:if>
+  </xsl:template>
+  
+  
+  <xsl:template match="xhtml:div[@id = 'body']">
+    <div id="body">
+      <i:include src="lenya-document:{$uuid},pub={$pub},area={$area},lang={$language}?format=xhtml" strip-root="true">
+        <i:fallback>
+          <p>
+            This document doesn't exist.
+          </p>
+        </i:fallback>
+      </i:include>
+      <xsl:call-template name="footer"/>
+    </div>
+  </xsl:template>
+  
+  
+  <xsl:template match="xhtml:ul[@id = 'menu' and not(*)]"/>
+  
+  
+  <xsl:template name="footer">
+    <div id="footer">
+      <p>
+        Copyright &#169; 1999-2007 <a href="http://www.apache.org/">The Apache
+          Software Foundation</a>. All rights reserved.
+      </p>
+      <p>
+        <xsl:choose>
+          <xsl:when test="$lastPublishedUser != ''">
+            <i18n:translate>
+              <i18n:text>last-published</i18n:text>
+              <i18n:param><i18n:date-time src-pattern="yyyy-MM-dd HH:mm:ss"><xsl:value-of select="$lastPublishedDate"/></i18n:date-time></i18n:param>
+              <i18n:param><xsl:value-of select="$lastPublishedUser"/></i18n:param>
+            </i18n:translate>
+          </xsl:when>
+          <xsl:otherwise>
+            <i18n:text>never-published</i18n:text>
+          </xsl:otherwise>
+        </xsl:choose>
+      </p>
+    </div>
+  </xsl:template>
+  
+  
+  <xsl:template match="@*|node()" priority="-1">
+    <xsl:copy>
+      <xsl:apply-templates select="@*|node()"/>
+    </xsl:copy>
+  </xsl:template>
+  
+  
+</xsl:stylesheet> 

Added: lenya/sandbox/modules/docustyle/xslt/beforeCache.xsl
URL: http://svn.apache.org/viewvc/lenya/sandbox/modules/docustyle/xslt/beforeCache.xsl?rev=627209&view=auto
==============================================================================
--- lenya/sandbox/modules/docustyle/xslt/beforeCache.xsl (added)
+++ lenya/sandbox/modules/docustyle/xslt/beforeCache.xsl Tue Feb 12 16:58:22 2008
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+  
+  http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<!-- $Id: page2xhtml.xsl 589770 2007-10-29 17:46:58Z andreas $ -->
+
+<xsl:stylesheet version="1.0"
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+  xmlns="http://www.w3.org/1999/xhtml"
+  xmlns:xhtml="http://www.w3.org/1999/xhtml"
+  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
+  xmlns:lenya="http://apache.org/cocoon/lenya/page-envelope/1.0" 
+  xmlns:dc="http://purl.org/dc/elements/1.1/"
+  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
+  xmlns:meta="http://apache.org/lenya/meta/1.0/"
+  xmlns:i="http://apache.org/cocoon/include/1.0"
+  exclude-result-prefixes="page xhtml dc lenya"
+  >
+  
+  <xsl:param name="pub"/>
+  <xsl:param name="area"/>
+  <xsl:param name="uuid"/>
+  <xsl:param name="language"/>
+  
+  <xsl:template match="/*">
+    <html>
+      <head>
+        <link rel="stylesheet" href="/modules/docustyle/css/page.css" type="text/css"/>
+        <meta content="Apache Lenya" name="generator"/>
+        
+        <title><meta:value element="title" ns="http://purl.org/dc/elements/1.1/" default="error-404"
+          i18n:attr="default" uuid="{$uuid}" lang="{$language}"/></title>
+        
+        <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8"/>
+        <script language="javascript">
+          function toggleMenu(id) {
+          var element = document.getElementById(id);
+          if (element.className == 'open') {
+          element.className = 'closed';
+          }
+          else if (element.className == 'closed') {
+          element.className = 'open';
+          }
+          }
+        </script>
+      </head>
+      <body>
+        <div id="page">
+          <lenya:navElement name="search"/>
+          
+          <div id="header">
+            <div id="apacheBreadcrumb">
+              <a href="http://www.apache.org">Apache</a> &#187; <a href="http://lenya.apache.org">Lenya</a>
+            </div>
+            <div id="logo">
+              <div id="projectLogo">
+                <a href="/{$pub}/{$area}/"><img src="/modules/docustyle/images/project-logo-small.png" alt="project logo"/></a>
+              </div>
+              <div id="tagline">Open Source Content Management</div>
+            </div>
+            <lenya:navElement name="tabs"/>
+            <div id="tabsSeparator"/>
+          </div>
+          
+          <div id="main">
+            <lenya:navElement name="menu"/>
+            <lenya:navElement name="breadcrumb"/>
+            <div id="body"/>
+          </div>
+        </div>
+      </body>
+    </html>
+  </xsl:template>
+  
+  
+  <xsl:template match="@*|node()" priority="-1">
+    <xsl:copy>
+      <xsl:apply-templates select="@*|node()"/>
+    </xsl:copy>
+  </xsl:template>
+  
+  
+</xsl:stylesheet>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.