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
->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>
-<?xml version="1.0"?>
-<vocabspec>
- <attribute>
- <name>CcppAccept</name>
- <component>SoftwarePlatform</component>
- <collectionType>Bag</collectionType>
- <attributeType>Literal</attributeType>
- <resolution>Append</resolution>
- </attribute>
-</vocabspec>
-</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;<?xml version="1.0"?>
- <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#">
- <rdf:Description rdf:ID="MyDeviceProfile">
- <prf:component>
- <rdf:Description rdf:ID="HardwarePlatform">
- <rdf:type
- rdf:resource="http://www.wapforum.org/profiles/UAPROF/ccppschema-
- 20010426#HardwarePlatform"/>
- <prf:BitsPerPixel>16</prf:BitsPerPixel>
- </rdf:Description>
- </prf:component>
- </rdf:Description>
- </rdf: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">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>
- <deli class="org.apache.cocoon.components.deli.DeliImpl">
- <parameter name="deli-config-file" value="deli/config/deliConfig.xml"/>
- </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>
-
-
-<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"><map:parameter name="use-deli" value="true"/></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>
- <map:match pattern="deli.html">
- <map:generate src="docs/samples/hello-page.xml"/>
- <map:transform src="stylesheets/deli_test.xsl" type="xslt">
- <map:parameter name="use-deli" value="true"/>
- </map:transform>
- <map:serialize type="html"/>
- </map:match>
-</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>
-<?xml version="1.0"?>
-<deli>
- <localProfilesFile>WEB-INF/deli/config/localProfiles.xml</localProfilesFile>
- <localProfilesPath>WEB-INF/deli/legacyProfiles</localProfilesPath>
- <useLocalProfilesIfNoCCPP>true</useLocalProfilesIfNoCCPP>
- <useLocalProfilesInAdditionToCCPP>false</useLocalProfilesInAdditionToCCPP>
- <debug>false</debug>
- <printDefaults>true</printDefaults>
- <printProfileBeforeMerge>false</printProfileBeforeMerge>
- <processUndefinedAttributes>true</processUndefinedAttributes>
- <useCapabilityClasses>false</useCapabilityClasses>
- <capabilityClassFile>WEB-INF/deli/config/capClass.xml</capabilityClassFile>
- <namespaceConfigFile>WEB-INF/deli/config/namespaceConfig.xml</namespaceConfigFile>
- <!-- note that the default uri is also hardcoded -->
- <rdfsUri>http://www.w3.org/1999/PR-rdf-schema-19990303#</rdfsUri>
- <rdfsUri>http://www.w3.org/TR/PR-rdf-schema#</rdfsUri>
-</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">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>
-<?xml version="1.0" encoding="UTF-8"?>
-<devices>
-<!-- Alcatel -->
- <device>
- <ua value="Alcatel-BF4/2.0" profile="Alcatel_OT512.rdf"/>
- </device>
- <device>
- <ua value="Alcatel-BE4/1.0" profile="Alcatel_OT301.rdf"/>
- </device>
-</devices>
-</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"><li></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>
-<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
- <xsl:param name="deli-capabilities"/>
- <xsl:template match="/">
- <xsl:if test="contains($deli-capabilities/browser/CcppAccept/li,'wml')">
- <xsl:call-template name="wmldevice"/>
- </xsl:if>
- <xsl:if test="not(contains($deli-capabilities/browser/CcppAccept/li,'wml'))">
- <xsl:call-template name="htmldevice"/>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="wmldevice">
- <wml>
- <card id="init" newcontext="true">
- <p>
- <xsl:call-template name="capabilities"/>
- </p>
- </card>
- </wml>
- </xsl:template>
-
- <xsl:template name="htmldevice">
- <html>
- <head>
- <title>Test Page for DELI in Cocoon</title>
- </head>
- <body>
- <xsl:call-template name="capabilities"/>
- </body>
- </html>
- </xsl:template>
-
- <xsl:template name="capabilities">
- <xsl:if test="$deli-capabilities/browser/ImageCapable">
- ImageCapable: <xsl:value-of select="$deli-capabilities/browser/ImageCapable"/>
- <br/>
- </xsl:if>
- <xsl:if test="$deli-capabilities/browser/CcppAccept">
- CcppAccept:
- <xsl:for-each select="$deli-capabilities/browser/CcppAccept/li">
- <xsl:value-of select="."/>,
- </xsl:for-each>
- <br/>
- </xsl:if>
- </xsl:template>
-
-</xsl:stylesheet>
-
-</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 && 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 © 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
+>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>
+<?xml version="1.0"?>
+<vocabspec>
+ <attribute>
+ <name>CcppAccept</name>
+ <component>SoftwarePlatform</component>
+ <collectionType>Bag</collectionType>
+ <attributeType>Literal</attributeType>
+ <resolution>Append</resolution>
+ </attribute>
+</vocabspec>
+</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;<?xml version="1.0"?>
+ <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#">
+ <rdf:Description rdf:ID="MyDeviceProfile">
+ <prf:component>
+ <rdf:Description rdf:ID="HardwarePlatform">
+ <rdf:type
+ rdf:resource="http://www.wapforum.org/profiles/UAPROF/ccppschema-
+ 20010426#HardwarePlatform"/>
+ <prf:BitsPerPixel>16</prf:BitsPerPixel>
+ </rdf:Description>
+ </prf:component>
+ </rdf:Description>
+ </rdf: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">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>
+ <deli class="org.apache.cocoon.components.deli.DeliImpl">
+ <parameter name="deli-config-file" value="deli/config/deliConfig.xml"/>
+ </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>
[... 736 lines stripped ...]