You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by as...@apache.org on 2007/09/08 22:17:47 UTC

svn commit: r573901 [2/44] - in /cocoon/site: site/ site/2.0/ site/2.0/developing/ site/2.0/faq/ site/2.0/howto/chaperon/ site/2.0/installing/ site/2.0/plan/ site/2.0/snippet/ site/2.0/tutorial/ site/2.0/userdocs/ site/2.0/userdocs/actions/ site/2.0/us...

Modified: cocoon/site/site/2.0/developing/deli.html
URL: http://svn.apache.org/viewvc/cocoon/site/site/2.0/developing/deli.html?rev=573901&r1=573900&r2=573901&view=diff
==============================================================================
--- cocoon/site/site/2.0/developing/deli.html (original)
+++ cocoon/site/site/2.0/developing/deli.html Sat Sep  8 13:17:41 2007
@@ -1,1223 +1,1223 @@
-<html>
-<head>
-<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>DELI</title>
-<STYLE type="text/css">
-a.menu {
-	color: #FFFFFF;
-    text-align:left;               
-    font-size:12px;
-    font-family: Verdana, Arial, Helvetica, sans-serif;
-    font-weight:plain;
-    text-decoration:none;
-    padding-left: 14px
-}
-
-A.menu:hover {
-	color: #FFCC00
-}
-
-
-.menutitle {
-	color: #000000;
-    text-align:left;               
-    font-size:10px;
-    font-family: Verdana, Arial, Helvetica, sans-serif;
-    font-weight:bold;
-    padding-left: 8px
-}
-.menuselected {
-	color: #FFCC00;
-    text-align:left;               
-    font-size:12px;
-    font-family: Verdana, Arial, Helvetica, sans-serif;
-    font-weight:bold;
-    padding-left: 14px
-}
-</STYLE>
-</head>
-<body bgcolor="#ffffff" marginheight="4" marginwidth="4" leftmargin="4" topmargin="4" alink="#cc0000" vlink="#0086b2" link="#039acc" text="#000000">
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
-<tr>
-<td align="left" valign="top" rowspan="3" height="60" width="135"><img border="0" vspace="0" hspace="0" src="images/logo.gif" height="60" width="135"></td><td background="images/line.gif" rowspan="1" colSpan="2" align="left" valign="top" height="0" width="100%"></td><td align="left" valign="top" rowspan="3" height="60" width="29"><img border="0" vspace="0" hspace="0" src="images/right.gif" height="60" width="29"></td>
-</tr>
-<tr>
-<td bgcolor="#0086b2" colspan="2" align="right" valign="top" height="35" width="100%"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="5">DELI</font></td>
-</tr>
-<tr>
-<td background="images/bottom.gif" colspan="2" width="100%" valign="top" height="20" bgcolor="#0086b2" align="right">
-<table width="288" cellspacing="0" cellpadding="0" border="0">
-<tr>
-<td align="left" valign="top" height="20" width="96"><a target="new" href="http://xml.apache.org/"><img border="0" vspace="0" hspace="0" name="xml" src="images/button-xml-lo.gif" height="20" width="96" alt="http://xml.apache.org/"></a></td><td align="left" valign="top" height="20" width="96"><a target="new" href="http://www.apache.org/"><img border="0" vspace="0" hspace="0" name="asf" src="images/button-asf-lo.gif" height="20" width="96" alt="http://www.apache.org/"></a></td><td align="left" valign="top" height="20" width="96"><a target="new" href="http://www.w3.org/"><img border="0" vspace="0" hspace="0" name="w3c" src="images/button-w3c-lo.gif" height="20" width="96" alt="http://www.w3.org/"></a></td>
-</tr>
-</table>
-</td>
-</tr>
-</table>
-<table width="100%" cellspacing="0" cellpadding="0" border="0">
-<tr width="100%">
-<td align="left" valign="top" width="120">
-<table width="120" cellspacing="0" cellpadding="0" border="0" bgcolor="#a0a0a0">
-<tr>
-<td valign="top" align="left"><img width="120" vspace="0" src="images/join.gif" hspace="0" height="14" border="0"><br>
-</td>
-</tr>
-<tr>
-<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="../index.html">Main</a></td>
-</tr>
-<tr>
-<td background="images/label-background_b.gif" bgcolor="#959595" valign="top"><img width="120" height="6" src="images/separator.gif"><br>
-<span class="menutitle">Concepts</span></td>
-</tr>
-<tr>
-<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="httprequest.html">Internals</a></td>
-</tr>
-<tr>
-<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="extending.html">Extending</a></td>
-</tr>
-<tr>
-<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="avalon.html">Avalon</a></td>
-</tr>
-<tr>
-<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="datasources.html">Using Databases</a></td>
-</tr>
-<tr>
-<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="parent-component-manager.html">Parent CM</a></td>
-</tr>
-<tr>
-<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="deliquick.html">DELI Quick Start</a></td>
-</tr>
-<tr>
-<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><span class="menuselected">DELI</span></td>
-</tr>
-<tr>
-<td background="images/label-background_b.gif" bgcolor="#959595" valign="top"><img width="120" height="6" src="images/separator.gif"><br>
-<span class="menutitle">Webapps</span></td>
-</tr>
-<tr>
-<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="webapps/index.html">Developing Webapps</a></td>
-</tr>
-<tr>
-<td background="images/label-background_b.gif" bgcolor="#959595" valign="top"><img width="120" height="6" src="images/separator.gif"><br>
-<span class="menutitle">Java</span></td>
-</tr>
-<tr>
-<td valign="top" background="images/label-background_a.gif" bgcolor="#959595"><a class="menu" target="new" href="../apidocs/index.html">API (Javadoc)</a></td>
-</tr>
-<tr>
-<td align="left" valign="top"><img width="120" vspace="0" src="images/close.gif" hspace="0" height="14" border="0"><br>
-</td>
-</tr>
-</table>
-</td><td>
-<table cellspacing="15" cellpadding="0" border="0">
-<tr>
-<td>
-	
-	
-		<font face="verdana, helvetica, sans serif" size="+2" color="#0086b2">Introduction</font>
-<hr style="color: #0086b2" size="1">
-			
-<p>
-<font color="black" face="verdana,helvetica,sanserif">In order for a web server 
-to provide optimized content to different clients it requires a description of the 
-capabilities of the client. Two new compatible standards have been created for 
-describing delivery context based on the 
-<a href="http://www.w3.org/RDF/">Resource Description Framework (RDF)</a>: 
-<a href="http://www.w3.org/Mobile/CCPP/">Composite Capabilities / Preferences Profile (CC/PP)</a> 
-created by the <a href="http://www.w3.org">W3C</a> and 
-<a href="http://www1.wapforum.org/tech/terms.asp?doc=WAP-248-UAProf-20010530-p.pdf">User Agent Profile (UAProf)</a> 
-created by the 
-<a href="http://www.wapforum.org">WAP Forum</a>. 
-These standards allow the efficient transmission of 
-delivery context information to the server even via low bandwidth wireless networks. 
-Instead of sending an entire profile with every request, 
-a client only sends a reference to a profile, stored on a third device known 
-as a profile repository, along with a list of differences specific to this particular 
-client. The process of reassembling the final profile from 
-the profile references and differences is known as profile resolution.</font>
-</p>
-			
-<p>
-<font color="black" face="verdana,helvetica,sanserif">
-				<a href="http://www-uk.hpl.hp.com/">HP Labs</a> 
-has produced an open-source library called DELI that allows Java servlets to resolve HTTP requests 
-containing CC/PP or UAProf information and query the resolved 
-profile. This document describes how DELI may be used
-within Apache Cocoon. For more information on the DELI library please refer to the 
-<a href="http://www-uk.hpl.hp.com/people/marbut/">DELI web-site</a>.
-DELI currently uses 
-<a href="http://www.hpl.hp.com/semweb/jena-top.html">Jena</a>, an RDF 
-Framework developed at HP Labs. For more details of Jena see Brian McBride's 
-<a href="http://www-uk.hpl.hp.com/people/bwm/papers/20001221-paper/">paper</a> 
-and the HP Labs 
-<a href="http://www.hpl.hp.com/semweb/">Semantic Web activity</a> homepage.</font>
-</p>
-		
-		
-<font face="verdana, helvetica, sans serif" size="+2" color="#0086b2">CC/PP</font>
-<hr style="color: #0086b2" size="1">
-			
-<p>
-<font color="black" face="verdana,helvetica,sanserif">CC/PP is described in 
-<a href="http://www.w3.org/TR/CCPP-struct-vocab/">CC/PP Structure and Vocabularies</a>, 
-<a href="http://www.w3.org/TR/2000/WD-CCPP-ra-20000721/">CC/PP Requirements and Architecture</a> and 
-<a href="http://www.w3.org/TR/2000/WD-CCPP-ta-20000721/">CC/PP Terminology and Abbreviations</a>.
-A CC/PP profile is broadly constructed as a two level hierarchy: 
-a profile has a number of components and each component has a number 
-of attributes. A protocol for transmitting CC/PP profiles has been
-<a href="http://www.w3.org/TR/NOTE-CCPPexchange">proposed</a> but is based on an experimental 
-variant of HTTP known as <a href="http://www.w3.org/Protocols/HTTP/ietf-http-ext/">HTTP-ex</a> so is not compatible with existing servers. 
-Therefore DELI uses the W-HTTP protocol proposed by UAProf. This has identical functionality to the CC/PP 
-protocol based on HTTP-ex, but is compatible with HTTP/1.1.</font>
-</p>
-		
-		
-<font face="verdana, helvetica, sans serif" size="+2" color="#0086b2">UAProf</font>
-<hr style="color: #0086b2" size="1">
-			
-<p>
-<font color="black" face="verdana,helvetica,sanserif">The UAProf specification is based on the CC/PP specification. Like CC/PP, 
-a UAProf profile is a two level hierarchy composed of components and 
-attributes. Unlike CC/PP, the UAProf specification also proposes a vocabulary 
-- a specific set of components and attributes - to describe the next 
-generation of WAP phones. 
-The specification also describes two protocols for transmitting the profile 
-&gt;from the client to the server. Currently DELI only supports the W-HTTP protocol.</font>
-</p>
-			
-<p>
-<font color="black" face="verdana,helvetica,sanserif">Profiles using the UAProf vocabulary consist of six components: 
-HardwarePlatform, SoftwarePlatform, NetworkCharacteristics, BrowserUA, 
-WapCharacteristics and PushCharacteristics. These components contain attributes. 
-In DELI each attribute has a distinct name and has an associated collection type, 
-attribute type and resolution rule. In UAProf there are three collection types:</font>
-</p>
-			
-<blockquote>
-<ul>
-				
-<li>
-<font face="verdana, helvetica, sans serif">
-					<code><font face="courier, monospaced">Simple</font></code> contains a single value e.g. ColorCapable in HardwarePlatform. </font>
-</li>
-				
-<li>
-<font face="verdana, helvetica, sans serif">
-					<code><font face="courier, monospaced">Bag</font></code> contains multiple unordered values e.g. BluetoothProfile in the 
-HardwarePlatform component.</font>
-</li>
-				
-<li>
-<font face="verdana, helvetica, sans serif">
-					<code><font face="courier, monospaced">Seq</font></code> contains multiple ordered values e.g. Ccpp-AcceptLanguage 
-in the SoftwarePlatform component.</font>
-</li>
-			
-</ul>
-</blockquote>
-			
-<p>
-<font color="black" face="verdana,helvetica,sanserif">In addition attributes can have one of four attribute types:</font>
-</p>
-			
-<blockquote>
-<ul>
-				
-<li>
-<font face="verdana, helvetica, sans serif">
-					<code><font face="courier, monospaced">String</font></code> e.g. BrowserName in BrowserUA.</font>
-</li>
-				
-<li>
-<font face="verdana, helvetica, sans serif">
-					<code><font face="courier, monospaced">Boolean</font></code> e.g. ColorCapable in HardwarePlatform.</font>
-</li>
-				
-<li>
-<font face="verdana, helvetica, sans serif">
-					<code><font face="courier, monospaced">Number</font></code> is a positive integer e.g. BitsPerPixel in HardwarePlatform.</font>
-</li>
-				
-<li>
-<font face="verdana, helvetica, sans serif">
-					<code><font face="courier, monospaced">Dimension</font></code> is a pair of positive integers e.g. ScreenSize in HardwarePlatform.</font>
-</li>
-			
-</ul>
-</blockquote>
-			
-<p>
-<font color="black" face="verdana,helvetica,sanserif">Finally attributes are associated with a resolution rule:</font>
-</p>
-			
-<blockquote>
-<ul>
-				
-<li>
-<font face="verdana, helvetica, sans serif">
-					<code><font face="courier, monospaced">Locked</font></code> indicates the final value of an attribute is the first 
-occurrence of the attribute outside the default description block.</font>
-</li>
-				
-<li>
-<font face="verdana, helvetica, sans serif">
-					<code><font face="courier, monospaced">Override</font></code> indicates the final value of an attribute is the last occurrence 
-of the attribute outside the default description block.</font>
-</li>
-				
-<li>
-<font face="verdana, helvetica, sans serif">
-					<code><font face="courier, monospaced">Append</font></code> indicates the final value of the attribute is the 
-list of all occurrences of the attribute outside the default 
-description block.</font>
-</li>
-			
-</ul>
-</blockquote>
-			
-<p>
-<font color="black" face="verdana,helvetica,sanserif">The UAProf vocabulary is described using the file <code><font face="courier, monospaced">uaprofspec.xml</font></code>. 
-This describes the attribute name, component, 
-collectionType, attributeType and resolution rule of each component. 
-The vocabulary description file has the following format:</font>
-</p>
-			
-<div align="center">
-<table border="0" cellpadding="0" cellspacing="4">
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
-<pre>
-&lt;?xml version="1.0"?&gt;
-&lt;vocabspec&gt;
-	&lt;attribute&gt;
-		&lt;name&gt;CcppAccept&lt;/name&gt;
-		&lt;component&gt;SoftwarePlatform&lt;/component&gt;
-		&lt;collectionType&gt;Bag&lt;/collectionType&gt;
-		&lt;attributeType&gt;Literal&lt;/attributeType&gt;
-		&lt;resolution&gt;Append&lt;/resolution&gt;
-	&lt;/attribute&gt;
-&lt;/vocabspec&gt;
-</pre>
-</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-</table>
-</div>
-			
-<p>
-<font color="black" face="verdana,helvetica,sanserif">DELI can also read vocabularies described using RDF schemas. The WAP Forum have 
-			published two such schemas to describe the two versions of UAProf currently in use. However 
-			RDF Schema does not provide an easy way of describing attributeType or resolution rule. 
-			Therefore the UAProf schemas store this information in the comments field for each attribute. 			
-			Therefore DELI also parses the comments fields to create the vocabulary. This is not an ideal 
-			solution so hopefully a more robust way of representing this information will be used in later versions of UAProf.</font>
-</p>
-		
-		
-<font face="verdana, helvetica, sans serif" size="+2" color="#0086b2">W-HTTP Protocol</font>
-<hr style="color: #0086b2" size="1">
-			
-<p>
-<font color="black" face="verdana,helvetica,sanserif">An 
-example W-HTTP request using this protocol is shown below:</font>
-</p>
-			
-<div align="center">
-<table border="0" cellpadding="0" cellspacing="4">
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
-<pre>
-GET /ccpp/html/ HTTP/1.1
-Host: localhost
-x-wap-profile:"http://127.0.0.1:8080/ccpp/profiles/test09defaults.rdf", 
-  "1-Rb0sq/nuUFQU75vAjKyiHw=="
-x-wap-profile-diff:1;&lt;?xml version="1.0"?&gt;
- &lt;rdf:RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
-  xmlns:prf="http://www.wapforum.org/profiles/UAPROF/ccppschema-20010430#"&gt;
-  &lt;rdf:Description rdf:ID="MyDeviceProfile"&gt;
-     &lt;prf:component&gt;
-       &lt;rdf:Description rdf:ID="HardwarePlatform"&gt;
-          &lt;rdf:type 
-  rdf:resource="http://www.wapforum.org/profiles/UAPROF/ccppschema-
-    20010426#HardwarePlatform"/&gt;
-  		&lt;prf:BitsPerPixel&gt;16&lt;/prf:BitsPerPixel&gt;
-       &lt;/rdf:Description&gt;
-     &lt;/prf:component&gt;
-  &lt;/rdf:Description&gt;
- &lt;/rdf:RDF&gt;
-</pre>
-</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-</table>
-</div>
-			
-<p>
-<font color="black" face="verdana,helvetica,sanserif">The first two lines
-describe the resource that is being requested by the client, 
-http://localhost/ccpp/html, and the method being used to make 
-the request, GET, and the protocol being used HTTP/1.1. The 
-remaining lines of the request describe the device delivery context. 
-This is specified using a profile reference and a profile-diff. 
-The profile is referenced via the x-wap-profile line and has the URI</font>
-</p>
-			
-<div align="center">
-<table border="0" cellpadding="0" cellspacing="4">
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
-<pre>
-http://127.0.0.1:8080/ccpp/profiles/test09defaults.rdf. 
-</pre>
-</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-</table>
-</div>
-			
-<p>
-<font color="black" face="verdana,helvetica,sanserif">After the profile reference, there is a value</font>
-</p>
-			
-<div align="center">
-<table border="0" cellpadding="0" cellspacing="4">
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
-<pre>
-1-Rb0sq/nuUFQU75vAjKyiHw== 
-</pre>
-</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-</table>
-</div>
-			
-<p>
-<font color="black" face="verdana,helvetica,sanserif">known as a profile-diff digest. 
-The first part of the profile-diff-digest, 1-, is the profile-diff 
-sequence number. This is used to indicate the order of the 
-profile-diffs and to indicate which profile-diff the profile-diff 
-digest refers to. The remainder of the profile-diff digest is 
-generated by applying the 
-<a href="http://www.faqs.org/rfcs/rfc1321.html">MD5 message digest algorithm</a> and Base64 
-algorithm to the corresponding profile-diff. The MD5 algorithm 
-takes as input a message of arbitary length and produces as output 
-a 128-bit "fingerprint" or "message-digest" of the input. 
-The 
-<a href="http://www.faqs.org/rfcs/rfc2045.html">Base64 algorithm</a> takes as input arbitary binary data and 
-produces as output printable encoding data.</font>
-</p>
-			
-<p>
-<font color="black" face="verdana,helvetica,sanserif">After the profile-diff digest, the next line contains the 
-x-wap-profile-diff. This request header field also has a 
-profile-diff sequence number which indicates that this 
-profile-diff corresponds to the previous 
-profile-diff-digest. The profile-diff itself consists of the XML 
-fragment which spans the remainder of the request. Multi-line 
-request header fields are permitted by the HTTP/1.1 specification 
-as long as each subsequent line starts with either a tab character 
-or a whitespace. </font>
-</p>
-			
-<p>
-<font color="black" face="verdana,helvetica,sanserif">When the server receives a HTTP request with UAProf 
-request headers, it has to perform profile resolution 
-i.e. retrieve the referenced profile(s) and any further 
-profiles referenced via default blocks. It then has to 
-merge these profiles and the profile-diffs while 
-applying the UAProf resolution rules.</font>
-</p>
-		
-		
-<font face="verdana, helvetica, sans serif" size="+2" color="#0086b2">Configuring DELI</font>
-<hr style="color: #0086b2" size="1">
-			
-<p>
-<font color="black" face="verdana,helvetica,sanserif">In order to use DELI, you need to enable the DELI component.
-In addition, you may want to configure DELI using <code><font face="courier, monospaced">deliConfig.xml</font></code>, the DELI 
-configuration file or <code><font face="courier, monospaced">legacyDevices.xml</font></code>, the
-DELI legacy device support file.</font>
-</p>
-			
-<font face="verdana, helvetica, sans serif" size="+1" color="#0086b2"><b>Cocoon.xconf</b></font>
-				
-<p>
-<font color="black" face="verdana,helvetica,sanserif">In order to use DELI you need to configure Deli and specify
-the configuration file. You can either
-do this in <code><font face="courier, monospaced">deli.xconf</font></code> in which case you will need to rebuild
-Cocoon or change the deployed <code><font face="courier, monospaced">cocoon.xconf</font></code> in the web-server WEB-INF directory:</font>
-</p>
-				
-<div align="center">
-<table border="0" cellpadding="0" cellspacing="4">
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
-<pre>
-  &lt;deli class="org.apache.cocoon.components.deli.DeliImpl"&gt;
-    &lt;parameter name="deli-config-file" value="deli/config/deliConfig.xml"/&gt;
-  &lt;/deli&gt;
-</pre>
-</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-</table>
-</div>
-			
-			
-<font face="verdana, helvetica, sans serif" size="+1" color="#0086b2"><b>Sitemap.xmap</b></font>
-				
-<p>
-<font color="black" face="verdana,helvetica,sanserif">In order to make profile information available to your stylesheet then you
-				 need to add <code><font face="courier, monospaced">&lt;map:parameter name="use-deli" value="true"/&gt;</font></code> to the 
-				match that specifies your stylesheet in <code><font face="courier, monospaced">sitemap.xmap</font></code>. Here is the match used for the deli test stylesheet:
- </font>
-</p>
-				
-<div align="center">
-<table border="0" cellpadding="0" cellspacing="4">
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
-<pre>
-   &lt;map:match pattern="deli.html"&gt;
-     &lt;map:generate src="docs/samples/hello-page.xml"/&gt;
-     &lt;map:transform src="stylesheets/deli_test.xsl" type="xslt"&gt;
-         &lt;map:parameter name="use-deli" value="true"/&gt;
-     &lt;/map:transform&gt;
-     &lt;map:serialize type="html"/&gt;
-   &lt;/map:match&gt;
-</pre>
-</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-</table>
-</div>
-			
-			
-<font face="verdana, helvetica, sans serif" size="+1" color="#0086b2"><b>Main Configuration File</b></font>
-				
-<p>
-<font color="black" face="verdana,helvetica,sanserif">DELI also has its own
-configuration files that are found in the <code><font face="courier, monospaced">resources\deli\config</font></code> directory. 
-The most important one, <code><font face="courier, monospaced">deliConfig.xml</font></code> is used to configure the main DELI options:</font>
-</p>
-				
-<div align="center">
-<table border="0" cellpadding="0" cellspacing="4">
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
-<pre>
-&lt;?xml version="1.0"?&gt;
-&lt;deli&gt;
- &lt;localProfilesFile&gt;WEB-INF/deli/config/localProfiles.xml&lt;/localProfilesFile&gt;
- &lt;localProfilesPath&gt;WEB-INF/deli/legacyProfiles&lt;/localProfilesPath&gt;
- &lt;useLocalProfilesIfNoCCPP&gt;true&lt;/useLocalProfilesIfNoCCPP&gt;
- &lt;useLocalProfilesInAdditionToCCPP&gt;false&lt;/useLocalProfilesInAdditionToCCPP&gt;
- &lt;debug&gt;false&lt;/debug&gt;
- &lt;printDefaults&gt;true&lt;/printDefaults&gt;
- &lt;printProfileBeforeMerge&gt;false&lt;/printProfileBeforeMerge&gt;
- &lt;processUndefinedAttributes&gt;true&lt;/processUndefinedAttributes&gt;
- &lt;useCapabilityClasses&gt;false&lt;/useCapabilityClasses&gt; 
- &lt;capabilityClassFile&gt;WEB-INF/deli/config/capClass.xml&lt;/capabilityClassFile&gt; 
- &lt;namespaceConfigFile&gt;WEB-INF/deli/config/namespaceConfig.xml&lt;/namespaceConfigFile&gt;
- &lt;!-- note that the default uri is also hardcoded --&gt;
- &lt;rdfsUri&gt;http://www.w3.org/1999/PR-rdf-schema-19990303#&lt;/rdfsUri&gt;
- &lt;rdfsUri&gt;http://www.w3.org/TR/PR-rdf-schema#&lt;/rdfsUri&gt;
-&lt;/deli&gt;
-</pre>
-</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-</table>
-</div>
-				
-<p>
-<font color="black" face="verdana,helvetica,sanserif">This file can contain a number of configuration directives described in 
-in the following sections:</font>
-</p>
-				
-<font face="verdana, helvetica, sans serif" size="+1" color="#0086b2">Caching options</font>
-					
-<p>
-<font color="black" face="verdana,helvetica,sanserif">The caching options control how the server
-caches referenced profiles. DELI can either cache 
-profiles indefinitely or update stale profiles after a set 
-interval. It is also possible to configure the maximum size 
-of the profile cache.</font>
-</p>
-					
-<table cellpadding="2" cellspacing="2" border="0" width="100%">
-<caption>
-<font face="verdana,helvetica,sanserif"></font>
-</caption>
-						
-<tr>
-							
-<td align="center" valign="center" rowspan="1" colspan="1" bgcolor="#039acc"><font face="verdana,helvetica,sanserif" size="-1" color="white"><b>Element Name</b></font></td>
-							<td align="center" valign="center" rowspan="1" colspan="1" bgcolor="#039acc"><font face="verdana,helvetica,sanserif" size="-1" color="white"><b>Default Value</b></font></td>
-							<td align="center" valign="center" rowspan="1" colspan="1" bgcolor="#039acc"><font face="verdana,helvetica,sanserif" size="-1" color="white"><b>Description</b></font></td>
-						
-</tr>
-						
-<tr>
-							
-<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">maxCachedProfileLifetime</font></td>
-							<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">24 hours</font></td>
-							<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">The maximum lifetime of a cached profile in hours.</font></td>
-						
-</tr>
-						
-<tr>
-							
-<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">maxCacheSize</font></td>
-							<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">100</font></td>
-							<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">The maximum number of profiles in the profile cache.</font></td>
-						
-</tr>
-						
-<tr>
-							
-<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">refreshStaleProfiles</font></td>
-							<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">false</font></td>
-							<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">Do we refresh cached profiles after the maximum lifetime has expired?</font></td>
-						
-</tr>
-					
-</table>
-				
-				
-<font face="verdana, helvetica, sans serif" size="+1" color="#0086b2">Debugging options</font>
-					
-<p>
-<font color="black" face="verdana,helvetica,sanserif">The debugging options are used to control the 
-information that DELI prints to the Servlet engine console.</font>
-</p>
-					
-<table cellpadding="2" cellspacing="2" border="0" width="100%">
-<caption>
-<font face="verdana,helvetica,sanserif"></font>
-</caption>
-						
-<tr>
-							
-<td align="center" valign="center" rowspan="1" colspan="1" bgcolor="#039acc"><font face="verdana,helvetica,sanserif" size="-1" color="white"><b>Element Name</b></font></td>
-							<td align="center" valign="center" rowspan="1" colspan="1" bgcolor="#039acc"><font face="verdana,helvetica,sanserif" size="-1" color="white"><b>Default Value</b></font></td>
-							<td align="center" valign="center" rowspan="1" colspan="1" bgcolor="#039acc"><font face="verdana,helvetica,sanserif" size="-1" color="white"><b>Description</b></font></td>
-						
-</tr>
-						
-<tr>
-							
-<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">debug</font></td>
-							<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">true</font></td>
-							<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">Is the automatic debug log information turned on?</font></td>
-						
-</tr>
-						
-<tr>
-							
-<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">printDefaults</font></td>
-							<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">true</font></td>
-							<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">Print both default and override values of attributes for debugging purposes?</font></td>
-						
-</tr>
-						
-<tr>
-							
-<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">printProfileBeforeMerge</font></td>
-							<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">false</font></td>
-							<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">Print the profile before merging for debugging purposes?</font></td>
-						
-</tr>
-					
-</table>
-				
-				
-<font face="verdana, helvetica, sans serif" size="+1" color="#0086b2">Legacy device options</font>
-					
-<p>
-<font color="black" face="verdana,helvetica,sanserif">As already mentioned DELI can support legacy devices 
-by recognising the user-agent string supplied by a client 
-and mapping it on to a profile. In order to use this facility 
-it is necessary to supply an XML file that contains information 
-about legacy device user-agent strings and the corresponding 
-profile URLs. The format for the legacy device file is
-described in a subsequent section. </font>
-</p>
-					
-<table cellpadding="2" cellspacing="2" border="0" width="100%">
-<caption>
-<font face="verdana,helvetica,sanserif"></font>
-</caption>
-						
-<tr>
-							
-<td align="center" valign="center" rowspan="1" colspan="1" bgcolor="#039acc"><font face="verdana,helvetica,sanserif" size="-1" color="white"><b>Element Name</b></font></td>
-							<td align="center" valign="center" rowspan="1" colspan="1" bgcolor="#039acc"><font face="verdana,helvetica,sanserif" size="-1" color="white"><b>Default Value</b></font></td>
-							<td align="center" valign="center" rowspan="1" colspan="1" bgcolor="#039acc"><font face="verdana,helvetica,sanserif" size="-1" color="white"><b>Description</b></font></td>
-						
-</tr>
-						
-<tr>
-							
-<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">useLocalProfilesIfNoCCPP</font></td>
-							<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">true</font></td>
-							<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">Use the legacy device database if devices send no CC/PP information?</font></td>
-						
-</tr>
-						
-<tr>
-							
-<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">localProfilesFile</font></td>
-							<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">legacyDevice.xml</font></td>
-							<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">The file containing the legacy device database.</font></td>
-						
-</tr>
-					
-</table>
-				
-				
-<font face="verdana, helvetica, sans serif" size="+1" color="#0086b2">Protocol options</font>
-					
-<p>
-<font color="black" face="verdana,helvetica,sanserif">It is 
-possible to switch on whitespace normalisation in profile-diffs 
-prior to calculating the profile-diff-digest so that additional 
-whitespaces added by the proxy are ignored. To use this option clients must also support whitespace normalisation.</font>
-</p>
-					
-<table cellpadding="2" cellspacing="2" border="0" width="100%">
-<caption>
-<font face="verdana,helvetica,sanserif"></font>
-</caption>
-						
-<tr>
-							
-<td align="center" valign="center" rowspan="1" colspan="1" bgcolor="#039acc"><font face="verdana,helvetica,sanserif" size="-1" color="white"><b>Element Name</b></font></td>
-							<td align="center" valign="center" rowspan="1" colspan="1" bgcolor="#039acc"><font face="verdana,helvetica,sanserif" size="-1" color="white"><b>Default Value</b></font></td>
-							<td align="center" valign="center" rowspan="1" colspan="1" bgcolor="#039acc"><font face="verdana,helvetica,sanserif" size="-1" color="white"><b>Description</b></font></td>
-						
-</tr>
-						
-<tr>
-							
-<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">normaliseWhitespaceInProfileDiff</font></td>
-							<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">true</font></td>
-							<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">Is whitespace normalisation of the profile-diff prior to calculating the profile-diff-digest turned on?</font></td>
-						
-</tr>
-					
-</table>
-				
-				
-<font face="verdana, helvetica, sans serif" size="+1" color="#0086b2">Vocabulary options</font>
-					
-<p>
-<font color="black" face="verdana,helvetica,sanserif">DELI has a number of vocabulary options. Firstly 
-it is possible to configure the vocabulary using an 
-XML file, or if you are using UAProf using a UAProf RDF Schema.
-You can find examples of both approaches in this distribution.
-Secondly it is possible to 
-specify the URI to be used for the RDF namespace. 
-Thirdly it is possible to set the string used to represent 
-components and defaults in the vocabulary. This is important 
-because the two standards currently use different cases for 
-the first letter of default elements (CC/PP uses "default" 
-whereas UAProf uses "Default"). </font>
-</p>
-					
-<table cellpadding="2" cellspacing="2" border="0" width="100%">
-<caption>
-<font face="verdana,helvetica,sanserif"></font>
-</caption>
-						
-<tr>
-							
-<td align="center" valign="center" rowspan="1" colspan="1" bgcolor="#039acc"><font face="verdana,helvetica,sanserif" size="-1" color="white"><b>Element Name</b></font></td>
-							<td align="center" valign="center" rowspan="1" colspan="1" bgcolor="#039acc"><font face="verdana,helvetica,sanserif" size="-1" color="white"><b>Default Value</b></font></td>
-							<td align="center" valign="center" rowspan="1" colspan="1" bgcolor="#039acc"><font face="verdana,helvetica,sanserif" size="-1" color="white"><b>Description</b></font></td>
-						
-</tr>
-						
-<tr>
-							
-<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">vocabularyFile</font></td>
-							<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">uaprofspec.xml</font></td>
-							<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">The file containing the vocabulary specification.</font></td>
-						
-</tr>
-						
-<tr>
-							
-<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">schemaVocabularyFile</font></td>
-							<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">ccppschema-20000405.rdfs</font></td>
-							<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">The file containing the vocabulary specification as an UAProf RDF Schema. 
-							Use the attribute <code><font face="courier, monospaced">namespace</font></code> to configure which namespace the schema corresponds to.</font></td>
-						
-</tr>
-						
-<tr>
-							
-<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">rdfUri</font></td>
-							<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">http://www.w3.org/1999/02/22-rdf-syntax-ns#</font></td>
-							<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">The namespace used for RDF constructs.</font></td>
-						
-</tr>
-						
-<tr>
-							
-<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">componentProperty</font></td>
-							<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">component</font></td>
-							<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">The name for components.</font></td>
-						
-</tr>
-						
-<tr>
-							
-<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">defaultProperty</font></td>
-							<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">Default</font></td>
-							<td align="left" valign="top" rowspan="1" colspan="1" bgcolor="#a0ddf0"><font face="verdana,helvetica,sanserif" size="-1" color="black">The name for defaults</font></td>
-						
-</tr>
-					
-</table>
-				
-			
-			
-<font face="verdana, helvetica, sans serif" size="+1" color="#0086b2"><b>Configuring Legacy Devices</b></font>
-				
-<p>
-<font color="black" face="verdana,helvetica,sanserif">It is easy to configure DELI to recognise legacy 
-devices via user-agent strings. A user-agent string is a string sent by the client to 
-the server as part of the HTTP request. It allows different browsers to be identified.  
-The legacy device configuration file maps user-agent 
-strings on to profile either on the local filestore or on a profile repository. 
-By default this is done in the <code><font face="courier, monospaced">legacyDevice.xml</font></code> file which 
-has the following format:</font>
-</p>
-				
-<div align="center">
-<table border="0" cellpadding="0" cellspacing="4">
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
-<pre>
-&lt;?xml version="1.0" encoding="UTF-8"?&gt;
-&lt;devices&gt;
-&lt;!-- Alcatel --&gt;
-  &lt;device&gt;
-    &lt;ua value="Alcatel-BF4/2.0" profile="Alcatel_OT512.rdf"/&gt;
-  &lt;/device&gt;
-  &lt;device&gt;
-    &lt;ua value="Alcatel-BE4/1.0" profile="Alcatel_OT301.rdf"/&gt;
-  &lt;/device&gt;
-&lt;/devices&gt;
-</pre>
-</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-</table>
-</div>
-				
-<p>
-<font color="black" face="verdana,helvetica,sanserif">Where <code><font face="courier, monospaced">vale</font></code> is a device unique string found in 
-the user-agent string of the device and <code><font face="courier, monospaced">profile</font></code> is either a local file or a URL
-for the appropriate legacy profile. </font>
-</p>
-			
-		
-		
-<font face="verdana, helvetica, sans serif" size="+2" color="#0086b2">Writing CC/PP and UAProf aware stylesheets</font>
-<hr style="color: #0086b2" size="1">
-			
-<p>
-<font color="black" face="verdana,helvetica,sanserif">Once you have got DELI running on Cocoon, the next
-step in creating a CC/PP aware site is to create some stylesheets that
-use profile information. DELI makes CC/PP or UAProf attributes available
-to XSLT stylesheets as parameters. In the process of doing this, DELI 'flattens' the profiles
-by omitting the component information. Hence to retrieve the
-<code><font face="courier, monospaced">CcppAccept</font></code> attribute you use the XPath <code><font face="courier, monospaced">deli-capabilities/browser/CcppAccept</font></code>
-whereas to retrieve the <code><font face="courier, monospaced">ScreenSize</font></code> attribute you use the
-XPath <code><font face="courier, monospaced">deli-capabilities/browser/ScreenSize</font></code>. 
-In addition where attributes contain multiple values e.g. Bags or Sequences
-those values are separated using <code><font face="courier, monospaced">&lt;li&gt;</font></code> elements. 
-Hence to retrieve the individual elements you use the XPath 
-<code><font face="courier, monospaced">deli-capabilities/browser/CcppAccept/li</font></code>. 
-The following code demonstrates how to retrieve both a simple and a complex
-attribute. For more complex examples see the <code><font face="courier, monospaced">deli_test.xsl</font></code> stylesheet with Cocoon.</font>
-</p>
-			
-<div align="center">
-<table border="0" cellpadding="0" cellspacing="4">
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
-<pre>
-&lt;?xml version="1.0"?&gt;
-&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"&gt;
- &lt;xsl:param name="deli-capabilities"/&gt;
- &lt;xsl:template match="/"&gt;
-  &lt;xsl:if test="contains($deli-capabilities/browser/CcppAccept/li,'wml')"&gt;
-   &lt;xsl:call-template name="wmldevice"/&gt;
-  &lt;/xsl:if&gt;
-  &lt;xsl:if test="not(contains($deli-capabilities/browser/CcppAccept/li,'wml'))"&gt;
-   &lt;xsl:call-template name="htmldevice"/&gt;
-  &lt;/xsl:if&gt;
- &lt;/xsl:template&gt;
-
- &lt;xsl:template name="wmldevice"&gt;
-  &lt;wml&gt;
-   &lt;card id="init" newcontext="true"&gt;
-    &lt;p&gt;
-     &lt;xsl:call-template name="capabilities"/&gt;
-    &lt;/p&gt;
-   &lt;/card&gt;
-  &lt;/wml&gt;
- &lt;/xsl:template&gt;
-
- &lt;xsl:template name="htmldevice"&gt;
-  &lt;html&gt;
-   &lt;head&gt;
-    &lt;title&gt;Test Page for DELI in Cocoon&lt;/title&gt;
-   &lt;/head&gt;
-   &lt;body&gt;
-    &lt;xsl:call-template name="capabilities"/&gt;
-   &lt;/body&gt;
-  &lt;/html&gt;
- &lt;/xsl:template&gt;
-
- &lt;xsl:template name="capabilities"&gt;
-  &lt;xsl:if test="$deli-capabilities/browser/ImageCapable"&gt;
-   ImageCapable: &lt;xsl:value-of select="$deli-capabilities/browser/ImageCapable"/&gt;
-   &lt;br/&gt;
-  &lt;/xsl:if&gt;
-  &lt;xsl:if test="$deli-capabilities/browser/CcppAccept"&gt;
-   CcppAccept:
-   &lt;xsl:for-each select="$deli-capabilities/browser/CcppAccept/li"&gt;
-    &lt;xsl:value-of select="."/&gt;, 
-   &lt;/xsl:for-each&gt;
-   &lt;br/&gt;
-  &lt;/xsl:if&gt;
- &lt;/xsl:template&gt;
-
-&lt;/xsl:stylesheet&gt;
-
-</pre>
-</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-</table>
-</div>
-		
-		
-<font face="verdana, helvetica, sans serif" size="+2" color="#0086b2">Incorporating DELI into other Cocoon components</font>
-<hr style="color: #0086b2" size="1">
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">If you want to use DELI in other Cocoon components, DELI needs to go through an 
-initialization phase in order to read in configuration files. This occurs in 
-<code><font face="courier, monospaced">initialization()</font></code> in DeliImpl.java in the Cocoon DELI component in this line:</font>
-</p>
-
-<div align="center">
-<table border="0" cellpadding="0" cellspacing="4">
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
-<pre>
-Workspace.getInstance().configure(this.servletContext, this.deliConfig);
-</pre>
-</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-</table>
-</div>
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">i.e. it constructs a DELI workspace object. In addition, DeliImpl.java has a number 
-of methods to get profile information, but the one which is of most use is <code><font face="courier, monospaced">getProfile()</font></code>. 
-For examples of how to call DELI, see DeliTransformer.java - here are the relevant pieces.</font>
-</p>
-
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">First import DELI:</font>
-</p>
-
-<div align="center">
-<table border="0" cellpadding="0" cellspacing="4">
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
-<pre>
-import org.apache.cocoon.components.deli.Deli;
-</pre>
-</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-</table>
-</div>
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">Then in compose(), initialize DELI:</font>
-</p>
-
-<div align="center">
-<table border="0" cellpadding="0" cellspacing="4">
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
-<pre>
-if (this.manager.hasComponent(Deli.ROLE)) {
- if (this.getLogger().isDebugEnabled()) {
-     getLogger().debug("Looking up " + Deli.ROLE);
-}
-this.deli = (Deli) this.manager.lookup(Deli.ROLE);
-} else {
-  if (this.getLogger().isDebugEnabled()) {
-    getLogger().debug("Deli is not available");
-}
-}
-</pre>
-</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-</table>
-</div>
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif"> Then in getLogicSheetParameters, call DELI to get 
-a profile and convert it into a DOM tree to give to XSLT as a parameter:</font>
-</p>
-
-<div align="center">
-<table border="0" cellpadding="0" cellspacing="4">
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
-<pre>
-if (this.deli != null &amp;&amp; this._useDeli) {
-  try {
-   Request request = ObjectModelHelper.getRequest(objectModel);
-   if (map == null) {
-    map = new HashMap();
-  }
-
-  org.w3c.dom.Document deliCapabilities = this.deli.getUACapabilities(request);
-  map.put("deli-capabilities", deliCapabilities);
-  } catch (Exception e) {
-    getLogger().error("Error setting DELI info", e);
-  }
-}
-</pre>
-</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-</table>
-</div>
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">
-However, you don't want to pipe DELI to XSLT so here is some more 
-example code showing how to use DELI in Cocoon if you want to use the 
-DELI API directly:</font>
-</p>
-
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">Import the deli component and the DELI API:</font>
-</p>
-
-<div align="center">
-<table border="0" cellpadding="0" cellspacing="4">
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
-<pre>
-import org.apache.cocoon.components.deli.Deli;
-
-import com.hp.hpl.deli.Profile;
-import com.hp.hpl.deli.ProfileAttribute;
-</pre>
-</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-</table>
-</div>
-
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">Add code to initialize the compose method as before</font>
-</p>
-
-<div align="center">
-<table border="0" cellpadding="0" cellspacing="4">
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
-<pre>
-  public void compose(ComponentManager manager) throws ComponentException
-  {
-    try
-    {
-      deli = (Deli)manager.lookup(Deli.ROLE);
-    } 
-    catch(ComponentException ce)
-    {
-      logger.log(Level.ERROR, "Cannot get ref to Deli", ce);
-      ce.printStackTrace();
-    }
-  }
-</pre>
-</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-</table>
-</div>
-
-<p>
-<font color="black" face="verdana,helvetica,sanserif">Some example code that shows how to extract WmlDeckSize from a 
-DELI profile</font>
-</p>
-
-<div align="center">
-<table border="0" cellpadding="0" cellspacing="4">
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
-<pre>
-try
-{
- Profile theProfile = deli.getProfile(request);
- if(theProfile != null)
- {
-   ProfileAttribute attrib = theProfile.getAttribute("WmlDeckSize");
-   if(attrib != null)
-   {
-      Vector temp = (Vector)attrib.get();
-      if(temp != null)
-      {
-          deckSizeString = temp.get(0).toString();
-          System.out.println("Determined WmlDeckSize from DELI: " + deckSizeString);
-      }
-   }
- }
- if(deckSizeString == null)
- {
-    deckSizeString = "1100";
-    System.out.println("Using fallback WmlDeckSize of " + deckSizeString);
- }
-}
-catch(Exception ex)
-{
-    System.out.println(ex.toString());
-    ex.printStackTrace();
-}
-}
-</pre>
-</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-<tr>
-<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
-</tr>
-</table>
-</div>
-		
-		
-<font face="verdana, helvetica, sans serif" size="+2" color="#0086b2">More information ?</font>
-<hr style="color: #0086b2" size="1">
-			
-<p>
-<font color="black" face="verdana,helvetica,sanserif">For more information on the DELI library please refer to the 
-<a href="http://www-uk.hpl.hp.com/people/marbut/">DELI web-site</a>.</font>
-</p>
-		
-	
-
-</td>
-</tr>
-</table>
-</td>
-</tr>
-</table>
-<table width="100%" cellspacing="0" cellpadding="0" border="0">
-<tr>
-<td bgcolor="#0086b2"><img width="1" src="images/dot.gif" height="1"></td>
-</tr>
-<tr>
-<td align="center"><font size="-1" face="arial,helvetica,sanserif" color="#0086b2"><i>Copyright &copy; 1999-2002 The Apache Software Foundation. All Rights Reserved.</i></font></td>
-</tr>
-</table>
-</body>
-</html>
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>DELI</title>
+<STYLE type="text/css">
+a.menu {
+	color: #FFFFFF;
+    text-align:left;               
+    font-size:12px;
+    font-family: Verdana, Arial, Helvetica, sans-serif;
+    font-weight:plain;
+    text-decoration:none;
+    padding-left: 14px
+}
+
+A.menu:hover {
+	color: #FFCC00
+}
+
+
+.menutitle {
+	color: #000000;
+    text-align:left;               
+    font-size:10px;
+    font-family: Verdana, Arial, Helvetica, sans-serif;
+    font-weight:bold;
+    padding-left: 8px
+}
+.menuselected {
+	color: #FFCC00;
+    text-align:left;               
+    font-size:12px;
+    font-family: Verdana, Arial, Helvetica, sans-serif;
+    font-weight:bold;
+    padding-left: 14px
+}
+</STYLE>
+</head>
+<body bgcolor="#ffffff" marginheight="4" marginwidth="4" leftmargin="4" topmargin="4" alink="#cc0000" vlink="#0086b2" link="#039acc" text="#000000">
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+<tr>
+<td align="left" valign="top" rowspan="3" height="60" width="135"><img border="0" vspace="0" hspace="0" src="images/logo.gif" height="60" width="135"></td><td background="images/line.gif" rowspan="1" colSpan="2" align="left" valign="top" height="0" width="100%"></td><td align="left" valign="top" rowspan="3" height="60" width="29"><img border="0" vspace="0" hspace="0" src="images/right.gif" height="60" width="29"></td>
+</tr>
+<tr>
+<td bgcolor="#0086b2" colspan="2" align="right" valign="top" height="35" width="100%"><font color="#ffffff" face="Verdana, Arial, Helvetica, sans-serif" size="5">DELI</font></td>
+</tr>
+<tr>
+<td background="images/bottom.gif" colspan="2" width="100%" valign="top" height="20" bgcolor="#0086b2" align="right">
+<table width="288" cellspacing="0" cellpadding="0" border="0">
+<tr>
+<td align="left" valign="top" height="20" width="96"><a target="new" href="http://xml.apache.org/"><img border="0" vspace="0" hspace="0" name="xml" src="images/button-xml-lo.gif" height="20" width="96" alt="http://xml.apache.org/"></a></td><td align="left" valign="top" height="20" width="96"><a target="new" href="http://www.apache.org/"><img border="0" vspace="0" hspace="0" name="asf" src="images/button-asf-lo.gif" height="20" width="96" alt="http://www.apache.org/"></a></td><td align="left" valign="top" height="20" width="96"><a target="new" href="http://www.w3.org/"><img border="0" vspace="0" hspace="0" name="w3c" src="images/button-w3c-lo.gif" height="20" width="96" alt="http://www.w3.org/"></a></td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+<table width="100%" cellspacing="0" cellpadding="0" border="0">
+<tr width="100%">
+<td align="left" valign="top" width="120">
+<table width="120" cellspacing="0" cellpadding="0" border="0" bgcolor="#a0a0a0">
+<tr>
+<td valign="top" align="left"><img width="120" vspace="0" src="images/join.gif" hspace="0" height="14" border="0"><br>
+</td>
+</tr>
+<tr>
+<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="../index.html">Main</a></td>
+</tr>
+<tr>
+<td background="images/label-background_b.gif" bgcolor="#959595" valign="top"><img width="120" height="6" src="images/separator.gif"><br>
+<span class="menutitle">Concepts</span></td>
+</tr>
+<tr>
+<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="httprequest.html">Internals</a></td>
+</tr>
+<tr>
+<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="extending.html">Extending</a></td>
+</tr>
+<tr>
+<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="avalon.html">Avalon</a></td>
+</tr>
+<tr>
+<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="datasources.html">Using Databases</a></td>
+</tr>
+<tr>
+<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="parent-component-manager.html">Parent CM</a></td>
+</tr>
+<tr>
+<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="deliquick.html">DELI Quick Start</a></td>
+</tr>
+<tr>
+<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><span class="menuselected">DELI</span></td>
+</tr>
+<tr>
+<td background="images/label-background_b.gif" bgcolor="#959595" valign="top"><img width="120" height="6" src="images/separator.gif"><br>
+<span class="menutitle">Webapps</span></td>
+</tr>
+<tr>
+<td valign="top" bgcolor="#959595" background="images/label-background_a.gif"><a class="menu" href="webapps/index.html">Developing Webapps</a></td>
+</tr>
+<tr>
+<td background="images/label-background_b.gif" bgcolor="#959595" valign="top"><img width="120" height="6" src="images/separator.gif"><br>
+<span class="menutitle">Java</span></td>
+</tr>
+<tr>
+<td valign="top" background="images/label-background_a.gif" bgcolor="#959595"><a class="menu" target="new" href="../apidocs/index.html">API (Javadoc)</a></td>
+</tr>
+<tr>
+<td align="left" valign="top"><img width="120" vspace="0" src="images/close.gif" hspace="0" height="14" border="0"><br>
+</td>
+</tr>
+</table>
+</td><td>
+<table cellspacing="15" cellpadding="0" border="0">
+<tr>
+<td>
+	
+	
+		<font face="verdana, helvetica, sans serif" size="+2" color="#0086b2">Introduction</font>
+<hr style="color: #0086b2" size="1">
+			
+<p>
+<font color="black" face="verdana,helvetica,sanserif">In order for a web server 
+to provide optimized content to different clients it requires a description of the 
+capabilities of the client. Two new compatible standards have been created for 
+describing delivery context based on the 
+<a href="http://www.w3.org/RDF/">Resource Description Framework (RDF)</a>: 
+<a href="http://www.w3.org/Mobile/CCPP/">Composite Capabilities / Preferences Profile (CC/PP)</a> 
+created by the <a href="http://www.w3.org">W3C</a> and 
+<a href="http://www1.wapforum.org/tech/terms.asp?doc=WAP-248-UAProf-20010530-p.pdf">User Agent Profile (UAProf)</a> 
+created by the 
+<a href="http://www.wapforum.org">WAP Forum</a>. 
+These standards allow the efficient transmission of 
+delivery context information to the server even via low bandwidth wireless networks. 
+Instead of sending an entire profile with every request, 
+a client only sends a reference to a profile, stored on a third device known 
+as a profile repository, along with a list of differences specific to this particular 
+client. The process of reassembling the final profile from 
+the profile references and differences is known as profile resolution.</font>
+</p>
+			
+<p>
+<font color="black" face="verdana,helvetica,sanserif">
+				<a href="http://www-uk.hpl.hp.com/">HP Labs</a> 
+has produced an open-source library called DELI that allows Java servlets to resolve HTTP requests 
+containing CC/PP or UAProf information and query the resolved 
+profile. This document describes how DELI may be used
+within Apache Cocoon. For more information on the DELI library please refer to the 
+<a href="http://www-uk.hpl.hp.com/people/marbut/">DELI web-site</a>.
+DELI currently uses 
+<a href="http://www.hpl.hp.com/semweb/jena-top.html">Jena</a>, an RDF 
+Framework developed at HP Labs. For more details of Jena see Brian McBride's 
+<a href="http://www-uk.hpl.hp.com/people/bwm/papers/20001221-paper/">paper</a> 
+and the HP Labs 
+<a href="http://www.hpl.hp.com/semweb/">Semantic Web activity</a> homepage.</font>
+</p>
+		
+		
+<font face="verdana, helvetica, sans serif" size="+2" color="#0086b2">CC/PP</font>
+<hr style="color: #0086b2" size="1">
+			
+<p>
+<font color="black" face="verdana,helvetica,sanserif">CC/PP is described in 
+<a href="http://www.w3.org/TR/CCPP-struct-vocab/">CC/PP Structure and Vocabularies</a>, 
+<a href="http://www.w3.org/TR/2000/WD-CCPP-ra-20000721/">CC/PP Requirements and Architecture</a> and 
+<a href="http://www.w3.org/TR/2000/WD-CCPP-ta-20000721/">CC/PP Terminology and Abbreviations</a>.
+A CC/PP profile is broadly constructed as a two level hierarchy: 
+a profile has a number of components and each component has a number 
+of attributes. A protocol for transmitting CC/PP profiles has been
+<a href="http://www.w3.org/TR/NOTE-CCPPexchange">proposed</a> but is based on an experimental 
+variant of HTTP known as <a href="http://www.w3.org/Protocols/HTTP/ietf-http-ext/">HTTP-ex</a> so is not compatible with existing servers. 
+Therefore DELI uses the W-HTTP protocol proposed by UAProf. This has identical functionality to the CC/PP 
+protocol based on HTTP-ex, but is compatible with HTTP/1.1.</font>
+</p>
+		
+		
+<font face="verdana, helvetica, sans serif" size="+2" color="#0086b2">UAProf</font>
+<hr style="color: #0086b2" size="1">
+			
+<p>
+<font color="black" face="verdana,helvetica,sanserif">The UAProf specification is based on the CC/PP specification. Like CC/PP, 
+a UAProf profile is a two level hierarchy composed of components and 
+attributes. Unlike CC/PP, the UAProf specification also proposes a vocabulary 
+- a specific set of components and attributes - to describe the next 
+generation of WAP phones. 
+The specification also describes two protocols for transmitting the profile 
+&gt;from the client to the server. Currently DELI only supports the W-HTTP protocol.</font>
+</p>
+			
+<p>
+<font color="black" face="verdana,helvetica,sanserif">Profiles using the UAProf vocabulary consist of six components: 
+HardwarePlatform, SoftwarePlatform, NetworkCharacteristics, BrowserUA, 
+WapCharacteristics and PushCharacteristics. These components contain attributes. 
+In DELI each attribute has a distinct name and has an associated collection type, 
+attribute type and resolution rule. In UAProf there are three collection types:</font>
+</p>
+			
+<blockquote>
+<ul>
+				
+<li>
+<font face="verdana, helvetica, sans serif">
+					<code><font face="courier, monospaced">Simple</font></code> contains a single value e.g. ColorCapable in HardwarePlatform. </font>
+</li>
+				
+<li>
+<font face="verdana, helvetica, sans serif">
+					<code><font face="courier, monospaced">Bag</font></code> contains multiple unordered values e.g. BluetoothProfile in the 
+HardwarePlatform component.</font>
+</li>
+				
+<li>
+<font face="verdana, helvetica, sans serif">
+					<code><font face="courier, monospaced">Seq</font></code> contains multiple ordered values e.g. Ccpp-AcceptLanguage 
+in the SoftwarePlatform component.</font>
+</li>
+			
+</ul>
+</blockquote>
+			
+<p>
+<font color="black" face="verdana,helvetica,sanserif">In addition attributes can have one of four attribute types:</font>
+</p>
+			
+<blockquote>
+<ul>
+				
+<li>
+<font face="verdana, helvetica, sans serif">
+					<code><font face="courier, monospaced">String</font></code> e.g. BrowserName in BrowserUA.</font>
+</li>
+				
+<li>
+<font face="verdana, helvetica, sans serif">
+					<code><font face="courier, monospaced">Boolean</font></code> e.g. ColorCapable in HardwarePlatform.</font>
+</li>
+				
+<li>
+<font face="verdana, helvetica, sans serif">
+					<code><font face="courier, monospaced">Number</font></code> is a positive integer e.g. BitsPerPixel in HardwarePlatform.</font>
+</li>
+				
+<li>
+<font face="verdana, helvetica, sans serif">
+					<code><font face="courier, monospaced">Dimension</font></code> is a pair of positive integers e.g. ScreenSize in HardwarePlatform.</font>
+</li>
+			
+</ul>
+</blockquote>
+			
+<p>
+<font color="black" face="verdana,helvetica,sanserif">Finally attributes are associated with a resolution rule:</font>
+</p>
+			
+<blockquote>
+<ul>
+				
+<li>
+<font face="verdana, helvetica, sans serif">
+					<code><font face="courier, monospaced">Locked</font></code> indicates the final value of an attribute is the first 
+occurrence of the attribute outside the default description block.</font>
+</li>
+				
+<li>
+<font face="verdana, helvetica, sans serif">
+					<code><font face="courier, monospaced">Override</font></code> indicates the final value of an attribute is the last occurrence 
+of the attribute outside the default description block.</font>
+</li>
+				
+<li>
+<font face="verdana, helvetica, sans serif">
+					<code><font face="courier, monospaced">Append</font></code> indicates the final value of the attribute is the 
+list of all occurrences of the attribute outside the default 
+description block.</font>
+</li>
+			
+</ul>
+</blockquote>
+			
+<p>
+<font color="black" face="verdana,helvetica,sanserif">The UAProf vocabulary is described using the file <code><font face="courier, monospaced">uaprofspec.xml</font></code>. 
+This describes the attribute name, component, 
+collectionType, attributeType and resolution rule of each component. 
+The vocabulary description file has the following format:</font>
+</p>
+			
+<div align="center">
+<table border="0" cellpadding="0" cellspacing="4">
+<tr>
+<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+<tr>
+<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
+<pre>
+&lt;?xml version="1.0"?&gt;
+&lt;vocabspec&gt;
+	&lt;attribute&gt;
+		&lt;name&gt;CcppAccept&lt;/name&gt;
+		&lt;component&gt;SoftwarePlatform&lt;/component&gt;
+		&lt;collectionType&gt;Bag&lt;/collectionType&gt;
+		&lt;attributeType&gt;Literal&lt;/attributeType&gt;
+		&lt;resolution&gt;Append&lt;/resolution&gt;
+	&lt;/attribute&gt;
+&lt;/vocabspec&gt;
+</pre>
+</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+<tr>
+<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+</table>
+</div>
+			
+<p>
+<font color="black" face="verdana,helvetica,sanserif">DELI can also read vocabularies described using RDF schemas. The WAP Forum have 
+			published two such schemas to describe the two versions of UAProf currently in use. However 
+			RDF Schema does not provide an easy way of describing attributeType or resolution rule. 
+			Therefore the UAProf schemas store this information in the comments field for each attribute. 			
+			Therefore DELI also parses the comments fields to create the vocabulary. This is not an ideal 
+			solution so hopefully a more robust way of representing this information will be used in later versions of UAProf.</font>
+</p>
+		
+		
+<font face="verdana, helvetica, sans serif" size="+2" color="#0086b2">W-HTTP Protocol</font>
+<hr style="color: #0086b2" size="1">
+			
+<p>
+<font color="black" face="verdana,helvetica,sanserif">An 
+example W-HTTP request using this protocol is shown below:</font>
+</p>
+			
+<div align="center">
+<table border="0" cellpadding="0" cellspacing="4">
+<tr>
+<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+<tr>
+<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
+<pre>
+GET /ccpp/html/ HTTP/1.1
+Host: localhost
+x-wap-profile:"http://127.0.0.1:8080/ccpp/profiles/test09defaults.rdf", 
+  "1-Rb0sq/nuUFQU75vAjKyiHw=="
+x-wap-profile-diff:1;&lt;?xml version="1.0"?&gt;
+ &lt;rdf:RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
+  xmlns:prf="http://www.wapforum.org/profiles/UAPROF/ccppschema-20010430#"&gt;
+  &lt;rdf:Description rdf:ID="MyDeviceProfile"&gt;
+     &lt;prf:component&gt;
+       &lt;rdf:Description rdf:ID="HardwarePlatform"&gt;
+          &lt;rdf:type 
+  rdf:resource="http://www.wapforum.org/profiles/UAPROF/ccppschema-
+    20010426#HardwarePlatform"/&gt;
+  		&lt;prf:BitsPerPixel&gt;16&lt;/prf:BitsPerPixel&gt;
+       &lt;/rdf:Description&gt;
+     &lt;/prf:component&gt;
+  &lt;/rdf:Description&gt;
+ &lt;/rdf:RDF&gt;
+</pre>
+</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+<tr>
+<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+</table>
+</div>
+			
+<p>
+<font color="black" face="verdana,helvetica,sanserif">The first two lines
+describe the resource that is being requested by the client, 
+http://localhost/ccpp/html, and the method being used to make 
+the request, GET, and the protocol being used HTTP/1.1. The 
+remaining lines of the request describe the device delivery context. 
+This is specified using a profile reference and a profile-diff. 
+The profile is referenced via the x-wap-profile line and has the URI</font>
+</p>
+			
+<div align="center">
+<table border="0" cellpadding="0" cellspacing="4">
+<tr>
+<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+<tr>
+<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
+<pre>
+http://127.0.0.1:8080/ccpp/profiles/test09defaults.rdf. 
+</pre>
+</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+<tr>
+<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+</table>
+</div>
+			
+<p>
+<font color="black" face="verdana,helvetica,sanserif">After the profile reference, there is a value</font>
+</p>
+			
+<div align="center">
+<table border="0" cellpadding="0" cellspacing="4">
+<tr>
+<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+<tr>
+<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
+<pre>
+1-Rb0sq/nuUFQU75vAjKyiHw== 
+</pre>
+</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+<tr>
+<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+</table>
+</div>
+			
+<p>
+<font color="black" face="verdana,helvetica,sanserif">known as a profile-diff digest. 
+The first part of the profile-diff-digest, 1-, is the profile-diff 
+sequence number. This is used to indicate the order of the 
+profile-diffs and to indicate which profile-diff the profile-diff 
+digest refers to. The remainder of the profile-diff digest is 
+generated by applying the 
+<a href="http://www.faqs.org/rfcs/rfc1321.html">MD5 message digest algorithm</a> and Base64 
+algorithm to the corresponding profile-diff. The MD5 algorithm 
+takes as input a message of arbitary length and produces as output 
+a 128-bit "fingerprint" or "message-digest" of the input. 
+The 
+<a href="http://www.faqs.org/rfcs/rfc2045.html">Base64 algorithm</a> takes as input arbitary binary data and 
+produces as output printable encoding data.</font>
+</p>
+			
+<p>
+<font color="black" face="verdana,helvetica,sanserif">After the profile-diff digest, the next line contains the 
+x-wap-profile-diff. This request header field also has a 
+profile-diff sequence number which indicates that this 
+profile-diff corresponds to the previous 
+profile-diff-digest. The profile-diff itself consists of the XML 
+fragment which spans the remainder of the request. Multi-line 
+request header fields are permitted by the HTTP/1.1 specification 
+as long as each subsequent line starts with either a tab character 
+or a whitespace. </font>
+</p>
+			
+<p>
+<font color="black" face="verdana,helvetica,sanserif">When the server receives a HTTP request with UAProf 
+request headers, it has to perform profile resolution 
+i.e. retrieve the referenced profile(s) and any further 
+profiles referenced via default blocks. It then has to 
+merge these profiles and the profile-diffs while 
+applying the UAProf resolution rules.</font>
+</p>
+		
+		
+<font face="verdana, helvetica, sans serif" size="+2" color="#0086b2">Configuring DELI</font>
+<hr style="color: #0086b2" size="1">
+			
+<p>
+<font color="black" face="verdana,helvetica,sanserif">In order to use DELI, you need to enable the DELI component.
+In addition, you may want to configure DELI using <code><font face="courier, monospaced">deliConfig.xml</font></code>, the DELI 
+configuration file or <code><font face="courier, monospaced">legacyDevices.xml</font></code>, the
+DELI legacy device support file.</font>
+</p>
+			
+<font face="verdana, helvetica, sans serif" size="+1" color="#0086b2"><b>Cocoon.xconf</b></font>
+				
+<p>
+<font color="black" face="verdana,helvetica,sanserif">In order to use DELI you need to configure Deli and specify
+the configuration file. You can either
+do this in <code><font face="courier, monospaced">deli.xconf</font></code> in which case you will need to rebuild
+Cocoon or change the deployed <code><font face="courier, monospaced">cocoon.xconf</font></code> in the web-server WEB-INF directory:</font>
+</p>
+				
+<div align="center">
+<table border="0" cellpadding="0" cellspacing="4">
+<tr>
+<td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td height="1" width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+<tr>
+<td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td><td bgcolor="#ffffff">
+<pre>
+  &lt;deli class="org.apache.cocoon.components.deli.DeliImpl"&gt;
+    &lt;parameter name="deli-config-file" value="deli/config/deliConfig.xml"/&gt;
+  &lt;/deli&gt;
+</pre>
+</td><td width="1" bgcolor="#0086b2"><img border="0" hspace="0" vspace="0" height="1" width="1" src="images/void.gif"></td>
+</tr>
+<tr>

[... 736 lines stripped ...]