Version: 0.92
Contact: Jack Ozzie, Matt Augustine, Raman Narayanan and Paresh Suthar, Microsoft Corporation
Updated: 04/21/06
Change log:
0.92 � Updated 04/21/06
� Modified section 1.1 to increment version attribute to 0.92
� Modified section 2 and 2.3.1.1 to indicate that lc:feeditems element can contain 0 or more lc:feeditem elements
� Modified section 2.2.1.1 to add description attribute
� Modified section 2.2.1.1 to describe mechanism for storing xml data vs. non-xml data
� Modified section 2.4.1 to add description attribute
� Modified section 2.4.1 to describe mechanism for storing xml data vs. non-xml data and to indicate that the contenttype attribute is required
� Modified sections 3.1, 3.2, 3.3 and 3.4 to remove CDATA sections for well formed xhtml and increment version attribute to 0.92
� Modified sections 3.1, 3.2, 3.3 and 3.4 to use updated versions of hCard and hCalendar
� Modified section 3.4 to change case of closing lc:liveclipboard element to be all lowercase
0.91 � Original
The objective of Live Clipboard is to provide a simple and consistent user model to wire-the-web that would assist individuals in creating their own mesh of interconnections, both web-to-web and web-to-PC.� Simply stated, the idea is to extend the PC clipboard user model to the web.
!href(http://www.opml.org/spec)
The XML namespace URI for the XML data format described in this specification is:
����� http://www.microsoft.com/schemas/liveclipboard
In this spec, the prefix "lc:" is used for the namespace URI identified above. For example:
<liveclipboard version="0.92" xmlns:lc="http://www.microsoft.com/schemas/liveclipboard">
In this document, the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" are to be interpreted as described in RFC 2119.
Live Clipboard is based on well-formed XML where there are 3 primary section elements:� lc:data, lc:feeds, lc:presentations.
The lc:data element represents that there are schematized data formats (e.g. hCard, iCalendar, etc�) as part of the Live Clipboard content.
The lc:feeds element represents that there are well known feeds (e.g. RSS, Atom, etc�) as part of the Live Clipboard content.
The lc:presentations element represents that there are stylized/display formats (e.g. html, jpeg, etc�) as part of the Live Clipboard content.
Here is a skeletal view of a Live Clipboard XML fragment:
<liveclipboard>
�<lc:data> ������������ 0 or 1 elements
��<lc:format>���������� 1 or more elements
�� <lc:item/>���������� 1 or more elements
� </lc:format>
�</lc:data>
�<lc:feeds>������������ 0 or 1 elements
� <lc:feed>������������ 1 or more elements
�� <lc:feeditems>������ 0 or 1 elements
��� <lc:feeditem>������ 0 or more elements
�� </lc:feeditems>
� </lc:feed/>
�</lc:feeds>
�<lc:presentations>���� 0 or 1 elements
� <lc:format/>��������� 1 or more elements
�</lc:presentations>
</liveclipboard>
|
Attributes |
Description |
|
version |
A required string attribute. This attribute represents the version of the Live Clipboard data format used within the remainder of the document.� |
|
source |
An optional, string attribute. This attribute represents the URL of the source provider of the clipboard content. |
|
description |
An optional, string attribute. This attribute represents a human readable description of clipboard content. |
The lc:liveclipboard element MUST contain one of the primary element sections � lc:data, lc:feeds, lc:presentations. ��The lc:liveclipboard element MAY contain more than one of the primary element sections.
|
Attributes |
Description |
|
N/A |
N/A |
The lc:data element is optional. When lc:data is present, it MUST contain one or more lc:format elements:
|
Attributes |
Description |
|
contenttype |
A required string attribute. This attribute represents the content type of data for the contained lc:item elements, as defined by IANA (see http://www.iana.org/assignments/media-types/).� |
|
type |
An optional, string attribute. This attribute represents the schema or format type of data for the contained lc:item elements when the IANA format identifier is insufficient to determine the type.
Examples: <!-- Don't need type attribute for iCalendar item --> <lc:format contenttype="text/calendar">
<!-- Need type attribute for microformat items, so --> <!-- use root class name as the value --> <lc:format type="vevent" contenttype="application/xhtml+xml">
|
|
encoding |
An optional, string attribute. This attribute represents the encoding type of data for the contained lc:item elements. |
It is RECOMMENDED that the formats be ordered from richest to poorest.� It is also RECOMMENDED that the provider of clipboard content provide as many formats as possible, to increase the likelihood that receiver of the clipboard content will understand how to process it.
Each lc:format element MUST contain one or more lc:itemelements.
|
Attributes |
Description |
|
description |
An optional, string attribute. This attribute represents user data. |
|
ref |
An optional, string attribute. This attribute represents the URL reference for the item. |
Each lc:item element contains data as follows:
� If the data can be represented as well formed UTF-8 xml, then the xml should be appended as a child of the lc:item element
� In all other cases the data should reside in the CDATA section for the lc:item element, optionally encoded in the format described by the encoding attribute of the lc:format element.
Note that if multiple lc:format elements are present, the ordering of lc:item elements correspond to each other.� For example, if we have two lc:format elements X and Y, the first lc:item element of lc:format element X corresponds to the first lc:item element of lc:format element Y.
Also note that if a lc:feeditem element exists, the ordering of� lc:item elements corresponds to the ordering of lc:feeditem elements.
|
Attributes |
Description |
|
N/A |
N/A |
The lc:feeds element is optional. When lc:feeds is present, it MUST contain one or more lc:feed elements.
|
Attributes |
Description |
|
type |
A required string attribute. This attribute represents the type of data that exists at the location specified by the ref attribute.� |
|
ref |
A required string attribute. This attribute represents the URL reference for the item. |
|
description |
An optional, string attribute. This attribute represents user data. |
|
authtype |
An optional, string attribute. This attribute represents an authentication scheme that must be used to access the feed. |
Each lc:feed element MAY contain one or more lc:feeditemselements.
|
Attributes |
Description |
|
contenttype |
A required string attribute. This attribute represents the content type of data for the contained lc:item elements, as defined by IANA (see http://www.iana.org/assignments/media-types/).� |
|
type |
An optional, string attribute. This attribute represents the schema or format type of data for the contained lc:item elements when the IANA format identifier is insufficient to determine the type.
Examples: <!-- Don't need type attribute for iCalendar item --> <lc:feeditems contenttype="text/calendar">
<!-- Need type attribute for microformat items, so --> <!-- use root class name as the value --> <lc:feeditems type="vcalendar" contenttype="application/xhtml+xml"> |
|
xpath |
An optional, string attribute. This attribute represents the query that will return data items from the feed (see http://www.w3.org/TR/xpath). |
It is RECOMMENDED that the formats be ordered from richest to poorest.� It is also RECOMMENDED that the provider of clipboard content provide as many formats as possible, to increase the likelihood that receiver of the clipboard content will understand how to process it.
The lc:feeditems element is optional.� When lc:feeditems is present, it MAY contain zero or more lc:feeditem elements
|
Attributes |
Description |
|
id |
A required string attribute.� This attribute represents a unique identifier for the feed item. |
Note that if multiple lc:feed elements are present, the ordering of lc:feeditem elements MUST correspond to each other.� For example, if we have two lc:feed elements X and Y, the first lc:feeditem element of lc:feed element X MUST correspond to the first lc:feeditem element of lc:feed element Y.
Also note that if a lc:data element exists, the ordering of� lc:feeditem elements MUST correspond to the ordering of lc:item elements.
|
Attributes |
Description |
|
N/A |
N/A |
The lc:presentations element is optional. When lc:presentations is present, it MUST contain one or more lc:format elements:
|
Attributes |
Description |
|
contenttype |
A required string attribute. This attribute represents the content type of data for the CDATA section, as defined by IANA (see http://www.iana.org/assignments/media-types/).� Note: Either or both of the type or contenttype attributes MUST be present; it is invalid to have neither. |
|
type |
An optional, string attribute. This attribute represents the schema or format type of data for the contained lc:item elements when the IANA format identifier is insufficient to determine the type. |
|
encoding |
An optional, string attribute. This attribute represents the encoding type of data for the CDATA section elements. |
|
description |
An optional, string attribute. This attribute represents user data. |
|
ref |
An optional, string attribute. This attribute represents the URL reference for the item. |
Each lc:format element contains data as follows:
� If the data can be represented as well formed UTF-8 xml, then the xml should be appended as a child of the lc:format element
� In all other cases the data should reside in the CDATA section for the lc:format element, optionally encoded in the format described by the encoding attribute.
In the following examples, you will see the original data that is to be copied, followed by the same data represented in the Live Clipboard format.
hCard data:
<div class='vcard'>
�<span class='fn n'>
� <span class='given-name'>Jack</span>
� <span class='family-name'>Ozzie</span>
�</span>
�<div class='adr'>
� <span class='type'>work</span> address:
� <span class='street-address'>1 Microsoft Way</span>,
� <span class='locality'>Redmond</span>,
� <span class='region'>WA</span>�
� <span class='postal-code'>98052</span>
�</div>
�<div class='tel'>
� <span class='type'>work</span>
� <abbr class='type' title='voice'> phone: </abbr>
� <span class='value'>+1-425-555-1212</span>
�</div>
</div>
LiveClipboard data:
<?xml version="1.0" encoding="utf-8"?>
<liveclipboard version="0.92" xmlns:lc="http://www.microsoft.com/schemas/liveclipboard">
� <lc:data>
��� <lc:format type="vcard" contenttype="application/xhtml+xml">
����� <lc:item>
������� <div class='vcard'>
�������� <span class='fn n'>
��������� <span class='given-name'>Jack</span>
��������� <span class='family-name'>Ozzie</span>
�������� </span>
�������� <div class='adr'>
����� �����<span class='type'>work</span> address:
���������� <span class='street-address'>1 Microsoft Way</span>,
���������� <span class='locality'>Redmond</span>,
���������� <span class='region'>WA</span>�
���������� <span class='postal-code'> 98052</span>
�������� </div>
�������� <div class='tel'>
���������� <span class='type'>work</span>
���������� <abbr class='type' title=�voice�> phone: </abbr>
���������� <span class='value'>+1-978-555-1212</span>
�������� </div>
������� </div>
����� </lc:item>
��� </lc:format>
� </lc:data>
</liveclipboard>
hCard data:
<div class='vcard'>
�<span class='fn n'>
� <span class='given-name'>Jack</span>
� <span class='family-name'>Ozzie</span>
�</span>
�<div class='adr'>
� <span class='type'>work</span> address:
� <span class='street-address'>1 Microsoft Way</span>,
� <span class='locality'>Redmond</span>,
� <span class='region'>WA</span>�
� <span class='postal-code'>98052</span>
�</div>
�<div class='tel'>
� <span class='type'>work</span>
� <abbr class='type' title='voice'> phone: </abbr>
� <span class='value'>+1-425-555-1212</span>
�</div>
</div>
<div class='vcard'>
�<span class='fn n'>
� <span class='given-name'>George</span>
� <span class='family-name'>Moromisato</span>
�</span>
�<div class='adr'>
� <span class='type'>work</span> address:
� <span class='street-address'>1 Microsoft Way</span>,
� <span class='locality'>Redmond</span>,
� <span class='region'>WA</span>�
� <span class='postal-code'>98052</span>
�</div>
�<div class='tel'>
� <span class='type'>work</span>
� <abbr class='type' title='voice'> phone: </abbr>
� <span class='value'>+1-425-555-1212</span>
�</div>
</div>
LiveClipboard data:
<?xml version="1.0" encoding="utf-8"?>
<liveclipboard version="0.92" xmlns:lc="http://www.microsoft.com/schemas/liveclipboard">
� <lc:data>
��� <lc:format type="vcard" contenttype="application/xhtml+xml">
����� <lc:item>
������� <div class='vcard'>
�������� <span class='fn n'>
��������� <span class='given-name'>Jack</span>
��������� <span class='family-name'>Ozzie</span>
�������� </span>
�������� <div class='adr'>
���������� <span class='type'>work</span> address:
���������� <span class='street-address'>1 Microsoft Way</span>,
���������� <span class='locality'>Redmond</span>,
������ ����<span class='region'>WA</span>�
���������� <span class='postal-code'> 98052</span>
�������� </div>
�������� <div class='tel'>
���������� <span class='type'>work</span>
���������� <abbr class='type' title='voice'> phone: </abbr>
���������� <span class='value'>+1-978-555-1212</span>
�������� </div>
������� </div>
����� </lc:item>
����� <lc:item>
������� <div class='vcard'>
�������� <span class='fn n'>
��������� <span class='given-name'>George</span>
��������� <span class='family-name'>Moromisato</span>
�������� </span>
�������� <div class='adr'>
���������� <span class='type'>work</span> address:
���������� <span class='street-address'>1 Microsoft Way</span>,
���������� <span class='locality'>Redmond</span>,
���������� <span class='region'>WA</span>�
���������� <span class='postal-code'> 98052</span>
�������� </div>
�������� <div class='tel'>
���������� <span class='type'>work</span>
���������� <abbr class='type' title='voice'> phone: </abbr>
���������� <span class='value'>+1-978-555-1212</span>
������ ��</div>
������� </div>
����� </lc:item>
��� </lc:format>
� </lc:data>
</liveclipboard>
iCalendar data:
BEGIN:VCALENDAR
METHOD:PUBLISH
VERSION:2.0
BEGIN:VEVENT
URL:http://www.eventful.com/E1-001-000629872-2
DTSTART:20060208T180000
DTEND:20060208T180000
DTSTAMP:20060119T184157Z
SUMMARY:The Bellevue Vegetarian February Meetup
DESCRIPTION:Let's all get together and meet over a great veggie dinner at Teapot Vegetarian House in Redmond!
UID:E1-001-000629872-2
LOCATION:Bellevue\,Washington� 98004
END:VEVENT
END:VCALENDAR
hCalendar data:
<div class='vevent'>
�<a class='url' href='http://www.eventful.com/E1-001-000629872-2'>
� <span class='summary'>The Bellevue Vegetarian February Meetup</span>
�</a>
� <div class='description'>Let's all get together and meet over a great veggie dinner at Teapot Vegetarian House in Redmond!</div>
� <div>Start Date: <abbr class='dtstart' title='20060208T180000'>February 8, 2006</abbr></div>
� <div>End Date: <abbr class='dtend' title='20060208T180000'>February 8, 2006</abbr></div>
� <div>Location: <span class='location'>Bellevue,Washington 98004</span></div>
� <div>UID: <span class='uid'>E1-001-000629872-2</span></div>
� <div>Last Updated: <abbr class='dtstamp' title='20060119T184157Z'>January 19, 2006</abbr></div>
</div>
LiveClipboard data:
<?xml version="1.0" encoding="utf-8" ?>
<liveclipboard version="0.92" xmlns:lc="http://www.microsoft.com/schemas/liveclipboard">
�<lc:data>
� <lc:format type="vcalendar" contenttype="application/xhtml+xml">
�� <lc:item>
��� <div class='vevent'>
��� �<a class='url' href='http://www.eventful.com/E1-001-000629872-2'>
��� ��<span class='summary'>The Bellevue Vegetarian February Meetup</span>
��� �</a>
��� �<div class='description'>Let's all get together and meet over a great veggie dinner at Teapot Vegetarian House in Redmond!</div>
�� ��<div>Start Date: <abbr class='dtstart' title='20060208T180000'>February 8, 2006</abbr></div>
�� ��<div>End Date: <abbr class='dtend' title='20060208T180000'>February 8, 2006</abbr></div>
�� ��<div>Location: <span class='location'>Bellevue,Washington 98004</span></div>
�� ��<div>UID: <span class='uid'>E1-001-000629872-2</span></div>
�� ��<div>Last Updated: <abbr class='dtstamp' title='20060119T184157Z'>January 19, 2006</abbr></div>
��� </div>
� �</lc:item>
� </lc:format>
� <lc:format contenttype="text/calendar">
�� <lc:item>
��� <![CDATA[
���� BEGIN:VCALENDAR
���� METHOD:PUBLISH
���� VERSION:2.0
���� BEGIN:VEVENT
���� URL:http://www.eventful.com/E1-001-000629872-2
���� DTSTART:20060208T180000
���� DTEND:20060208T180000
���� DTSTAMP:20060119T184157Z
���� SUMMARY:The Bellevue Vegetarian February Meetup
���� DESCRIPTION:Let's all get together and meet over a great veggie dinner at Teapot Vegetarian House in Redmond!
���� UID:E1-001-000629872-2
���� LOCATION:Bellevue\,Washington� 98004
���� END:VEVENT
���� END:VCALENDAR
��� ]]>
�� </lc:item>
� </lc:format>
�</lc:data>
</liveclipboard>
hCard data:
<div class='vcard'>
�<span class='fn n'>
� <span class='given-name'>Jack</span>
� <span class='family-name'>Ozzie</span>
�</span>
�<div class='adr'>
� <span class='type'>work</span> address:
� <span class='street-address'>1 Microsoft Way</span>,
� <span class='locality'>Redmond</span>,
� <span class='region'>WA</span>�
� <span class='postal-code'>98052</span>
�</div>
�<div class='tel'>
� <span class='type'>work</span>
� <abbr class='type' title='voice'> phone: </abbr>
� <span class='value'>+1-425-555-1212</span>
�</div>
</div>
<div class='vcard'>
�<span class='fn n'>
� <span class='given-name'>George</span>
� <span class='family-name'>Moromisato</span>
�</span>
�<div class='adr'>
� <span class='type'>work</span> address:
� <span class='street-address'>1 Microsoft Way</span>,
� <span class='locality'>Redmond</span>,
� <span class='region'>WA</span>�
� <span class='postal-code'>98052</span>
�</div>
�<div class='tel'>
� <span class='type'>work</span>
� <abbr class='type' title='voice'> phone: </abbr>
� <span class='value'>+1-425-555-1212</span>
�</div>
</div>
RSS data:
<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0">
�<channel>
� <title> My Facebook Friends </title>
� <link>http://localhost/FaceBook/FriendsFeed.ashx</link>
� <pubDate>Wed, 15 Mar 2006 09:05:43 -0800</pubDate>
� <lastBuildDate>Wed, 15 Mar 2006 09:05:43 -0800</lastBuildDate>
� <item>
� �<title>Jack Ozzie</title>
�� <description>
��� <![CDATA[
���� <div class='vcard'>
����� <span class='fn n'>
������ <span class='given-name'>Jack</span>
������ <span class='family-name'>Ozzie</span>
����� </span>
����� <div class='adr'>
������ <span class='type'>work</span> address:
������ <span class='street-address'>1 Microsoft Way</span>,
������ <span class='locality'>Redmond</span>,
������ <span class='region'>WA</span>�
������ <span class='postal-code'>98052</span>
����� </div>
����� <div class='tel'>
������ <span class='type'>work</span>
������ <abbr class='type' title='voice'> phone: </abbr>
������ <span class='value'>+1-425-555-1212</span>
����� </div>
���� </div>
��� ]]>
�� </description>
�� <enclosure url="http://matta13/SIS/contact.vcf?puid=1688852012477191&roid=4EB2576478DA9846A06EFCC12FFC0185"/>
� </item>
� <item>
�� <title>George Moromisato</title>
�� <description>
��� <![CDATA[
���� <div class='vcard'>
����� <span class='fn n'>
������ <span class='given-name'>George</span>
������ <span class='family-name'>Moromisato</span>
����� </span>
����� <div class='adr'>
������ <span class='type'>work</span> address:
���� ��<span class='street-address'>1 Microsoft Way</span>,
������ <span class='locality'>Redmond</span>,
������ <span class='region'>WA</span>�
������ <span class='postal-code'>98052</span>
����� </div>
����� <div class='tel'>
������ <span class='type'>work</span>
������ <abbr class='type' title='voice'> phone: </abbr>
������ <span class='value'>+1-425-555-1212</span>
����� </div>
���� </div>
��� ]]>
�� </description>
�� <enclosure url=" http://matta13/SIS/contact.vcf?puid=1688852012477191&roid=0B69B846ED7E2241AE4F6773EA749183"/>
� </item>
� </channel>
</rss>
HTML data:
<html>
�<body>
� <table>
� �<tr>
� ��<th><b>Fullname</b></th>
� ��<th><b>Street Address</b></th>
� ��<th><b>City</b></th>
� ��<th><b>State</b></th>
� ��<th><b>Zip</b></th>
��� <th><b>Phone</b></th>
� �</tr>
� �<tr>
� ��<td>Jack Ozzie</td>
� ��<td>506 Horizon Plz</td>
� ��<td>San Diego</td>
� ��<td>CA</td>
� ��<td>92101</td>
��� <td>+1-425-555-1212</td>
�� </tr>
�� <tr>
�� �<td>George Moromisato</td>
�� �<td>708 4th Ave</td>
�� �<td>San Diego</td>
�� �<td>CA</td>
� ��<td>92101</td>
��� <td>+1-425-555-1212</td>
�� </tr>
� </table>
�</body>
</html>
LiveClipboard data:
<?xml version="1.0" encoding="utf-8" ?>
<liveclipboard version="0.92" xmlns:lc="http://www.microsoft.com/schemas/liveclipboard">
<lc:data>
� <lc:format type="vcard" contenttype="application/xhtml+xml">
�� <lc:item>
��� <div class='vcard'>
���� <span class='fn n'>
����� <span class='given-name'>Jack</span>
����� <span class='family-name'>Ozzie</span>
���� </span>
���� <div class='adr'>
������ <span class='type'>work</span> address:
������ <span class='street-address'>1 Microsoft Way</span>,
������ <span class='locality'>Redmond</span>,
������ <span class='region'>WA</span>�
������ <span class='postal-code'> 98052</span>
���� </div>
���� <div class='tel'>
������ <span class='type'>work</span>
������ <abbr class='type' title='voice'> phone: </abbr>
������ <span class='value'>+1-978-555-1212</span>
���� </div>
��� </div>
�� </lc:item>
�� <lc:item>
��� <div class='vcard'>
���� <span class='fn n'>
����� <span class='given-name'>George</span>
����� <span class='family-name'>Moromisato</span>
���� </span>
���� <div class='adr'>
������ <span class='type'>work</span> address:
������ <span class='street-address'>1 Microsoft Way</span>,
�� ����<span class='locality'>Redmond</span>,
������ <span class='region'>WA</span>�
������ <span class='postal-code'> 98052</span>
���� </div>
���� <div class='tel'>
������ <span class='type'>work</span>
������ <abbr class='type' title='voice'> phone: </abbr>
������ <span class='value'>+1-978-555-1212</span>
���� </div>
��� </div>
�� </lc:item>
� </lc:format>
�</lc:data>
�<lc:feeds>
� <lc:feed type="RSS" ref="http://localhost/FaceBook/FriendsFeed.ashx" description="My Facebook Friends" authtype="none">
�� <lc:feeditems type="vcard" contenttype="application/xhtml+xml" xpath="/rss/channel/item/description">
��� <lc:feeditem id="http://matta13/SIS/contact.vcf?puid=1688852012477191&roid=4EB2576478DA9846A06EFCC12FFC0185"/>
��� <lc:feeditem id="http://matta13/SIS/contact.vcf?puid=1688852012477191&roid=0B69B846ED7E2241AE4F6773EA749183"/>
�� </lc:feeditems>
� </lc:feed>
�</lc:feeds>
�<lc:presentations>
� <lc:format contenttype="application/xhtml+xml">
�� <table>
��� <tr>
���� <th>Fullname</th>
���� <th>Street Address</th>
���� <th>City</th>
���� <th>State</th>