re: suggestions for examples and explication wrt ABNF and header fields in draft-ietf-httpbis-p1

I have some further suggestions wrt draft-ietf-httpbis-p1 section "1.2.2. 
Basic Rules".

HTH,

=JeffH
------

In Section 1.2.2 Basic Rules...

 >    Many HTTP/1.1 header field values consist of words separated by
                                                   ^^^^^
                                                   tokens

 >    whitespace or special characters.  These special characters MUST be
 >    in a quoted string to be used within a parameter value (as defined in
 >    Section 6.2).

The "special characters" aren't mentioned anywhere in draft-ietf-httpbis-p* 
spec set other than the above, nor are they defined in ABNF. Inspection of 
draft-ietf-httpbis-p1 and RFC2616 reveals that the "special characters" are 
what RFC2616 defined (using ABNF) as "separators". This is additionally 
confused in that the below tchar rule directly follows the above paragraph, and 
it takes a few moments to figure out that the below _are not_ the "special 
characters" (and it takes even more time to determine that the "special 
characters" aren't explicitly defined in draft-ietf-httpbis-p*).


 >      tchar          = "!" / "#" / "$" / "%" / "&" / "'" / "*"
 >                     / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~"
 >                     / DIGIT / ALPHA
 >
 >      token          = 1*tchar


I suggest rewriting the above paragraph as below, also explicitly including the 
"separators" ABNF from RFC2616 (tho remove the SP and HT from it), and list the 
"token" rule before the "tchar" rule, such that it reads...


    Many HTTP/1.1 header field values consist of tokens separated by
    whitespace (OWS or RWS as appropriate) or separators.  These
    separators, as well as whitespace, MUST be in a quoted string
    to be used within a parameter value (as defined in Section 6.2).


      separators     = "(" | ")" | "<" | ">" | "@"
                     | "," | ";" | ":" | "\" | <">
                     | "/" | "[" | "]" | "?" | "="
                     | "{" | "}"


      token          = 1*tchar


      tchar          = "!" / "#" / "$" / "%" / "&" / "'" / "*"
                     / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~"
                     / DIGIT / ALPHA


---
end

Received on Wednesday, 23 December 2009 21:16:40 UTC