TransPythia - Overview

TransPythia features a Transcoder that can apply a set of TranscodingAction to content. Each TranscodingAction. The library depends on the AskPythia library to extract the properties of the requesting device.

Code example

Let's have a look at a working code example that uses some of the existing TranscodingAction to adapt HTML content and the AskPythia implementation on top of WURFL to retrieve the requesting device properties.

// Prerequisites: Prepare AskPythia
$service = ServiceFactory::newService(
    'WURFL',
    'http://www.w3.org/2008/01/ddr-core-vocabulary',
    array('wurfl_path'=>'[path to WURFL]'));
$evidence = $service->newHTTPEvidenceM($_SERVER);

// Step 1: Create the transcoder
$transcoder = new Transcoder($service);

// Step 2: Add needed transcoding actions
$trans = $transcoder->newTranscodingAction('ResizeIMG');
$transcoder->addTranscodingAction($trans);

$trans = $transcoder->newTranscodingAction('DeletePopup');
$transcoder->addTranscodingAction($trans);

$trans = $transcoder->newTranscodingAction('LinearTables');
$trans->setOption('layout', true);
$transcoder->addTranscodingAction($trans);

// Step 3: Apply transcoder to HTML content
$adaptedContent = $transcoder->apply($content, $evidence);

The adapted content contains the result of the transcoding: tables are linearized if the device does not support them, popup windows are removed, and images are resized to fit the size of the device's screen.

Let's have a closer look at each of the three steps.

Step 1: Create the transcoder

A Transcoder is merely a container for TranscodingAction. The Service instance that must be used to access the DDR needs to be created beforehand. Transcoding actions will have access to the requesting device's properties through it.

Step 2: Initialize transcoding actions

The transcoding actions are described elsewhere. The set of transcoding actions to add to the transcoder depends on the type of content the transcoder will be applied to. A transcoding action that applies to CSS content must not be added to a transcoder that applies to HTML content.

Transcoding actions may rely on options that may be set through a call to the setOption method of the TranscodingAction class.

Transcoding actions should be created using the factory method of the transcoder to be granted access to the Service that should be used to retrieve the properties of the requesting device.

Step 3: Apply transcoding

When the Transcoder has been properly initialized, it can be applied to content for a particular requesting device described by some evidence.

The transcoder applies the transcoding actions one after the other in the order in which they were added to the transcoder and returns the adapted content.

Contact: François Daoust <fd@w3.org>