2014-01-14 109 views
1

我需要解析vCard 2.1 Name屬性。vCard 2.1名稱屬性在其組件中有逗號嗎?

在vCard 3.0和4.0中,Name屬性的每個組件都可以有多個值。例如RFC 2426中明確規定:

個別文本 組件可以包括通過逗號字符(ASCII十進制 44)分開的多個文本值(例如,多個 其他名稱)。

但在vCard 2.1中,它看起來像每個組件只能有一個值。即使可能至少其他名稱(第三個字段)可以包含逗號。

vCard 2.1 Name屬性在Family Name,Given Name,Additional Names,Name Prefix和Name Suffix strings中是否有逗號?這應該被視爲vCard 3.0和4.0中的「多個文本值」嗎?

回答

1

根據2.1規範中正式的BNF定義,不支持組件內逗號分隔的值列表。 BNF沒有提到要逃避逗號角色。

nameparts = 0*4(strnosemi ";") strnosemi 
; Family, Given, Middle, Prefix, Suffix. 
; Example:Public;John;Q.;Reverend Dr.;III, Esq. 

strnosemi = *(*nonsemi ("\;"/"\" CRLF)) *nonsemi 
; To include a semicolon in this string, it must be escaped 
; with a "\" character. 

爲N屬性選擇的一個示例也似乎暗示逗號沒有特殊含義。

N:Veni, Vidi, Vici;The Restaurant. 

因此,它看起來像N屬性不支持vCard 2.1中的多個值。