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.2,CATEGORIES
属性 可以有多个 comma-separated 值。 Thunderbird 就是这样做的。
同时,还有一些 rfc 5545 属性允许被多次指定,例如ATTENDEE
。因此解析器学会了处理多个属性。查看 rfc 7986 section 5.6,明确允许 CATEGORIES
的多个属性。
某些解析器可能会在内部将多个 CATEGORIES
属性转换为一个属性(或反之亦然?),这在编辑事件时会很明显。
如果通过 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.2,CATEGORIES
属性 可以有多个 comma-separated 值。 Thunderbird 就是这样做的。
同时,还有一些 rfc 5545 属性允许被多次指定,例如ATTENDEE
。因此解析器学会了处理多个属性。查看 rfc 7986 section 5.6,明确允许 CATEGORIES
的多个属性。
某些解析器可能会在内部将多个 CATEGORIES
属性转换为一个属性(或反之亦然?),这在编辑事件时会很明显。