[VCARDDAV] vCard XML
Cyrus Daboo <cyrus@daboo.name> Fri, 26 February 2010 17:45 UTC
Return-Path: <cyrus@daboo.name>
X-Original-To: vcarddav@core3.amsl.com
Delivered-To: vcarddav@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 8B00028C2B2 for <vcarddav@core3.amsl.com>; Fri, 26 Feb 2010 09:45:20 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Level:
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[AWL=0.000, BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id WTT80lV9qG3v for <vcarddav@core3.amsl.com>; Fri, 26 Feb 2010 09:45:19 -0800 (PST)
Received: from daboo.name (daboo.name [151.201.22.177]) by core3.amsl.com (Postfix) with ESMTP id 28F2B28C2A3 for <vcarddav@ietf.org>; Fri, 26 Feb 2010 09:45:19 -0800 (PST)
Received: from localhost (localhost [127.0.0.1]) by daboo.name (Postfix) with ESMTP id 7D773E3E2DA1 for <vcarddav@ietf.org>; Fri, 26 Feb 2010 12:47:34 -0500 (EST)
X-Virus-Scanned: amavisd-new at daboo.name
Received: from daboo.name ([127.0.0.1]) by localhost (chewy.mulberrymail.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id vAT45LT0BIBn for <vcarddav@ietf.org>; Fri, 26 Feb 2010 12:47:31 -0500 (EST)
Received: from caldav.corp.apple.com (caldav.corp.apple.com [17.101.32.44]) by daboo.name (Postfix) with ESMTPSA id 64B15E3E2D8C for <vcarddav@ietf.org>; Fri, 26 Feb 2010 12:47:29 -0500 (EST)
Date: Fri, 26 Feb 2010 12:47:25 -0500
From: Cyrus Daboo <cyrus@daboo.name>
To: vcarddav@ietf.org
Message-ID: <D73BA7B608FA67B02A90FD64@caldav.corp.apple.com>
X-Mailer: Mulberry/4.1.0a1 (Mac OS X)
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"; format="flowed"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline; size="4994"
Subject: [VCARDDAV] vCard XML
X-BeenThere: vcarddav@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: IETF vcarddav wg mailing list <vcarddav.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/vcarddav>, <mailto:vcarddav-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/vcarddav>
List-Post: <mailto:vcarddav@ietf.org>
List-Help: <mailto:vcarddav-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/vcarddav>, <mailto:vcarddav-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 26 Feb 2010 17:45:20 -0000
Hi, Here is a summary of what the CalConnect folks came up with with icalendar-in-xml (<http://tools.ietf.org/html/draft-daboo-et-al-icalendar-in-xml>) as applied to vCard. I think the same principals should be applied to what we do in vcard: 1) Full round tripping of vCard data to/from XML. Semantic equivalence is required, but syntactic equivalence is not required (e.g. lowercase vCard property -> XML -> uppercase vCard). 2) All syntactic elements on the vCard side (components, properties, parameters) must be mapped to XML elements in the "urn:ietf:params:xml:ns:vcard-4.0" namespace. This applies to X- properties as well - only exception is the XML: property described below. 3) All XML elements in the "urn:ietf:params:xml:ns:vcard-4.0" namespace must be mapped to their vCard equivalents (component, property, parameter). 4) Any XML elements not in the "urn:ietf:params:xml:ns:vcard-4.0" namespace must be mapped to an XML: property in vCard. Note that this restricts "extension points" to only the "level" of vCard properties. i.e. you cannot have a non "urn:ietf:params:xml:ns:vcard-4.0" element as as parameter. Each xml element at the "property level" in the XML is mapped to its own XML: property in vcard. Ordering of those is not considered significant. 5) Minimal use of XML attributes on elements. 6) Some structured value types should be "broken out" into sub-elements in XML, e.g. FN. But other types (DATE) should be left as-is because XML tools typically know how to handle those (originally the icalendar-in-xml draft did actually break out the DATE/DATE-TIME values into sub-elements but we changed that based on the feedback we received). 7) Because components and properties can be mixed in iCalendar we choose to encapsulate each in their own XML element to avoid namespace issues. vCard currently does not support the notion of a sub-component so that requirement is probably not needed unless we anticipate ever wanting sub-components. 8) Enumerated values remain as text, not XML elements. So how does this apply to the current draft: draft-ietf-vcarddav-vcardxml-01? (1) is pretty much OK. (2) is OK. (3) is wrong right now in that the vCard XML: property as defined allows for normal vCard properties to remain encoded as XML in the vCard itself as shown in the example in Section 5. I think this issue was discussed before (at a meeting or on the list) and consensus was to change that to follow what is proposed for iCalendar. (4) By fixing (3) I think we take care of this one too. (5) is OK. (6) I think this is OK. Though I note we took a slightly different approach in the RelaxNG scheme in the icalendar-in-xml spec. We chose to define schema elements almost on a one-to-one basis with iCalendar and actually added comments that related the RelaxNG schema to the sections in the iCalendar spec where the iCalendar equivalent item was defined. Whilst this "breaks" up the RelaxNG schema into a lot of small pieces, I think it is easier to relate back to the original syntax (i.e. anyone looking at the XML schema can quickly find the matching section in the base iCalendar spec). That is probably a personal preference, but I would prefer the vCard spec to do what we did. Also, I think we should prefix/suffix schema elements with "property-", "param", "value-" as we did in iCalendar. Again that is important to avoid a clash of names (e.g. if the same name is used for a property and parameter in vCard). (7) We probably don't care about this now. If we do ever want to have sub-components in vcard, the we could simply choose names to avoid a clash with properties. Actually if we added a requirement on iCalendar we could do the same there. That requirement would be that no new property name match an existing component name and vice-versa. We originally choose not toi do that because we did not want the xml spec to add constraints on the base iCalendar spec. (8) The current vCard spec does use elements for enumerated types, e.g.: element type { element work { empty }?, element home { empty }?, element media { \text }? } In the iCalendar spec we did things like: roleparam = element role { "CHAIR" | "REQ-PARTICIPANT" | "OPT-PARTICIPANT" | "NON-PARTICIPANT" } Given that parameter values are text and in vCard are allowed to contain characters that are possibly disallowed as XML element names (e.g. "<" or ">" !!) I think we need to make these enumerations text values and not XML elements. Overall, I think if we can agree to the above changes, then iCalendar and vCard in XML specs will be pretty close - and that would be good. There are some minor structural differences and some more descriptive sections in the iCalendar spec that I think are worth bring in to the vCard one too (e.g., <http://tools.ietf.org/html/draft-daboo-et-al-icalendar-in-xml-01#section-3.1>). -- Cyrus Daboo
- [VCARDDAV] vCard XML Cyrus Daboo
- Re: [VCARDDAV] vCard XML Renato Iannella
- Re: [VCARDDAV] vCard XML Renato Iannella
- Re: [VCARDDAV] vCard XML Cyrus Daboo
- Re: [VCARDDAV] vCard XML Simon Perreault
- Re: [VCARDDAV] vCard XML Cyrus Daboo
- Re: [VCARDDAV] vCard XML Simon Perreault
- Re: [VCARDDAV] vCard XML Filip Navara
- Re: [VCARDDAV] vCard XML Cyrus Daboo
- Re: [VCARDDAV] vCard XML Simon Perreault