Content Negotiation
HTTP clients and servers support a variety of accept headers that indicate which kinds of content the client is prepared to receive. For example, this browser request indicates that the client prefers French but is willing to read English; can handle HTML, plain text, and JPEG images; knows how to decode gzipped data; and recognizes the ASCII, Latin-1, and UTF-8 character sets:
GET /index.html HTTP/1.1 User-Agent: Mozilla/4.6 [en] (WinNT; I) Host: www.cafeaulait.org Accept: text/html, text/plain, image/jpeg Accept-Encoding: gzip Accept-Language: fr, en Accept-Charset: us-ascii, iso-8859-1,utf-8 Connection: close If-Modified-Since: Sun, 31 Oct 1999 19:22:07 GMT
The server that receives this request uses these headers to
decide which version of a resource to send to the client. The same URL
can return different content depending on how these headers are set.
In browsers, this is normally controlled through preferences, but
XInclude allows documents to control two of these headers, Accept
and Accept-language
, by attributes. Each
xi:include
element can have an
accept
and/or accept-language
attribute. The values of
these attributes should be legal values for the corresponding HTTP
header fields. If one or both of these attributes is present, then the
XInclude processor will add the relevant accept headers to the HTTP
request it sends to the server. For example, this xi:include
element indicates you want to
include the French HTML version of Google’s home page:
<xi:include ...
Get XML in a Nutshell, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.