В нотации BNF, значение поля заголовка Content-Type определяется следующим образом:
content | := | "Content-Type" ":" type "/" subtype *(";" parameter) | ; Распознавание типа и субтипа среды всегда не зависит от регистра, в котором они напечатаны. |
type | := | discrete-type / composite-type | |
discrete-type | := | "text" / "image" / "audio" / "video" / "application" / extension-token | |
composite-type | := | "message" / "multipart" / extension-token | |
extension-token | := | ietf-token / x-token | |
ietf-token | := | <Лексема расширения, определенная стандартом RFC и зарегистрированная IANA.> | |
x-token | := | <Два символа "X-" или "x-", за которыми следует без пробела лексема (token)> | |
subtype | := | extension-token / iana-token | |
iana-token | := | <Общедоступная лексема расширения. Лексемы этой формы должны быть зарегистрированы IANA, как это указано в RFC 2048.> | |
parameter | := | attribute "=" value | |
attribute | := | token | ; Распознавание атрибутов не зависит от регистра, в котором они напечатаны. |
value | := | token / quoted-string | |
token | := | 1* | |
tspecials | := | "(" / ")" / "" / "@" / "," / ";" / ":" / "\" / "/" / "[" / "]" / "?" / "=" | ; Должно представлять собой строку в кавычках |
Заметим, что определение "tspecials" совпадает с определением "specials" в RFC 822 с добавлением трех символов "/", "?" и "=" и удалением "." (точка).
Заметим также, что спецификация субтипа является MANDATORY - она не может быть удалена из поля заголовка Content-Type. Не существует субтипов по умолчанию. Тип, субтип и имена параметров не зависят от регистра, в которых они напечатаны.