Subject: [Ietf-calsify] TZID property/parameter value inconsistency

From: cyrus at daboo.name (Cyrus Daboo)
Date: Tue Mar 27 06:47:53 2007

Hi,
I've noted an inconsistency between the TZID property and parameter value 
definitions. In 2445bis we current have:

property:

    tzid       = "TZID" tzidpropparam ":" [tzidprefix] text CRLF

parameter:

    tzidparam  = "TZID" "=" [tzidprefix] paramtext

Note that "paramtext" is defined this way:

    paramtext     = *SAFE-CHAR

    SAFE-CHAR     = WSP / %x21 / %x23-2B / %x2D-39 / %x3C-7E
                    / NON-US-ASCII
      ; Any character except CONTROL, DQUOTE, ";", ":", ","

Thus, as currently defined, a TZID parameter cannot be quoted and cannot 
contain ";", ":" and ",". But the property value is defined as just "text" 
which of course can contain any of those characters.

I believe the proper behaviour here is to have the TZID parameter defined 
as:

    tzidparam  = "TZID" "=" tzidparamvalue

    tzidparamvalue = tzidparamtext / tzidquoted-string

    tzidparamtext = [tzidprefix] paramtext

    tzidquoted-string = DQUOTE [tzidprefix] *QSAFE-CHAR DQUOTE

This is obviously complicated by trying to indicate that the tzidprefix 
character can appear at the start of the tzid name.

One option to simplfy would be to do away with the format tzidprefix item, 
and instead just add notes in the syntax that a name starting with a "/" is 
treated as being special (with appropriate text for that). If we did that, 
the parameter syntax would simply be:

    tzidparam  = "TZID" "=" paramvalue

BTW I have seen TZID parameter values that are quoted in real iCal data.

-- 
Cyrus Daboo