You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bu...@apache.org on 2015/09/22 12:23:33 UTC

svn commit: r966334 [11/11] - in /websites/staging/sling/trunk/content: ./ documentation/ documentation/bundles/ documentation/bundles/scripting/ documentation/development/ documentation/getting-started/ documentation/legacy/ documentation/the-sling-en...

Modified: websites/staging/sling/trunk/content/old-stuff/servlet-resolution.html
==============================================================================
--- websites/staging/sling/trunk/content/old-stuff/servlet-resolution.html (original)
+++ websites/staging/sling/trunk/content/old-stuff/servlet-resolution.html Tue Sep 22 10:23:16 2015
@@ -18,11 +18,11 @@
     limitations under the License.
 -->
   <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
     <title>Apache Sling - Servlet Resolution</title>
     <link rel="icon" href="/res/favicon.ico">
     <link rel="stylesheet" href="/res/site.css" type="text/css" media="all">
     <link rel="stylesheet" href="/res/codehilite.css" type="text/css" media="all">
-    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
   </head>
   <body>
     <div class="title">
@@ -39,7 +39,18 @@
     </div>
     
     <div class="menu"> 
-      <p><strong><a href="/documentation.html">Documentation</a></strong> <br />
+      <style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<p><strong><a href="/documentation.html">Documentation</a></strong> <br />
 <a href="/documentation/getting-started.html">Getting Started</a> <br />
 <a href="/documentation/the-sling-engine.html">The Sling Engine</a> <br />
 <a href="/documentation/development.html">Development</a> <br />
@@ -95,7 +106,18 @@
       
       
       <h1>Servlet Resolution</h1>
-      <div class="warning">
+      <style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<div class="warning">
 Please note that the description on this page is out of sync with the most recent developments going on as part of implementing issue [SLING-387](). See the links to integration tests at the end of this page for the Current Truth.
 
 Please see the new [Servlets](/documentation/the-sling-engine/servlets.html) page.
@@ -115,11 +137,11 @@ Please see the new [Servlets](/documenta
 <li><a href="#integration-tests">Integration tests</a></li>
 </ul>
 </div>
-<h2 id="servlets-are-resources">Servlets are Resources</h2>
+<h2 id="servlets-are-resources">Servlets are Resources<a class="headerlink" href="#servlets-are-resources" title="Permanent link">&para;</a></h2>
 <p>As explained on the <a href="/documentation/the-sling-engine/resources.html">Resources</a> page, the Resource is the central data abstraction of Sling. In this contexts, Servlets are of course also povided as Resources. As such Servlets may be enumerated by iterating the Resource tree and Servlets may be retrieved through the <code>ResourceResolver</code>.</p>
 <p>To show a Servlet inside the Resource tree, the <code>sling/servlet-resolver</code> project provides a <code>ServletResourceProvider</code> implementing the <code>ResourceProvider</code> interface. For each Servlet registered as an OSGi service with one or more defined service reference properties a <code>ServletResourceProvider</code> instance is registered.</p>
 <p>The following service reference properties are defined for Servlets defined as OSGi services of type <code>javax.servlet.Servlet</code>:</p>
-<table>
+<table class="table">
 <thead>
 <tr>
 <th>Name</th>
@@ -160,7 +182,7 @@ Please see the new [Servlets](/documenta
 <li>Otherwise a Resource provider is registered for the Servlet for each permutation resource types, selectors, extensions and methods.</li>
 </ol>
 <p>Each path to be used for registration -- either from the <code>sling.servlet.paths</code> property or constructed from the other <code>sling.servlet.*</code> properties -- must be absolute. Any relative path is made absolute by prefixing it with a root path. This prefix may be set with the <code>sling.servlet.prefix</code> service registration property. If this property is not set, the first entry in the <code>ResourceResolver</code> search path for the <code>ResourceResolver.getResource(String)</code> method is used as the prefix. If this entry cannot be derived, a simpe slash -- <code>/</code> -- is used as the prefix.</p>
-<h3 id="example-registration-by-path">Example: Registration by Path</h3>
+<h3 id="example-registration-by-path">Example: Registration by Path<a class="headerlink" href="#example-registration-by-path" title="Permanent link">&para;</a></h3>
 <div class="codehilite"><pre><span class="n">sling</span><span class="p">.</span><span class="n">servlet</span><span class="p">.</span><span class="n">paths</span> <span class="p">=</span> <span class="p">[</span> &quot;<span class="o">/</span><span class="n">libs</span><span class="o">/</span><span class="n">sling</span><span class="o">/</span><span class="n">sample</span><span class="o">/</span><span class="n">html</span>&quot;<span class="p">,</span> &quot;<span class="o">/</span><span class="n">libs</span><span class="o">/</span><span class="n">sling</span><span class="o">/</span><span class="n">sample</span><span class="o">/</span><span class="n">txt</span>&quot; <span class="p">]</span>
 <span class="n">sling</span><span class="p">.</span><span class="n">servlet</span><span class="p">.</span><span class="n">resourceTypes</span> <span class="p">=</span> <span class="p">[</span> &quot;<span class="n">sling</span><span class="o">/</span><span class="n">unused</span>&quot; <span class="p">]</span>
 <span class="n">sling</span><span class="p">.</span><span class="n">servlet</span><span class="p">.</span><span class="n">selectors</span> <span class="p">=</span> <span class="p">[</span> &quot;<span class="n">img</span>&quot; <span class="p">]</span>
@@ -174,7 +196,7 @@ Please see the new [Servlets](/documenta
 <li><code>/libs/sling/sample/txt</code></li>
 </ul>
 <p>The registration properties <code>sling.servlet.resourceTypes</code>, <code>sling.servlet.selectors</code> and <code>sling.servlet.extensions</code> are ignored because the <code>sling.servlet.paths</code> property is set.</p>
-<h3 id="example-registration-by-resource-type-etc">Example: Registration by Resource Type etc.</h3>
+<h3 id="example-registration-by-resource-type-etc">Example: Registration by Resource Type etc.<a class="headerlink" href="#example-registration-by-resource-type-etc" title="Permanent link">&para;</a></h3>
 <div class="codehilite"><pre><span class="n">sling</span><span class="p">.</span><span class="n">servlet</span><span class="p">.</span><span class="n">resourceTypes</span> <span class="p">=</span> <span class="p">[</span> &quot;<span class="n">sling</span><span class="o">/</span><span class="n">unused</span>&quot; <span class="p">]</span>
 <span class="n">sling</span><span class="p">.</span><span class="n">servlet</span><span class="p">.</span><span class="n">selectors</span> <span class="p">=</span> <span class="p">[</span> &quot;<span class="n">img</span>&quot;<span class="p">,</span> &quot;<span class="n">tab</span>&quot; <span class="p">]</span>
 <span class="n">sling</span><span class="p">.</span><span class="n">servlet</span><span class="p">.</span><span class="n">extensions</span> <span class="p">=</span> <span class="p">[</span> &quot;<span class="n">html</span>&quot;<span class="p">,</span> &quot;<span class="n">txt</span>&quot;<span class="p">,</span> &quot;<span class="n">json</span>&quot; <span class="p">]</span>
@@ -191,12 +213,12 @@ Please see the new [Servlets](/documenta
 <li><code>*prefix*/sling/unused/tab/json</code></li>
 </ul>
 <p>As explained the script is registered for each permutation of the resource types, selectors and extension. See above For an explanation of how <code>*prefix*</code> is defined.</p>
-<h2 id="scripts-are-servlets">Scripts are Servlets</h2>
+<h2 id="scripts-are-servlets">Scripts are Servlets<a class="headerlink" href="#scripts-are-servlets" title="Permanent link">&para;</a></h2>
 <p>The Sling API defines a <code>SlingScript</code> interface which is used to represent (executable) scripts inside of Sling. This interface is implemented in the <code>scripting/resolver</code> bundle in the <code>DefaultSlingScript</code> class which also implements the <code>javax.servlet.Servlet</code>.</p>
 <p>To further simplify the access to scripts from the Resource tree, the <code>scripting/resolver</code> bundle registers an <code>AdapterFactory</code> to adapt Resources to Scripts and Servlets. In fact the adapter factory returns instances of the <code>DefaultSlingScript</code> class for both Scripts and Servlets.</p>
 <p>This functionality is used by the <code>ServletResolver.resolveServlet</code> implementation in the <code>sling/servlet-resolver</code> bundle: This implementation just looks up any Resource in the resource tree according its lookup algorithm (see below). The first matching Resource adapting to a <code>javax.servlet.Servlet</code> is used for processing the resource.</p>
 <p>So from the perspective of the Servlet resolver, scripts and servlets are handled exactly the same.</p>
-<h2 id="resolution-process">Resolution Process</h2>
+<h2 id="resolution-process">Resolution Process<a class="headerlink" href="#resolution-process" title="Permanent link">&para;</a></h2>
 <p>The Servlet Resolution Process four elements of a <code>SlingHttpServletRequest</code>:</p>
 <ol>
 <li>The <em>resource type</em> as retrieved through <code>request.getResource().getResourceType()</code>. Because the resource type may be a node type such as <em>nt:file</em>, the resource type is mangled into a path by replacing any colons contained to forward slashs. Also, any backslashes contained are replaced to forward slashes. This should give a relative path. Of course a resource type may also be set to an absolute path. See below.</li>
@@ -250,7 +272,7 @@ Please see the new [Servlets](/documenta
 </pre></div>
 
 
-<h2 id="default-servlets">Default Servlet(s)</h2>
+<h2 id="default-servlets">Default Servlet(s)<a class="headerlink" href="#default-servlets" title="Permanent link">&para;</a></h2>
 <p>As explained in the Resolution Process section above, a default Servlet is selected if no servlet for the current resource type can be found. To make the provisioning of a default Servlet as versatile as provisioning per resource type Servlets (or scripts), the default Servlet is selected with just a special resource type <code>sling/servlet/default</code>.</p>
 <p>The actual Servlet or Script called as the default Servlet is resolved exactly the same way as for any resource type. That is, also for the default Servlet selection, the request selectors and extension or method are considered. Also, the Servlet may be a Servlet registered as an OSGi service and provided through a Servlet Resource provider or it may be a Script stored in the repository or provided by the bundle.</p>
 <p>Finally, if not even a registered default Servlet may be resolved for the request, because none has been registered, the <code>sling/servlet-resolve</code> bundle provides a fall back <code>DefaultServlet</code> with the following functionality:</p>
@@ -259,13 +281,13 @@ Please see the new [Servlets](/documenta
 <li>Otherwise if the object has an OCM mapping, the properties of the mapped object are printed.</li>
 <li>Otherwise just the path of the Resource is printed.</li>
 </ul>
-<h2 id="error-handler-servlets">Error Handler Servlet(s)</h2>
+<h2 id="error-handler-servlets">Error Handler Servlet(s)<a class="headerlink" href="#error-handler-servlets" title="Permanent link">&para;</a></h2>
 <p>The <code>sling/servlet-resolver</code> project also provides an implementation of the Sling Core <code>ErrorHandler</code> interface, which applies the same Servlet resolution process as used for normal request processing. Error handler Servlets and Scripts are looked up with the predefined resource <code>sling/servlet/errorhandler</code> and an error specific name:</p>
 <ul>
 <li><em>HTTP Status Code Handling</em>: To handle HTTP status code as used by the <code>HttpServletResponse.sendError</code> methods, status code is used as the Servlet name. For example to provide a handler for status code 404 (NOT<em>FOUND), you could create a script <code>prefix/sling/servlet/errorhandler/404.esp</code> or for a status code 500 (INTERNAL</em>SERVER_ERRROR), you might want to register a Servlet at <code>prefix/sling/servlet/errorhandler/500</code>.</li>
 <li><em>Throwable Handling</em>: To handle uncaught <code>Throwables</code> the simple name of the <code>Throwable</code> class is used as the Servlet name. Similarly to the Java <code>try-catch</code> clauses the class hierarchy is supported. That is to handle an uncaught <code>FileNotFoundException</code>, the names <code>FileNotFoundException</code>, <code>IOException</code>, <code>Exception</code>, <code>Throwable</code> are checked for a Servlet and the first one found is then used. Again, the Serlvet may be a Servlet registered as an OSGi service or may be a plain script stored in the JCR repository or provided through some custom Resource provider.</li>
 </ul>
-<h2 id="integration-tests">Integration tests</h2>
+<h2 id="integration-tests">Integration tests<a class="headerlink" href="#integration-tests" title="Permanent link">&para;</a></h2>
 <p>A set of simple example servlets is available in the <a href="">launchpad/test-services module</a>. </p>
 <p>Integration tests in the <a href="">launchpad/testing module</a> verify that these examples are correct.</p>
 <p>Contributions to these tests and examples are welcome, of course!</p>

Modified: websites/staging/sling/trunk/content/old-stuff/sling-api.html
==============================================================================
--- websites/staging/sling/trunk/content/old-stuff/sling-api.html (original)
+++ websites/staging/sling/trunk/content/old-stuff/sling-api.html Tue Sep 22 10:23:16 2015
@@ -18,11 +18,11 @@
     limitations under the License.
 -->
   <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
     <title>Apache Sling - Sling API</title>
     <link rel="icon" href="/res/favicon.ico">
     <link rel="stylesheet" href="/res/site.css" type="text/css" media="all">
     <link rel="stylesheet" href="/res/codehilite.css" type="text/css" media="all">
-    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
   </head>
   <body>
     <div class="title">
@@ -39,7 +39,18 @@
     </div>
     
     <div class="menu"> 
-      <p><strong><a href="/documentation.html">Documentation</a></strong> <br />
+      <style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<p><strong><a href="/documentation.html">Documentation</a></strong> <br />
 <a href="/documentation/getting-started.html">Getting Started</a> <br />
 <a href="/documentation/the-sling-engine.html">The Sling Engine</a> <br />
 <a href="/documentation/development.html">Development</a> <br />
@@ -95,11 +106,22 @@
       
       
       <h1>Sling API</h1>
-      <div class="note">
+      <style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<div class="note">
 The contents of this page is being created at the moment. It contains incomplete and partially wrong information as the text is adapted from the contents of the [Component API]() documentation page.
 </div>
 
-<h2 id="introduction">Introduction</h2>
+<h2 id="introduction">Introduction<a class="headerlink" href="#introduction" title="Permanent link">&para;</a></h2>
 <p>The <em>Sling API</em> defines a presentation framework to build Web Applications. As such the Sling API builds upon the Servlet API but extends the latter with new functionality:</p>
 <ul>
 <li>A web page may be built from many different pieces. This aggregation of different pieces is comparable to the functionality provided by the Portlet API. In contrast to the latter, though, the pieces may themselves be aggregates of yet more pieces. So a single web page response may consist of a tree of pieces.</li>
@@ -107,24 +129,24 @@ The contents of this page is being creat
 <li>In contrast to the Servlet API and the Portlet API, the Sling API is resource centric. That is, the request URL does not address a servlet or a portlet but a resource represented by an instance of the <code>org.apache.sling.api.resource.Resource</code> interface. From this resource the implementation of the Sling API will derive a <code>javax.servlet.Servlet</code> or <code>org.apache.sling.api.scripting.SlingScript</code> instance, which is used to handle the request.</li>
 </ul>
 <p>An implementation of the presentation framework defined by the Sling API is called a <em>Sling Framework</em>. The Apache Sling project actually contains two implementations of this API: <em>microsling</em> and <em>Sling</em>. microsling (note the lowercase <em>m</em>) implements the same request processing mechanisms as <em>Sling</em> but is very hardcoded. It serves well as a rapid development environment as it is quickly set up, easy to handle and shows results very easily. Sling on the other hand is based on an OSGi framework and very flexible, allowing the extension of the system in various ways.</p>
-<h2 id="going-resource-centric">Going Resource Centric</h2>
+<h2 id="going-resource-centric">Going Resource Centric<a class="headerlink" href="#going-resource-centric" title="Permanent link">&para;</a></h2>
 <p>Traditional web applications are built around the notion of a traditional application which is converted into an application which may be used using a Web Browser. Web applications consist of a series of servlets and JSP scripts, which are called based on configuration in the web application deployment descriptor. Such applications are generally based on some internal database or some static filesystem content.</p>
 <p>The Sling API on the other hand looks more like a traditional web server from the outside, which delivers more or less static content. Thus, while the traditional web application uses the request URL to select a piece of code to execute, the Sling API uses the URL to select a resource to be delivered.</p>
-<h3 id="comparsion-to-the-servlet-api">Comparsion to the Servlet API</h3>
+<h3 id="comparsion-to-the-servlet-api">Comparsion to the Servlet API<a class="headerlink" href="#comparsion-to-the-servlet-api" title="Permanent link">&para;</a></h3>
 <p>The Sling API builds upon the Servlet API. Generally a Sling Framework will run inside a Servlet Container and be manifested towards the Servlet Container as a single Servlet, which dispatches requests to the Servlets and Scripts depending on the request URLs.</p>
 <p>Response rendering may itself be a multi-step operation. Depending on the Servlets and Scripts, the rendering may include dispatching for child (or even foreign) Resources.</p>
-<h3 id="comparision-to-the-portlet-api">Comparision to the Portlet API</h3>
+<h3 id="comparision-to-the-portlet-api">Comparision to the Portlet API<a class="headerlink" href="#comparision-to-the-portlet-api" title="Permanent link">&para;</a></h3>
 <p>Unlike the Portlet API, which defines one single level of portlet hierarchy - portlets are just pieces residing besides each other - the Sling API allows for hierarchic structuring of Resources and hence Servlet and Script renderings. To support this structuring, the Sling Framework does not control the rendering process of all elements on the page like the Portlet Container does for the portlets. Instead only the Resource addressed by the request URL is processed and it is left to the Servlet or Script rendering that Resource to dispatch other Resource/Servlet/Script tupels to add more data to the response.</p>
-<h3 id="to-iterator-or-to-enumeration">To Iterator or To Enumeration</h3>
+<h3 id="to-iterator-or-to-enumeration">To Iterator or To Enumeration<a class="headerlink" href="#to-iterator-or-to-enumeration" title="Permanent link">&para;</a></h3>
 <p>With the advent of the Java Collection framework in Java 2, the <code>Enumeration</code> has been superceded by the <code>Iterator</code>. So the natural choice for the Sling API for methods to return enumeratable collection of objects would have be to declare the use of <code>Iterator</code> instances. But because the Servlet API defines to use <code>Enumeration</code> instances, the Sling API will also declare the use of <code>Enumeration</code> instances for consistency with the Servlet API extended by the Sling API.</p>
-<h2 id="request-processing">Request Processing</h2>
+<h2 id="request-processing">Request Processing<a class="headerlink" href="#request-processing" title="Permanent link">&para;</a></h2>
 <p>Unlike traditional Servlet API request processing, a Sling API request is processed by the Sling Framework in three basic steps:</p>
 <ol>
 <li><em>Resource Resolution</em> - The Sling Framework derives a Resource instance from the client request URL. The details of how to resolve the Resource. One possible solution would be to map the request URL to a <a href="">Java Content Repository</a> Node and return a Resource representing that Node.</li>
 <li><em>Servlet and Script Resolution</em> - From the Resource created in the first step, the Servlet or Script is resolved based on the type of the Resource. The resource type is a simple string, whose semantics is defined by the Sling Framework. One possible definition could be for the resource type to be the primary node type of the Node underlying the Resource.</li>
 <li><em>Input Processing and Response Generation</em> -  After getting the Resource and the Servlet or Script, the <code>service()</code> method is called or the script is evaluated to process any user supplied input and send the response to the client. To structure the rendered response page, this method is responsible to include other resources. See <em>Dispatching Requests</em> below for details. See <em>Error Handling</em> below for a discussion on how exceptions and HTTP stati are handled.</li>
 </ol>
-<h3 id="url-decomposition">URL decomposition</h3>
+<h3 id="url-decomposition">URL decomposition<a class="headerlink" href="#url-decomposition" title="Permanent link">&para;</a></h3>
 <p>During the <em>Resource Resolution</em> step, the client request URL is decomposed into the following parts:</p>
 <ol>
 <li><em>Resource Path</em> -  The longest substring of the request URL resolving to a Resource such that the resource path is either the complete request URL or the next character in the request URL after the resource path is either a dot (<code>.</code>) or a slash (<code>/</code>).</li>
@@ -133,7 +155,7 @@ The contents of this page is being creat
 <li><em>Suffix Path</em> -  If the request URL contains a slash character after the resource path and optional selectors and extension, the path starting with the slash upto the end of the request URL is the suffix path. Otherwise, the suffix path is empty.</li>
 </ol>
 <p><em>Examples</em>: Assume there is a Resource at <code>/a/b</code>, which has no children.</p>
-<table>
+<table class="table">
 <thead>
 <tr>
 <th>URI</th>
@@ -234,7 +256,7 @@ The contents of this page is being creat
 The [SlingRequestPathInfoTest]() demonstrates and tests this decomposition. Feel free to suggest additional tests that help clarify how this works!
 </div>
 
-<h2 id="the-slinghttpservletrequest">The SlingHttpServletRequest</h2>
+<h2 id="the-slinghttpservletrequest">The SlingHttpServletRequest<a class="headerlink" href="#the-slinghttpservletrequest" title="Permanent link">&para;</a></h2>
 <p>The <code>org.apache.sling.api.SlingHttpServletRequest</code> interface defines the basic data available from the client request to both action processing and response rendering. The <code>SlingHttpServletRequest</code> extends the <code>javax.servlet.http.HTTPServletRequest</code>.</p>
 <p>This section describes the data available from the <code>SlingHttpServletRequest</code>. For a complete and normative description of the methods, refer to the Sling API JavaDoc. The following information is represented for reference. In the case of differences between the following descriptions and the Sling API JavaDoc, the latter takes precedence.</p>
 <ol>
@@ -246,9 +268,9 @@ The [SlingRequestPathInfoTest]() demonst
 </ol>
 <p>The <code>SlingHttpServletRequest</code> objects are only valid during the time of request processing. Servlets and Scripts must not keep references for later use. As such, the <code>SlingHttpServletRequest</code> interface and its extensions are defined to not be thread safe.</p>
 <p><em>A note on HTTP Sessions</em>: The <code>SlingHttpServletRequest</code> extends the <code>HttpSerlvetRequest</code> and thus supports standard HTTP sessions. Be aware, though that Sessions are server side sessions and hence violate the sessionless principle of REST and therefore should be used with care. It is almost always possible to not use sessions.</p>
-<h2 id="the-slinghttpservletresponse">The SlingHttpServletResponse</h2>
+<h2 id="the-slinghttpservletresponse">The SlingHttpServletResponse<a class="headerlink" href="#the-slinghttpservletresponse" title="Permanent link">&para;</a></h2>
 <p>The <code>org.apache.sling.api.SlingHttpServletResponse</code> interface extends the <code>javax.servet.http.HttpServletResponse</code> interface and is currently empty. It merely exists for symmetry with the <code>SlingHttpServletRequest</code>.</p>
-<h2 id="the-resource">The Resource</h2>
+<h2 id="the-resource">The Resource<a class="headerlink" href="#the-resource" title="Permanent link">&para;</a></h2>
 <p>The <code>org.apache.sling.resource.Resource</code> represents the data addressed by the request URL. Resources may also be retrieved through the <code>org.apache.sling.api.resource.ResourceResolver</code>. Usually this interface is not implemented by clients. In certain use cases we call <em>synthetic Resource</em> if may be usefull to define a simple object implementing the <code>Resource</code> interface. The Sling Framework does not care about the concrete implementation of the <code>Resource</code> interface and rather uses the defined methods to access required information. The interface defines the following methods:</p>
 <ol>
 <li><em>getResourceType()</em> - Returns the type of the resource. This resource type is used to resolve the Servlet or Script used to handle the request for the resource.</li>
@@ -257,39 +279,39 @@ The [SlingRequestPathInfoTest]() demonst
 <li><em>adaptTo(Class<AdapterType> type)</em> - Returns alternative representations of the Resource. The concrete supported classes to which the Resource may be adapted depends on the implementation. For example a Resource based on a JCR Node may support being adapted to the underlying Node, an <code>InputStream</code>, an <code>URL</code> or even to a mapped object through JCR Object Content Mapping.</li>
 </ol>
 <hr />
-<h2 id="the-component">The Component</h2>
+<h2 id="the-component">The Component<a class="headerlink" href="#the-component" title="Permanent link">&para;</a></h2>
 <p>The <code>org.apache.sling.component.Component</code> interface defines the API implemented to actually handle requests. As such the Component interface is comparable to the =javax.servlet.Servlet= interface. Like those other interfaces, the Component interface provides methods for life cycle management: <code>init(ComponentContext context)</code>, <code>destroy()</code>.</p>
-<h3 id="processing-the-request">Processing the Request</h3>
+<h3 id="processing-the-request">Processing the Request<a class="headerlink" href="#processing-the-request" title="Permanent link">&para;</a></h3>
 <p>The Component Framework calls the <code>service(ComponentRequest request, ComponentResponse response)</code> method of the Component to have the component process the request optionally processing user input, rendering the response and optionally dispatch to other Content/Component tuples to provide more response data.</p>
-<h3 id="content-and-its-component">Content and its Component</h3>
+<h3 id="content-and-its-component">Content and its Component<a class="headerlink" href="#content-and-its-component" title="Permanent link">&para;</a></h3>
 <p>The Content object and a Component form a pair, in which the Content object takes the passive part of providing data to the Component and the Component takes the active part of acting upon the Content object. As a consequence, there always exists a link between a given implementation of the Content interface and a given implementation of the Component interface.</p>
 <p>This link is manifested by the Component identifier available from the Content object through the <code>Content.getComponentId()</code> method on the one hand. On the other hand, the link is manifested by the <code>getContentClassName()</code> and <code>createContentInstance()</code> methods of the Component interface.</p>
-<h3 id="component-lifecylce">Component Lifecylce</h3>
+<h3 id="component-lifecylce">Component Lifecylce<a class="headerlink" href="#component-lifecylce" title="Permanent link">&para;</a></h3>
 <p>When a Component instance is created and added to the Component framework, the <code>init(ComponentContext)</code> method is called to prepare and initialize the Component. If this method terminates abnormally by throwing an exception, the Component is not used. The Component Framework implementation may try at a later time to recreate the Component, intialize it and use it. If the Component Framework tries to recreate the Component a new instance of the Component must be created to be initialized and used.</p>
 <p>When the Component has successfully been initialized, it may be referred to by Content objects. When a client request is to be processed, the Content object is resolved and the <code>service</code> method on the Component to which the Content object refers is called. The <code>service</code> method may - and generally will - be called simultaneously to handle different requests in different threads. As such, implementations of these methods must be thread safe.</p>
 <p>When the Component Framework decides to take a Component out of service, the <code>destroy()</code> method is called to give the Component a chance to cleanup any held resources. The destroy method must only be called by the Component Framework when no more request processing is using the Component, that is no thread may be in the <code>service</code> method of a Component to be destroyed. Irrespective of whether the destroy method terminated normally or abnormally, the Component will not be used again.</p>
 <p>The addition and removal of Components is at the discretion of the Component Framework. A Component may be loaded at framework start time or on demand and my be removed at any time. But only one single Component instance with the same Component identifier may be active at the same time within a single Component Framework instance.</p>
-<h3 id="the-componentextension">The ComponentExtension</h3>
+<h3 id="the-componentextension">The ComponentExtension<a class="headerlink" href="#the-componentextension" title="Permanent link">&para;</a></h3>
 <p>To enhance the core functionality of Components, each Component may have zero, one ore more Component Extensions attached. A Component Extensions is a Java object implementing the <code>org.apache.sling.component.ComponentExtension</code> interface. This interface just defines a <code>getName()</code> method to identify extensions.</p>
 <p>The concrete implementation as well as instantiation and management of Component Extensions is left to the Component Framework implementation with one restriction though: The extensions must be available to the Component at the time the <code>init(ComponentContext)</code> method is called may only be dropped after the <code>destroy()</code> method terminates.</p>
 <p>The Component interface defines two methods to access Extensions: The <code>getExtensions()</code> method returns a <code>java.util.Enumeration</code> of all ComponentExtension objects attached to the component. If no Component Extension are attached to the Component, an empty enumeration is returned. The <code>getExtension(String name)</code> returns the named Component Extension attached to the Component or <code>null</code> if no such Component Extension is attached to the Component.</p>
 <p>Component Frameworks are allowed to share Component Extension instances of the same name between different Component instances. Regardless of whether Component Extensions are shared or not, they must be thread safe, as any Component Extension may be used within the <code>service</code> method, which themselves may be called concurrently.</p>
-<h2 id="request-processing-filters">Request Processing Filters</h2>
+<h2 id="request-processing-filters">Request Processing Filters<a class="headerlink" href="#request-processing-filters" title="Permanent link">&para;</a></h2>
 <p>Similar to the Servlet API providing filters for filtering requests and/or responses the Component API provides the <code>org.apache.sling.component.ComponentFilter</code> interface. The filters are called by a <code>ComponentFilterChain</code> and either handle the request, manipulate the request and/or response object and finally forward the request and response optionally wrapped to the <code>ComponentFilterChain.doFilter(ComponentRequest, ComponentResponse)</code> method.</p>
 <p>Like the <code>Component</code>s  filters have a defined lifecycle manifested by <code>init</code> and <code>destroy</code> methods. When the filter enters the system, the Component Framework calls the <code>ComponentFilter.init(ComponentContext)</code> method. Only when this method completes successfully will the filter be put into action and be used during request processing. When the filter leaves the system, the Component Framework removes the filter from being used in filter chains and calls the <code>ComponentFilter.destroy()</code> method. This method is not expected to throw any exceptions. The filter may be removed from the Component Framework at the discretion of the Component Framework or because the filter is being unregistered from the Component Framework by some means outside this specification.</p>
 <p>This specification does not define how <code>ComponentFilter</code> objects are registered with the Component Framework nor is it specified how the order in which the filters are called is defined. Likewise it is outside this specification how the filter instances registered with the Component Framework are configured.</p>
-<h2 id="sessions">Sessions</h2>
+<h2 id="sessions">Sessions<a class="headerlink" href="#sessions" title="Permanent link">&para;</a></h2>
 <p>The <code>org.apache.sling.component.ComponentSession</code> interface provides a way to identify a user across more than one request and to store transient information about that user.</p>
 <p>A component can bind an object attribute into a <code>ComponentSession</code> by name. The <code>ComponentSession</code> interface defines two scopes for storing objects: <code>APPLICATION*SCOPE</code>, <code>COMPONENT*SCOPE</code>. All objects stored in the session using the <code>APPLICATION*SCOPE</code> must be available to all the components, servlets and JSPs that belong to the same component application and that handle a request identified as being a part of the same session. Objects stored in the session using the <code>COMPONENT*SCOPE</code> must be available to the component during requests for the same content that the objects where stored from. Attributes stored in the <code>COMPONENT_SCOPE</code> are not protected from other web components of the component application. They are just conveniently namespaced.</p>
 <p>The component session extends the Servlet API <code>HttpSession</code>. Therefore all <code>HttpSession</code> listeners do apply to the component session and attributes set in the component session are visible in the <code>HttpSession</code> and vice versa.</p>
 <p>The attribute accessor methods without the <em>scope</em> parameter always refer to <code>COMPONENT*SCOPE</code> attributes. To access <code>APPLICATION*SCOPE</code> attributes use the accessors taking an explicit <code>scope</code> parameter.</p>
 <p><em>A final note on Sessions</em>: Sessions are server side sessions and hence violate the sessionless principle of REST and therefore should be used with care. It is almost always possible to not use sessions.</p>
-<h2 id="dispatching-requests">Dispatching Requests</h2>
+<h2 id="dispatching-requests">Dispatching Requests<a class="headerlink" href="#dispatching-requests" title="Permanent link">&para;</a></h2>
 <p>To include renderings of child Content objects, a <code>org.apache.sling.component.ComponentRequestDispatcher</code> object may be retrieved from the ComponentContext with which the Component has been initialized or from the ComponentRequest provided to the service method. Using this dispatcher the reponse of rendering the Content may be included by calling the <code>ComponentRequestDispatcher.include(ComponentRequest, ComponentResponse)</code> method.</p>
 <p>This method is comparable to the <code>RequestDispatcher.include(ServletRequest, ServletResponse</code> method of the Servlet API but dispatching by the <code>ComponentRequestDispatcher</code> does not go through the servlet container and stays within the Component Framework.</p>
 <p>The <code>service</code> method of included Components are called with an instance of the <code>ComponentRequest</code> interface whose <code>getContent()</code> returns the Content object for the included Content.</p>
 <p>When a Component is included by another component the following request attributes are set:</p>
-<table>
+<table class="table">
 <thead>
 <tr>
 <th><em>Request Attributes</em></th>
@@ -310,7 +332,7 @@ The [SlingRequestPathInfoTest]() demonst
 </tr>
 </tbody>
 </table>
-<h3 id="error-handling">Error Handling</h3>
+<h3 id="error-handling">Error Handling<a class="headerlink" href="#error-handling" title="Permanent link">&para;</a></h3>
 <p>While processing requests, the <code>service</code> methods called may have problems. Components have multiple options of reporting issues during processing to the client:</p>
 <ul>
 <li>Set the status of the HTTP response calling the <code>ComponentResponse.setStatus</code> method</li>
@@ -326,7 +348,7 @@ The [SlingRequestPathInfoTest]() demonst
 <ul>
 <li>Otherwise, the Component Framework may handle the error itself in a manner similar to the error handling approach defined the Servlet API specification (Section SRV 9.9 Error Handling of the Java Servlet Specification 2.4). Specifically the request attributes defined by the Servlet API specification must be set for the error handler:</li>
 </ul>
-<table>
+<table class="table">
 <thead>
 <tr>
 <th><em>Request Attributes</em></th>

Modified: websites/staging/sling/trunk/content/plugins.html
==============================================================================
--- websites/staging/sling/trunk/content/plugins.html (original)
+++ websites/staging/sling/trunk/content/plugins.html Tue Sep 22 10:23:16 2015
@@ -18,11 +18,11 @@
     limitations under the License.
 -->
   <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
     <title>Apache Sling - Plugins</title>
     <link rel="icon" href="/res/favicon.ico">
     <link rel="stylesheet" href="/res/site.css" type="text/css" media="all">
     <link rel="stylesheet" href="/res/codehilite.css" type="text/css" media="all">
-    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
   </head>
   <body>
     <div class="title">
@@ -39,7 +39,18 @@
     </div>
     
     <div class="menu"> 
-      <p><strong><a href="/documentation.html">Documentation</a></strong> <br />
+      <style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<p><strong><a href="/documentation.html">Documentation</a></strong> <br />
 <a href="/documentation/getting-started.html">Getting Started</a> <br />
 <a href="/documentation/the-sling-engine.html">The Sling Engine</a> <br />
 <a href="/documentation/development.html">Development</a> <br />
@@ -95,7 +106,18 @@
       
       
       <h1>Plugins</h1>
-      <p>These pages present the various Maven Plugins of Sling:</p>
+      <style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<p>These pages present the various Maven Plugins of Sling:</p>
       <div class="timestamp" style="margin-top: 30px; font-size: 80%; text-align: right;">
         Rev. 1499238 by fmeschbe on Wed, 3 Jul 2013 07:39:54 +0000
       </div>

Modified: websites/staging/sling/trunk/content/project-information.html
==============================================================================
--- websites/staging/sling/trunk/content/project-information.html (original)
+++ websites/staging/sling/trunk/content/project-information.html Tue Sep 22 10:23:16 2015
@@ -18,11 +18,11 @@
     limitations under the License.
 -->
   <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
     <title>Apache Sling - Project Information</title>
     <link rel="icon" href="/res/favicon.ico">
     <link rel="stylesheet" href="/res/site.css" type="text/css" media="all">
     <link rel="stylesheet" href="/res/codehilite.css" type="text/css" media="all">
-    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
   </head>
   <body>
     <div class="title">
@@ -39,7 +39,18 @@
     </div>
     
     <div class="menu"> 
-      <p><strong><a href="/documentation.html">Documentation</a></strong> <br />
+      <style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<p><strong><a href="/documentation.html">Documentation</a></strong> <br />
 <a href="/documentation/getting-started.html">Getting Started</a> <br />
 <a href="/documentation/the-sling-engine.html">The Sling Engine</a> <br />
 <a href="/documentation/development.html">Development</a> <br />
@@ -90,7 +101,18 @@
       
       
       <h1>Project Information</h1>
-      <p>This document provides an overview of the various documents and links that are part of this project's general information:</p>
+      <style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<p>This document provides an overview of the various documents and links that are part of this project's general information:</p>
 <ul>
 <li><a href="/project-information/apache-sling-community-roles-and-processes.html">Community Roles and Processes</a></li>
 <li><a href="/project-information/project-team.html">Project Team</a></li>
@@ -101,10 +123,10 @@
 <li><a href="/project-information/project-license.html">Project License</a></li>
 <li><a href="#documentation-repository">Documentation Repository</a></li>
 </ul>
-<h2 id="mailing-lists">Mailing Lists</h2>
+<h2 id="mailing-lists">Mailing Lists<a class="headerlink" href="#mailing-lists" title="Permanent link">&para;</a></h2>
 <p>These are the mailing lists that have been established for this project. For each list, there is a subscribe, unsubscribe, and an archive link.</p>
 <p>The Sling Users List is the preferred way of getting help with Sling. However, you can also <a href="http://stackoverflow.com/questions/ask?tags=sling">Ask a Sling question on StackOverflow</a> if you prefer.</p>
-<table>
+<table class="table">
 <thead>
 <tr>
 <th>Name</th>
@@ -142,24 +164,24 @@
 </tr>
 </tbody>
 </table>
-<h2 id="issue-tracking">Issue Tracking</h2>
+<h2 id="issue-tracking">Issue Tracking<a class="headerlink" href="#issue-tracking" title="Permanent link">&para;</a></h2>
 <p>This project uses JIRA a J2EE-based, issue tracking and project management application. Issues, bugs, and feature requests should be submitted to the following issue tracking system for this project.</p>
 <p>The issue tracker can be found at <a href="http://issues.apache.org/jira/browse/SLING">http://issues.apache.org/jira/browse/SLING</a></p>
-<h2 id="source-repository">Source Repository</h2>
+<h2 id="source-repository">Source Repository<a class="headerlink" href="#source-repository" title="Permanent link">&para;</a></h2>
 <p>This project uses Subversion to manage its source code. Instructions on Subversion use can be found at <a href="http://svnbook.red-bean.com/">http://svnbook.red-bean.com/</a>.</p>
-<h3 id="web-access">Web Access</h3>
+<h3 id="web-access">Web Access<a class="headerlink" href="#web-access" title="Permanent link">&para;</a></h3>
 <p>The following is a link to the online source repository.</p>
 <div class="codehilite"><pre><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">svn</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">org</span><span class="o">/</span><span class="n">viewvc</span><span class="o">/</span><span class="n">sling</span><span class="o">/</span><span class="n">trunk</span>
 </pre></div>
 
 
-<h3 id="anonymous-access">Anonymous access</h3>
+<h3 id="anonymous-access">Anonymous access<a class="headerlink" href="#anonymous-access" title="Permanent link">&para;</a></h3>
 <p>The source can be checked out anonymously from SVN with this command:</p>
 <div class="codehilite"><pre>$ <span class="n">svn</span> <span class="n">checkout</span> <span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">svn</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">org</span><span class="o">/</span><span class="n">repos</span><span class="o">/</span><span class="n">asf</span><span class="o">/</span><span class="n">sling</span><span class="o">/</span><span class="n">trunk</span> <span class="n">sling</span>
 </pre></div>
 
 
-<h3 id="developer-access">Developer access</h3>
+<h3 id="developer-access">Developer access<a class="headerlink" href="#developer-access" title="Permanent link">&para;</a></h3>
 <p>Everyone can access the Subversion repository via HTTPS, but Committers must checkout the Subversion repository via HTTPS.</p>
 <div class="codehilite"><pre>$ <span class="n">svn</span> <span class="n">checkout</span> <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">svn</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">org</span><span class="o">/</span><span class="n">repos</span><span class="o">/</span><span class="n">asf</span><span class="o">/</span><span class="n">sling</span><span class="o">/</span><span class="n">trunk</span> <span class="n">sling</span>
 </pre></div>
@@ -170,13 +192,13 @@
 </pre></div>
 
 
-<h3 id="access-from-behind-a-firewall">Access from behind a firewall</h3>
+<h3 id="access-from-behind-a-firewall">Access from behind a firewall<a class="headerlink" href="#access-from-behind-a-firewall" title="Permanent link">&para;</a></h3>
 <p>For those users who are stuck behind a corporate firewall which is blocking http access to the Subversion repository, you can try to access it via the developer connection:</p>
 <div class="codehilite"><pre>$ <span class="n">svn</span> <span class="n">checkout</span> <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">svn</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">org</span><span class="o">/</span><span class="n">repos</span><span class="o">/</span><span class="n">asf</span><span class="o">/</span><span class="n">sling</span><span class="o">/</span><span class="n">trunk</span> <span class="n">sling</span>
 </pre></div>
 
 
-<h3 id="access-through-a-proxy">Access through a proxy</h3>
+<h3 id="access-through-a-proxy">Access through a proxy<a class="headerlink" href="#access-through-a-proxy" title="Permanent link">&para;</a></h3>
 <p>The Subversion client can go through a proxy, if you configure it to do so. First, edit your "servers" configuration file to indicate which proxy to use. The files location depends on your operating system. On Linux or Unix it is located in the directory "~/.subversion". On Windows it is in "%APPDATA%\Subversion". (Try "echo %APPDATA%", note this is a hidden directory.)</p>
 <p>There are comments in the file explaining what to do. If you don't have that file, get the latest Subversion client and run any command; this will cause the configuration directory and template files to be created.</p>
 <p>Example : Edit the 'servers' file and add something like :</p>
@@ -186,7 +208,7 @@
 </pre></div>
 
 
-<h2 id="continuous-integration">Continuous Integration</h2>
+<h2 id="continuous-integration">Continuous Integration<a class="headerlink" href="#continuous-integration" title="Permanent link">&para;</a></h2>
 <p>Sling builds run automatically on the ASF's <a href="http://ci.apache.org/#buildbot">Buildbot</a> servers, triggered
 by commits.</p>
 <p>As we write this the following builds are active:</p>
@@ -196,9 +218,9 @@ by commits.</p>
 </ul>
 <p><a href="https://issues.apache.org/jira/browse/SLING-3234">SLING-3234</a> should be kept up to date with the latest info 
 about our Buildbot setup.</p>
-<h2 id="documentation-repository">Documentation Repository</h2>
+<h2 id="documentation-repository">Documentation Repository<a class="headerlink" href="#documentation-repository" title="Permanent link">&para;</a></h2>
 <p>The documentation website, in fact the very page that you are reading right now, is located at <a href="https://cms.apache.org/sling/">The ASF Content Management System’s Sling project</a>. You can contribute without being an official project committer.</p>
-<h3 id="save-your-changes-as-an-svn-patch">Save your changes as an SVN patch:</h3>
+<h3 id="save-your-changes-as-an-svn-patch">Save your changes as an SVN patch:<a class="headerlink" href="#save-your-changes-as-an-svn-patch" title="Permanent link">&para;</a></h3>
 <ol>
 <li>Log in as username <em>anonymous</em> and leave the password blank.</li>
 <li>Click <em>Get sling Working Copy</em> to check out a local branch through the browser.</li>
@@ -208,14 +230,14 @@ about our Buildbot setup.</p>
 <li>Click <em>submit</em>.</li>
 <li>Click <em>Diff</em>, then <em>Download Diff</em> and save the SVN patch to your computer.</li>
 </ol>
-<h3 id="submit-your-changes">Submit your changes:</h3>
+<h3 id="submit-your-changes">Submit your changes:<a class="headerlink" href="#submit-your-changes" title="Permanent link">&para;</a></h3>
 <ol>
 <li>Navigate to the <a href="https://issues.apache.org/jira/browse/SLING">Jira issue tracker</a>.</li>
 <li>Create an account and/or login.</li>
 <li>Create a ticket, enter a description and choose <em>Documentation</em> for <em>Components</em>.</li>
 <li>Select the ticket, click <em>more</em>, select <em>attach files</em> and attach your SVN patch.</li>
 </ol>
-<h3 id="further-resources">Further resources:</h3>
+<h3 id="further-resources">Further resources:<a class="headerlink" href="#further-resources" title="Permanent link">&para;</a></h3>
 <ol>
 <li>Read the <a href="http://www.apache.org/dev/cmsref#non-committer">ASF CMS reference for non-committers</a>.</li>
 <li>Watch a <a href="http://s.apache.org/cms-anonymous-tutorial">video tutorial by Rob Weir for anonymous users</a>.</li>

Modified: websites/staging/sling/trunk/content/project-information/apache-sling-community-roles-and-processes.html
==============================================================================
--- websites/staging/sling/trunk/content/project-information/apache-sling-community-roles-and-processes.html (original)
+++ websites/staging/sling/trunk/content/project-information/apache-sling-community-roles-and-processes.html Tue Sep 22 10:23:16 2015
@@ -18,11 +18,11 @@
     limitations under the License.
 -->
   <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
     <title>Apache Sling - Apache Sling Community Roles and Processes</title>
     <link rel="icon" href="/res/favicon.ico">
     <link rel="stylesheet" href="/res/site.css" type="text/css" media="all">
     <link rel="stylesheet" href="/res/codehilite.css" type="text/css" media="all">
-    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
   </head>
   <body>
     <div class="title">
@@ -39,7 +39,18 @@
     </div>
     
     <div class="menu"> 
-      <p><strong><a href="/documentation.html">Documentation</a></strong> <br />
+      <style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<p><strong><a href="/documentation.html">Documentation</a></strong> <br />
 <a href="/documentation/getting-started.html">Getting Started</a> <br />
 <a href="/documentation/the-sling-engine.html">The Sling Engine</a> <br />
 <a href="/documentation/development.html">Development</a> <br />
@@ -90,27 +101,38 @@
       
       
       <h1>Apache Sling Community Roles and Processes</h1>
-      <p>The Community Roles and Processes are put in effect as of 13/May/2009. Updated 7/December/2009 to reflect Sling being a top level project.</p>
-<h2 id="roles">Roles</h2>
+      <style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<p>The Community Roles and Processes are put in effect as of 13/May/2009. Updated 7/December/2009 to reflect Sling being a top level project.</p>
+<h2 id="roles">Roles<a class="headerlink" href="#roles" title="Permanent link">&para;</a></h2>
 <p>There are different roles with which Sling community members may be associated: User, Contributor, Committer, and PMC (Project Management Committee) Member. These roles are assigned and assumed based on merit. </p>
 <p>The User and Contributor roles are acquired by using the software and participating in the community, but the Committer and PMC member roles can only be granted by a PMC vote.</p>
 <p>The roles defined here conform to the ASF's <a href="http://www.apache.org/foundation/how-it-works.html#roles">definition of roles</a>.</p>
-<h3 id="users">Users</h3>
+<h3 id="users">Users<a class="headerlink" href="#users" title="Permanent link">&para;</a></h3>
 <p>Users are the people who use any of the products of the Sling project. People in this role are not contributing code, but they are using the products, reporting bugs, making feature requests, testing code, and such. This is by far the most important category of people, since without users there is no reason for Sling. When a user starts to contribute code or documentation patches, they become a <em>Contributor</em>.</p>
-<h3 id="contributors">Contributors</h3>
+<h3 id="contributors">Contributors<a class="headerlink" href="#contributors" title="Permanent link">&para;</a></h3>
 <p>Contributors are the people who write code or documentation patches or contribute positively to the project in other ways. A volunteer's contribution is always recognized.</p>
-<h3 id="committers">Committers</h3>
+<h3 id="committers">Committers<a class="headerlink" href="#committers" title="Permanent link">&para;</a></h3>
 <p>Contributors who give frequent and valuable contributions to a subproject of Sling can have their status promoted to that of a <em><a href="http://www.apache.org/dev/committers.html">Committer</a></em>. A Committer has write access to Sling's source code repository. Contributors of documentation are eligible as committers in the same way as contributors of pure code.</p>
-<h3 id="pmc-members">PMC Members</h3>
+<h3 id="pmc-members">PMC Members<a class="headerlink" href="#pmc-members" title="Permanent link">&para;</a></h3>
 <p>Committers showing continued interest in the project and taking an active part in the evolution of the project may be elected as  <em><a href="http://www.apache.org/dev/pmc.html">PMC</a> members</em>. The PMC (Project Management Committee) is the official managing body of project and is responsible for setting its overall direction.</p>
-<h2 id="processes">Processes</h2>
-<h3 id="becoming-a-user-or-contributor">Becoming a User or Contributor</h3>
+<h2 id="processes">Processes<a class="headerlink" href="#processes" title="Permanent link">&para;</a></h2>
+<h3 id="becoming-a-user-or-contributor">Becoming a User or Contributor<a class="headerlink" href="#becoming-a-user-or-contributor" title="Permanent link">&para;</a></h3>
 <p>There is no requirement for becoming a User or Contributor; these roles are open to everyone.</p>
-<h3 id="becoming-a-committer">Becoming a Committer</h3>
+<h3 id="becoming-a-committer">Becoming a Committer<a class="headerlink" href="#becoming-a-committer" title="Permanent link">&para;</a></h3>
 <p>In order for a Contributor to become a Committer, a member of the PMC can nominate that Contributor to the PMC. Once a Contributor is nominated, the PMC calls a vote on the PMC private mailing list.</p>
 <p>If there are at least three positive votes and no negative votes after three days (72 hours), the results are posted to the PMC private mailing list.</p>
 <p>Upon a positive vote result, the Contributor will be emailed by the PMC to invite him/her to become a Committer. If the invitation is accepted, an announcement about the new Committer is made to the developer mailing list and he/she is given write access to the source code repository. A Contributor will not officially become a Committer member until the appropriate legal paperwork is submitted.</p>
-<h3 id="becoming-a-pmc-member">Becoming a PMC Member</h3>
+<h3 id="becoming-a-pmc-member">Becoming a PMC Member<a class="headerlink" href="#becoming-a-pmc-member" title="Permanent link">&para;</a></h3>
 <p>In order for a Committer to become a member of the PMC, a member of the PMC can nominate that Committer to the PMC. Once a Committer is nominated, the PMC calls a vote on the PMC private mailing list.</p>
 <p>If there are at least three positive votes and no negative votes after three days (72 hours), the results are posted to the PMC private mailing list.</p>
 <p>To have the Committer being accepted as a PMC member, the ASF Board has acknowledge the addition to the PMC. The Committer should not be consulted about his/her desire to become a PMC member before the board acknowledgement, or be informed that they are being considered, since this could create hard feelings if the vote does not pass.</p>

Modified: websites/staging/sling/trunk/content/project-information/project-license.html
==============================================================================
--- websites/staging/sling/trunk/content/project-information/project-license.html (original)
+++ websites/staging/sling/trunk/content/project-information/project-license.html Tue Sep 22 10:23:16 2015
@@ -18,11 +18,11 @@
     limitations under the License.
 -->
   <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
     <title>Apache Sling - Project License</title>
     <link rel="icon" href="/res/favicon.ico">
     <link rel="stylesheet" href="/res/site.css" type="text/css" media="all">
     <link rel="stylesheet" href="/res/codehilite.css" type="text/css" media="all">
-    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
   </head>
   <body>
     <div class="title">
@@ -39,7 +39,18 @@
     </div>
     
     <div class="menu"> 
-      <p><strong><a href="/documentation.html">Documentation</a></strong> <br />
+      <style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<p><strong><a href="/documentation.html">Documentation</a></strong> <br />
 <a href="/documentation/getting-started.html">Getting Started</a> <br />
 <a href="/documentation/the-sling-engine.html">The Sling Engine</a> <br />
 <a href="/documentation/development.html">Development</a> <br />
@@ -90,7 +101,18 @@
       
       
       <h1>Project License</h1>
-      <p>As with all projects of the
+      <style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<p>As with all projects of the
 <a href="http://apache.org">Apache Software Foundation</a>,
 Apache Sling is licensed under the
 <a href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License, Version 2.0</a></p>

Modified: websites/staging/sling/trunk/content/project-information/project-team.html
==============================================================================
--- websites/staging/sling/trunk/content/project-information/project-team.html (original)
+++ websites/staging/sling/trunk/content/project-information/project-team.html Tue Sep 22 10:23:16 2015
@@ -18,11 +18,11 @@
     limitations under the License.
 -->
   <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
     <title>Apache Sling - Project Team</title>
     <link rel="icon" href="/res/favicon.ico">
     <link rel="stylesheet" href="/res/site.css" type="text/css" media="all">
     <link rel="stylesheet" href="/res/codehilite.css" type="text/css" media="all">
-    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
   </head>
   <body>
     <div class="title">
@@ -39,7 +39,18 @@
     </div>
     
     <div class="menu"> 
-      <p><strong><a href="/documentation.html">Documentation</a></strong> <br />
+      <style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<p><strong><a href="/documentation.html">Documentation</a></strong> <br />
 <a href="/documentation/getting-started.html">Getting Started</a> <br />
 <a href="/documentation/the-sling-engine.html">The Sling Engine</a> <br />
 <a href="/documentation/development.html">Development</a> <br />
@@ -90,12 +101,23 @@
       
       
       <h1>Project Team</h1>
-      <p>A successful project requires many people to play many roles. Some members write code or documentation, while others are valuable as testers, submitting patches and suggestions.</p>
+      <style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<p>A successful project requires many people to play many roles. Some members write code or documentation, while others are valuable as testers, submitting patches and suggestions.</p>
 <p>The team is comprised of Committers and Contributors. Committers have direct access to the source of a project and actively evolve the code-base. Contributors improve the project through submission of patches and suggestions to the Members. The number of Contributors to the project is unbounded. Get involved today. All contributions to the project are greatly appreciated.</p>
-<h2 id="committers-and-pmc-members">Committers and PMC members</h2>
+<h2 id="committers-and-pmc-members">Committers and PMC members<a class="headerlink" href="#committers-and-pmc-members" title="Permanent link">&para;</a></h2>
 <p>The following is a list of developers with commit privileges that have directly contributed to the project in one way or another.</p>
 <p>Committers marked with an asterisk (*) are also members of the Sling Project Management Commitee (<a href="http://www.apache.org/dev/pmc.html">PMC</a>) as defined in <a href="/project-information/apache-sling-community-roles-and-processes.html">Apache Sling Community Roles and Processes</a></p>
-<table>
+<table class="table">
 <thead>
 <tr>
 <th>Id</th>
@@ -305,9 +327,9 @@
 </tr>
 </tbody>
 </table>
-<h2 id="emeritus-committers-and-pmc-members">Emeritus Committers and PMC members</h2>
+<h2 id="emeritus-committers-and-pmc-members">Emeritus Committers and PMC members<a class="headerlink" href="#emeritus-committers-and-pmc-members" title="Permanent link">&para;</a></h2>
 <p>The following list of former committers and PMC members have chosen to go emeritus. We are still thankful for their help and guidance during earlier phases of the Sling project.</p>
-<table>
+<table class="table">
 <thead>
 <tr>
 <th>Id</th>
@@ -332,9 +354,9 @@
 </tbody>
 </table>
 <p>Committers with their names printed in bold face have also been members of the PMC (or PPMC during Sling incubation) as defined in <a href="/project-information/apache-sling-community-roles-and-processes.html">Apache Sling Community Roles and Processes</a></p>
-<h2 id="emeritus-pmc-members">Emeritus PMC members</h2>
+<h2 id="emeritus-pmc-members">Emeritus PMC members<a class="headerlink" href="#emeritus-pmc-members" title="Permanent link">&para;</a></h2>
 <p>The following list of former PMC members have chosen to go emeritus as a PMC member but stay active as a committer. We are still thankful for their help and guidance.</p>
-<table>
+<table class="table">
 <thead>
 <tr>
 <th>Id</th>
@@ -352,7 +374,7 @@
 </tr>
 </tbody>
 </table>
-<h2 id="contributors">Contributors</h2>
+<h2 id="contributors">Contributors<a class="headerlink" href="#contributors" title="Permanent link">&para;</a></h2>
 <p>There are no contributors listed for this project.</p>
       <div class="timestamp" style="margin-top: 30px; font-size: 80%; text-align: right;">
         Rev. 1658422 by tomekr on Mon, 9 Feb 2015 14:59:10 +0000

Modified: websites/staging/sling/trunk/content/project-information/security.html
==============================================================================
--- websites/staging/sling/trunk/content/project-information/security.html (original)
+++ websites/staging/sling/trunk/content/project-information/security.html Tue Sep 22 10:23:16 2015
@@ -18,11 +18,11 @@
     limitations under the License.
 -->
   <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
     <title>Apache Sling - Security</title>
     <link rel="icon" href="/res/favicon.ico">
     <link rel="stylesheet" href="/res/site.css" type="text/css" media="all">
     <link rel="stylesheet" href="/res/codehilite.css" type="text/css" media="all">
-    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
   </head>
   <body>
     <div class="title">
@@ -39,7 +39,18 @@
     </div>
     
     <div class="menu"> 
-      <p><strong><a href="/documentation.html">Documentation</a></strong> <br />
+      <style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<p><strong><a href="/documentation.html">Documentation</a></strong> <br />
 <a href="/documentation/getting-started.html">Getting Started</a> <br />
 <a href="/documentation/the-sling-engine.html">The Sling Engine</a> <br />
 <a href="/documentation/development.html">Development</a> <br />
@@ -90,7 +101,18 @@
       
       
       <h1>Security</h1>
-      <h1 id="reporting-new-security-problems-with-apache-sling">Reporting New Security Problems with Apache Sling</h1>
+      <style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<h1 id="reporting-new-security-problems-with-apache-sling">Reporting New Security Problems with Apache Sling<a class="headerlink" href="#reporting-new-security-problems-with-apache-sling" title="Permanent link">&para;</a></h1>
 <p>The Apache Software Foundation takes a very active stance in eliminating security problems and denial of service attacks against Apache Sling.</p>
 <p>We strongly encourage folks to report such problems to our private security mailing list first, before disclosing them in a public forum.</p>
 <p><em>Please note that the security mailing list should only be used for reporting undisclosed security vulnerabilities in Apache Sling and managing the process of fixing such vulnerabilities. We cannot accept regular bug reports or other queries at this address. All mail sent to this address that does not relate to an undisclosed security problem in the Apache Sling source code will be ignored.</em></p>
@@ -106,9 +128,9 @@
 <p>The private security mailing address is: security(at)sling.apache.org.</p>
 <p>Note that all networked servers are subject to denial of service attacks, and we cannot promise magic workarounds to generic problems (such as a client streaming lots of data to your server, or re-requesting the same URL repeatedly). In general our philosophy is to avoid any attacks which can cause the server to consume resources in a non-linear relationship to the size of inputs.</p>
 <p>For more information on handling security issues at the Apache Software Foundation please refer to the <a href="http://www.apache.org/security/">ASF Security Team</a> page and to the <a href="http://www.apache.org/security/committers.html">security process description for committers</a>.</p>
-<h1 id="errors-and-omissions">Errors and omissions</h1>
+<h1 id="errors-and-omissions">Errors and omissions<a class="headerlink" href="#errors-and-omissions" title="Permanent link">&para;</a></h1>
 <p>Please report any errors or omissions to security(at)sling.apache.org.</p>
-<h1 id="previously-reported-security-issues">Previously reported security issues</h1>
+<h1 id="previously-reported-security-issues">Previously reported security issues<a class="headerlink" href="#previously-reported-security-issues" title="Permanent link">&para;</a></h1>
 <ul>
 <li>CVE-2012-2138 - Apache Sling denial of service vulnerability (July 6th, 2012), see <a href="http://s.apache.org/CVE-2012-2138">http://s.apache.org/CVE-2012-2138</a></li>
 <li>CVE-2013-2254 - Apache Sling denial of service vulnerability (October 9th, 2013), see <a href="http://s.apache.org/CVE-2013-2254">http://s.apache.org/CVE-2013-2254</a></li>

Modified: websites/staging/sling/trunk/content/site-conversion.html
==============================================================================
--- websites/staging/sling/trunk/content/site-conversion.html (original)
+++ websites/staging/sling/trunk/content/site-conversion.html Tue Sep 22 10:23:16 2015
@@ -18,11 +18,11 @@
     limitations under the License.
 -->
   <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
     <title>Apache Sling - Site conversion in progress - excuse our mess...</title>
     <link rel="icon" href="/res/favicon.ico">
     <link rel="stylesheet" href="/res/site.css" type="text/css" media="all">
     <link rel="stylesheet" href="/res/codehilite.css" type="text/css" media="all">
-    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
   </head>
   <body>
     <div class="title">
@@ -39,7 +39,18 @@
     </div>
     
     <div class="menu"> 
-      <p><strong><a href="/documentation.html">Documentation</a></strong> <br />
+      <style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<p><strong><a href="/documentation.html">Documentation</a></strong> <br />
 <a href="/documentation/getting-started.html">Getting Started</a> <br />
 <a href="/documentation/the-sling-engine.html">The Sling Engine</a> <br />
 <a href="/documentation/development.html">Development</a> <br />
@@ -90,7 +101,18 @@
       
       
       <h1>Site conversion in progress - excuse our mess...</h1>
-      <p>The Sling website was recently converted to use the Apache CMS for content management,
+      <style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<p>The Sling website was recently converted to use the Apache CMS for content management,
 and we still have to check a number of pages for correct conversion.</p>
 <p>During this transition phase, old versions of a number of pages are still present under
 /site, along with their converted versions at other, more specific paths.</p>

Modified: websites/staging/sling/trunk/content/sitemap.html
==============================================================================
--- websites/staging/sling/trunk/content/sitemap.html (original)
+++ websites/staging/sling/trunk/content/sitemap.html Tue Sep 22 10:23:16 2015
@@ -18,11 +18,11 @@
     limitations under the License.
 -->
   <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
     <title>Apache Sling - Sitemap</title>
     <link rel="icon" href="/res/favicon.ico">
     <link rel="stylesheet" href="/res/site.css" type="text/css" media="all">
     <link rel="stylesheet" href="/res/codehilite.css" type="text/css" media="all">
-    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
   </head>
   <body>
     <div class="title">
@@ -39,7 +39,18 @@
     </div>
     
     <div class="menu"> 
-      <p><strong><a href="/documentation.html">Documentation</a></strong> <br />
+      <style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<p><strong><a href="/documentation.html">Documentation</a></strong> <br />
 <a href="/documentation/getting-started.html">Getting Started</a> <br />
 <a href="/documentation/the-sling-engine.html">The Sling Engine</a> <br />
 <a href="/documentation/development.html">Development</a> <br />
@@ -90,7 +101,18 @@
       
       
       <h1>Sitemap</h1>
-      <ul>
+      <style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<ul>
 <li><a href="/contributing.html">Contributing</a></li>
 <li><a href="/documentation.html">Documentation</a><ul>
 <li><a href="/documentation/bundles.html">Bundles</a><ul>
@@ -113,6 +135,8 @@
 <li><a href="/documentation/bundles/manipulating-content-the-slingpostservlet-servlets-post.html">Manipulating Content - The SlingPostServlet (servlets.post)</a></li>
 <li><a href="/documentation/bundles/mime-type-support-commons-mime.html">MIME Type Support (commons.mime and commons.contentdetection)</a></li>
 <li><a href="/documentation/bundles/models.html">Sling Models</a></li>
+<li><a href="/documentation/bundles/nosql-resource-providers.html">NoSQL Resource Providers (org.apache.sling.nosql)</a></li>
+<li><a href="/documentation/bundles/org-apache-sling-junit-bundles.html">JUnit server-side testing support bundles</a></li>
 <li><a href="/documentation/bundles/osgi-installer.html">OSGi Installer</a></li>
 <li><a href="/documentation/bundles/output-rewriting-pipelines-org-apache-sling-rewriter.html">Output Rewriting Pipelines (org.apache.sling.rewriter)</a></li>
 <li><a href="/documentation/bundles/rendering-content-default-get-servlets.html">Rendering Content - Default GET Servlets</a></li>