- From: Anselm Baird-Smith <abaird@w3.org>
- Date: Thu, 6 Jun 1996 12:58:53 +0500
- To: http-wg%cuckoo.hpl.hp.com@hplb.hpl.hp.com
I have started writing the parsers for the 1.1 headers, starting with the beginning, I am trying to parse the Accept header, whose definition is given by (section 14.1): Accept = "Accept" ":" #( media-range [ ( ":" | ";" ) range-parameter *( ";" range-parameter ) ] | extension-token ) media-range = ( "*/*" | ( type "/" "*" ) | ( type "/" subtype ) ) *( ";" parameter ) range-parameter = ( "q" "=" qvalue ) | extension-range-parameter extension-range-parameter = ( token "=" token ) extension-token = token FYI, parameter is defined as (section 3.7): parameter = attribute "=" value attribute = token value = token | quoted-string If the media-range is separated from the range-parameter by a ':', then I am happy, everything is fine (note that for 1.1 server this is only a SHOULD, not a MUST, I can't see why). However, if media-range is separated from range-parameter by a ';' (as some clients did in HTTP/1.0), then I have no ways to know wether the given parameter is to be attached to the media-range clause rather then to the range-parameter one. As far as I understand the problem is that both the parameter and the range-parameter are extensible. More pragmatically when I am parsing: Accept: text/html;x=1;y=2 I have to be able to select one of the following interpretations: a) media-range=text/html;x=1;y=2 range-paramer=EMPTY b) media-range=text/html;x=1 range-parameter=y=2 c) media-range=text/html range-parameter=x=1;y=2 And I don't know how to do it. Anselm.
Received on Thursday, 6 June 1996 10:01:08 UTC