[whatwg] [WA1] Markup for vCalendar and vCard

Matthew Raymond mattraymond at earthlink.net
Fri Feb 18 05:07:40 PST 2005

    I've been pondering my earlier post regarding calendars in WA1:


    While I like the idea, it seems to introduce too many tags, so I've 
simplified things a bit. The element <cattr> will now be called <vattr> 
and will be used in place of <cdatetime> and <csummary>. This may seem 
to general, but if you look at a vCalendar example, it's pretty straight 
forward. Here's a vCalendar from the hCalendar spec 

| PRODID:-//XYZproduct//EN
| URL:http://www.web2con.com/
| DTSTART:20041005
| DTEND:20041007
| SUMMARY:Web 2.0 Conference

    Now here's how I propose we handle the same information in WA1 markup:

| <vcalendar>
|   <vattr name="prodid" value="-//XYZproduct//EN"
|   <vattr name="version" value="2.0"></vattr>
|   <vevent>
|     <vattr name="url" value="http://www.web2con.com/"></vattr>
|     <vattr name="dtstart" value="2004-10-05"></vattr>
|     <vattr name="dtend" value="2004-10-07"></vattr>
|     <vattr name="summary" value="Web 2.0 Conference"></vattr>
|   </vevent>
| </vcalendar>

    It's fairly simple, and it can be transformed directly into a 
vCalendar and back. The idea is quite similar for vCards. Let's look at 
and example from the hCard spec 

| N:Çelik;Tantek
| FN:Tantek Çelik
| URL:http://tantek.com

    This translates into the following markup:

| <vcard>
|   <vattr name="version" value="3.0"></vattr>
|   <vattr name="n" value="Çelik;Tantek"></vattr>
|   <vattr name="fn" value="Tantek Çelik"></vattr>
|   <vattr name="url" value="http://tantek.com"></vattr>
| </vcard>

    As you can see, the markup structure mirrors the vCard structure and 
contains the same attribute names and information. It would be trivial 
to parse this information and convert it to vCard format.

    Here's the same two examples with fallback content:

| <vcalendar>
|   <table>
|     <caption>Upcoming Events</caption>
|     <tr>
|       <th>URL</th>
|       <th>Start Date</th>
|       <th>End Date</th>
|       <th>Summary</th>
|     </tr>
|     <vevent>
|     <tr>
|       <td><vattr name="url">http://www.web2con.com/</vattr></td>
|       <td><vattr name="dtstart">2004-10-05</vattr></td>
|       <td><vattr name="dtend">2004-10-07</vattr></td>
|       <td><vattr name="summary">Web 2.0 Conference</vattr></td>
|     </tr>
|     </vevent>
|   </table>
| </vcalendar>

| <vcard>
|   <vattr name="version" value="3.0"></vattr>
|   <vattr name="n" value="Çelik;Tantek"></vattr>
|   <div id="tc" class="vcard">
|     <p><vattr name="fn">Tantek Çelik</vattr></p>
|     <a href="http://tantek.com">
|      <vattr name="url">http://tantek.com</vattr>
|     </a>
|     <button type="button" onclick="return addContact('tc')">
|       Add to contact list...
|     </button>
|   </div>
| </vcard>

    Comments welcome.

More information about the whatwg mailing list