CalDav:Nextcloud 和 Thunderbird Lightning 中的不同类别分配

CalDav: Different category assignment in Nextcloud and Thunderbird Lightning

如果通过 nextcloud Ui 创建事件,Caldav 服务器响应如下所示(输出缩短):

BEGIN:VCALENDAR

VERSION:2.0

PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN

BEGIN:VTIMEZONE

TZID:Europe/Berlin

BEGIN:DAYLIGHT

TZOFFSETFROM:+0100

TZOFFSETTO:+0200

TZNAME:CEST

DTSTART:19700329T020000

RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3

END:DAYLIGHT

BEGIN:STANDARD

SUMMARY:Test
.....

CATEGORIES:Jg. 5  <-- // here

CATEGORIES:Jg. 6  <-- // here

....

END:VEVENT

END:VCALENDAR

如果事件是在 Thunderbird 中创建的,它看起来像这样(输出缩短):

BEGIN:VCALENDAR

VERSION:2.0

CALSCALE:GREGORIAN

PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN

DTSTART:19700329T020000

RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU

DTSTART:19701025T030000

RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU

END:STANDARD

END:VTIMEZONE

BEGIN:VEVENT

CREATED:20200813T111910Z

LAST-MODIFIED:20200817T084432Z

DTSTAMP:20200817T084432Z

UID:584589d3-54a6-4f5a-bd4c-03e478938b07

SUMMARY:Test

CATEGORIES:Jg. 5,Jg. 6 <-- // here

....    
END:VEVENT

END:VCALENDAR

如您所见,Nextcloud 为每个类别创建了自己的字段,而 Thunderbird 用逗号 (,) 分隔每个类别。

这样对吗?

根据 rfc 5545 section 3.8.1.2CATEGORIES 属性 可以有多个 comma-separated 值。 Thunderbird 就是这样做的。

同时,还有一些 rfc 5545 属性允许被多次指定,例如ATTENDEE。因此解析器学会了处理多个属性。查看 rfc 7986 section 5.6,明确允许 CATEGORIES 的多个属性。

某些解析器可能会在内部将多个 CATEGORIES 属性转换为一个属性(或反之亦然?),这在编辑事件时会很明显。