Johannes Koch (
Pal Tamas Feher (
Pixelpark AG
Rotherstr. 8
D-10245 Berlin

DICA: HTTP-Based Content Negotiation with Cocoon

DICA 2 is a research project for acquisition with its main focus on device independence.

From W3C Device Independence Principles WD:

Device independent Web page identifiers: A Web page identifier that provides a functional presentation via one access mechanism should also provide a presentation of equivalent functionality via any other access mechanism.

In other words, the intended function of a Web page is associated with the Web page identifier, and should apply to all presentations obtained from the Web page identifier, no matter what the access mechanism.

This principle is achieved in DICA by transforming content "on the fly". So there are no different URLs for accessing the content when using e.g. a desktop browser or a WAP phone.

Based on functional requirements, we chose a portal project implemented with Cocoon 2.

Which properties does a functional presentation have?

User-Agent related:

Disregarding these issues will cause many user-agents to fail.

User related:

Disregarding this issue will cause many users to not understand the web page's purpose.

Content negotiation based on HTTP Accept header

On some sites the HTTP Accept header is used to determine, which presentation is appropriate for a requesting user agent. There are two approaches:

  1. The Accept header is searched for substrings, e.g. If the Accept header contains the substring "wml", then serve a WML version, otherwise serve an HTML version.
  2. A content negotiation algorithm calculates the best variant for a given request using server-side and client-side preference values.

    This algorithm is implemented in the Apache content negotiation module (mod_negotiation) and in the Cocoon AcceptSelector.

Current / Future Work