absence of particular feature tags in the user agent affects the
overall quality of the variant.
feature-list = 1%feature-list-element
feature-list-element = ( fpred | fpred-bag )
[ ";" [ "+" true-improvement ]
[ "-" false-degradation ]
]
fpred-bag = "[" 1%fpred "]"
true-improvement = short-float
false-degradation = short-float
Features attributes are used in variant descriptions (section 5).
Variant descriptions can be transmitted in Alternates headers
(section 8.3).
Examples are:
{features !textonly [blebber !wolx] colordepth=3;+0.7}
{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
for the false-degradation is 0, or 1 if a true-improvement value is
given.
A user agent SHOULD, and a remote variant selection algorithm MUST
compute the quality degradation factor associated with the features
attribute by multiplying all quality degradation factors of the
elements of the feature-list. Note that the result can be a factor
greater than 1.
A feature list element yields its true-improvement factor if the
corresponding feature predicate is true, or if at least one element
of the corresponding fpred-bag is true. The element yields its
false-degradation factor otherwise.
RFC 2295 Transparent Content Negotiation March 1998
7 Remote variant selection algorithms
A remote variant selection algorithm is a standardized algorithm by
which a server can choose a best variant on behalf of a negotiating
user agent. The use of a remote algorithm can speed up the
negotiation process by eliminating a request-response round trip.
A remote algorithm typically computes whether the Accept- headers in
the request contain sufficient information to allow a choice, and if
so, which variant is the best variant. This specification does not
define any remote algorithms, but does define a mechanism to
negotiate on the use of such algorithms.
7.1 Version numbers
A version numbering scheme is used to distinguish between different
remote variant selection algorithms.
rvsa-version = major "." minor
major = 1*4DIGIT
minor = 1*4DIGIT
An algorithm with the version number X.Y, with Y>0, MUST be downwards
compatible with all algorithms from X.0 up to X.Y. Downwards
compatibility means that, if supplied with the same information, the
newer algorithm MUST make the same choice, or a better choice, as the
old algorithm. There are no compatibility requirements between
algorithms with different major version numbers.
8 Content negotiation status codes and headers
This specification adds one new HTTP status code, and introduces six
new HTTP headers. It also extends the semantics of an existing
HTTP/1.1 header.
8.1 506 Variant Also Negotiates
The 506 status code indicates that the server has an internal
configuration error: the chosen variant resource is configured to
engage in transparent content negotiation itself, and is therefore
not a proper end point in the negotiation process.
=14= |