Intelligent vs. Knowledge-rich

Many existing web-transcoders use ''intelligent'' algorithms to decide, how a requested web page should be transformed i.e. how it should be displayed on a small-screened device. Nevertheless, we wished to leave this decision at the side of the user or the transformation-language of her choice, respectively. So one may create a special XSL-stylesheet for the transformation of a particular web-page (this would be an knowledge-rich approach), but can also implement an (heuristic?) HTML-to-WML transformation algorithm in an XQuery-stylesheet (which may then be applied to e.g. all pages or a group of websites). These stylesheets can then be imported/included in the server's configuration. In our prototype, all transformation-actions are referred to as (transformation-)rules. A rule, in FOXY, may consist of simple text search-and-replace actions, XSL- or XQuery-transformations and more complex page and form splitting actions and the modification of HTTP-request- and -response-header fields, respectively.

Assuming the user wishes to follow the knowledge-rich approach (i.e., she does not want the system to decide which pages should be converted), we had to find an efficient way to provide her the possibility to ''tell'' the server which pages should be transformed, i.e., what criteria an incoming HTTP-request has to meet, so that the corresponding HTTP-response data (or also the original request itself) will be modified by one ore more transformation-rules. Therefore, we compare incoming HTTP-requests with so called (HTTP-request-)patterns that are defined by the user (in the patterns configuartion file). When an HTTP-request matches a pattern (e.g. host=''www.xyz.com'', path equals ''/''), a set of transformations - or rules - are then be applied to the corresponding response of the web server (or even before - to the client's request-header). For this reason, we compare (also involving regular expressions) characteristical parts the HTTP-request, such as server, port, path, parameters and header fields to corresponding values of stored request-patterns. This makes it for example possible, to apply particular transformation-rules (or a group of them) for all requests with header field ''User-Agent'' containing the word ''WML'' or for all pages on server ''www.example.org'' in URL-path ''/news'' or for a certain page with URL-parameter ''user'' set to ''john'', to name just a few.

root 2006-05-22