< draft-ietf-http-negotiation-04.txt   draft-ietf-http-negotiation-05.txt >
HTTP Working Group Koen Holtman, TUE HTTP Working Group Koen Holtman, TUE
Internet-Draft Andrew Mutz, Hewlett-Packard Internet-Draft Andrew Mutz, Hewlett-Packard
Expires: March 15, 1998 September 15, 1997 Expires: July 15, 1998 January 15, 1998
Transparent Content Negotiation in HTTP Transparent Content Negotiation in HTTP
draft-ietf-http-negotiation-04.txt draft-ietf-http-negotiation-05.txt
STATUS OF THIS MEMO STATUS OF THIS MEMO
This document is an Internet-Draft. Internet-Drafts are This document is an Internet-Draft. Internet-Drafts are
working documents of the Internet Engineering Task Force working documents of the Internet Engineering Task Force
(IETF), its areas, and its working groups. Note that other (IETF), its areas, and its working groups. Note that other
groups may also distribute working documents as groups may also distribute working documents as
Internet-Drafts. Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of Internet-Drafts are draft documents valid for a maximum of
skipping to change at line 39 skipping to change at line 39
West Coast). West Coast).
Distribution of this document is unlimited. Please send Distribution of this document is unlimited. Please send
comments to the HTTP working group at comments to the HTTP working group at
<http-wg@cuckoo.hpl.hp.com>. Discussions of the working <http-wg@cuckoo.hpl.hp.com>. Discussions of the working
group are archived at group are archived at
<URL:http://www.ics.uci.edu/pub/ietf/http/>. General <URL:http://www.ics.uci.edu/pub/ietf/http/>. General
discussions about HTTP and the applications which use HTTP discussions about HTTP and the applications which use HTTP
should take place on the <www-talk@w3.org> mailing list. should take place on the <www-talk@w3.org> mailing list.
HTML and change bar versions of this document, are available HTML and change bar versions of this document are available
at <URL:http://gewis.win.tue.nl/~koen/conneg/>. at <URL:http://gewis.win.tue.nl/~koen/conneg/>.
ABSTRACT ABSTRACT
HTTP allows web site authors to put multiple versions of the HTTP allows web site authors to put multiple versions of the
same information under a single URL. Transparent content same information under a single URL. Transparent content
negotiation is an extensible negotiation mechanism, layered on negotiation is an extensible negotiation mechanism, layered on
top of HTTP, for automatically selecting the best version when top of HTTP, for automatically selecting the best version when
the URL is accessed. This enables the smooth deployment of the URL is accessed. This enables the smooth deployment of
new web data formats and markup tags. new web data formats and markup tags.
skipping to change at line 996 skipping to change at line 996
6.1 Feature tags 6.1 Feature tags
A feature tag (ftag) identifies something which can be negotiated A feature tag (ftag) identifies something which can be negotiated
on, for example a property (feature) of a representation, a on, for example a property (feature) of a representation, a
capability (feature) of a user agent, or the preference of a user capability (feature) of a user agent, or the preference of a user
for a particular type of representation. The use of feature tags for a particular type of representation. The use of feature tags
need not be limited to transparent content negotiation, and not need not be limited to transparent content negotiation, and not
every feature tag needs to be usable in the HTTP transparent every feature tag needs to be usable in the HTTP transparent
content negotiation framework. content negotiation framework.
ftag = 1*( ALPHA | DIGIT | "." | "-" ) ftag = token | quoted-string
Note: A system for feature tag registration is currently being
developed in the IETF [4]. This specification does not define
any feature tags. In experimental situations, the use of tags
which start with "x." is encouraged.
Feature tags are used in feature sets (section 6.2) and in feature Feature tags are used in feature sets (section 6.2) and in feature
predicates (section 6.3). Feature predicates are in turn used in predicates (section 6.3). Feature predicates are in turn used in
features attributes (section 6.4), which are used in variant features attributes (section 6.4), which are used in variant
descriptions (section 5). Variant descriptions can be transmitted descriptions (section 5). Variant descriptions can be transmitted
in Alternates headers (section 8.3). in Alternates headers (section 8.3).
Feature tag comparison is case-insensitive. Examples are Feature tag comparison is case-insensitive. A token tag XYZ is
equal to a quoted-string tag "XYZ". Examples are
tables, fonts, blebber, wolx, screenwidth, colordepth tables, fonts, blebber, wolx, screenwidth, colordepth
An example of the use of feature tags in a variant description is: An example of the use of feature tags in a variant description is:
{"index.html" 1.0 {type text/html} {features tables frames}} {"index.html" 1.0 {type text/html} {features tables frames}}
This specification follows general computing practice in that it This specification follows general computing practice in that it
places no restrictions on what may be called a feature. Feature places no restrictions on what may be called a feature. Feature
tag definitions SHOULD describe the tag from the viewpoint of the tag definitions SHOULD describe the tag from the viewpoint of the
skipping to change at line 1170 skipping to change at line 1176
"{" "features" feature-list "}" "{" "features" feature-list "}"
is used in a variant description to specify how the presence or is used in a variant description to specify how the presence or
absence of particular feature tags in the user agent affects the absence of particular feature tags in the user agent affects the
overall quality of the variant. overall quality of the variant.
feature-list = 1%feature-list-element feature-list = 1%feature-list-element
feature-list-element = ( fpred | fpred-bag ) feature-list-element = ( fpred | fpred-bag )
[ ":" true-improvement ] [ ";" [ "+" true-improvement ]
[ "/" false-degradation ] [ "-" false-degradation ]
]
fpred-bag = "[" 1%fpred "]" fpred-bag = "[" 1%fpred "]"
true-improvement = short-float true-improvement = short-float
false-degradation = short-float false-degradation = short-float
Features attributes are used in variant descriptions (section 5). Features attributes are used in variant descriptions (section 5).
Variant descriptions can be transmitted in Alternates headers Variant descriptions can be transmitted in Alternates headers
(section 8.3). (section 8.3).
Examples are: Examples are:
{features !textonly [blebber !wolx] colordepth=3:0.7} {features !textonly [blebber !wolx] colordepth=3;+0.7}
{features !blink/0.5 background:1.5 [blebber !wolx]:1.4/0.8} {features !blink;-0.5 background;+1.5 [blebber !wolx];+1.4-0.8}
The default value for the true-improvement is 1. The default value The default value for the true-improvement is 1. The default value
for the false-degradation is 0, or 1 if a true-improvement value is for the false-degradation is 0, or 1 if a true-improvement value is
given. given.
A user agent SHOULD, and a remote variant selection algorithm MUST A user agent SHOULD, and a remote variant selection algorithm MUST
compute the quality degradation factor associated with the features compute the quality degradation factor associated with the features
attribute by multiplying all quality degradation factors of the attribute by multiplying all quality degradation factors of the
elements of the feature-list. Note that the result can be a factor elements of the feature-list. Note that the result can be a factor
greater than 1. greater than 1.
skipping to change at line 2297 skipping to change at line 2304
The authors are unable to trace the origin of many of the ideas The authors are unable to trace the origin of many of the ideas
incorporated in this document. This specification builds on an incorporated in this document. This specification builds on an
earlier incomplete specification of content negotiation recorded in earlier incomplete specification of content negotiation recorded in
[2]. Many members of the HTTP working group have contributed to [2]. Many members of the HTTP working group have contributed to
the negotiation model in this specification. The authors wish to the negotiation model in this specification. The authors wish to
thank the individuals who have commented on earlier versions of thank the individuals who have commented on earlier versions of
this document, including Brian Behlendorf, Daniel DuBois, Martin this document, including Brian Behlendorf, Daniel DuBois, Martin
J. Duerst, Roy T. Fielding, Jim Gettys, Yaron Goland, Dirk van J. Duerst, Roy T. Fielding, Jim Gettys, Yaron Goland, Dirk van
Gulik, Ted Hardie, Graham Klyne, Scott Lawrence, Larry Masinter, Gulik, Ted Hardie, Graham Klyne, Scott Lawrence, Larry Masinter,
Jeffrey Mogul, Henrik Frystyk Nielsen, Frederick G.M. Roeber, Paul Jeffrey Mogul, Henrik Frystyk Nielsen, Frederick G.M. Roeber, Paul
Sutton, and Klaus Weide. Sutton, and Klaus Weide and Mark Wood.
16 References 16 References
[1] R. Fielding, J. Gettys, J. C. Mogul, H. Frystyk, and [1] R. Fielding, J. Gettys, J. C. Mogul, H. Frystyk, and
T. Berners-Lee. Hypertext Transfer Protocol -- HTTP/1.1. RFC T. Berners-Lee. Hypertext Transfer Protocol -- HTTP/1.1. RFC
2068, HTTP Working Group, January, 1997. 2068, HTTP Working Group, January, 1997.
[2] Roy T. Fielding, Henrik Frystyk Nielsen, and Tim Berners-Lee. [2] Roy T. Fielding, Henrik Frystyk Nielsen, and Tim Berners-Lee.
Hypertext Transfer Protocol -- HTTP/1.1. Internet-Draft Hypertext Transfer Protocol -- HTTP/1.1. Internet-Draft
draft-ietf-http-v11-spec-01.txt, HTTP Working Group, January, draft-ietf-http-v11-spec-01.txt, HTTP Working Group, January,
skipping to change at line 2525 skipping to change at line 2532
{"home.graphics" 1.0 {features !textonly}}, {"home.graphics" 1.0 {features !textonly}},
{"home.textonly" 0.7 } {"home.textonly" 0.7 }
where the "{features !textonly}" part expresses that home.graphics where the "{features !textonly}" part expresses that home.graphics
requires the absence of the textonly feature. If the feature is requires the absence of the textonly feature. If the feature is
present, the overall quality of home.graphics degrades to 0. present, the overall quality of home.graphics degrades to 0.
The absence of a feature need not always degrade the overall quality The absence of a feature need not always degrade the overall quality
to 0. In the example to 0. In the example
{"x.html.1" 1.0 {features fonts/0.7}} {"x.html.1" 1.0 {features fonts;-0.7}}
the absence of the fonts feature degrades the quality with a factor the absence of the fonts feature degrades the quality with a factor
of 0.7. "fonts/0.7" can be pronounced as "fonts, or a degradation of 0.7. Finally, in the example
of 0.7". Finally, in the example
{"y.html" 1.0 {features [blebber wolx] }} {"y.html" 1.0 {features [blebber wolx] }}
The "[blebber wolx]" expresses that y.html requires the presence of The "[blebber wolx]" expresses that y.html requires the presence of
the blebber feature or the wolx feature. This construct can be the blebber feature or the wolx feature. This construct can be
used in a number of cases: used in a number of cases:
1. blebber and wolx actually tag the same feature, but they were 1. blebber and wolx actually tag the same feature, but they were
registered by different people, and some user agents say they registered by different people, and some user agents say they
support blebber while others say they support wolx. support blebber while others say they support wolx.
skipping to change at line 2758 skipping to change at line 2764
Date: Tue, 11 Jun 1996 20:05:31 GMT Date: Tue, 11 Jun 1996 20:05:31 GMT
Etag: "gonkyyyy;1234" Etag: "gonkyyyy;1234"
Content-Location: paper.html.en Content-Location: paper.html.en
Vary: negotiate, accept, accept-language Vary: negotiate, accept, accept-language
Expires: Thu, 01 Jan 1980 00:00:00 GMT Expires: Thu, 01 Jan 1980 00:00:00 GMT
Via: 1.1 fred Via: 1.1 fred
Age: 8000 Age: 8000
to the user agent. to the user agent.
Expires: March 15, 1998 Expires: July 15, 1998
 End of changes. 12 change blocks. 
13 lines changed or deleted 19 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/