<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://microformats.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Karstenj</id>
	<title>Microformats Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://microformats.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Karstenj"/>
	<link rel="alternate" type="text/html" href="https://microformats.org/wiki/Special:Contributions/Karstenj"/>
	<updated>2026-05-06T04:31:09Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=hcard-supporting-user-profiles&amp;diff=40800</id>
		<title>hcard-supporting-user-profiles</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=hcard-supporting-user-profiles&amp;diff=40800"/>
		<updated>2009-09-23T16:46:09Z</updated>

		<summary type="html">&lt;p&gt;Karstenj: /* All services with hCard profiles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;hCard supporting user profiles&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
One of many sets of [[hcard-examples-in-wild|hCard examples in the wild]].&lt;br /&gt;
&lt;br /&gt;
Welcome! If you have an account on any of the following services, you already have an [[hcard|hCard]] which you can provide to other services to import or subscribe your profile information. The ability to syndicate your profile from the service of your choice is a key component of [[social-network-portability]].&lt;br /&gt;
&lt;br /&gt;
;short URL&lt;br /&gt;
:http://tr.im/hcards&lt;br /&gt;
&lt;br /&gt;
== Services with hCard profiles that also provide OpenID ==&lt;br /&gt;
The following web sites support both hCard on user profiles and the ability to use your user profile as an [[OpenID]].  Alphabetically sorted.  Feel free to add sites with hCard profiles that are also OpenID URLs here. Please include a link to the site home page (or [[implementations]] entry). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:larger&amp;quot;&amp;gt;&lt;br /&gt;
* http://www.betaid.org/i/icn_betaid.png [http://www.betaid.org Beta ID]&lt;br /&gt;
* http://claimid.com/images/badges/claimidclear10x10.gif [http://claimid.com/ ClaimID]&lt;br /&gt;
* [http://email-verify.appspot.com/ Email Verify]&lt;br /&gt;
* http://identoo.com/images/icons/services/identoo.gif [http://identoo.com/ Identoo]&lt;br /&gt;
* http://pulse.plaxo.com/pulse/img/event_icons/LiveJournal.gif  [http://livejournal.com LiveJournal]&lt;br /&gt;
* [http://myopenid.com MyOpenID]&lt;br /&gt;
* http://pulse.plaxo.com/pulse/img/event_icons/plaxo.gif [http://www.plaxo.com/ Plaxo]&lt;br /&gt;
* http://technorati.com/tools/mozsearch/technorati.png [http://technorati.com/ Technorati]&lt;br /&gt;
* [http://videntity.org/ Videntity.org]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== All services with hCard profiles ==&lt;br /&gt;
The following web &amp;lt;span id=&amp;quot;Services_with_hCard_profiles&amp;quot;&amp;gt;sites support hCard on their user profiles&amp;lt;/span&amp;gt; and are thus suitable for importing/subscribing to other sites that support hCard.  Sites that you can also use as your [[OpenID]] are annotated with a OpenID icon http://openid.net/wp-content/uploads/2007/10/openid_small_logo_white.gif following the name of the site.&lt;br /&gt;
&lt;br /&gt;
Alphabetically sorted.  Feel free to add all sites with hCard profiles here. Please include a link to the site home page (or [[implementations]] entry), and instructions for retrieving your user profile URL on that site. If the site's user profile URLs can also be used as OpenIDs, please add the OpenID icon http://openid.net/wp-content/uploads/2007/10/openid_small_logo_white.gif following the name of the site.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:larger&amp;quot;&amp;gt;&lt;br /&gt;
* [http://3eep.com/ 3eep] - each user's public profile is located at &amp;lt;nowiki&amp;gt;http://3eep.com/users/userNameHere&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* [http://www.artistserver.com/ ArtistServer] - each user's public profile is located at &amp;lt;nowiki&amp;gt;http://www.artistserver.com/userURLHere&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* http://www.betaid.org/i/icn_betaid.png [http://www.betaid.org Beta ID] http://openid.net/wp-content/uploads/2007/10/openid_small_logo_white.gif &lt;br /&gt;
* [http://www.bragster.com/ bragster] - each user's public profile is located at &amp;lt;nowiki&amp;gt;http://www.bragster.com/member/username&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* http://claimid.com/images/badges/claimidclear10x10.gif [http://claimid.com/ ClaimID] http://openid.net/wp-content/uploads/2007/10/openid_small_logo_white.gif - each user's public profile is located at &amp;lt;nowiki&amp;gt;http://claimid.com/userNameHere&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* [http://email-verify.appspot.com/ Email Verify] http://openid.net/wp-content/uploads/2007/10/openid_small_logo_white.gif &lt;br /&gt;
* http://identoo.com/images/icons/services/corkd.gif [http://www.corkd.com/ Cork'd] - login and copy the URL which should start with &amp;lt;nowiki&amp;gt;http://www.corkd.com/people/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* http://pulse.plaxo.com/pulse/img/event_icons/Digg.gif [http://digg.com/ Digg] - e.g. http://digg.com/users/tantek&lt;br /&gt;
* [http://djangopeople.net/ Django People] — profiles are at djangopeople.net/username e.g. http://djangopeople.net/simon/&lt;br /&gt;
* http://identoo.com/images/icons/services/dopplr.gif [http://www.dopplr.com/ Dopplr] — Example public profile: http://www.dopplr.com/traveller/adactio - non-public profiles may require login to view.&lt;br /&gt;
* http://pulse.plaxo.com/pulse/img/event_icons/Facebook.gif [http://facebook.com/ Facebook] - not sure how to find someone's public profile URL, e.g. [http://www.facebook.com/people/Andrei_Zmievski/502957990 Andrei Zmievski] but when found it appears to have support for valid fn+photo properties. Note [[hcard-supporting-user-profiles-issues#Facebook|issue(s) with Facebook hCard profiles]].&lt;br /&gt;
* [http://ficlets.com/ Ficlets] — profiles are located at ficlets.com/authors/username e.g. http://ficlets.com/authors/adactio&lt;br /&gt;
* http://pulse.plaxo.com/pulse/img/event_icons/Flickr.gif [http://flickr.com/ Flickr] - login, click &amp;quot;Your Photos&amp;quot;, click &amp;quot;Profile&amp;quot;, and copy the URL which should start with &amp;lt;nowiki&amp;gt;http://flickr.com/people/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* [http://gaia.com/ Gaia Community] - e.g. http://sphorbis.gaia.com/ - built by [http://www.zaadz.com Zaadz] &lt;br /&gt;
* [http://google.com Google] - view your profile at http://www.google.com/s2/profiles/me&lt;br /&gt;
* [http://huffduffer.com Huffduffer] profiles are located at &amp;lt;nowiki&amp;gt;http://huffduffer.com/username&amp;lt;/nowiki&amp;gt; — Example public profile: http://huffduffer.com/clagnut&lt;br /&gt;
* http://identoo.com/images/icons/services/identoo.gif [http://identoo.com/ Identoo] http://openid.net/wp-content/uploads/2007/10/openid_small_logo_white.gif - e.g. [http://identoo.com/dirk.olbertz sample profile]&lt;br /&gt;
* http://idleaf.com/favicon.png [http://idleaf.com idleaf] - profiles are located at &amp;lt;nowiki&amp;gt;http://idleaf.com/IDENTITY_ID&amp;lt;/nowiki&amp;gt; - e.g.: http://idleaf.com/ID4184&lt;br /&gt;
* http://identoo.com/images/icons/services/imthere.gif [http://imthere.com/ ImThere] - profiles are located at &amp;lt;nowiki&amp;gt;http://imthere.com/users/USERNAME&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* http://jaiku.com/images/icons/fav-jaiku.gif [http://jaiku.com Jaiku] — profiles are located at username.jaiku.com e.g. http://adactio.jaiku.com/&lt;br /&gt;
* [http://jpgmag.com/ JPG Magazine] - each user's public profile is located at &amp;lt;nowiki&amp;gt;http://jpgmag.com/people/userNameHere&amp;lt;/nowiki&amp;gt;, e.g. http://jpgmag.com/people/jpd&lt;br /&gt;
* [http://www.keevu.com Keevu.com] - profiles are located at &amp;lt;nowiki&amp;gt;http://www.keevu.com/users/USERNAME&amp;lt;/nowiki&amp;gt; - e.g.: [http://www.keevu.com/users/zheileman Zheileman]&lt;br /&gt;
* http://www.iconarchive.com/icons/fasticon/web-2/MySpace-24x24.png [http://myspace.com MySpace] -- Profile 2.0 supports hCard, e.g.http://myspace.com/irhetoric. Profile 1.0, however, does not.&lt;br /&gt;
* http://pulse.plaxo.com/pulse/img/event_icons/LastFM.gif [http://www.last.fm/ Last FM] - profiles are located at &amp;lt;nowiki&amp;gt;http://last.fm/user/USERNAME&amp;lt;/nowiki&amp;gt;, includes fn, photo, url.&lt;br /&gt;
* http://pulse.plaxo.com/pulse/img/event_icons/LinkedIn.gif [http://linkedin.com LinkedIn] - login, click on &amp;quot;[http://www.linkedin.com/myprofile?trk=tab_pro My Profile]&amp;quot; in the top blue bar, then click on &amp;quot;[http://www.linkedin.com/myprofile?editwp=&amp;amp;trk=tab_web Public Profile]&amp;quot; and copy the URL in the page after &amp;quot;Your current URL is:&amp;quot; which should start with &amp;lt;nowiki&amp;gt;http://www.linkedin.com/pub/ or http://www.linkedin.com/in/&amp;lt;/nowiki&amp;gt;. Note: LinkedIn profiles include an [[hresume|hResume]] for you in addition to your hCard.&lt;br /&gt;
* http://pulse.plaxo.com/pulse/img/event_icons/LiveJournal.gif  [http://livejournal.com LiveJournal] http://openid.net/wp-content/uploads/2007/10/openid_small_logo_white.gif (see also [[implementations#LiveJournal|LiveJournal]] implementation page entry) - login, click on the &amp;quot;Profile&amp;quot; link, and copy the URL which should start with &amp;lt;nowiki&amp;gt;http://USERNAME.livejournal.com/profile&amp;lt;/nowiki&amp;gt; where USERNAME is your LJ username. E.g. [http://daveman692.livejournal.com/profile].&lt;br /&gt;
* http://pulse.plaxo.com/pulse/img/event_icons/Magnolia.gif [http://ma.gnolia.com/ Ma.gnolia] - each user's public profile is located at &amp;lt;nowiki&amp;gt;http://ma.gnolia.com/people/userNameHere&amp;lt;/nowiki&amp;gt; . Note: [[hcard-supporting-user-profiles-issues#Magnolia|issue(s)]].&lt;br /&gt;
* http://www.mixx.com/images/buttons/mixx-button4.png [http://www.mixx.com Mixx] - profiles are located at &amp;lt;nowiki&amp;gt;http://www.mixx.com/users/USERNAME&amp;lt;/nowiki&amp;gt; e.g. http://www.mixx.com/users/jgarber&lt;br /&gt;
* [http://myopenid.com MyOpenID] http://openid.net/wp-content/uploads/2007/10/openid_small_logo_white.gif - profiles are located at &amp;lt;nowiki&amp;gt;http://USERNAME.myopenid.com&amp;lt;/nowiki&amp;gt; e.g. http://tantek.myopenid.com/&lt;br /&gt;
* [http://www.nsyght.com/ Nsyght] - Visit your profile page. Should look like this: &amp;lt;nowiki&amp;gt;http://www.nsyght.com/friends/[username]/&amp;lt;/nowiki&amp;gt;, e.g. [http://nsyght.com/users/lisa sample profile].&lt;br /&gt;
* http://www.bkmks.com/icons/nytimes.com.gif [http://timespeople.nytimes.com/ NYTimes TimesPeople] - e.g. http://timespeople.nytimes.com/view/user/19390043/1/index.html&lt;br /&gt;
* [http://www.obsidianportal.com Obsidian Portal] - Your profile page is located at &amp;lt;nowiki&amp;gt;http://www.obsidianportal.com/profile/USERNAME&amp;lt;/nowiki&amp;gt;, e.g. [http://www.obsidianportal.com/profile/Micah Micah's profile].&lt;br /&gt;
* [http://www.osocial.net/network/ OSocial Network] - add the [http://www.osocial.net/network/app/osocialnetwork.xml OpenSocial application] into your social network, then in OSocial.net Web site you will be able to get your hCard profile&lt;br /&gt;
* http://pulse.plaxo.com/pulse/img/event_icons/plaxo.gif [http://www.plaxo.com/ Plaxo] http://openid.net/wp-content/uploads/2007/10/openid_small_logo_white.gif - create a nickname in your settings, then go to NICKNAME.myplaxo.com (e.g. http://joseph.myplaxo.com) and copy the URL&lt;br /&gt;
* http://www.syncup.com/SupWeb/ajax/images/16pxSyncUpIcon.gif [http://www.syncup.com/ SyncUp]  - create a free account, choose what information to expose to public or specific people, then get the hcard in your profile page&lt;br /&gt;
* [http://www.qmpeople.com/ qmpeople] - Uses hCard+XFN for profiles (&amp;lt;nowiki&amp;gt;http://www.qmpeople.com/users/[username]&amp;lt;/nowiki&amp;gt; - e.g. [http://www.qmpeople.com/users/laserion laserion])&lt;br /&gt;
* [http://radar.net/ Radar] - http://radar.net/people/radarname&lt;br /&gt;
* [http://www.revish.com/ Revish] — profiles are located at revish.com/people/username e.g. http://www.revish.com/people/adactio&lt;br /&gt;
* [http://rosebleed.net/ Rosebleed] - your profile URL is &amp;lt;nowiki&amp;gt;http://rosebleed.net/users/profile.php/&amp;lt;/nowiki&amp;gt; followed by your username, e.g. [http://rosebleed.net/users/profile.php/silvermoon82 silvermoon82].&lt;br /&gt;
* [http://www.getsatisfaction.com/ Satisfaction]&lt;br /&gt;
* [http://scipeople.com/ SciPeople] Uses hCard+XFN for profiles (http://[username].scipeople.com/)&lt;br /&gt;
* http://skateboardspot.info/image/icon/favicon.png [http://skateboardspot.info/ skateboardspot.info] http://openid.net/wp-content/uploads/2007/10/openid_small_logo_white.gif (The site doesn't provide, but supports OpenID to login and register) — Log in, and click on your username in the top right corner. You'll see your user page which also is your hCard. Just copy the URL and you're done.&lt;br /&gt;
* [http://www.sustainlane.com www.sustainlane.com] - Profile at &amp;lt;nowiki&amp;gt;http://www.sustainlane.com/members/[user id]&amp;lt;/nowiki&amp;gt; [http://www.sustainlane.com/members/4YHJXMST4S1B3NZT1HCSB4OAIVYD Example]&lt;br /&gt;
* [http://tangler.com/ Tangler] -  click on a person's profile to navigate to their profile which is marked up with hCard &amp;lt;nowiki&amp;gt;http://www.tangler.com/people/id/&amp;lt;/nowiki&amp;gt; - where &amp;quot;id&amp;quot; is the user number of that person.&lt;br /&gt;
* http://technorati.com/tools/mozsearch/technorati.png [http://technorati.com/ Technorati] http://openid.net/wp-content/uploads/2007/10/openid_small_logo_white.gif - login, click on the &amp;quot;Signed in as username&amp;quot; username link at the top right of the page, and copy the URL which should start with &amp;lt;nowiki&amp;gt;http://technorati.com/profile/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* [http://threadless.com/ Threadless] - select &amp;quot;My Account&amp;quot; and then &amp;quot;Profile Page&amp;quot;. URL looks like &amp;lt;nowiki&amp;gt;http://www.threadless.com/profile/123987/username&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* [http://www.travellerspoint.com/ Travellerspoint] - In use on all member profiles. URLs look like &amp;lt;nowiki&amp;gt;http://www.travellerspoint.com/member_profile.cfm?user=UsernameHere&amp;lt;/nowiki&amp;gt; (e.g., [http://www.travellerspoint.com/member_profile.cfm?user=Peter Peter])&lt;br /&gt;
* http://pulse.plaxo.com/pulse/img/event_icons/Twitter.gif [http://twitter.com/ Twitter] - login, click on &amp;quot;Your profile&amp;quot; at the top, and copy the URL&lt;br /&gt;
* http://pulse.plaxo.com/pulse/img/event_icons/Upcoming.gif [http://upcoming.yahoo.com/ Upcoming] - login, click on the &amp;quot;Welcome, username!&amp;quot; username link at the top right of the page, and copy the URL which should start with &amp;lt;nowiki&amp;gt;http://upcoming.yahoo.com/user/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* [http://videntity.org/ Videntity.org] http://openid.net/wp-content/uploads/2007/10/openid_small_logo_white.gif - e.g. http://danda.videntity.org/&lt;br /&gt;
* [http://www.vimeo.com/ Vimeo] — e.g. http://www.vimeo.com/user196031&lt;br /&gt;
* http://openid.net/wp-content/uploads/vox.png [http://vox.com/ Vox] http://openid.net/wp-content/uploads/2007/10/openid_small_logo_white.gif - profile URL is &amp;lt;nowiki&amp;gt;http://USERNAME.vox.com/profile/&amp;lt;/nowiki&amp;gt; e.g.  http://daveman692.vox.com/profile/ (note issue: empty &amp;quot;n&amp;quot; property. fix: remove &amp;quot;n&amp;quot; from class attribute).&lt;br /&gt;
* [http://www.yedda.com/ Yedda] - e.g. http://yedda.com/people/8625713501419/ built by [http://www.zaadz.com Zaadz]&lt;br /&gt;
* [http://www.easthampshire.org/ easthampshire.org] - hCard on events and events map - e.g. http://easthampshire.org/eventdetail/wine_society_evening/1372606 and http://easthampshire.org/eventmap/wine_society_evening/1372606 built by [http://www.callendercreates.com Callender Creates]&lt;br /&gt;
* [http://www.dandyid.org/ DandyID.org] - hCard on user profiles, and a hCard widget for users blogs/sits/etc. (login to see the widget). Profile e.g. http://www.dandyid.org/beta/users/user_id/3&lt;br /&gt;
* ... add more sites (alphabetically sorted please) that support hCard, including instructions for finding and copying your profile URL.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== offline sites ===&lt;br /&gt;
Sites that supported hCard user profiles that have gone offline, perhaps permanently.&lt;br /&gt;
* [http://consumating.com/ Consumating]&lt;br /&gt;
** supported hCard profiles at least from sometime in 2006 to 2008-03-15 when the site went offline. Past instructions to get profile URL: login, click on your name or &amp;quot;My Profile&amp;quot; link, copy the URL which looks like &amp;lt;nowiki&amp;gt;http://consumating.com/profiles/userNameHere&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* http://pulse.plaxo.com/pulse/img/event_icons/Pownce.gif [http://pownce.com/ Pownce]&lt;br /&gt;
** supported hCard profiles at least from sometime in 2007 to 2009-01-31 when the site went offline. Past instructions to get profile URL: login, click on the &amp;quot;Home&amp;quot; link at the top, and copy the URL.&lt;br /&gt;
&lt;br /&gt;
== Services that import hCard profiles==&lt;br /&gt;
The following web sites support importing your existing hCard user profile, e.g. from the above sites, or your own page. Feel free to add sites supporting hCard user profile import to the appropriate section here. Please include a link to the site home page, and instructions for how to import your existing hCard user profile to the site.&lt;br /&gt;
&lt;br /&gt;
=== import and subscribe on sign-up ===&lt;br /&gt;
Site(s) that allow you to import ''and'' subscribe to your hCard user profile when signing-up.. Alphabetically sorted.&lt;br /&gt;
* [http://getsatisfaction.com/ Satisfaction Inc.] - go to [http://getsatisfaction.com/people/new their sign in and registration page], choose the service of your existing profile or &amp;quot;'''Other...'''&amp;quot; and enter your profile URL (which you can retrieve as described above), and click &amp;quot;'''Get Profile'''&amp;quot;. Then check &amp;quot;'''[x] Subscribe to this profile'''&amp;quot;. Note: [[hcard-supporting-user-profiles-issues#Satisfaction|issue(s)]].&lt;br /&gt;
&lt;br /&gt;
See [[subscribe-to-hcard]] for more notes on implementing subscribing to a user's hCard to automatically update their profile information.&lt;br /&gt;
&lt;br /&gt;
=== import on sign-up ===&lt;br /&gt;
Site(s) that allow you to import your hCard user profile to sign-up. Alphabetically sorted.&lt;br /&gt;
* [http://www.bragster.com/ bragster] - go to [http://www.bragster.com/signup the sign-up page], click on the service logo of your existing profile, or the microformats logo for 'other' and enter your profile username (or URL for 'other') (which you can retrieve as described above).&lt;br /&gt;
&lt;br /&gt;
=== import anytime ===&lt;br /&gt;
Sites that let you import your external hCard profile information anytime.&lt;br /&gt;
* [http://php-profile-importer.origo.ethz.ch/ PHP Profile importer] - Open Source PHP and JavaScript profile importer, there is also a [http://proofile.org/profile_importer_demo demo available].&lt;br /&gt;
* [http://www.proofile.org proofile] - [http://proofile.org/register Sign up] for an account and view the [http://proofile.org/edit/profile edit profile] page, enabling you to import from any hCard annotated URL. Full hCard is supported.&lt;br /&gt;
* [http://www.dandyid.org DandyID] - import a hCard supporting url after signing up, for auto-filling user info. DandyID also renders detailed hCards on user profiles.&lt;br /&gt;
&lt;br /&gt;
=== subscribe anytime ===&lt;br /&gt;
Sites that let you subscribe to your external hCard profile information anytime.&lt;br /&gt;
* None currently.&lt;br /&gt;
=== delegation ===&lt;br /&gt;
Sites that support fully delegating to your external hCard profile.&lt;br /&gt;
* None currently.&lt;br /&gt;
&lt;br /&gt;
== For more information ==&lt;br /&gt;
Want to implement hCard on your site so you can list it here?  &lt;br /&gt;
&lt;br /&gt;
See the [[hcard-user-profile-authoring|hCard user profile authoring]] page for how to mark-up a user profile with hCard.&lt;br /&gt;
&lt;br /&gt;
Join the [http://microformats.org/discuss microformats community], in particular the #microformats IRC channel on irc://irc.freenode.net#microformats and the [http://microformats.org/mailman/listinfo/microformats-dev/ microformats-dev mailing list], and send a message stating that you'd like to add hCard to the profiles and hCard+XFN supporting friends lists to your website.&lt;br /&gt;
&lt;br /&gt;
Please also consider implementing [[hcard-xfn-supporting-friends-lists|hCard+XFN friends lists]].&lt;br /&gt;
&lt;br /&gt;
See [[hcard-supporting-user-profiles-issues|hCard supporting user profiles issues]] for issues, problems with implementations.&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[subscribe-to-hcard]]&lt;br /&gt;
* [[hcard-xfn-supporting-friends-lists|hCard+XFN friends lists]]&lt;br /&gt;
* [[social-network-portability]]&lt;br /&gt;
* [[user-interface]]&lt;br /&gt;
* [[hcard|hCard]] ([[hcard-authoring|authoring]], [[hcard-faq|FAQ]])&lt;br /&gt;
* [[xfn|XFN]]&lt;br /&gt;
* [[data-portability]]&lt;/div&gt;</summary>
		<author><name>Karstenj</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=hcard-supporting-user-profiles&amp;diff=40799</id>
		<title>hcard-supporting-user-profiles</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=hcard-supporting-user-profiles&amp;diff=40799"/>
		<updated>2009-09-23T16:44:12Z</updated>

		<summary type="html">&lt;p&gt;Karstenj: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;hCard supporting user profiles&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
One of many sets of [[hcard-examples-in-wild|hCard examples in the wild]].&lt;br /&gt;
&lt;br /&gt;
Welcome! If you have an account on any of the following services, you already have an [[hcard|hCard]] which you can provide to other services to import or subscribe your profile information. The ability to syndicate your profile from the service of your choice is a key component of [[social-network-portability]].&lt;br /&gt;
&lt;br /&gt;
;short URL&lt;br /&gt;
:http://tr.im/hcards&lt;br /&gt;
&lt;br /&gt;
== Services with hCard profiles that also provide OpenID ==&lt;br /&gt;
The following web sites support both hCard on user profiles and the ability to use your user profile as an [[OpenID]].  Alphabetically sorted.  Feel free to add sites with hCard profiles that are also OpenID URLs here. Please include a link to the site home page (or [[implementations]] entry). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:larger&amp;quot;&amp;gt;&lt;br /&gt;
* http://www.betaid.org/i/icn_betaid.png [http://www.betaid.org Beta ID]&lt;br /&gt;
* http://claimid.com/images/badges/claimidclear10x10.gif [http://claimid.com/ ClaimID]&lt;br /&gt;
* [http://email-verify.appspot.com/ Email Verify]&lt;br /&gt;
* http://identoo.com/images/icons/services/identoo.gif [http://identoo.com/ Identoo]&lt;br /&gt;
* http://pulse.plaxo.com/pulse/img/event_icons/LiveJournal.gif  [http://livejournal.com LiveJournal]&lt;br /&gt;
* [http://myopenid.com MyOpenID]&lt;br /&gt;
* http://pulse.plaxo.com/pulse/img/event_icons/plaxo.gif [http://www.plaxo.com/ Plaxo]&lt;br /&gt;
* http://technorati.com/tools/mozsearch/technorati.png [http://technorati.com/ Technorati]&lt;br /&gt;
* [http://videntity.org/ Videntity.org]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== All services with hCard profiles ==&lt;br /&gt;
The following web &amp;lt;span id=&amp;quot;Services_with_hCard_profiles&amp;quot;&amp;gt;sites support hCard on their user profiles&amp;lt;/span&amp;gt; and are thus suitable for importing/subscribing to other sites that support hCard.  Sites that you can also use as your [[OpenID]] are annotated with a OpenID icon http://openid.net/wp-content/uploads/2007/10/openid_small_logo_white.gif following the name of the site.&lt;br /&gt;
&lt;br /&gt;
Alphabetically sorted.  Feel free to add all sites with hCard profiles here. Please include a link to the site home page (or [[implementations]] entry), and instructions for retrieving your user profile URL on that site. If the site's user profile URLs can also be used as OpenIDs, please add the OpenID icon http://openid.net/wp-content/uploads/2007/10/openid_small_logo_white.gif following the name of the site.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:larger&amp;quot;&amp;gt;&lt;br /&gt;
* [http://3eep.com/ 3eep] - each user's public profile is located at &amp;lt;nowiki&amp;gt;http://3eep.com/users/userNameHere&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* [http://www.artistserver.com/ ArtistServer] - each user's public profile is located at &amp;lt;nowiki&amp;gt;http://www.artistserver.com/userURLHere&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* http://www.betaid.org/i/icn_betaid.png [http://www.betaid.org Beta ID] http://openid.net/wp-content/uploads/2007/10/openid_small_logo_white.gif &lt;br /&gt;
* [http://www.bragster.com/ bragster] - each user's public profile is located at &amp;lt;nowiki&amp;gt;http://www.bragster.com/member/username&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* http://claimid.com/images/badges/claimidclear10x10.gif [http://claimid.com/ ClaimID] http://openid.net/wp-content/uploads/2007/10/openid_small_logo_white.gif - each user's public profile is located at &amp;lt;nowiki&amp;gt;http://claimid.com/userNameHere&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* [http://email-verify.appspot.com/ Email Verify] http://openid.net/wp-content/uploads/2007/10/openid_small_logo_white.gif &lt;br /&gt;
* http://identoo.com/images/icons/services/corkd.gif [http://www.corkd.com/ Cork'd] - login and copy the URL which should start with &amp;lt;nowiki&amp;gt;http://www.corkd.com/people/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* http://pulse.plaxo.com/pulse/img/event_icons/Digg.gif [http://digg.com/ Digg] - e.g. http://digg.com/users/tantek&lt;br /&gt;
* [http://djangopeople.net/ Django People] — profiles are at djangopeople.net/username e.g. http://djangopeople.net/simon/&lt;br /&gt;
* http://identoo.com/images/icons/services/dopplr.gif [http://www.dopplr.com/ Dopplr] — Example public profile: http://www.dopplr.com/traveller/adactio - non-public profiles may require login to view.&lt;br /&gt;
* http://pulse.plaxo.com/pulse/img/event_icons/Facebook.gif [http://facebook.com/ Facebook] - not sure how to find someone's public profile URL, e.g. [http://www.facebook.com/people/Andrei_Zmievski/502957990 Andrei Zmievski] but when found it appears to have support for valid fn+photo properties. Note [[hcard-supporting-user-profiles-issues#Facebook|issue(s) with Facebook hCard profiles]].&lt;br /&gt;
* [http://ficlets.com/ Ficlets] — profiles are located at ficlets.com/authors/username e.g. http://ficlets.com/authors/adactio&lt;br /&gt;
* http://pulse.plaxo.com/pulse/img/event_icons/Flickr.gif [http://flickr.com/ Flickr] - login, click &amp;quot;Your Photos&amp;quot;, click &amp;quot;Profile&amp;quot;, and copy the URL which should start with &amp;lt;nowiki&amp;gt;http://flickr.com/people/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* [http://gaia.com/ Gaia Community] - e.g. http://sphorbis.gaia.com/ - built by [http://www.zaadz.com Zaadz] &lt;br /&gt;
* [http://google.com Google] - view your profile at http://www.google.com/s2/profiles/me&lt;br /&gt;
* [http://huffduffer.com Huffduffer] profiles are located at &amp;lt;nowiki&amp;gt;http://huffduffer.com/username&amp;lt;/nowiki&amp;gt; — Example public profile: http://huffduffer.com/clagnut&lt;br /&gt;
* http://identoo.com/images/icons/services/identoo.gif [http://identoo.com/ Identoo] http://openid.net/wp-content/uploads/2007/10/openid_small_logo_white.gif - e.g. [http://identoo.com/dirk.olbertz sample profile]&lt;br /&gt;
* http://idleaf.com/favicon.png [http://idleaf.com idleaf] - profiles are located at &amp;lt;nowiki&amp;gt;http://idleaf.com/IDENTITY_ID&amp;lt;/nowiki&amp;gt; - e.g.: http://idleaf.com/ID4184&lt;br /&gt;
* http://identoo.com/images/icons/services/imthere.gif [http://imthere.com/ ImThere] - profiles are located at &amp;lt;nowiki&amp;gt;http://imthere.com/users/USERNAME&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* http://jaiku.com/images/icons/fav-jaiku.gif [http://jaiku.com Jaiku] — profiles are located at username.jaiku.com e.g. http://adactio.jaiku.com/&lt;br /&gt;
* [http://jpgmag.com/ JPG Magazine] - each user's public profile is located at &amp;lt;nowiki&amp;gt;http://jpgmag.com/people/userNameHere&amp;lt;/nowiki&amp;gt;, e.g. http://jpgmag.com/people/jpd&lt;br /&gt;
* [http://www.keevu.com Keevu.com] - profiles are located at &amp;lt;nowiki&amp;gt;http://www.keevu.com/users/USERNAME&amp;lt;/nowiki&amp;gt; - e.g.: [http://www.keevu.com/users/zheileman Zheileman]&lt;br /&gt;
* http://www.iconarchive.com/icons/fasticon/web-2/MySpace-24x24.png [http://myspace.com] MySpace -- Profile 2.0 supports hCard, e.g.http://myspace.com/irhetoric Profile 1.0, however, does not.&lt;br /&gt;
* http://pulse.plaxo.com/pulse/img/event_icons/LastFM.gif [http://www.last.fm/ Last FM] - profiles are located at &amp;lt;nowiki&amp;gt;http://last.fm/user/USERNAME&amp;lt;/nowiki&amp;gt;, includes fn, photo, url.&lt;br /&gt;
* http://pulse.plaxo.com/pulse/img/event_icons/LinkedIn.gif [http://linkedin.com LinkedIn] - login, click on &amp;quot;[http://www.linkedin.com/myprofile?trk=tab_pro My Profile]&amp;quot; in the top blue bar, then click on &amp;quot;[http://www.linkedin.com/myprofile?editwp=&amp;amp;trk=tab_web Public Profile]&amp;quot; and copy the URL in the page after &amp;quot;Your current URL is:&amp;quot; which should start with &amp;lt;nowiki&amp;gt;http://www.linkedin.com/pub/ or http://www.linkedin.com/in/&amp;lt;/nowiki&amp;gt;. Note: LinkedIn profiles include an [[hresume|hResume]] for you in addition to your hCard.&lt;br /&gt;
* http://pulse.plaxo.com/pulse/img/event_icons/LiveJournal.gif  [http://livejournal.com LiveJournal] http://openid.net/wp-content/uploads/2007/10/openid_small_logo_white.gif (see also [[implementations#LiveJournal|LiveJournal]] implementation page entry) - login, click on the &amp;quot;Profile&amp;quot; link, and copy the URL which should start with &amp;lt;nowiki&amp;gt;http://USERNAME.livejournal.com/profile&amp;lt;/nowiki&amp;gt; where USERNAME is your LJ username. E.g. [http://daveman692.livejournal.com/profile].&lt;br /&gt;
* http://pulse.plaxo.com/pulse/img/event_icons/Magnolia.gif [http://ma.gnolia.com/ Ma.gnolia] - each user's public profile is located at &amp;lt;nowiki&amp;gt;http://ma.gnolia.com/people/userNameHere&amp;lt;/nowiki&amp;gt; . Note: [[hcard-supporting-user-profiles-issues#Magnolia|issue(s)]].&lt;br /&gt;
* http://www.mixx.com/images/buttons/mixx-button4.png [http://www.mixx.com Mixx] - profiles are located at &amp;lt;nowiki&amp;gt;http://www.mixx.com/users/USERNAME&amp;lt;/nowiki&amp;gt; e.g. http://www.mixx.com/users/jgarber&lt;br /&gt;
* [http://myopenid.com MyOpenID] http://openid.net/wp-content/uploads/2007/10/openid_small_logo_white.gif - profiles are located at &amp;lt;nowiki&amp;gt;http://USERNAME.myopenid.com&amp;lt;/nowiki&amp;gt; e.g. http://tantek.myopenid.com/&lt;br /&gt;
* [http://www.nsyght.com/ Nsyght] - Visit your profile page. Should look like this: &amp;lt;nowiki&amp;gt;http://www.nsyght.com/friends/[username]/&amp;lt;/nowiki&amp;gt;, e.g. [http://nsyght.com/users/lisa sample profile].&lt;br /&gt;
* http://www.bkmks.com/icons/nytimes.com.gif [http://timespeople.nytimes.com/ NYTimes TimesPeople] - e.g. http://timespeople.nytimes.com/view/user/19390043/1/index.html&lt;br /&gt;
* [http://www.obsidianportal.com Obsidian Portal] - Your profile page is located at &amp;lt;nowiki&amp;gt;http://www.obsidianportal.com/profile/USERNAME&amp;lt;/nowiki&amp;gt;, e.g. [http://www.obsidianportal.com/profile/Micah Micah's profile].&lt;br /&gt;
* [http://www.osocial.net/network/ OSocial Network] - add the [http://www.osocial.net/network/app/osocialnetwork.xml OpenSocial application] into your social network, then in OSocial.net Web site you will be able to get your hCard profile&lt;br /&gt;
* http://pulse.plaxo.com/pulse/img/event_icons/plaxo.gif [http://www.plaxo.com/ Plaxo] http://openid.net/wp-content/uploads/2007/10/openid_small_logo_white.gif - create a nickname in your settings, then go to NICKNAME.myplaxo.com (e.g. http://joseph.myplaxo.com) and copy the URL&lt;br /&gt;
* http://www.syncup.com/SupWeb/ajax/images/16pxSyncUpIcon.gif [http://www.syncup.com/ SyncUp]  - create a free account, choose what information to expose to public or specific people, then get the hcard in your profile page&lt;br /&gt;
* [http://www.qmpeople.com/ qmpeople] - Uses hCard+XFN for profiles (&amp;lt;nowiki&amp;gt;http://www.qmpeople.com/users/[username]&amp;lt;/nowiki&amp;gt; - e.g. [http://www.qmpeople.com/users/laserion laserion])&lt;br /&gt;
* [http://radar.net/ Radar] - http://radar.net/people/radarname&lt;br /&gt;
* [http://www.revish.com/ Revish] — profiles are located at revish.com/people/username e.g. http://www.revish.com/people/adactio&lt;br /&gt;
* [http://rosebleed.net/ Rosebleed] - your profile URL is &amp;lt;nowiki&amp;gt;http://rosebleed.net/users/profile.php/&amp;lt;/nowiki&amp;gt; followed by your username, e.g. [http://rosebleed.net/users/profile.php/silvermoon82 silvermoon82].&lt;br /&gt;
* [http://www.getsatisfaction.com/ Satisfaction]&lt;br /&gt;
* [http://scipeople.com/ SciPeople] Uses hCard+XFN for profiles (http://[username].scipeople.com/)&lt;br /&gt;
* http://skateboardspot.info/image/icon/favicon.png [http://skateboardspot.info/ skateboardspot.info] http://openid.net/wp-content/uploads/2007/10/openid_small_logo_white.gif (The site doesn't provide, but supports OpenID to login and register) — Log in, and click on your username in the top right corner. You'll see your user page which also is your hCard. Just copy the URL and you're done.&lt;br /&gt;
* [http://www.sustainlane.com www.sustainlane.com] - Profile at &amp;lt;nowiki&amp;gt;http://www.sustainlane.com/members/[user id]&amp;lt;/nowiki&amp;gt; [http://www.sustainlane.com/members/4YHJXMST4S1B3NZT1HCSB4OAIVYD Example]&lt;br /&gt;
* [http://tangler.com/ Tangler] -  click on a person's profile to navigate to their profile which is marked up with hCard &amp;lt;nowiki&amp;gt;http://www.tangler.com/people/id/&amp;lt;/nowiki&amp;gt; - where &amp;quot;id&amp;quot; is the user number of that person.&lt;br /&gt;
* http://technorati.com/tools/mozsearch/technorati.png [http://technorati.com/ Technorati] http://openid.net/wp-content/uploads/2007/10/openid_small_logo_white.gif - login, click on the &amp;quot;Signed in as username&amp;quot; username link at the top right of the page, and copy the URL which should start with &amp;lt;nowiki&amp;gt;http://technorati.com/profile/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* [http://threadless.com/ Threadless] - select &amp;quot;My Account&amp;quot; and then &amp;quot;Profile Page&amp;quot;. URL looks like &amp;lt;nowiki&amp;gt;http://www.threadless.com/profile/123987/username&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* [http://www.travellerspoint.com/ Travellerspoint] - In use on all member profiles. URLs look like &amp;lt;nowiki&amp;gt;http://www.travellerspoint.com/member_profile.cfm?user=UsernameHere&amp;lt;/nowiki&amp;gt; (e.g., [http://www.travellerspoint.com/member_profile.cfm?user=Peter Peter])&lt;br /&gt;
* http://pulse.plaxo.com/pulse/img/event_icons/Twitter.gif [http://twitter.com/ Twitter] - login, click on &amp;quot;Your profile&amp;quot; at the top, and copy the URL&lt;br /&gt;
* http://pulse.plaxo.com/pulse/img/event_icons/Upcoming.gif [http://upcoming.yahoo.com/ Upcoming] - login, click on the &amp;quot;Welcome, username!&amp;quot; username link at the top right of the page, and copy the URL which should start with &amp;lt;nowiki&amp;gt;http://upcoming.yahoo.com/user/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* [http://videntity.org/ Videntity.org] http://openid.net/wp-content/uploads/2007/10/openid_small_logo_white.gif - e.g. http://danda.videntity.org/&lt;br /&gt;
* [http://www.vimeo.com/ Vimeo] — e.g. http://www.vimeo.com/user196031&lt;br /&gt;
* http://openid.net/wp-content/uploads/vox.png [http://vox.com/ Vox] http://openid.net/wp-content/uploads/2007/10/openid_small_logo_white.gif - profile URL is &amp;lt;nowiki&amp;gt;http://USERNAME.vox.com/profile/&amp;lt;/nowiki&amp;gt; e.g.  http://daveman692.vox.com/profile/ (note issue: empty &amp;quot;n&amp;quot; property. fix: remove &amp;quot;n&amp;quot; from class attribute).&lt;br /&gt;
* [http://www.yedda.com/ Yedda] - e.g. http://yedda.com/people/8625713501419/ built by [http://www.zaadz.com Zaadz]&lt;br /&gt;
* [http://www.easthampshire.org/ easthampshire.org] - hCard on events and events map - e.g. http://easthampshire.org/eventdetail/wine_society_evening/1372606 and http://easthampshire.org/eventmap/wine_society_evening/1372606 built by [http://www.callendercreates.com Callender Creates]&lt;br /&gt;
* [http://www.dandyid.org/ DandyID.org] - hCard on user profiles, and a hCard widget for users blogs/sits/etc. (login to see the widget). Profile e.g. http://www.dandyid.org/beta/users/user_id/3&lt;br /&gt;
* ... add more sites (alphabetically sorted please) that support hCard, including instructions for finding and copying your profile URL.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== offline sites ===&lt;br /&gt;
Sites that supported hCard user profiles that have gone offline, perhaps permanently.&lt;br /&gt;
* [http://consumating.com/ Consumating]&lt;br /&gt;
** supported hCard profiles at least from sometime in 2006 to 2008-03-15 when the site went offline. Past instructions to get profile URL: login, click on your name or &amp;quot;My Profile&amp;quot; link, copy the URL which looks like &amp;lt;nowiki&amp;gt;http://consumating.com/profiles/userNameHere&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* http://pulse.plaxo.com/pulse/img/event_icons/Pownce.gif [http://pownce.com/ Pownce]&lt;br /&gt;
** supported hCard profiles at least from sometime in 2007 to 2009-01-31 when the site went offline. Past instructions to get profile URL: login, click on the &amp;quot;Home&amp;quot; link at the top, and copy the URL.&lt;br /&gt;
&lt;br /&gt;
== Services that import hCard profiles==&lt;br /&gt;
The following web sites support importing your existing hCard user profile, e.g. from the above sites, or your own page. Feel free to add sites supporting hCard user profile import to the appropriate section here. Please include a link to the site home page, and instructions for how to import your existing hCard user profile to the site.&lt;br /&gt;
&lt;br /&gt;
=== import and subscribe on sign-up ===&lt;br /&gt;
Site(s) that allow you to import ''and'' subscribe to your hCard user profile when signing-up.. Alphabetically sorted.&lt;br /&gt;
* [http://getsatisfaction.com/ Satisfaction Inc.] - go to [http://getsatisfaction.com/people/new their sign in and registration page], choose the service of your existing profile or &amp;quot;'''Other...'''&amp;quot; and enter your profile URL (which you can retrieve as described above), and click &amp;quot;'''Get Profile'''&amp;quot;. Then check &amp;quot;'''[x] Subscribe to this profile'''&amp;quot;. Note: [[hcard-supporting-user-profiles-issues#Satisfaction|issue(s)]].&lt;br /&gt;
&lt;br /&gt;
See [[subscribe-to-hcard]] for more notes on implementing subscribing to a user's hCard to automatically update their profile information.&lt;br /&gt;
&lt;br /&gt;
=== import on sign-up ===&lt;br /&gt;
Site(s) that allow you to import your hCard user profile to sign-up. Alphabetically sorted.&lt;br /&gt;
* [http://www.bragster.com/ bragster] - go to [http://www.bragster.com/signup the sign-up page], click on the service logo of your existing profile, or the microformats logo for 'other' and enter your profile username (or URL for 'other') (which you can retrieve as described above).&lt;br /&gt;
&lt;br /&gt;
=== import anytime ===&lt;br /&gt;
Sites that let you import your external hCard profile information anytime.&lt;br /&gt;
* [http://php-profile-importer.origo.ethz.ch/ PHP Profile importer] - Open Source PHP and JavaScript profile importer, there is also a [http://proofile.org/profile_importer_demo demo available].&lt;br /&gt;
* [http://www.proofile.org proofile] - [http://proofile.org/register Sign up] for an account and view the [http://proofile.org/edit/profile edit profile] page, enabling you to import from any hCard annotated URL. Full hCard is supported.&lt;br /&gt;
* [http://www.dandyid.org DandyID] - import a hCard supporting url after signing up, for auto-filling user info. DandyID also renders detailed hCards on user profiles.&lt;br /&gt;
&lt;br /&gt;
=== subscribe anytime ===&lt;br /&gt;
Sites that let you subscribe to your external hCard profile information anytime.&lt;br /&gt;
* None currently.&lt;br /&gt;
=== delegation ===&lt;br /&gt;
Sites that support fully delegating to your external hCard profile.&lt;br /&gt;
* None currently.&lt;br /&gt;
&lt;br /&gt;
== For more information ==&lt;br /&gt;
Want to implement hCard on your site so you can list it here?  &lt;br /&gt;
&lt;br /&gt;
See the [[hcard-user-profile-authoring|hCard user profile authoring]] page for how to mark-up a user profile with hCard.&lt;br /&gt;
&lt;br /&gt;
Join the [http://microformats.org/discuss microformats community], in particular the #microformats IRC channel on irc://irc.freenode.net#microformats and the [http://microformats.org/mailman/listinfo/microformats-dev/ microformats-dev mailing list], and send a message stating that you'd like to add hCard to the profiles and hCard+XFN supporting friends lists to your website.&lt;br /&gt;
&lt;br /&gt;
Please also consider implementing [[hcard-xfn-supporting-friends-lists|hCard+XFN friends lists]].&lt;br /&gt;
&lt;br /&gt;
See [[hcard-supporting-user-profiles-issues|hCard supporting user profiles issues]] for issues, problems with implementations.&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[subscribe-to-hcard]]&lt;br /&gt;
* [[hcard-xfn-supporting-friends-lists|hCard+XFN friends lists]]&lt;br /&gt;
* [[social-network-portability]]&lt;br /&gt;
* [[user-interface]]&lt;br /&gt;
* [[hcard|hCard]] ([[hcard-authoring|authoring]], [[hcard-faq|FAQ]])&lt;br /&gt;
* [[xfn|XFN]]&lt;br /&gt;
* [[data-portability]]&lt;/div&gt;</summary>
		<author><name>Karstenj</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=value-class-pattern&amp;diff=40380</id>
		<title>value-class-pattern</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=value-class-pattern&amp;diff=40380"/>
		<updated>2009-08-26T15:17:08Z</updated>

		<summary type="html">&lt;p&gt;Karstenj: /* Implementations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;Value Class Pattern&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The value class pattern is derived from [[hCard#Value_excerpting|value-excerpting]] in hCard.&lt;br /&gt;
&lt;br /&gt;
''The editors believe the value-class-pattern to be feature complete and ready for use in markup. Implementers are encouraged to update accordingly and provide [[value-class-pattern-feedback|feedback]]. '''Note''', the precise parsing behavior could change in response to implementer feedback, but the core methods are stable. You should watch this page for updates.''&lt;br /&gt;
&lt;br /&gt;
See also, the [http://microformats.org/blog/2009/05/12/value-class-pattern/ blog announcement].&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
; Editors&lt;br /&gt;
: &amp;lt;span class=&amp;quot;vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;[[User:BenWard|Ben Ward]]&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
: &amp;lt;span class=&amp;quot;vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;[[User:Tantek|Tantek Çelik]]&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
; Short URL&lt;br /&gt;
: &amp;lt;kbd&amp;gt;http://tr.im/valueclass&amp;lt;/kbd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sometimes, only a part of an element's content is to be used as the value of a microformat property. This may occur when a property has optional subproperties, such as &amp;lt;code&amp;gt;tel: type&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;tel: value&amp;lt;/code&amp;gt; in [[hCard]]. Other times, the most appropriate structure for a property may include other content.&lt;br /&gt;
&lt;br /&gt;
For these purposes, the special class name &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is used to mark-up the relevant data excerpt from larger element content.&lt;br /&gt;
&lt;br /&gt;
==Simple Examples==&lt;br /&gt;
&lt;br /&gt;
Here is markup for a home phone number:&lt;br /&gt;
&lt;br /&gt;
vCard fragment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;TEL;TYPE=HOME:+1.415.555.1212&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hCard fragment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;tel&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Home&amp;lt;/span&amp;gt;:&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;+1.415.555.1212&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; of &amp;lt;code&amp;gt;tel&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;+1.415.555.1212&amp;lt;/code&amp;gt;, not &amp;lt;code&amp;gt;Home: +1.415.555.1212&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Sometimes the value for a microformats property must be split into multiple pieces in the content of the element representing that property. Multiple elements with a class name of &amp;quot;value&amp;quot; (value elements) can be used to extract and concatenate these pieces into a single value for microformats properties which expect simple strings or tel values.&lt;br /&gt;
&lt;br /&gt;
Another example, this time using a localized (British) telephone number:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;tel&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Home&amp;lt;/span&amp;gt;:&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;+44&amp;lt;/span&amp;gt; (0) &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;1223 123 123&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the valid ''data'' for the telephone number is &amp;lt;samp&amp;gt;+441223123123&amp;lt;/samp&amp;gt;, but the way in which phone number is presented in Britain will include the &amp;lt;samp&amp;gt;(0)&amp;lt;/samp&amp;gt;, for local dialling. That is, from anywhere in the world you may dial &amp;lt;kbd&amp;gt;+441223123123&amp;lt;/kbd&amp;gt;, or from within Britain you may dial &amp;lt;kbd&amp;gt;01223123123&amp;lt;/kbd&amp;gt;. Common local publishing interferes with the data, since dialling &amp;lt;kbd&amp;gt;'''+440'''1223123123&amp;lt;/kbd&amp;gt; is an invalid number.&lt;br /&gt;
&lt;br /&gt;
In the mark-up, two &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; classes target the part of the telephone number string that makes an international, valid number, whilst allowing conventional presentation.&lt;br /&gt;
&lt;br /&gt;
Another example, adding a place name to a [[geo]] co-ordinate:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;I'm loitering outside The Bricklayer's Arms&lt;br /&gt;
  &amp;lt;span class=&amp;quot;geo&amp;quot;&amp;gt;&lt;br /&gt;
    51° 30' 48.45&amp;quot;, -0° 8' 53.23&amp;quot;&lt;br /&gt;
    (&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;51.513458;-0.14812&amp;lt;/span&amp;gt;)&lt;br /&gt;
  &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Whilst the entire string is a geo point, it's only the decimal encoded co-ordinates which must be consumed by a microformats parser, so the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; class isolates it from the degrees form, which the publisher includes for completeness.&lt;br /&gt;
&lt;br /&gt;
==Basic Parsing==&lt;br /&gt;
# The value class pattern only applies to properties which are simple strings, enumerated values, telephone numbers, and datetimes. The value class pattern does not affect parsing of properties of type email, URL, URI, UID.&lt;br /&gt;
# Where an element with such a microformat property class name has a descendant with class name &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; (a &amp;quot;value&amp;quot; element), parsers should use the following portion of that element:  &lt;br /&gt;
## if the value element is an &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt; element, then use the element's &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; attribute value.&lt;br /&gt;
## if the value element is an &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; element, then use the element's &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute value.&lt;br /&gt;
## for any other element, use its inner-text.&lt;br /&gt;
# Where there are multiple descendants of a property with class name of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; (multiple value elements)&lt;br /&gt;
## if the microformats property expects a simple string, enumerated value, or telephone number, then the values extracted from the value elements should be concatenated ''without'' inserting additional characters or white-space.&lt;br /&gt;
## if the microformats property expects a datetime value, see the [[#Date_and_time_parsing|Date Time Parsing]] section.&lt;br /&gt;
# Descendants with class of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; must not be parsed deeper than one level. That is, where an element &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt; with class &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; has a &amp;lt;em&amp;gt;descendant&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;bar&amp;lt;/code&amp;gt; with class &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;, the content of &amp;lt;strong&amp;gt;&amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt;&amp;lt;/strong&amp;gt; is taken as the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;. Nesting additional elements with class of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; cannot be used to further isolate a property's value.&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
 &amp;lt;p class=&amp;quot;description&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;em class=&amp;quot;value&amp;quot;&amp;gt;Puppies Rule!&amp;lt;/em&amp;gt;&lt;br /&gt;
    &amp;lt;strong&amp;gt;But kittens are better!&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example, &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt; has a child ‘&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;’, and that child has a ''grandchild'' ‘&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;’. However, the parsing of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; classes stops at the first level, so the data for &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt; is: &amp;lt;samp&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;em class=&amp;quot;value&amp;quot;&amp;gt;Puppies Rule!&amp;amp;lt;/em&amp;gt;&amp;amp;lt;strong&amp;gt;But kittens are better!&amp;amp;lt;/strong&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/samp&amp;gt;, not just &amp;lt;samp&amp;gt;Puppies Rule!&amp;lt;/samp&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Date and time values ==&lt;br /&gt;
Some microformats properties expect an ISO8601 datetime value, e.g.  [[hCalendar]] &amp;lt;code&amp;gt;dtstart&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;dtend&amp;lt;/code&amp;gt; or [[hAtom]] &amp;lt;code&amp;gt;published&amp;lt;/code&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Authors may use the value class pattern to separately specify the date and the time, which are then combined to specify a single datetime value.&lt;br /&gt;
&lt;br /&gt;
Example, this hCalendar 'dtstart' property with 'value' elements: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The weekly dinner will be on &lt;br /&gt;
    &amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;abbr class=&amp;quot;value&amp;quot; title=&amp;quot;2008-06-24&amp;quot;&amp;gt;this Tuesday&amp;lt;/abbr&amp;gt; &lt;br /&gt;
     at &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;18:30&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
produces the following 'dtstart' value:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
2008-06-24T18:30:00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and iCalendar converters produce the following DTSTART:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
DTSTART:20080624T183000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The lack of a timezone indicates a &amp;quot;floating&amp;quot; datetime, that is a datetime independent of any particular timezone. Examples of floating datetimes could be an alarm clock you set to ring at 7am, or the common 9am-5pm workday.&lt;br /&gt;
&lt;br /&gt;
=== Date and time parsing ===&lt;br /&gt;
For all date time properties (as defined in their respective microformats specifications), the following rules apply in addition to (and in some cases replacing) the above value class pattern parsing rules.&lt;br /&gt;
&lt;br /&gt;
When a &amp;quot;value&amp;quot; element is found, parse a value from the element as follows:&lt;br /&gt;
* if the element is an &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt; element, then use the element's &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; attribute value.&lt;br /&gt;
* if the element is an &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; element, then use the element's &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute value.&lt;br /&gt;
* for any other element, use its inner-text.&lt;br /&gt;
* if the value has both a specific ISO8601 date and a specific time, use those and stop looking for &amp;quot;value&amp;quot; elements.&lt;br /&gt;
* if the value has *only* a specific date, specifically, fits the following ISO8601 date patterns (i.e. as documented in the [http://en.wikipedia.org/wiki/ISO_8601 Wikipedia summary of ISO8601])&lt;br /&gt;
** YYYY-MM-DD&lt;br /&gt;
** YYYY-DDD&lt;br /&gt;
** then use that as the date value.  For the purposes of the value class pattern, the hyphens &amp;quot;-&amp;quot; separating the year, month, day and/or ordinal day are required.&lt;br /&gt;
** ignore any further &amp;quot;value&amp;quot; elements that specify the date.&lt;br /&gt;
* if the value has *only* a specific time (with or without timezone), parse it for a time value that can match any of the following:&lt;br /&gt;
** HH:MM:SS-XX:YY&lt;br /&gt;
** HH:MM:SS+XX:YY&lt;br /&gt;
** HH:MM:SS-XXYY&lt;br /&gt;
** HH:MM:SS+XXYY&lt;br /&gt;
** HH:MM:SSZ&lt;br /&gt;
** HH:MM:SS&lt;br /&gt;
** HH:MM-XX:YY&lt;br /&gt;
** HH:MM+XX:YY&lt;br /&gt;
** HH:MM-XXYY&lt;br /&gt;
** HH:MM+XXYY&lt;br /&gt;
** HH:MMZ&lt;br /&gt;
** HH:MM&lt;br /&gt;
** HH is the 24 hour &amp;quot;hours&amp;quot; in the time, from 00 to 24, with optional leading 0 for values less than 10.&lt;br /&gt;
** MM are the minutes from 00 to 59&lt;br /&gt;
** SS are the optional seconds from 00 to 59 (60 for a leap second). If omitted, infer 00 seconds.&lt;br /&gt;
** XX is the time zone hours offset, from 00 to 12 with optional leading 0 for values less than 10.&lt;br /&gt;
** YY is the time zone minutes offset, from 00 to 59, though in practice only 00, 15, 30, 45 minute offsets are used in global timezones.&lt;br /&gt;
** Z is the literal 'Z' to indicate GMT.&lt;br /&gt;
** For the purposes of the value class pattern, the colons &amp;quot;:&amp;quot; separating the hour, minutes, seconds are required. &lt;br /&gt;
** However the colons &amp;quot;:&amp;quot; separating the hours and minutes of any timezone offset are ''optional'' and discouraged in order to make it less likely that a timezone offset will be confused for a time.&lt;br /&gt;
** Under strong consideration: case insensitive { }&amp;quot;am&amp;quot;|{ }&amp;quot;a.m.&amp;quot; suffix to treat an HH value of 12 as 00, or a case-insensitive { }&amp;quot;pm&amp;quot;|{ }&amp;quot;p.m.&amp;quot; suffix to add 12 to HH value less than 12 - per [http://en.wikipedia.org/wiki/12-hour_clock Wikipedia article on the 12 hour clock]. Note: [[X2V]] has implemented this.&lt;br /&gt;
*** HH:MM:SSam&lt;br /&gt;
*** HH:MM:SSpm&lt;br /&gt;
*** HH:MMam&lt;br /&gt;
*** HH:MMpm&lt;br /&gt;
*** HHam&lt;br /&gt;
*** HHpm&lt;br /&gt;
*** where &amp;quot;am&amp;quot; and &amp;quot;pm&amp;quot; mean &amp;quot;am or a.m.&amp;quot; and &amp;quot;pm or p.m.&amp;quot; &lt;br /&gt;
*** when MM is omitted, infer 00 minutes.&lt;br /&gt;
** ignore any further &amp;quot;value&amp;quot; elements that specify the time.&lt;br /&gt;
* if the value has *only* a specific timezone, parse it for a time zone value that can match any of the following:&lt;br /&gt;
** -XX:YY&lt;br /&gt;
** +XX:YY&lt;br /&gt;
** -XXYY&lt;br /&gt;
** +XXYY&lt;br /&gt;
** -XX&lt;br /&gt;
** +XX&lt;br /&gt;
** Z&lt;br /&gt;
** XX is the time zone hours offset, from 00 to 12 with optional leading 0 for values less than 10.&lt;br /&gt;
** YY is the time zone minutes offset, from 00 to 59, though in practice only 00, 15, 30, 45 minute offsets are used in global timezones.&lt;br /&gt;
** Z is the literal 'Z' to indicate GMT.&lt;br /&gt;
** ignore any further &amp;quot;value&amp;quot; elements that specify the timezone.&lt;br /&gt;
&lt;br /&gt;
If by parsing the &amp;quot;value&amp;quot; element(s), at least a specific date has been found, then the &amp;quot;value&amp;quot; is overall valid, and the parser assembles the overall datetime value by concatenating the specific date, &amp;quot;T&amp;quot; and specific time (if time was specified, with 00 seconds implied if no seconds are provided), and specific timezone (if timezone and a specific time was specified).&lt;br /&gt;
* YYYY-MM-DD - no time specified&lt;br /&gt;
* YYYY-MM-DDTHH:MM:SS - time specified but no timezone.  This is a floating time.&lt;br /&gt;
* YYYY-MM-DDTHH:MM:SS-XXYY or&lt;br /&gt;
* YYYY-MM-DDTHH:MM:SSZ or&lt;br /&gt;
* YYYY-MM-DDTHH:MM:SS+XXYY - both time and timezone were specified.&lt;br /&gt;
&lt;br /&gt;
iCalendar converters in addition must do the following:&lt;br /&gt;
* remove any dash &amp;quot;-&amp;quot; separators in the date.&lt;br /&gt;
* remove any colon &amp;quot;:&amp;quot; separators in the time.&lt;br /&gt;
* perform datetime math on any +/- relative timezone value, and produce an effective UTC value ending with &amp;quot;Z&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Atom converters in addition must do the following:&lt;br /&gt;
* normalize all date and datetime values to RFC 3339.&lt;br /&gt;
&lt;br /&gt;
=== derivation and tests ===&lt;br /&gt;
The handling of date and time values in the value class pattern was originally [[value-excerption-pattern-brainstorming#date_and_time_separation|brainstormed on the value-excerption-pattern-brainstorming]] page and derived from that analysis and feedback. For the curious, historical details may be found there, along with additional thoughts for extension.&lt;br /&gt;
&lt;br /&gt;
See [[value-class-date-time-tests]] for test cases.&lt;br /&gt;
&lt;br /&gt;
=== format specific optimizations ===&lt;br /&gt;
The following are format specific optimizations under strong consideration that make use of the value-class-pattern. Note: [[X2V]] has implemented this for hCalendar.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;span style=&amp;quot;font-size:smaller&amp;quot;&amp;gt;short URL for this section&amp;lt;/span&amp;gt;&lt;br /&gt;
:http://tr.im/vcpfso&lt;br /&gt;
&lt;br /&gt;
==== hCalendar dtend implied date ====&lt;br /&gt;
Typically events that start and end the same day only display the date of the event once (makes sense per the DRY [[principle]]) (real world examples: [http://upcoming.yahoo.com/event/3010807/ Upcoming], ... more examples with URLs would help for thoroughness).  &lt;br /&gt;
&lt;br /&gt;
Thus it would be convenient if we could imply an [[hCalendar]] event &amp;quot;dtend&amp;quot; date from its &amp;quot;dtstart&amp;quot; date when only the time (and optionally timezone) was specified for its &amp;quot;dtend&amp;quot;, e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;vevent&amp;quot;&amp;gt;&lt;br /&gt;
 The &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;party&amp;lt;/span&amp;gt; will be on &lt;br /&gt;
 &amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;2009-06-26&amp;lt;/span&amp;gt;, from&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;19:00&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; to &lt;br /&gt;
 &amp;lt;span class=&amp;quot;dtend&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;22:00&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To simplify this further for authors, hCalendar processors could treat the specifying of just the time per the value-class-pattern date and time value rules, and thus eliminate the need for the &amp;quot;value&amp;quot; span inside the &amp;quot;dtend&amp;quot; span:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;vevent&amp;quot;&amp;gt;&lt;br /&gt;
 The &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;party&amp;lt;/span&amp;gt; will be on &lt;br /&gt;
 &amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;2009-06-26&amp;lt;/span&amp;gt;, from&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;19:00&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; to &lt;br /&gt;
 &amp;lt;span class=&amp;quot;dtend&amp;quot;&amp;gt;22:00&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hCalendar to iCalendar converters should produce the following iCalendar fragment (as part of a valid .ics file) from either of the above two examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
BEGIN:VEVENT&lt;br /&gt;
SUMMARY:party&lt;br /&gt;
DTSTART:20090626T190000&lt;br /&gt;
DTEND:20090626T220000&lt;br /&gt;
END:VEVENT&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: [[X2V]] has implemented this.&lt;br /&gt;
&lt;br /&gt;
Examples &amp;quot;in the wild&amp;quot;:&lt;br /&gt;
* http://microformats.org/wiki/events/2009-08-12-nyc-workshop (real world example, but on this wiki).&lt;br /&gt;
&lt;br /&gt;
==== hAtom updated implied date ====&lt;br /&gt;
Similarly, in blog posts that indicate both when they were &amp;quot;published&amp;quot; and &amp;quot;updated&amp;quot;, the date is usually only displayed once, typically when &amp;quot;published&amp;quot; (real world examples with URLs would help for thoroughness).&lt;br /&gt;
&lt;br /&gt;
Thus it would be convenient if we could imply an [[hAtom]] entry &amp;quot;updated&amp;quot; date from its &amp;quot;published&amp;quot; date when only the time (and optionally timezone) was specified for its &amp;quot;updated&amp;quot;, e.g. for a blog post that was updated the same day:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;entry-summary&amp;quot;&amp;gt;short blog post example&amp;lt;/span&amp;gt;&lt;br /&gt;
 was published on &amp;lt;span class=&amp;quot;published&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;2009-08-01&amp;lt;/span&amp;gt; at &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;12:06&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 and updated at &amp;lt;span class=&amp;quot;updated&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;12:10&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To simplify this further for authors, hAtom processors could treat the specifying of just the time per the value-class-pattern date and time value rules, and thus eliminate the need for the &amp;quot;value&amp;quot; span inside the &amp;quot;updated&amp;quot; span:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;entry-summary&amp;quot;&amp;gt;short blog post example&amp;lt;/span&amp;gt;&lt;br /&gt;
 was published on &amp;lt;span class=&amp;quot;published&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;2009-08-01&amp;lt;/span&amp;gt; at &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;12:06&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 and updated at &amp;lt;span class=&amp;quot;updated&amp;quot;&amp;gt;12:10&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Parsing value from a &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute==&lt;br /&gt;
The &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; class name allows the publisher to indicate the data value for a parent property is contained in the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute of an element, rather than the inner-text.&lt;br /&gt;
&lt;br /&gt;
This can be used to provide a synonym within content, or used to quietly publish alternate forms of information for microformats parsing, without affecting the consumption of content.&lt;br /&gt;
&lt;br /&gt;
For example, you can use casual localization with dates:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;It was &lt;br /&gt;
 &amp;lt;span class='dtstart'&amp;gt;&lt;br /&gt;
  &amp;lt;span class='value-title' title='2008'&amp;gt;last year&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/span&amp;gt;&lt;br /&gt;
  that I realised my addiction to cashew nuts would cost this country so dear.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parsing rules for &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; are the same as for &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; above, with the following change:&lt;br /&gt;
&lt;br /&gt;
* Where a microformats property has a child element with class name of &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt;, the content of the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute of that element must be parsed, rather than the portion of the element that would be parsed for a class name of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Using &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; to publish machine-data===&lt;br /&gt;
&lt;br /&gt;
The initial usage of &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; is used to publish alternate, parsable forms of property values in a visible context without the use of the &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; element whose semantics already support interpretation of the 'title' attribute as an expanded, more precise form of the content. &lt;br /&gt;
&lt;br /&gt;
Experience has found that there are some cases in microformats where a number of publishers want to include a precisely accurate and parsable value for a property but do not want it to be visible in their page, even as a tooltip.&lt;br /&gt;
&lt;br /&gt;
For example, full [[ISO8601]] datetimes may be confusing to readers of the page (as a tooltip or when read aloud by a screen reader), and enumerated values such as the &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; subproperty of hCard's &amp;lt;code&amp;gt;tel&amp;lt;/code&amp;gt; property use US-English terms, which are not part of pages in any other language.&lt;br /&gt;
&lt;br /&gt;
Since both of those scenarios have shown to be obstacles for a number of publishers, for these cases, and these alone, there exists a further extension of value-excerption. This extension allows the parsable form of the property to be published ‘silently’ immediately adjacent with the respective local visible content.&lt;br /&gt;
&lt;br /&gt;
Here is an example, with the required use of a first child element with class name &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p class='tel' lang='en-gb'&amp;gt;&lt;br /&gt;
  &amp;lt;span class='type'&amp;gt;&lt;br /&gt;
    &amp;lt;span class='value-title' title='cell'&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
      mobile&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;span class='value'&amp;gt;+44 7773 000 000&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;samp&amp;gt;cell&amp;lt;/samp&amp;gt; value is parsed for the 'type' subproperty, but &amp;lt;samp&amp;gt;mobile&amp;lt;/samp&amp;gt; is presented to the user.&lt;br /&gt;
&lt;br /&gt;
In the case of dates:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p class='dtstart'&amp;gt;&lt;br /&gt;
  &amp;lt;span class='value-title' title='2009-03-14T16:28-0600'&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
  March 14th 2009, around half-past four&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
A microformats parser will read the ISO8601 format datetime &amp;lt;samp&amp;gt;2009-03-14T16:28-0600&amp;lt;/samp&amp;gt;, but users will only see &amp;lt;samp&amp;gt;March 14th 2009, around half-past four&amp;lt;/samp&amp;gt;. Testing has shown that the ISO8601 datetime above does not get exposed to any user at all.&lt;br /&gt;
&lt;br /&gt;
===Parsing machine-data &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Browsers collapse the &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; span down to a width of &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, effectively providing no visual rendering, whilst keeping the element in the DOM. With no physical dimensions, there is no ‘hover’ state, so no tooltip is revealed. Furthermore, the empty element is not passed to assistive technology layers such as VoiceOver.  Screen readers do not read the contents of the title attribute of an empty &amp;lt;code&amp;gt;span&amp;lt;/code&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
We conducted [[value-excerption-value-title-test|thorough testing]] of these parsing behaviors to ensure accessibility.&lt;br /&gt;
&lt;br /&gt;
''Note: Whilst the &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; element is more gracefully written without whitespace inner-text (or as self-closing &amp;lt;code&amp;gt;&amp;amp;lt;foo /&amp;gt;&amp;lt;/code&amp;gt; element in XHTML), current tools such as WYSIWYG editors and HTML-Tidy will erroneously discard such elements, resulting in parsable data being thrown away by some tools. As such, &amp;lt;code&amp;gt;&amp;amp;lt;span class='value-title'&amp;gt; &amp;amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;, including a single whitespace character between the opening and closing tag, is the required pattern for authors, at this time.''&lt;br /&gt;
&lt;br /&gt;
Parsing this final &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; extension imposes some stricter restrictions on usage. These restrictions exist to reduce the impact of &amp;lt;abbr title=&amp;quot;Don't Repeat Yourself&amp;quot;&amp;gt;DRY&amp;lt;/abbr&amp;gt; violations, reduce the opportunity for sites to spoof data, and encourage best practice for maintaining both forms of data accurately.&lt;br /&gt;
&lt;br /&gt;
Where an element with class &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; is to be parsed as data for a property, and that element also contains no non-whitespace content (hereafter referred to as ‘empty’), the following rules apply:&lt;br /&gt;
&lt;br /&gt;
* The ‘empty’ value-title element must be the '''first, non-whitespace child''' of the property element. That is, it should follow immediately after the property is declared, before the human-readable form, and without any additional nesting.&lt;br /&gt;
* The ‘empty’ value-title element can only be used for specific properties. Microformat specifications must explicitly state which properties may be used with this extension of the value-class-pattern.&lt;br /&gt;
* Where an ‘empty’ value-title element is to be used as the single property value, it must be the ''only'' such &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; content. That is, the first instance of a conforming &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; element overrides all other &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; siblings and/or cousins.&lt;br /&gt;
* Tools written to perform Conformance Testing and/or Validation of microformats ''should'' attempt to compare the machine-data and human legible forms of the property data, and advise authors if the forms do not match.&lt;br /&gt;
&lt;br /&gt;
=== limited use of value-title ===&lt;br /&gt;
Due to the fact that the value-title pattern hides some amount of data which tends to be a machine-specific duplicate of data that is provided in the human readable content, there are two microformats [[principles]] being compromised: '''visibility''' and '''&amp;lt;abbr title=&amp;quot;Don't Repeat Yourself&amp;quot;&amp;gt;DRY&amp;lt;/abbr&amp;gt;'''. Thus the applicability of this pattern is deliberately restricted to properties that have demonstrated through experience a need for it, with no known better alternative.&lt;br /&gt;
&lt;br /&gt;
In general authors should:&lt;br /&gt;
&lt;br /&gt;
# First, try to directly specify microformats property values inline (the most visible, no duplication),&lt;br /&gt;
# Then consider using the value-class pattern&lt;br /&gt;
## Including multiple value elements for date and time properties&lt;br /&gt;
# and then only if those methods are insufficient, consider the value-title pattern.&lt;br /&gt;
&lt;br /&gt;
This document post-dates other microformat specifications, such that they may not yet indicate which properties permit use of this pattern. In the interim, '''only''' the following types of properties should allow the value-title pattern.&lt;br /&gt;
&lt;br /&gt;
* ISO8601 date, datetime, timezone, and duration values&lt;br /&gt;
* Enumerated values (such as the hCard tel/email/adr 'type' subproperties)&lt;br /&gt;
* Co-ordinates (such as the [[geo]] 'latitude' and 'longitude' properties)&lt;br /&gt;
* Telephone number properties (e.g. the hCard 'tel' property)&lt;br /&gt;
&lt;br /&gt;
The [[machine-data]] page has documentation of some of the properties of some specs which experience has shown need a solution like the value-title pattern.&lt;br /&gt;
&lt;br /&gt;
There are some simple reference examples and tests for this pattern on [[value-class-pattern-tests]].&lt;br /&gt;
&lt;br /&gt;
In future use, ''specification authors'' may inherit use of &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; by use of ISO8601 date and time formats, or reuse of other microformats, but specifications should _avoid_ introducing new data structures that depend on or encourage this pattern. New specifications are themselves expected to adhere to the principals of visibile data and &amp;lt;abbr&amp;gt;DRY&amp;lt;/abbr&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
See [[value-class-pattern-tests]].&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;abbr title='Frequently Asked Questions'&amp;gt;FAQ&amp;lt;/abbr&amp;gt;==&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
&lt;br /&gt;
Frequently asked questions about the value-class-pattern. Once this section grows too big, we'll make a separate wiki page (like [[value-class-faq]]).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class='discussion'&amp;gt;&lt;br /&gt;
* '''Why use an 'empty' element? Why not embed data in the class attribute?'''&lt;br /&gt;
** The class attribute is inappropriate for embedded data values, as per the HTML4 specification, which states &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; is for ‘general purposing processing’, which is defined as ‘e.g. for identifying fields when extracting data from HTML pages into a database, translating HTML documents into other formats, etc.’. ‘General purpose processing’ does not extend to data itself. Furthermore, this method avoids inventing a new string pattern for embedding data.&lt;br /&gt;
* '''Why use an 'empty' element? Why not make up a new attribute, like ‘data’?'''&lt;br /&gt;
** Microformats exist and function in ''valid'' HTML4 and XHTML1. Those are the current standards for web development, and microformats exist for use ''now''. In the future, perhaps revisions of HTML will offer up another solution. For now, this method has been tested against browsers, and creates a consistent document structure (where machine-form and human-form data are siblings).&lt;br /&gt;
* '''The &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute should only be used for content!'''&lt;br /&gt;
** The &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute ''is'' used for content and is read by microformats parsers. This exists for cases where data cannot be parsed with sufficient precision from just the commonly published, visible information. This pattern allows both forms of content to be included, whilst keeping it invisible to human consumers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also refer to the general [[faq|Microformats FAQ]] and [[principles]].&lt;br /&gt;
&lt;br /&gt;
== Examples in the wild ==&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
&lt;br /&gt;
The following sites and pages have started marking up content with the value-class-pattern, and are thus good places to go for examples with real world content to test with implementations (i.e. parsers). If you use the value-class-pattern in your content, feel free to add it to the '''top''' of this list. Once the list grows too big, we'll make a separate wiki page (like [[value-class-examples-in-wild]]).&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
    add new items to the TOP of this list&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* [http://visitmix.com/labs/oomph/2.0/tests/test.html Test Harness For Oomph] This pages uses a whole range of different patterns for both hCard and hCalendar, using both value and value-title, mostly derived from the specification above&lt;br /&gt;
* [http://georgebrock.com/ George Brocklehurst's activity stream] and [http://blog.georgebrock.com/ blog] use &amp;quot;value-title&amp;quot; for hAtom &amp;lt;code&amp;gt;published&amp;lt;/code&amp;gt; property&lt;br /&gt;
* [http://ben-ward.co.uk/ Ben Ward's home page] uses:&lt;br /&gt;
** &amp;quot;value-title&amp;quot; for hCard &amp;lt;code&amp;gt;bday&amp;lt;/code&amp;gt; property&lt;br /&gt;
** &amp;quot;value-title&amp;quot; for hAtom &amp;lt;code&amp;gt;updated&amp;lt;/code&amp;gt; property&lt;br /&gt;
* [http://microformats.org/ microformats.org] uses:&lt;br /&gt;
** &amp;quot;value-title&amp;quot; for hAtom &amp;lt;code&amp;gt;updated&amp;lt;/code&amp;gt; property in [[http://microformats.org/ microformats.org blog postss]]]&lt;br /&gt;
** date and time value separation for hCalendar &amp;lt;code&amp;gt;dtstart&amp;lt;/code&amp;gt; property in [[events|microformats.org recent and upcoming events wiki page]]&lt;br /&gt;
&lt;br /&gt;
''Add your site/page(s) that use the value-class-pattern here, along with a brief description of what value-class-pattern features you use, with which microformat(s) and which of its/their properties.''&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
&lt;br /&gt;
The following implementations have been developed which either generate or parse value-class-pattern property values. If you have an value-class-pattern implementation, feel free to add it to the '''top''' of this list. Once the list grows too big, we'll make a separate wiki page (like [[value-class-implementations]]).&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
    add new items to the TOP of this list&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* [[Oomph]] Version 2 passes [[value-class-pattern-tests#Date_and_time_values|Date and time values test cases]] and is a thorough implementation of the value class pattern.&lt;br /&gt;
* [[X2V]] v0.9.3 and later:&lt;br /&gt;
** implements [[#Date_and_time_values|Date and time values parsing]], including am/pm time values&lt;br /&gt;
*** thus passes [[value-class-pattern-tests#Date_and_time_values|Date and time values test cases]].&lt;br /&gt;
** implements [[#hCalendar_dtend_implied_date|hCalendar implied dtend date]]&lt;br /&gt;
* [[Operator]] has *some* implementation of the value-class-pattern according to Michael Kaply, but precisely how much is implemented, for which properties (property types) and which microformats is not currently known.&lt;br /&gt;
* [[Optimus]] v0.8 and later implements &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; as [http://twitter.com/DmitryBaranovsk/status/1891253248 announced by Dmitry Baranovskiy].&lt;br /&gt;
* ... add your implementation(s) that parse or generate the value-class-pattern here, along with which features you support (hopefully all!) and note any limitations if any.&lt;br /&gt;
&lt;br /&gt;
== Articles ==&lt;br /&gt;
Articles and &amp;lt;span id=&amp;quot;Blog_Posts&amp;quot;&amp;gt;blog posts&amp;lt;/span&amp;gt;  discussing the value class pattern, most recent first.&lt;br /&gt;
When this section gets too big, create a separate page like: [[value-class-pattern-articles]]&lt;br /&gt;
* &amp;lt;span class=&amp;quot;hentry&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;published&amp;quot;&amp;gt;2009-08-25&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;entry-summary&amp;quot;&amp;gt;MIX Online: &amp;lt;span class=&amp;quot;entry-title&amp;quot;&amp;gt;[http://visitmix.com/Articles/The-Value-Class-Pattern The Value Class Pattern]&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; by &amp;lt;span class=&amp;quot;author vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Jeremy Keith&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* [http://ablognotlimited.com/s/106 Getting Semantic With Microformats, Part 8: Value Class Pattern] -- A very thorough writeup by Emily Lewis on the value class pattern&lt;br /&gt;
* [http://adactio.com/journal/1579/ 2009-05-17 Adactio: Microformation]&lt;br /&gt;
* [http://forabeautifulweb.com/blog/about/value_class_pattern/ For A Beautiful Web: Value Class Pattern]&lt;br /&gt;
* [http://microformats.org/blog/2009/05/12/value-class-pattern/ 2009-05-12 microformats.org: Value Class Pattern]&lt;br /&gt;
&lt;br /&gt;
==Related Pages==&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
&lt;br /&gt;
* [[value-class-pattern-tests]]&lt;br /&gt;
* [[value-excerption-pattern-issues]]&lt;br /&gt;
* [[hcard#Value_excerpting|hCard: Value Excepting]]&lt;br /&gt;
* [[value-excerption-pattern-brainstorming]]&lt;br /&gt;
* [[machine-data|Machine Data in Microformats]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
* [http://www.useit.com/alertbox/9608.html Jakob Nielsen: International Web Usability]&lt;/div&gt;</summary>
		<author><name>Karstenj</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=value-class-pattern&amp;diff=40379</id>
		<title>value-class-pattern</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=value-class-pattern&amp;diff=40379"/>
		<updated>2009-08-26T15:15:24Z</updated>

		<summary type="html">&lt;p&gt;Karstenj: /* Examples in the wild */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;Value Class Pattern&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The value class pattern is derived from [[hCard#Value_excerpting|value-excerpting]] in hCard.&lt;br /&gt;
&lt;br /&gt;
''The editors believe the value-class-pattern to be feature complete and ready for use in markup. Implementers are encouraged to update accordingly and provide [[value-class-pattern-feedback|feedback]]. '''Note''', the precise parsing behavior could change in response to implementer feedback, but the core methods are stable. You should watch this page for updates.''&lt;br /&gt;
&lt;br /&gt;
See also, the [http://microformats.org/blog/2009/05/12/value-class-pattern/ blog announcement].&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
; Editors&lt;br /&gt;
: &amp;lt;span class=&amp;quot;vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;[[User:BenWard|Ben Ward]]&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
: &amp;lt;span class=&amp;quot;vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;[[User:Tantek|Tantek Çelik]]&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
; Short URL&lt;br /&gt;
: &amp;lt;kbd&amp;gt;http://tr.im/valueclass&amp;lt;/kbd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sometimes, only a part of an element's content is to be used as the value of a microformat property. This may occur when a property has optional subproperties, such as &amp;lt;code&amp;gt;tel: type&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;tel: value&amp;lt;/code&amp;gt; in [[hCard]]. Other times, the most appropriate structure for a property may include other content.&lt;br /&gt;
&lt;br /&gt;
For these purposes, the special class name &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is used to mark-up the relevant data excerpt from larger element content.&lt;br /&gt;
&lt;br /&gt;
==Simple Examples==&lt;br /&gt;
&lt;br /&gt;
Here is markup for a home phone number:&lt;br /&gt;
&lt;br /&gt;
vCard fragment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;TEL;TYPE=HOME:+1.415.555.1212&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hCard fragment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;tel&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Home&amp;lt;/span&amp;gt;:&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;+1.415.555.1212&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; of &amp;lt;code&amp;gt;tel&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;+1.415.555.1212&amp;lt;/code&amp;gt;, not &amp;lt;code&amp;gt;Home: +1.415.555.1212&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Sometimes the value for a microformats property must be split into multiple pieces in the content of the element representing that property. Multiple elements with a class name of &amp;quot;value&amp;quot; (value elements) can be used to extract and concatenate these pieces into a single value for microformats properties which expect simple strings or tel values.&lt;br /&gt;
&lt;br /&gt;
Another example, this time using a localized (British) telephone number:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;tel&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Home&amp;lt;/span&amp;gt;:&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;+44&amp;lt;/span&amp;gt; (0) &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;1223 123 123&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the valid ''data'' for the telephone number is &amp;lt;samp&amp;gt;+441223123123&amp;lt;/samp&amp;gt;, but the way in which phone number is presented in Britain will include the &amp;lt;samp&amp;gt;(0)&amp;lt;/samp&amp;gt;, for local dialling. That is, from anywhere in the world you may dial &amp;lt;kbd&amp;gt;+441223123123&amp;lt;/kbd&amp;gt;, or from within Britain you may dial &amp;lt;kbd&amp;gt;01223123123&amp;lt;/kbd&amp;gt;. Common local publishing interferes with the data, since dialling &amp;lt;kbd&amp;gt;'''+440'''1223123123&amp;lt;/kbd&amp;gt; is an invalid number.&lt;br /&gt;
&lt;br /&gt;
In the mark-up, two &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; classes target the part of the telephone number string that makes an international, valid number, whilst allowing conventional presentation.&lt;br /&gt;
&lt;br /&gt;
Another example, adding a place name to a [[geo]] co-ordinate:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;I'm loitering outside The Bricklayer's Arms&lt;br /&gt;
  &amp;lt;span class=&amp;quot;geo&amp;quot;&amp;gt;&lt;br /&gt;
    51° 30' 48.45&amp;quot;, -0° 8' 53.23&amp;quot;&lt;br /&gt;
    (&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;51.513458;-0.14812&amp;lt;/span&amp;gt;)&lt;br /&gt;
  &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Whilst the entire string is a geo point, it's only the decimal encoded co-ordinates which must be consumed by a microformats parser, so the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; class isolates it from the degrees form, which the publisher includes for completeness.&lt;br /&gt;
&lt;br /&gt;
==Basic Parsing==&lt;br /&gt;
# The value class pattern only applies to properties which are simple strings, enumerated values, telephone numbers, and datetimes. The value class pattern does not affect parsing of properties of type email, URL, URI, UID.&lt;br /&gt;
# Where an element with such a microformat property class name has a descendant with class name &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; (a &amp;quot;value&amp;quot; element), parsers should use the following portion of that element:  &lt;br /&gt;
## if the value element is an &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt; element, then use the element's &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; attribute value.&lt;br /&gt;
## if the value element is an &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; element, then use the element's &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute value.&lt;br /&gt;
## for any other element, use its inner-text.&lt;br /&gt;
# Where there are multiple descendants of a property with class name of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; (multiple value elements)&lt;br /&gt;
## if the microformats property expects a simple string, enumerated value, or telephone number, then the values extracted from the value elements should be concatenated ''without'' inserting additional characters or white-space.&lt;br /&gt;
## if the microformats property expects a datetime value, see the [[#Date_and_time_parsing|Date Time Parsing]] section.&lt;br /&gt;
# Descendants with class of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; must not be parsed deeper than one level. That is, where an element &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt; with class &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; has a &amp;lt;em&amp;gt;descendant&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;bar&amp;lt;/code&amp;gt; with class &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;, the content of &amp;lt;strong&amp;gt;&amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt;&amp;lt;/strong&amp;gt; is taken as the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;. Nesting additional elements with class of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; cannot be used to further isolate a property's value.&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
 &amp;lt;p class=&amp;quot;description&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;em class=&amp;quot;value&amp;quot;&amp;gt;Puppies Rule!&amp;lt;/em&amp;gt;&lt;br /&gt;
    &amp;lt;strong&amp;gt;But kittens are better!&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example, &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt; has a child ‘&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;’, and that child has a ''grandchild'' ‘&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;’. However, the parsing of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; classes stops at the first level, so the data for &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt; is: &amp;lt;samp&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;em class=&amp;quot;value&amp;quot;&amp;gt;Puppies Rule!&amp;amp;lt;/em&amp;gt;&amp;amp;lt;strong&amp;gt;But kittens are better!&amp;amp;lt;/strong&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/samp&amp;gt;, not just &amp;lt;samp&amp;gt;Puppies Rule!&amp;lt;/samp&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Date and time values ==&lt;br /&gt;
Some microformats properties expect an ISO8601 datetime value, e.g.  [[hCalendar]] &amp;lt;code&amp;gt;dtstart&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;dtend&amp;lt;/code&amp;gt; or [[hAtom]] &amp;lt;code&amp;gt;published&amp;lt;/code&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Authors may use the value class pattern to separately specify the date and the time, which are then combined to specify a single datetime value.&lt;br /&gt;
&lt;br /&gt;
Example, this hCalendar 'dtstart' property with 'value' elements: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The weekly dinner will be on &lt;br /&gt;
    &amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;abbr class=&amp;quot;value&amp;quot; title=&amp;quot;2008-06-24&amp;quot;&amp;gt;this Tuesday&amp;lt;/abbr&amp;gt; &lt;br /&gt;
     at &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;18:30&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
produces the following 'dtstart' value:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
2008-06-24T18:30:00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and iCalendar converters produce the following DTSTART:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
DTSTART:20080624T183000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The lack of a timezone indicates a &amp;quot;floating&amp;quot; datetime, that is a datetime independent of any particular timezone. Examples of floating datetimes could be an alarm clock you set to ring at 7am, or the common 9am-5pm workday.&lt;br /&gt;
&lt;br /&gt;
=== Date and time parsing ===&lt;br /&gt;
For all date time properties (as defined in their respective microformats specifications), the following rules apply in addition to (and in some cases replacing) the above value class pattern parsing rules.&lt;br /&gt;
&lt;br /&gt;
When a &amp;quot;value&amp;quot; element is found, parse a value from the element as follows:&lt;br /&gt;
* if the element is an &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt; element, then use the element's &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; attribute value.&lt;br /&gt;
* if the element is an &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; element, then use the element's &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute value.&lt;br /&gt;
* for any other element, use its inner-text.&lt;br /&gt;
* if the value has both a specific ISO8601 date and a specific time, use those and stop looking for &amp;quot;value&amp;quot; elements.&lt;br /&gt;
* if the value has *only* a specific date, specifically, fits the following ISO8601 date patterns (i.e. as documented in the [http://en.wikipedia.org/wiki/ISO_8601 Wikipedia summary of ISO8601])&lt;br /&gt;
** YYYY-MM-DD&lt;br /&gt;
** YYYY-DDD&lt;br /&gt;
** then use that as the date value.  For the purposes of the value class pattern, the hyphens &amp;quot;-&amp;quot; separating the year, month, day and/or ordinal day are required.&lt;br /&gt;
** ignore any further &amp;quot;value&amp;quot; elements that specify the date.&lt;br /&gt;
* if the value has *only* a specific time (with or without timezone), parse it for a time value that can match any of the following:&lt;br /&gt;
** HH:MM:SS-XX:YY&lt;br /&gt;
** HH:MM:SS+XX:YY&lt;br /&gt;
** HH:MM:SS-XXYY&lt;br /&gt;
** HH:MM:SS+XXYY&lt;br /&gt;
** HH:MM:SSZ&lt;br /&gt;
** HH:MM:SS&lt;br /&gt;
** HH:MM-XX:YY&lt;br /&gt;
** HH:MM+XX:YY&lt;br /&gt;
** HH:MM-XXYY&lt;br /&gt;
** HH:MM+XXYY&lt;br /&gt;
** HH:MMZ&lt;br /&gt;
** HH:MM&lt;br /&gt;
** HH is the 24 hour &amp;quot;hours&amp;quot; in the time, from 00 to 24, with optional leading 0 for values less than 10.&lt;br /&gt;
** MM are the minutes from 00 to 59&lt;br /&gt;
** SS are the optional seconds from 00 to 59 (60 for a leap second). If omitted, infer 00 seconds.&lt;br /&gt;
** XX is the time zone hours offset, from 00 to 12 with optional leading 0 for values less than 10.&lt;br /&gt;
** YY is the time zone minutes offset, from 00 to 59, though in practice only 00, 15, 30, 45 minute offsets are used in global timezones.&lt;br /&gt;
** Z is the literal 'Z' to indicate GMT.&lt;br /&gt;
** For the purposes of the value class pattern, the colons &amp;quot;:&amp;quot; separating the hour, minutes, seconds are required. &lt;br /&gt;
** However the colons &amp;quot;:&amp;quot; separating the hours and minutes of any timezone offset are ''optional'' and discouraged in order to make it less likely that a timezone offset will be confused for a time.&lt;br /&gt;
** Under strong consideration: case insensitive { }&amp;quot;am&amp;quot;|{ }&amp;quot;a.m.&amp;quot; suffix to treat an HH value of 12 as 00, or a case-insensitive { }&amp;quot;pm&amp;quot;|{ }&amp;quot;p.m.&amp;quot; suffix to add 12 to HH value less than 12 - per [http://en.wikipedia.org/wiki/12-hour_clock Wikipedia article on the 12 hour clock]. Note: [[X2V]] has implemented this.&lt;br /&gt;
*** HH:MM:SSam&lt;br /&gt;
*** HH:MM:SSpm&lt;br /&gt;
*** HH:MMam&lt;br /&gt;
*** HH:MMpm&lt;br /&gt;
*** HHam&lt;br /&gt;
*** HHpm&lt;br /&gt;
*** where &amp;quot;am&amp;quot; and &amp;quot;pm&amp;quot; mean &amp;quot;am or a.m.&amp;quot; and &amp;quot;pm or p.m.&amp;quot; &lt;br /&gt;
*** when MM is omitted, infer 00 minutes.&lt;br /&gt;
** ignore any further &amp;quot;value&amp;quot; elements that specify the time.&lt;br /&gt;
* if the value has *only* a specific timezone, parse it for a time zone value that can match any of the following:&lt;br /&gt;
** -XX:YY&lt;br /&gt;
** +XX:YY&lt;br /&gt;
** -XXYY&lt;br /&gt;
** +XXYY&lt;br /&gt;
** -XX&lt;br /&gt;
** +XX&lt;br /&gt;
** Z&lt;br /&gt;
** XX is the time zone hours offset, from 00 to 12 with optional leading 0 for values less than 10.&lt;br /&gt;
** YY is the time zone minutes offset, from 00 to 59, though in practice only 00, 15, 30, 45 minute offsets are used in global timezones.&lt;br /&gt;
** Z is the literal 'Z' to indicate GMT.&lt;br /&gt;
** ignore any further &amp;quot;value&amp;quot; elements that specify the timezone.&lt;br /&gt;
&lt;br /&gt;
If by parsing the &amp;quot;value&amp;quot; element(s), at least a specific date has been found, then the &amp;quot;value&amp;quot; is overall valid, and the parser assembles the overall datetime value by concatenating the specific date, &amp;quot;T&amp;quot; and specific time (if time was specified, with 00 seconds implied if no seconds are provided), and specific timezone (if timezone and a specific time was specified).&lt;br /&gt;
* YYYY-MM-DD - no time specified&lt;br /&gt;
* YYYY-MM-DDTHH:MM:SS - time specified but no timezone.  This is a floating time.&lt;br /&gt;
* YYYY-MM-DDTHH:MM:SS-XXYY or&lt;br /&gt;
* YYYY-MM-DDTHH:MM:SSZ or&lt;br /&gt;
* YYYY-MM-DDTHH:MM:SS+XXYY - both time and timezone were specified.&lt;br /&gt;
&lt;br /&gt;
iCalendar converters in addition must do the following:&lt;br /&gt;
* remove any dash &amp;quot;-&amp;quot; separators in the date.&lt;br /&gt;
* remove any colon &amp;quot;:&amp;quot; separators in the time.&lt;br /&gt;
* perform datetime math on any +/- relative timezone value, and produce an effective UTC value ending with &amp;quot;Z&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Atom converters in addition must do the following:&lt;br /&gt;
* normalize all date and datetime values to RFC 3339.&lt;br /&gt;
&lt;br /&gt;
=== derivation and tests ===&lt;br /&gt;
The handling of date and time values in the value class pattern was originally [[value-excerption-pattern-brainstorming#date_and_time_separation|brainstormed on the value-excerption-pattern-brainstorming]] page and derived from that analysis and feedback. For the curious, historical details may be found there, along with additional thoughts for extension.&lt;br /&gt;
&lt;br /&gt;
See [[value-class-date-time-tests]] for test cases.&lt;br /&gt;
&lt;br /&gt;
=== format specific optimizations ===&lt;br /&gt;
The following are format specific optimizations under strong consideration that make use of the value-class-pattern. Note: [[X2V]] has implemented this for hCalendar.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;span style=&amp;quot;font-size:smaller&amp;quot;&amp;gt;short URL for this section&amp;lt;/span&amp;gt;&lt;br /&gt;
:http://tr.im/vcpfso&lt;br /&gt;
&lt;br /&gt;
==== hCalendar dtend implied date ====&lt;br /&gt;
Typically events that start and end the same day only display the date of the event once (makes sense per the DRY [[principle]]) (real world examples: [http://upcoming.yahoo.com/event/3010807/ Upcoming], ... more examples with URLs would help for thoroughness).  &lt;br /&gt;
&lt;br /&gt;
Thus it would be convenient if we could imply an [[hCalendar]] event &amp;quot;dtend&amp;quot; date from its &amp;quot;dtstart&amp;quot; date when only the time (and optionally timezone) was specified for its &amp;quot;dtend&amp;quot;, e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;vevent&amp;quot;&amp;gt;&lt;br /&gt;
 The &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;party&amp;lt;/span&amp;gt; will be on &lt;br /&gt;
 &amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;2009-06-26&amp;lt;/span&amp;gt;, from&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;19:00&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; to &lt;br /&gt;
 &amp;lt;span class=&amp;quot;dtend&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;22:00&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To simplify this further for authors, hCalendar processors could treat the specifying of just the time per the value-class-pattern date and time value rules, and thus eliminate the need for the &amp;quot;value&amp;quot; span inside the &amp;quot;dtend&amp;quot; span:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;vevent&amp;quot;&amp;gt;&lt;br /&gt;
 The &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;party&amp;lt;/span&amp;gt; will be on &lt;br /&gt;
 &amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;2009-06-26&amp;lt;/span&amp;gt;, from&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;19:00&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; to &lt;br /&gt;
 &amp;lt;span class=&amp;quot;dtend&amp;quot;&amp;gt;22:00&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hCalendar to iCalendar converters should produce the following iCalendar fragment (as part of a valid .ics file) from either of the above two examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
BEGIN:VEVENT&lt;br /&gt;
SUMMARY:party&lt;br /&gt;
DTSTART:20090626T190000&lt;br /&gt;
DTEND:20090626T220000&lt;br /&gt;
END:VEVENT&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: [[X2V]] has implemented this.&lt;br /&gt;
&lt;br /&gt;
Examples &amp;quot;in the wild&amp;quot;:&lt;br /&gt;
* http://microformats.org/wiki/events/2009-08-12-nyc-workshop (real world example, but on this wiki).&lt;br /&gt;
&lt;br /&gt;
==== hAtom updated implied date ====&lt;br /&gt;
Similarly, in blog posts that indicate both when they were &amp;quot;published&amp;quot; and &amp;quot;updated&amp;quot;, the date is usually only displayed once, typically when &amp;quot;published&amp;quot; (real world examples with URLs would help for thoroughness).&lt;br /&gt;
&lt;br /&gt;
Thus it would be convenient if we could imply an [[hAtom]] entry &amp;quot;updated&amp;quot; date from its &amp;quot;published&amp;quot; date when only the time (and optionally timezone) was specified for its &amp;quot;updated&amp;quot;, e.g. for a blog post that was updated the same day:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;entry-summary&amp;quot;&amp;gt;short blog post example&amp;lt;/span&amp;gt;&lt;br /&gt;
 was published on &amp;lt;span class=&amp;quot;published&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;2009-08-01&amp;lt;/span&amp;gt; at &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;12:06&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 and updated at &amp;lt;span class=&amp;quot;updated&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;12:10&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To simplify this further for authors, hAtom processors could treat the specifying of just the time per the value-class-pattern date and time value rules, and thus eliminate the need for the &amp;quot;value&amp;quot; span inside the &amp;quot;updated&amp;quot; span:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;entry-summary&amp;quot;&amp;gt;short blog post example&amp;lt;/span&amp;gt;&lt;br /&gt;
 was published on &amp;lt;span class=&amp;quot;published&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;2009-08-01&amp;lt;/span&amp;gt; at &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;12:06&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 and updated at &amp;lt;span class=&amp;quot;updated&amp;quot;&amp;gt;12:10&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Parsing value from a &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute==&lt;br /&gt;
The &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; class name allows the publisher to indicate the data value for a parent property is contained in the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute of an element, rather than the inner-text.&lt;br /&gt;
&lt;br /&gt;
This can be used to provide a synonym within content, or used to quietly publish alternate forms of information for microformats parsing, without affecting the consumption of content.&lt;br /&gt;
&lt;br /&gt;
For example, you can use casual localization with dates:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;It was &lt;br /&gt;
 &amp;lt;span class='dtstart'&amp;gt;&lt;br /&gt;
  &amp;lt;span class='value-title' title='2008'&amp;gt;last year&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/span&amp;gt;&lt;br /&gt;
  that I realised my addiction to cashew nuts would cost this country so dear.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parsing rules for &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; are the same as for &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; above, with the following change:&lt;br /&gt;
&lt;br /&gt;
* Where a microformats property has a child element with class name of &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt;, the content of the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute of that element must be parsed, rather than the portion of the element that would be parsed for a class name of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Using &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; to publish machine-data===&lt;br /&gt;
&lt;br /&gt;
The initial usage of &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; is used to publish alternate, parsable forms of property values in a visible context without the use of the &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; element whose semantics already support interpretation of the 'title' attribute as an expanded, more precise form of the content. &lt;br /&gt;
&lt;br /&gt;
Experience has found that there are some cases in microformats where a number of publishers want to include a precisely accurate and parsable value for a property but do not want it to be visible in their page, even as a tooltip.&lt;br /&gt;
&lt;br /&gt;
For example, full [[ISO8601]] datetimes may be confusing to readers of the page (as a tooltip or when read aloud by a screen reader), and enumerated values such as the &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; subproperty of hCard's &amp;lt;code&amp;gt;tel&amp;lt;/code&amp;gt; property use US-English terms, which are not part of pages in any other language.&lt;br /&gt;
&lt;br /&gt;
Since both of those scenarios have shown to be obstacles for a number of publishers, for these cases, and these alone, there exists a further extension of value-excerption. This extension allows the parsable form of the property to be published ‘silently’ immediately adjacent with the respective local visible content.&lt;br /&gt;
&lt;br /&gt;
Here is an example, with the required use of a first child element with class name &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p class='tel' lang='en-gb'&amp;gt;&lt;br /&gt;
  &amp;lt;span class='type'&amp;gt;&lt;br /&gt;
    &amp;lt;span class='value-title' title='cell'&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
      mobile&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;span class='value'&amp;gt;+44 7773 000 000&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;samp&amp;gt;cell&amp;lt;/samp&amp;gt; value is parsed for the 'type' subproperty, but &amp;lt;samp&amp;gt;mobile&amp;lt;/samp&amp;gt; is presented to the user.&lt;br /&gt;
&lt;br /&gt;
In the case of dates:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p class='dtstart'&amp;gt;&lt;br /&gt;
  &amp;lt;span class='value-title' title='2009-03-14T16:28-0600'&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
  March 14th 2009, around half-past four&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
A microformats parser will read the ISO8601 format datetime &amp;lt;samp&amp;gt;2009-03-14T16:28-0600&amp;lt;/samp&amp;gt;, but users will only see &amp;lt;samp&amp;gt;March 14th 2009, around half-past four&amp;lt;/samp&amp;gt;. Testing has shown that the ISO8601 datetime above does not get exposed to any user at all.&lt;br /&gt;
&lt;br /&gt;
===Parsing machine-data &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Browsers collapse the &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; span down to a width of &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, effectively providing no visual rendering, whilst keeping the element in the DOM. With no physical dimensions, there is no ‘hover’ state, so no tooltip is revealed. Furthermore, the empty element is not passed to assistive technology layers such as VoiceOver.  Screen readers do not read the contents of the title attribute of an empty &amp;lt;code&amp;gt;span&amp;lt;/code&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
We conducted [[value-excerption-value-title-test|thorough testing]] of these parsing behaviors to ensure accessibility.&lt;br /&gt;
&lt;br /&gt;
''Note: Whilst the &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; element is more gracefully written without whitespace inner-text (or as self-closing &amp;lt;code&amp;gt;&amp;amp;lt;foo /&amp;gt;&amp;lt;/code&amp;gt; element in XHTML), current tools such as WYSIWYG editors and HTML-Tidy will erroneously discard such elements, resulting in parsable data being thrown away by some tools. As such, &amp;lt;code&amp;gt;&amp;amp;lt;span class='value-title'&amp;gt; &amp;amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;, including a single whitespace character between the opening and closing tag, is the required pattern for authors, at this time.''&lt;br /&gt;
&lt;br /&gt;
Parsing this final &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; extension imposes some stricter restrictions on usage. These restrictions exist to reduce the impact of &amp;lt;abbr title=&amp;quot;Don't Repeat Yourself&amp;quot;&amp;gt;DRY&amp;lt;/abbr&amp;gt; violations, reduce the opportunity for sites to spoof data, and encourage best practice for maintaining both forms of data accurately.&lt;br /&gt;
&lt;br /&gt;
Where an element with class &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; is to be parsed as data for a property, and that element also contains no non-whitespace content (hereafter referred to as ‘empty’), the following rules apply:&lt;br /&gt;
&lt;br /&gt;
* The ‘empty’ value-title element must be the '''first, non-whitespace child''' of the property element. That is, it should follow immediately after the property is declared, before the human-readable form, and without any additional nesting.&lt;br /&gt;
* The ‘empty’ value-title element can only be used for specific properties. Microformat specifications must explicitly state which properties may be used with this extension of the value-class-pattern.&lt;br /&gt;
* Where an ‘empty’ value-title element is to be used as the single property value, it must be the ''only'' such &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; content. That is, the first instance of a conforming &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; element overrides all other &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; siblings and/or cousins.&lt;br /&gt;
* Tools written to perform Conformance Testing and/or Validation of microformats ''should'' attempt to compare the machine-data and human legible forms of the property data, and advise authors if the forms do not match.&lt;br /&gt;
&lt;br /&gt;
=== limited use of value-title ===&lt;br /&gt;
Due to the fact that the value-title pattern hides some amount of data which tends to be a machine-specific duplicate of data that is provided in the human readable content, there are two microformats [[principles]] being compromised: '''visibility''' and '''&amp;lt;abbr title=&amp;quot;Don't Repeat Yourself&amp;quot;&amp;gt;DRY&amp;lt;/abbr&amp;gt;'''. Thus the applicability of this pattern is deliberately restricted to properties that have demonstrated through experience a need for it, with no known better alternative.&lt;br /&gt;
&lt;br /&gt;
In general authors should:&lt;br /&gt;
&lt;br /&gt;
# First, try to directly specify microformats property values inline (the most visible, no duplication),&lt;br /&gt;
# Then consider using the value-class pattern&lt;br /&gt;
## Including multiple value elements for date and time properties&lt;br /&gt;
# and then only if those methods are insufficient, consider the value-title pattern.&lt;br /&gt;
&lt;br /&gt;
This document post-dates other microformat specifications, such that they may not yet indicate which properties permit use of this pattern. In the interim, '''only''' the following types of properties should allow the value-title pattern.&lt;br /&gt;
&lt;br /&gt;
* ISO8601 date, datetime, timezone, and duration values&lt;br /&gt;
* Enumerated values (such as the hCard tel/email/adr 'type' subproperties)&lt;br /&gt;
* Co-ordinates (such as the [[geo]] 'latitude' and 'longitude' properties)&lt;br /&gt;
* Telephone number properties (e.g. the hCard 'tel' property)&lt;br /&gt;
&lt;br /&gt;
The [[machine-data]] page has documentation of some of the properties of some specs which experience has shown need a solution like the value-title pattern.&lt;br /&gt;
&lt;br /&gt;
There are some simple reference examples and tests for this pattern on [[value-class-pattern-tests]].&lt;br /&gt;
&lt;br /&gt;
In future use, ''specification authors'' may inherit use of &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; by use of ISO8601 date and time formats, or reuse of other microformats, but specifications should _avoid_ introducing new data structures that depend on or encourage this pattern. New specifications are themselves expected to adhere to the principals of visibile data and &amp;lt;abbr&amp;gt;DRY&amp;lt;/abbr&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
See [[value-class-pattern-tests]].&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;abbr title='Frequently Asked Questions'&amp;gt;FAQ&amp;lt;/abbr&amp;gt;==&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
&lt;br /&gt;
Frequently asked questions about the value-class-pattern. Once this section grows too big, we'll make a separate wiki page (like [[value-class-faq]]).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class='discussion'&amp;gt;&lt;br /&gt;
* '''Why use an 'empty' element? Why not embed data in the class attribute?'''&lt;br /&gt;
** The class attribute is inappropriate for embedded data values, as per the HTML4 specification, which states &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; is for ‘general purposing processing’, which is defined as ‘e.g. for identifying fields when extracting data from HTML pages into a database, translating HTML documents into other formats, etc.’. ‘General purpose processing’ does not extend to data itself. Furthermore, this method avoids inventing a new string pattern for embedding data.&lt;br /&gt;
* '''Why use an 'empty' element? Why not make up a new attribute, like ‘data’?'''&lt;br /&gt;
** Microformats exist and function in ''valid'' HTML4 and XHTML1. Those are the current standards for web development, and microformats exist for use ''now''. In the future, perhaps revisions of HTML will offer up another solution. For now, this method has been tested against browsers, and creates a consistent document structure (where machine-form and human-form data are siblings).&lt;br /&gt;
* '''The &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute should only be used for content!'''&lt;br /&gt;
** The &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute ''is'' used for content and is read by microformats parsers. This exists for cases where data cannot be parsed with sufficient precision from just the commonly published, visible information. This pattern allows both forms of content to be included, whilst keeping it invisible to human consumers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also refer to the general [[faq|Microformats FAQ]] and [[principles]].&lt;br /&gt;
&lt;br /&gt;
== Examples in the wild ==&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
&lt;br /&gt;
The following sites and pages have started marking up content with the value-class-pattern, and are thus good places to go for examples with real world content to test with implementations (i.e. parsers). If you use the value-class-pattern in your content, feel free to add it to the '''top''' of this list. Once the list grows too big, we'll make a separate wiki page (like [[value-class-examples-in-wild]]).&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
    add new items to the TOP of this list&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* [http://visitmix.com/labs/oomph/2.0/tests/test.html Test Harness For Oomph] This pages uses a whole range of different patterns for both hCard and hCalendar, using both value and value-title, mostly derived from the specification above&lt;br /&gt;
* [http://georgebrock.com/ George Brocklehurst's activity stream] and [http://blog.georgebrock.com/ blog] use &amp;quot;value-title&amp;quot; for hAtom &amp;lt;code&amp;gt;published&amp;lt;/code&amp;gt; property&lt;br /&gt;
* [http://ben-ward.co.uk/ Ben Ward's home page] uses:&lt;br /&gt;
** &amp;quot;value-title&amp;quot; for hCard &amp;lt;code&amp;gt;bday&amp;lt;/code&amp;gt; property&lt;br /&gt;
** &amp;quot;value-title&amp;quot; for hAtom &amp;lt;code&amp;gt;updated&amp;lt;/code&amp;gt; property&lt;br /&gt;
* [http://microformats.org/ microformats.org] uses:&lt;br /&gt;
** &amp;quot;value-title&amp;quot; for hAtom &amp;lt;code&amp;gt;updated&amp;lt;/code&amp;gt; property in [[http://microformats.org/ microformats.org blog postss]]]&lt;br /&gt;
** date and time value separation for hCalendar &amp;lt;code&amp;gt;dtstart&amp;lt;/code&amp;gt; property in [[events|microformats.org recent and upcoming events wiki page]]&lt;br /&gt;
&lt;br /&gt;
''Add your site/page(s) that use the value-class-pattern here, along with a brief description of what value-class-pattern features you use, with which microformat(s) and which of its/their properties.''&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
&lt;br /&gt;
The following implementations have been developed which either generate or parse value-class-pattern property values. If you have an value-class-pattern implementation, feel free to add it to the '''top''' of this list. Once the list grows too big, we'll make a separate wiki page (like [[value-class-implementations]]).&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
    add new items to the TOP of this list&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* [[X2V]] v0.9.3 and later:&lt;br /&gt;
** implements [[#Date_and_time_values|Date and time values parsing]], including am/pm time values&lt;br /&gt;
*** thus passes [[value-class-pattern-tests#Date_and_time_values|Date and time values test cases]].&lt;br /&gt;
** implements [[#hCalendar_dtend_implied_date|hCalendar implied dtend date]]&lt;br /&gt;
* [[Operator]] has *some* implementation of the value-class-pattern according to Michael Kaply, but precisely how much is implemented, for which properties (property types) and which microformats is not currently known.&lt;br /&gt;
* [[Optimus]] v0.8 and later implements &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; as [http://twitter.com/DmitryBaranovsk/status/1891253248 announced by Dmitry Baranovskiy].&lt;br /&gt;
* ... add your implementation(s) that parse or generate the value-class-pattern here, along with which features you support (hopefully all!) and note any limitations if any.&lt;br /&gt;
&lt;br /&gt;
== Articles ==&lt;br /&gt;
Articles and &amp;lt;span id=&amp;quot;Blog_Posts&amp;quot;&amp;gt;blog posts&amp;lt;/span&amp;gt;  discussing the value class pattern, most recent first.&lt;br /&gt;
When this section gets too big, create a separate page like: [[value-class-pattern-articles]]&lt;br /&gt;
* &amp;lt;span class=&amp;quot;hentry&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;published&amp;quot;&amp;gt;2009-08-25&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;entry-summary&amp;quot;&amp;gt;MIX Online: &amp;lt;span class=&amp;quot;entry-title&amp;quot;&amp;gt;[http://visitmix.com/Articles/The-Value-Class-Pattern The Value Class Pattern]&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; by &amp;lt;span class=&amp;quot;author vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Jeremy Keith&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* [http://ablognotlimited.com/s/106 Getting Semantic With Microformats, Part 8: Value Class Pattern] -- A very thorough writeup by Emily Lewis on the value class pattern&lt;br /&gt;
* [http://adactio.com/journal/1579/ 2009-05-17 Adactio: Microformation]&lt;br /&gt;
* [http://forabeautifulweb.com/blog/about/value_class_pattern/ For A Beautiful Web: Value Class Pattern]&lt;br /&gt;
* [http://microformats.org/blog/2009/05/12/value-class-pattern/ 2009-05-12 microformats.org: Value Class Pattern]&lt;br /&gt;
&lt;br /&gt;
==Related Pages==&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
&lt;br /&gt;
* [[value-class-pattern-tests]]&lt;br /&gt;
* [[value-excerption-pattern-issues]]&lt;br /&gt;
* [[hcard#Value_excerpting|hCard: Value Excepting]]&lt;br /&gt;
* [[value-excerption-pattern-brainstorming]]&lt;br /&gt;
* [[machine-data|Machine Data in Microformats]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
* [http://www.useit.com/alertbox/9608.html Jakob Nielsen: International Web Usability]&lt;/div&gt;</summary>
		<author><name>Karstenj</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=value-class-pattern&amp;diff=40378</id>
		<title>value-class-pattern</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=value-class-pattern&amp;diff=40378"/>
		<updated>2009-08-26T15:14:52Z</updated>

		<summary type="html">&lt;p&gt;Karstenj: /* Examples in the wild */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;Value Class Pattern&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The value class pattern is derived from [[hCard#Value_excerpting|value-excerpting]] in hCard.&lt;br /&gt;
&lt;br /&gt;
''The editors believe the value-class-pattern to be feature complete and ready for use in markup. Implementers are encouraged to update accordingly and provide [[value-class-pattern-feedback|feedback]]. '''Note''', the precise parsing behavior could change in response to implementer feedback, but the core methods are stable. You should watch this page for updates.''&lt;br /&gt;
&lt;br /&gt;
See also, the [http://microformats.org/blog/2009/05/12/value-class-pattern/ blog announcement].&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
; Editors&lt;br /&gt;
: &amp;lt;span class=&amp;quot;vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;[[User:BenWard|Ben Ward]]&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
: &amp;lt;span class=&amp;quot;vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;[[User:Tantek|Tantek Çelik]]&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
; Short URL&lt;br /&gt;
: &amp;lt;kbd&amp;gt;http://tr.im/valueclass&amp;lt;/kbd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sometimes, only a part of an element's content is to be used as the value of a microformat property. This may occur when a property has optional subproperties, such as &amp;lt;code&amp;gt;tel: type&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;tel: value&amp;lt;/code&amp;gt; in [[hCard]]. Other times, the most appropriate structure for a property may include other content.&lt;br /&gt;
&lt;br /&gt;
For these purposes, the special class name &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is used to mark-up the relevant data excerpt from larger element content.&lt;br /&gt;
&lt;br /&gt;
==Simple Examples==&lt;br /&gt;
&lt;br /&gt;
Here is markup for a home phone number:&lt;br /&gt;
&lt;br /&gt;
vCard fragment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;TEL;TYPE=HOME:+1.415.555.1212&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hCard fragment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;tel&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Home&amp;lt;/span&amp;gt;:&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;+1.415.555.1212&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; of &amp;lt;code&amp;gt;tel&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;+1.415.555.1212&amp;lt;/code&amp;gt;, not &amp;lt;code&amp;gt;Home: +1.415.555.1212&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Sometimes the value for a microformats property must be split into multiple pieces in the content of the element representing that property. Multiple elements with a class name of &amp;quot;value&amp;quot; (value elements) can be used to extract and concatenate these pieces into a single value for microformats properties which expect simple strings or tel values.&lt;br /&gt;
&lt;br /&gt;
Another example, this time using a localized (British) telephone number:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;tel&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Home&amp;lt;/span&amp;gt;:&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;+44&amp;lt;/span&amp;gt; (0) &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;1223 123 123&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the valid ''data'' for the telephone number is &amp;lt;samp&amp;gt;+441223123123&amp;lt;/samp&amp;gt;, but the way in which phone number is presented in Britain will include the &amp;lt;samp&amp;gt;(0)&amp;lt;/samp&amp;gt;, for local dialling. That is, from anywhere in the world you may dial &amp;lt;kbd&amp;gt;+441223123123&amp;lt;/kbd&amp;gt;, or from within Britain you may dial &amp;lt;kbd&amp;gt;01223123123&amp;lt;/kbd&amp;gt;. Common local publishing interferes with the data, since dialling &amp;lt;kbd&amp;gt;'''+440'''1223123123&amp;lt;/kbd&amp;gt; is an invalid number.&lt;br /&gt;
&lt;br /&gt;
In the mark-up, two &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; classes target the part of the telephone number string that makes an international, valid number, whilst allowing conventional presentation.&lt;br /&gt;
&lt;br /&gt;
Another example, adding a place name to a [[geo]] co-ordinate:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;I'm loitering outside The Bricklayer's Arms&lt;br /&gt;
  &amp;lt;span class=&amp;quot;geo&amp;quot;&amp;gt;&lt;br /&gt;
    51° 30' 48.45&amp;quot;, -0° 8' 53.23&amp;quot;&lt;br /&gt;
    (&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;51.513458;-0.14812&amp;lt;/span&amp;gt;)&lt;br /&gt;
  &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Whilst the entire string is a geo point, it's only the decimal encoded co-ordinates which must be consumed by a microformats parser, so the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; class isolates it from the degrees form, which the publisher includes for completeness.&lt;br /&gt;
&lt;br /&gt;
==Basic Parsing==&lt;br /&gt;
# The value class pattern only applies to properties which are simple strings, enumerated values, telephone numbers, and datetimes. The value class pattern does not affect parsing of properties of type email, URL, URI, UID.&lt;br /&gt;
# Where an element with such a microformat property class name has a descendant with class name &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; (a &amp;quot;value&amp;quot; element), parsers should use the following portion of that element:  &lt;br /&gt;
## if the value element is an &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt; element, then use the element's &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; attribute value.&lt;br /&gt;
## if the value element is an &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; element, then use the element's &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute value.&lt;br /&gt;
## for any other element, use its inner-text.&lt;br /&gt;
# Where there are multiple descendants of a property with class name of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; (multiple value elements)&lt;br /&gt;
## if the microformats property expects a simple string, enumerated value, or telephone number, then the values extracted from the value elements should be concatenated ''without'' inserting additional characters or white-space.&lt;br /&gt;
## if the microformats property expects a datetime value, see the [[#Date_and_time_parsing|Date Time Parsing]] section.&lt;br /&gt;
# Descendants with class of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; must not be parsed deeper than one level. That is, where an element &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt; with class &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; has a &amp;lt;em&amp;gt;descendant&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;bar&amp;lt;/code&amp;gt; with class &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;, the content of &amp;lt;strong&amp;gt;&amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt;&amp;lt;/strong&amp;gt; is taken as the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;. Nesting additional elements with class of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; cannot be used to further isolate a property's value.&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
 &amp;lt;p class=&amp;quot;description&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;em class=&amp;quot;value&amp;quot;&amp;gt;Puppies Rule!&amp;lt;/em&amp;gt;&lt;br /&gt;
    &amp;lt;strong&amp;gt;But kittens are better!&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example, &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt; has a child ‘&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;’, and that child has a ''grandchild'' ‘&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;’. However, the parsing of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; classes stops at the first level, so the data for &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt; is: &amp;lt;samp&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;em class=&amp;quot;value&amp;quot;&amp;gt;Puppies Rule!&amp;amp;lt;/em&amp;gt;&amp;amp;lt;strong&amp;gt;But kittens are better!&amp;amp;lt;/strong&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/samp&amp;gt;, not just &amp;lt;samp&amp;gt;Puppies Rule!&amp;lt;/samp&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Date and time values ==&lt;br /&gt;
Some microformats properties expect an ISO8601 datetime value, e.g.  [[hCalendar]] &amp;lt;code&amp;gt;dtstart&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;dtend&amp;lt;/code&amp;gt; or [[hAtom]] &amp;lt;code&amp;gt;published&amp;lt;/code&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Authors may use the value class pattern to separately specify the date and the time, which are then combined to specify a single datetime value.&lt;br /&gt;
&lt;br /&gt;
Example, this hCalendar 'dtstart' property with 'value' elements: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The weekly dinner will be on &lt;br /&gt;
    &amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;abbr class=&amp;quot;value&amp;quot; title=&amp;quot;2008-06-24&amp;quot;&amp;gt;this Tuesday&amp;lt;/abbr&amp;gt; &lt;br /&gt;
     at &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;18:30&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
produces the following 'dtstart' value:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
2008-06-24T18:30:00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and iCalendar converters produce the following DTSTART:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
DTSTART:20080624T183000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The lack of a timezone indicates a &amp;quot;floating&amp;quot; datetime, that is a datetime independent of any particular timezone. Examples of floating datetimes could be an alarm clock you set to ring at 7am, or the common 9am-5pm workday.&lt;br /&gt;
&lt;br /&gt;
=== Date and time parsing ===&lt;br /&gt;
For all date time properties (as defined in their respective microformats specifications), the following rules apply in addition to (and in some cases replacing) the above value class pattern parsing rules.&lt;br /&gt;
&lt;br /&gt;
When a &amp;quot;value&amp;quot; element is found, parse a value from the element as follows:&lt;br /&gt;
* if the element is an &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt; element, then use the element's &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; attribute value.&lt;br /&gt;
* if the element is an &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; element, then use the element's &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute value.&lt;br /&gt;
* for any other element, use its inner-text.&lt;br /&gt;
* if the value has both a specific ISO8601 date and a specific time, use those and stop looking for &amp;quot;value&amp;quot; elements.&lt;br /&gt;
* if the value has *only* a specific date, specifically, fits the following ISO8601 date patterns (i.e. as documented in the [http://en.wikipedia.org/wiki/ISO_8601 Wikipedia summary of ISO8601])&lt;br /&gt;
** YYYY-MM-DD&lt;br /&gt;
** YYYY-DDD&lt;br /&gt;
** then use that as the date value.  For the purposes of the value class pattern, the hyphens &amp;quot;-&amp;quot; separating the year, month, day and/or ordinal day are required.&lt;br /&gt;
** ignore any further &amp;quot;value&amp;quot; elements that specify the date.&lt;br /&gt;
* if the value has *only* a specific time (with or without timezone), parse it for a time value that can match any of the following:&lt;br /&gt;
** HH:MM:SS-XX:YY&lt;br /&gt;
** HH:MM:SS+XX:YY&lt;br /&gt;
** HH:MM:SS-XXYY&lt;br /&gt;
** HH:MM:SS+XXYY&lt;br /&gt;
** HH:MM:SSZ&lt;br /&gt;
** HH:MM:SS&lt;br /&gt;
** HH:MM-XX:YY&lt;br /&gt;
** HH:MM+XX:YY&lt;br /&gt;
** HH:MM-XXYY&lt;br /&gt;
** HH:MM+XXYY&lt;br /&gt;
** HH:MMZ&lt;br /&gt;
** HH:MM&lt;br /&gt;
** HH is the 24 hour &amp;quot;hours&amp;quot; in the time, from 00 to 24, with optional leading 0 for values less than 10.&lt;br /&gt;
** MM are the minutes from 00 to 59&lt;br /&gt;
** SS are the optional seconds from 00 to 59 (60 for a leap second). If omitted, infer 00 seconds.&lt;br /&gt;
** XX is the time zone hours offset, from 00 to 12 with optional leading 0 for values less than 10.&lt;br /&gt;
** YY is the time zone minutes offset, from 00 to 59, though in practice only 00, 15, 30, 45 minute offsets are used in global timezones.&lt;br /&gt;
** Z is the literal 'Z' to indicate GMT.&lt;br /&gt;
** For the purposes of the value class pattern, the colons &amp;quot;:&amp;quot; separating the hour, minutes, seconds are required. &lt;br /&gt;
** However the colons &amp;quot;:&amp;quot; separating the hours and minutes of any timezone offset are ''optional'' and discouraged in order to make it less likely that a timezone offset will be confused for a time.&lt;br /&gt;
** Under strong consideration: case insensitive { }&amp;quot;am&amp;quot;|{ }&amp;quot;a.m.&amp;quot; suffix to treat an HH value of 12 as 00, or a case-insensitive { }&amp;quot;pm&amp;quot;|{ }&amp;quot;p.m.&amp;quot; suffix to add 12 to HH value less than 12 - per [http://en.wikipedia.org/wiki/12-hour_clock Wikipedia article on the 12 hour clock]. Note: [[X2V]] has implemented this.&lt;br /&gt;
*** HH:MM:SSam&lt;br /&gt;
*** HH:MM:SSpm&lt;br /&gt;
*** HH:MMam&lt;br /&gt;
*** HH:MMpm&lt;br /&gt;
*** HHam&lt;br /&gt;
*** HHpm&lt;br /&gt;
*** where &amp;quot;am&amp;quot; and &amp;quot;pm&amp;quot; mean &amp;quot;am or a.m.&amp;quot; and &amp;quot;pm or p.m.&amp;quot; &lt;br /&gt;
*** when MM is omitted, infer 00 minutes.&lt;br /&gt;
** ignore any further &amp;quot;value&amp;quot; elements that specify the time.&lt;br /&gt;
* if the value has *only* a specific timezone, parse it for a time zone value that can match any of the following:&lt;br /&gt;
** -XX:YY&lt;br /&gt;
** +XX:YY&lt;br /&gt;
** -XXYY&lt;br /&gt;
** +XXYY&lt;br /&gt;
** -XX&lt;br /&gt;
** +XX&lt;br /&gt;
** Z&lt;br /&gt;
** XX is the time zone hours offset, from 00 to 12 with optional leading 0 for values less than 10.&lt;br /&gt;
** YY is the time zone minutes offset, from 00 to 59, though in practice only 00, 15, 30, 45 minute offsets are used in global timezones.&lt;br /&gt;
** Z is the literal 'Z' to indicate GMT.&lt;br /&gt;
** ignore any further &amp;quot;value&amp;quot; elements that specify the timezone.&lt;br /&gt;
&lt;br /&gt;
If by parsing the &amp;quot;value&amp;quot; element(s), at least a specific date has been found, then the &amp;quot;value&amp;quot; is overall valid, and the parser assembles the overall datetime value by concatenating the specific date, &amp;quot;T&amp;quot; and specific time (if time was specified, with 00 seconds implied if no seconds are provided), and specific timezone (if timezone and a specific time was specified).&lt;br /&gt;
* YYYY-MM-DD - no time specified&lt;br /&gt;
* YYYY-MM-DDTHH:MM:SS - time specified but no timezone.  This is a floating time.&lt;br /&gt;
* YYYY-MM-DDTHH:MM:SS-XXYY or&lt;br /&gt;
* YYYY-MM-DDTHH:MM:SSZ or&lt;br /&gt;
* YYYY-MM-DDTHH:MM:SS+XXYY - both time and timezone were specified.&lt;br /&gt;
&lt;br /&gt;
iCalendar converters in addition must do the following:&lt;br /&gt;
* remove any dash &amp;quot;-&amp;quot; separators in the date.&lt;br /&gt;
* remove any colon &amp;quot;:&amp;quot; separators in the time.&lt;br /&gt;
* perform datetime math on any +/- relative timezone value, and produce an effective UTC value ending with &amp;quot;Z&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Atom converters in addition must do the following:&lt;br /&gt;
* normalize all date and datetime values to RFC 3339.&lt;br /&gt;
&lt;br /&gt;
=== derivation and tests ===&lt;br /&gt;
The handling of date and time values in the value class pattern was originally [[value-excerption-pattern-brainstorming#date_and_time_separation|brainstormed on the value-excerption-pattern-brainstorming]] page and derived from that analysis and feedback. For the curious, historical details may be found there, along with additional thoughts for extension.&lt;br /&gt;
&lt;br /&gt;
See [[value-class-date-time-tests]] for test cases.&lt;br /&gt;
&lt;br /&gt;
=== format specific optimizations ===&lt;br /&gt;
The following are format specific optimizations under strong consideration that make use of the value-class-pattern. Note: [[X2V]] has implemented this for hCalendar.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;span style=&amp;quot;font-size:smaller&amp;quot;&amp;gt;short URL for this section&amp;lt;/span&amp;gt;&lt;br /&gt;
:http://tr.im/vcpfso&lt;br /&gt;
&lt;br /&gt;
==== hCalendar dtend implied date ====&lt;br /&gt;
Typically events that start and end the same day only display the date of the event once (makes sense per the DRY [[principle]]) (real world examples: [http://upcoming.yahoo.com/event/3010807/ Upcoming], ... more examples with URLs would help for thoroughness).  &lt;br /&gt;
&lt;br /&gt;
Thus it would be convenient if we could imply an [[hCalendar]] event &amp;quot;dtend&amp;quot; date from its &amp;quot;dtstart&amp;quot; date when only the time (and optionally timezone) was specified for its &amp;quot;dtend&amp;quot;, e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;vevent&amp;quot;&amp;gt;&lt;br /&gt;
 The &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;party&amp;lt;/span&amp;gt; will be on &lt;br /&gt;
 &amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;2009-06-26&amp;lt;/span&amp;gt;, from&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;19:00&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; to &lt;br /&gt;
 &amp;lt;span class=&amp;quot;dtend&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;22:00&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To simplify this further for authors, hCalendar processors could treat the specifying of just the time per the value-class-pattern date and time value rules, and thus eliminate the need for the &amp;quot;value&amp;quot; span inside the &amp;quot;dtend&amp;quot; span:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;vevent&amp;quot;&amp;gt;&lt;br /&gt;
 The &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;party&amp;lt;/span&amp;gt; will be on &lt;br /&gt;
 &amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;2009-06-26&amp;lt;/span&amp;gt;, from&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;19:00&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; to &lt;br /&gt;
 &amp;lt;span class=&amp;quot;dtend&amp;quot;&amp;gt;22:00&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hCalendar to iCalendar converters should produce the following iCalendar fragment (as part of a valid .ics file) from either of the above two examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
BEGIN:VEVENT&lt;br /&gt;
SUMMARY:party&lt;br /&gt;
DTSTART:20090626T190000&lt;br /&gt;
DTEND:20090626T220000&lt;br /&gt;
END:VEVENT&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: [[X2V]] has implemented this.&lt;br /&gt;
&lt;br /&gt;
Examples &amp;quot;in the wild&amp;quot;:&lt;br /&gt;
* http://microformats.org/wiki/events/2009-08-12-nyc-workshop (real world example, but on this wiki).&lt;br /&gt;
&lt;br /&gt;
==== hAtom updated implied date ====&lt;br /&gt;
Similarly, in blog posts that indicate both when they were &amp;quot;published&amp;quot; and &amp;quot;updated&amp;quot;, the date is usually only displayed once, typically when &amp;quot;published&amp;quot; (real world examples with URLs would help for thoroughness).&lt;br /&gt;
&lt;br /&gt;
Thus it would be convenient if we could imply an [[hAtom]] entry &amp;quot;updated&amp;quot; date from its &amp;quot;published&amp;quot; date when only the time (and optionally timezone) was specified for its &amp;quot;updated&amp;quot;, e.g. for a blog post that was updated the same day:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;entry-summary&amp;quot;&amp;gt;short blog post example&amp;lt;/span&amp;gt;&lt;br /&gt;
 was published on &amp;lt;span class=&amp;quot;published&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;2009-08-01&amp;lt;/span&amp;gt; at &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;12:06&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 and updated at &amp;lt;span class=&amp;quot;updated&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;12:10&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To simplify this further for authors, hAtom processors could treat the specifying of just the time per the value-class-pattern date and time value rules, and thus eliminate the need for the &amp;quot;value&amp;quot; span inside the &amp;quot;updated&amp;quot; span:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;entry-summary&amp;quot;&amp;gt;short blog post example&amp;lt;/span&amp;gt;&lt;br /&gt;
 was published on &amp;lt;span class=&amp;quot;published&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;2009-08-01&amp;lt;/span&amp;gt; at &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;12:06&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 and updated at &amp;lt;span class=&amp;quot;updated&amp;quot;&amp;gt;12:10&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Parsing value from a &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute==&lt;br /&gt;
The &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; class name allows the publisher to indicate the data value for a parent property is contained in the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute of an element, rather than the inner-text.&lt;br /&gt;
&lt;br /&gt;
This can be used to provide a synonym within content, or used to quietly publish alternate forms of information for microformats parsing, without affecting the consumption of content.&lt;br /&gt;
&lt;br /&gt;
For example, you can use casual localization with dates:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;It was &lt;br /&gt;
 &amp;lt;span class='dtstart'&amp;gt;&lt;br /&gt;
  &amp;lt;span class='value-title' title='2008'&amp;gt;last year&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/span&amp;gt;&lt;br /&gt;
  that I realised my addiction to cashew nuts would cost this country so dear.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parsing rules for &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; are the same as for &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; above, with the following change:&lt;br /&gt;
&lt;br /&gt;
* Where a microformats property has a child element with class name of &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt;, the content of the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute of that element must be parsed, rather than the portion of the element that would be parsed for a class name of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Using &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; to publish machine-data===&lt;br /&gt;
&lt;br /&gt;
The initial usage of &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; is used to publish alternate, parsable forms of property values in a visible context without the use of the &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; element whose semantics already support interpretation of the 'title' attribute as an expanded, more precise form of the content. &lt;br /&gt;
&lt;br /&gt;
Experience has found that there are some cases in microformats where a number of publishers want to include a precisely accurate and parsable value for a property but do not want it to be visible in their page, even as a tooltip.&lt;br /&gt;
&lt;br /&gt;
For example, full [[ISO8601]] datetimes may be confusing to readers of the page (as a tooltip or when read aloud by a screen reader), and enumerated values such as the &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; subproperty of hCard's &amp;lt;code&amp;gt;tel&amp;lt;/code&amp;gt; property use US-English terms, which are not part of pages in any other language.&lt;br /&gt;
&lt;br /&gt;
Since both of those scenarios have shown to be obstacles for a number of publishers, for these cases, and these alone, there exists a further extension of value-excerption. This extension allows the parsable form of the property to be published ‘silently’ immediately adjacent with the respective local visible content.&lt;br /&gt;
&lt;br /&gt;
Here is an example, with the required use of a first child element with class name &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p class='tel' lang='en-gb'&amp;gt;&lt;br /&gt;
  &amp;lt;span class='type'&amp;gt;&lt;br /&gt;
    &amp;lt;span class='value-title' title='cell'&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
      mobile&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;span class='value'&amp;gt;+44 7773 000 000&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;samp&amp;gt;cell&amp;lt;/samp&amp;gt; value is parsed for the 'type' subproperty, but &amp;lt;samp&amp;gt;mobile&amp;lt;/samp&amp;gt; is presented to the user.&lt;br /&gt;
&lt;br /&gt;
In the case of dates:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p class='dtstart'&amp;gt;&lt;br /&gt;
  &amp;lt;span class='value-title' title='2009-03-14T16:28-0600'&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
  March 14th 2009, around half-past four&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
A microformats parser will read the ISO8601 format datetime &amp;lt;samp&amp;gt;2009-03-14T16:28-0600&amp;lt;/samp&amp;gt;, but users will only see &amp;lt;samp&amp;gt;March 14th 2009, around half-past four&amp;lt;/samp&amp;gt;. Testing has shown that the ISO8601 datetime above does not get exposed to any user at all.&lt;br /&gt;
&lt;br /&gt;
===Parsing machine-data &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Browsers collapse the &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; span down to a width of &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, effectively providing no visual rendering, whilst keeping the element in the DOM. With no physical dimensions, there is no ‘hover’ state, so no tooltip is revealed. Furthermore, the empty element is not passed to assistive technology layers such as VoiceOver.  Screen readers do not read the contents of the title attribute of an empty &amp;lt;code&amp;gt;span&amp;lt;/code&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
We conducted [[value-excerption-value-title-test|thorough testing]] of these parsing behaviors to ensure accessibility.&lt;br /&gt;
&lt;br /&gt;
''Note: Whilst the &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; element is more gracefully written without whitespace inner-text (or as self-closing &amp;lt;code&amp;gt;&amp;amp;lt;foo /&amp;gt;&amp;lt;/code&amp;gt; element in XHTML), current tools such as WYSIWYG editors and HTML-Tidy will erroneously discard such elements, resulting in parsable data being thrown away by some tools. As such, &amp;lt;code&amp;gt;&amp;amp;lt;span class='value-title'&amp;gt; &amp;amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;, including a single whitespace character between the opening and closing tag, is the required pattern for authors, at this time.''&lt;br /&gt;
&lt;br /&gt;
Parsing this final &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; extension imposes some stricter restrictions on usage. These restrictions exist to reduce the impact of &amp;lt;abbr title=&amp;quot;Don't Repeat Yourself&amp;quot;&amp;gt;DRY&amp;lt;/abbr&amp;gt; violations, reduce the opportunity for sites to spoof data, and encourage best practice for maintaining both forms of data accurately.&lt;br /&gt;
&lt;br /&gt;
Where an element with class &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; is to be parsed as data for a property, and that element also contains no non-whitespace content (hereafter referred to as ‘empty’), the following rules apply:&lt;br /&gt;
&lt;br /&gt;
* The ‘empty’ value-title element must be the '''first, non-whitespace child''' of the property element. That is, it should follow immediately after the property is declared, before the human-readable form, and without any additional nesting.&lt;br /&gt;
* The ‘empty’ value-title element can only be used for specific properties. Microformat specifications must explicitly state which properties may be used with this extension of the value-class-pattern.&lt;br /&gt;
* Where an ‘empty’ value-title element is to be used as the single property value, it must be the ''only'' such &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; content. That is, the first instance of a conforming &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; element overrides all other &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; siblings and/or cousins.&lt;br /&gt;
* Tools written to perform Conformance Testing and/or Validation of microformats ''should'' attempt to compare the machine-data and human legible forms of the property data, and advise authors if the forms do not match.&lt;br /&gt;
&lt;br /&gt;
=== limited use of value-title ===&lt;br /&gt;
Due to the fact that the value-title pattern hides some amount of data which tends to be a machine-specific duplicate of data that is provided in the human readable content, there are two microformats [[principles]] being compromised: '''visibility''' and '''&amp;lt;abbr title=&amp;quot;Don't Repeat Yourself&amp;quot;&amp;gt;DRY&amp;lt;/abbr&amp;gt;'''. Thus the applicability of this pattern is deliberately restricted to properties that have demonstrated through experience a need for it, with no known better alternative.&lt;br /&gt;
&lt;br /&gt;
In general authors should:&lt;br /&gt;
&lt;br /&gt;
# First, try to directly specify microformats property values inline (the most visible, no duplication),&lt;br /&gt;
# Then consider using the value-class pattern&lt;br /&gt;
## Including multiple value elements for date and time properties&lt;br /&gt;
# and then only if those methods are insufficient, consider the value-title pattern.&lt;br /&gt;
&lt;br /&gt;
This document post-dates other microformat specifications, such that they may not yet indicate which properties permit use of this pattern. In the interim, '''only''' the following types of properties should allow the value-title pattern.&lt;br /&gt;
&lt;br /&gt;
* ISO8601 date, datetime, timezone, and duration values&lt;br /&gt;
* Enumerated values (such as the hCard tel/email/adr 'type' subproperties)&lt;br /&gt;
* Co-ordinates (such as the [[geo]] 'latitude' and 'longitude' properties)&lt;br /&gt;
* Telephone number properties (e.g. the hCard 'tel' property)&lt;br /&gt;
&lt;br /&gt;
The [[machine-data]] page has documentation of some of the properties of some specs which experience has shown need a solution like the value-title pattern.&lt;br /&gt;
&lt;br /&gt;
There are some simple reference examples and tests for this pattern on [[value-class-pattern-tests]].&lt;br /&gt;
&lt;br /&gt;
In future use, ''specification authors'' may inherit use of &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; by use of ISO8601 date and time formats, or reuse of other microformats, but specifications should _avoid_ introducing new data structures that depend on or encourage this pattern. New specifications are themselves expected to adhere to the principals of visibile data and &amp;lt;abbr&amp;gt;DRY&amp;lt;/abbr&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
See [[value-class-pattern-tests]].&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;abbr title='Frequently Asked Questions'&amp;gt;FAQ&amp;lt;/abbr&amp;gt;==&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
&lt;br /&gt;
Frequently asked questions about the value-class-pattern. Once this section grows too big, we'll make a separate wiki page (like [[value-class-faq]]).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class='discussion'&amp;gt;&lt;br /&gt;
* '''Why use an 'empty' element? Why not embed data in the class attribute?'''&lt;br /&gt;
** The class attribute is inappropriate for embedded data values, as per the HTML4 specification, which states &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; is for ‘general purposing processing’, which is defined as ‘e.g. for identifying fields when extracting data from HTML pages into a database, translating HTML documents into other formats, etc.’. ‘General purpose processing’ does not extend to data itself. Furthermore, this method avoids inventing a new string pattern for embedding data.&lt;br /&gt;
* '''Why use an 'empty' element? Why not make up a new attribute, like ‘data’?'''&lt;br /&gt;
** Microformats exist and function in ''valid'' HTML4 and XHTML1. Those are the current standards for web development, and microformats exist for use ''now''. In the future, perhaps revisions of HTML will offer up another solution. For now, this method has been tested against browsers, and creates a consistent document structure (where machine-form and human-form data are siblings).&lt;br /&gt;
* '''The &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute should only be used for content!'''&lt;br /&gt;
** The &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute ''is'' used for content and is read by microformats parsers. This exists for cases where data cannot be parsed with sufficient precision from just the commonly published, visible information. This pattern allows both forms of content to be included, whilst keeping it invisible to human consumers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also refer to the general [[faq|Microformats FAQ]] and [[principles]].&lt;br /&gt;
&lt;br /&gt;
== Examples in the wild ==&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
&lt;br /&gt;
The following sites and pages have started marking up content with the value-class-pattern, and are thus good places to go for examples with real world content to test with implementations (i.e. parsers). If you use the value-class-pattern in your content, feel free to add it to the '''top''' of this list. Once the list grows too big, we'll make a separate wiki page (like [[value-class-examples-in-wild]]).&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
    add new items to the TOP of this list&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* [http://georgebrock.com/ George Brocklehurst's activity stream] and [http://blog.georgebrock.com/ blog] use &amp;quot;value-title&amp;quot; for hAtom &amp;lt;code&amp;gt;published&amp;lt;/code&amp;gt; property&lt;br /&gt;
* [http://ben-ward.co.uk/ Ben Ward's home page] uses:&lt;br /&gt;
** &amp;quot;value-title&amp;quot; for hCard &amp;lt;code&amp;gt;bday&amp;lt;/code&amp;gt; property&lt;br /&gt;
** &amp;quot;value-title&amp;quot; for hAtom &amp;lt;code&amp;gt;updated&amp;lt;/code&amp;gt; property&lt;br /&gt;
* [http://microformats.org/ microformats.org] uses:&lt;br /&gt;
** &amp;quot;value-title&amp;quot; for hAtom &amp;lt;code&amp;gt;updated&amp;lt;/code&amp;gt; property in [[http://microformats.org/ microformats.org blog postss]]]&lt;br /&gt;
** date and time value separation for hCalendar &amp;lt;code&amp;gt;dtstart&amp;lt;/code&amp;gt; property in [[events|microformats.org recent and upcoming events wiki page]]&lt;br /&gt;
* [http://visitmix.com/labs/oomph/2.0/tests/test.html Test Harness For Oomph] This pages uses a whole range of different patterns for both hCard and hCalendar, using both value and value-title, mostly derived from the specification above&lt;br /&gt;
&lt;br /&gt;
''Add your site/page(s) that use the value-class-pattern here, along with a brief description of what value-class-pattern features you use, with which microformat(s) and which of its/their properties.''&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
&lt;br /&gt;
The following implementations have been developed which either generate or parse value-class-pattern property values. If you have an value-class-pattern implementation, feel free to add it to the '''top''' of this list. Once the list grows too big, we'll make a separate wiki page (like [[value-class-implementations]]).&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
    add new items to the TOP of this list&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* [[X2V]] v0.9.3 and later:&lt;br /&gt;
** implements [[#Date_and_time_values|Date and time values parsing]], including am/pm time values&lt;br /&gt;
*** thus passes [[value-class-pattern-tests#Date_and_time_values|Date and time values test cases]].&lt;br /&gt;
** implements [[#hCalendar_dtend_implied_date|hCalendar implied dtend date]]&lt;br /&gt;
* [[Operator]] has *some* implementation of the value-class-pattern according to Michael Kaply, but precisely how much is implemented, for which properties (property types) and which microformats is not currently known.&lt;br /&gt;
* [[Optimus]] v0.8 and later implements &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; as [http://twitter.com/DmitryBaranovsk/status/1891253248 announced by Dmitry Baranovskiy].&lt;br /&gt;
* ... add your implementation(s) that parse or generate the value-class-pattern here, along with which features you support (hopefully all!) and note any limitations if any.&lt;br /&gt;
&lt;br /&gt;
== Articles ==&lt;br /&gt;
Articles and &amp;lt;span id=&amp;quot;Blog_Posts&amp;quot;&amp;gt;blog posts&amp;lt;/span&amp;gt;  discussing the value class pattern, most recent first.&lt;br /&gt;
When this section gets too big, create a separate page like: [[value-class-pattern-articles]]&lt;br /&gt;
* &amp;lt;span class=&amp;quot;hentry&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;published&amp;quot;&amp;gt;2009-08-25&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;entry-summary&amp;quot;&amp;gt;MIX Online: &amp;lt;span class=&amp;quot;entry-title&amp;quot;&amp;gt;[http://visitmix.com/Articles/The-Value-Class-Pattern The Value Class Pattern]&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; by &amp;lt;span class=&amp;quot;author vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Jeremy Keith&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* [http://ablognotlimited.com/s/106 Getting Semantic With Microformats, Part 8: Value Class Pattern] -- A very thorough writeup by Emily Lewis on the value class pattern&lt;br /&gt;
* [http://adactio.com/journal/1579/ 2009-05-17 Adactio: Microformation]&lt;br /&gt;
* [http://forabeautifulweb.com/blog/about/value_class_pattern/ For A Beautiful Web: Value Class Pattern]&lt;br /&gt;
* [http://microformats.org/blog/2009/05/12/value-class-pattern/ 2009-05-12 microformats.org: Value Class Pattern]&lt;br /&gt;
&lt;br /&gt;
==Related Pages==&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
&lt;br /&gt;
* [[value-class-pattern-tests]]&lt;br /&gt;
* [[value-excerption-pattern-issues]]&lt;br /&gt;
* [[hcard#Value_excerpting|hCard: Value Excepting]]&lt;br /&gt;
* [[value-excerption-pattern-brainstorming]]&lt;br /&gt;
* [[machine-data|Machine Data in Microformats]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
* [http://www.useit.com/alertbox/9608.html Jakob Nielsen: International Web Usability]&lt;/div&gt;</summary>
		<author><name>Karstenj</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=oomph&amp;diff=40338</id>
		<title>oomph</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=oomph&amp;diff=40338"/>
		<updated>2009-08-25T22:54:55Z</updated>

		<summary type="html">&lt;p&gt;Karstenj: /* sessions and presentations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== overview ==&lt;br /&gt;
Download Oomph v2.0 (2009-8-25) from http://codeplex.com/Oomph&lt;br /&gt;
&lt;br /&gt;
Oomph is an [[open source]] project that has the following features:&lt;br /&gt;
* [[Internet Explorer]] (versions 7 and 8) add-in that provide a user interface for all pages with [[hCard]] and/or [[hCalendar]] and/or [[hmedia]] (similar to [[operator]]).&lt;br /&gt;
* jQuery javascript extensions that can be installed on any website and provide an HTML overlay user-interface to all the [[hCard]], [[hCalendar]] and [[hmedia]] on the page for any browser.&lt;br /&gt;
* Windows Live Writer Plug-in for authoring hCard, hCalendar and hMedia&lt;br /&gt;
* Set of CSS stylesheets for nicely displaying hCards and hCalendar events&lt;br /&gt;
* ASP.NET control for generating [[hcard]] and [[hcalendar]]&lt;br /&gt;
&lt;br /&gt;
== video ==&lt;br /&gt;
[http://www.youtube.com/watch?v=zx2f2Z9MMQ8 http://i3.ytimg.com/vi/zx2f2Z9MMQ8/default.jpg][http://www.youtube.com/watch?v=zx2f2Z9MMQ8 watch Oomph explanation and demonstration video]&lt;br /&gt;
&lt;br /&gt;
== buttons ==&lt;br /&gt;
As seen on [http://favrd.com/ Favrd]:&lt;br /&gt;
&lt;br /&gt;
[http://www.northmay.com/deck/i/mix_oomph.jpg http://www.northmay.com/deck/i/mix_oomph.jpg] - was linked to http://www.visitmix.com/lab/oomph/&lt;br /&gt;
&lt;br /&gt;
== links and articles ==&lt;br /&gt;
* http://codeplex.com/Oomph&lt;br /&gt;
* http://www.visitmix.com/Lab/Oomph&lt;br /&gt;
* http://www.ablognotlimited.com/articles/oomph-microformats-toolkit/&lt;br /&gt;
* http://visitmix.com/Articles/Prototype-Oomph-A-Microformats-Toolkit&lt;br /&gt;
* http://www.itpro.co.uk/607728/microsoft-tries-to-give-data-some-oomph&lt;br /&gt;
&lt;br /&gt;
== source ==&lt;br /&gt;
* http://oomph.codeplex.com/SourceControl/ListDownloadableCommits.aspx&lt;br /&gt;
&lt;br /&gt;
== issues ==&lt;br /&gt;
See [[oomph-issues]].&lt;br /&gt;
&lt;br /&gt;
== sessions and presentations ==&lt;br /&gt;
* 2008-10-29 Microsoft PDC, &amp;quot;Oomph: A Microformats Toolkit&amp;quot; in room 501B at 3pm.&lt;br /&gt;
** http://twitter.com/Systim/status/980861207&lt;br /&gt;
** http://twitter.com/TommyLee/status/980857229&lt;br /&gt;
&lt;br /&gt;
* 2009-10-04 Oredev in Malmo, Sweden&lt;br /&gt;
** http://oredev.com/prod/oredev/site.nsf/docsbycodename/session!opendocument&amp;amp;sid=5340FEFD1C0F5E8EC12575940036B8DA&amp;amp;day=3&amp;amp;track=1FB45F966ACB6E94C12575A500497290&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[Internet Explorer]]&lt;br /&gt;
* [[Operator]]&lt;/div&gt;</summary>
		<author><name>Karstenj</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=oomph&amp;diff=40337</id>
		<title>oomph</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=oomph&amp;diff=40337"/>
		<updated>2009-08-25T22:52:20Z</updated>

		<summary type="html">&lt;p&gt;Karstenj: /* overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== overview ==&lt;br /&gt;
Download Oomph v2.0 (2009-8-25) from http://codeplex.com/Oomph&lt;br /&gt;
&lt;br /&gt;
Oomph is an [[open source]] project that has the following features:&lt;br /&gt;
* [[Internet Explorer]] (versions 7 and 8) add-in that provide a user interface for all pages with [[hCard]] and/or [[hCalendar]] and/or [[hmedia]] (similar to [[operator]]).&lt;br /&gt;
* jQuery javascript extensions that can be installed on any website and provide an HTML overlay user-interface to all the [[hCard]], [[hCalendar]] and [[hmedia]] on the page for any browser.&lt;br /&gt;
* Windows Live Writer Plug-in for authoring hCard, hCalendar and hMedia&lt;br /&gt;
* Set of CSS stylesheets for nicely displaying hCards and hCalendar events&lt;br /&gt;
* ASP.NET control for generating [[hcard]] and [[hcalendar]]&lt;br /&gt;
&lt;br /&gt;
== video ==&lt;br /&gt;
[http://www.youtube.com/watch?v=zx2f2Z9MMQ8 http://i3.ytimg.com/vi/zx2f2Z9MMQ8/default.jpg][http://www.youtube.com/watch?v=zx2f2Z9MMQ8 watch Oomph explanation and demonstration video]&lt;br /&gt;
&lt;br /&gt;
== buttons ==&lt;br /&gt;
As seen on [http://favrd.com/ Favrd]:&lt;br /&gt;
&lt;br /&gt;
[http://www.northmay.com/deck/i/mix_oomph.jpg http://www.northmay.com/deck/i/mix_oomph.jpg] - was linked to http://www.visitmix.com/lab/oomph/&lt;br /&gt;
&lt;br /&gt;
== links and articles ==&lt;br /&gt;
* http://codeplex.com/Oomph&lt;br /&gt;
* http://www.visitmix.com/Lab/Oomph&lt;br /&gt;
* http://www.ablognotlimited.com/articles/oomph-microformats-toolkit/&lt;br /&gt;
* http://visitmix.com/Articles/Prototype-Oomph-A-Microformats-Toolkit&lt;br /&gt;
* http://www.itpro.co.uk/607728/microsoft-tries-to-give-data-some-oomph&lt;br /&gt;
&lt;br /&gt;
== source ==&lt;br /&gt;
* http://oomph.codeplex.com/SourceControl/ListDownloadableCommits.aspx&lt;br /&gt;
&lt;br /&gt;
== issues ==&lt;br /&gt;
See [[oomph-issues]].&lt;br /&gt;
&lt;br /&gt;
== sessions and presentations ==&lt;br /&gt;
* 2008-10-29 Microsoft PDC, &amp;quot;Oomph: A Microformats Toolkit&amp;quot; in room 501B at 3pm.&lt;br /&gt;
** http://twitter.com/Systim/status/980861207&lt;br /&gt;
** http://twitter.com/TommyLee/status/980857229&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[Internet Explorer]]&lt;br /&gt;
* [[Operator]]&lt;/div&gt;</summary>
		<author><name>Karstenj</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=oomph&amp;diff=40336</id>
		<title>oomph</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=oomph&amp;diff=40336"/>
		<updated>2009-08-25T22:51:51Z</updated>

		<summary type="html">&lt;p&gt;Karstenj: /* overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== overview ==&lt;br /&gt;
Download Oomph v2.0 (2009-8-25) from http://codeplex.com/Oomph&lt;br /&gt;
&lt;br /&gt;
Oomph is [[open source]]:&lt;br /&gt;
* [[Internet Explorer]] (versions 7 and 8) add-in that provide a user interface for all pages with [[hCard]] and/or [[hCalendar]] and/or [[hmedia]] (similar to [[operator]]).&lt;br /&gt;
* jQuery javascript extensions that can be installed on any website and provide an HTML overlay user-interface to all the [[hCard]], [[hCalendar]] and [[hmedia]] on the page for any browser.&lt;br /&gt;
* Windows Live Writer Plug-in for authoring hCard, hCalendar and hMedia&lt;br /&gt;
* Set of CSS stylesheets for nicely displaying hCards and hCalendar events&lt;br /&gt;
* ASP.NET control for generating [[hcard]] and [[hcalendar]]&lt;br /&gt;
&lt;br /&gt;
== video ==&lt;br /&gt;
[http://www.youtube.com/watch?v=zx2f2Z9MMQ8 http://i3.ytimg.com/vi/zx2f2Z9MMQ8/default.jpg][http://www.youtube.com/watch?v=zx2f2Z9MMQ8 watch Oomph explanation and demonstration video]&lt;br /&gt;
&lt;br /&gt;
== buttons ==&lt;br /&gt;
As seen on [http://favrd.com/ Favrd]:&lt;br /&gt;
&lt;br /&gt;
[http://www.northmay.com/deck/i/mix_oomph.jpg http://www.northmay.com/deck/i/mix_oomph.jpg] - was linked to http://www.visitmix.com/lab/oomph/&lt;br /&gt;
&lt;br /&gt;
== links and articles ==&lt;br /&gt;
* http://codeplex.com/Oomph&lt;br /&gt;
* http://www.visitmix.com/Lab/Oomph&lt;br /&gt;
* http://www.ablognotlimited.com/articles/oomph-microformats-toolkit/&lt;br /&gt;
* http://visitmix.com/Articles/Prototype-Oomph-A-Microformats-Toolkit&lt;br /&gt;
* http://www.itpro.co.uk/607728/microsoft-tries-to-give-data-some-oomph&lt;br /&gt;
&lt;br /&gt;
== source ==&lt;br /&gt;
* http://oomph.codeplex.com/SourceControl/ListDownloadableCommits.aspx&lt;br /&gt;
&lt;br /&gt;
== issues ==&lt;br /&gt;
See [[oomph-issues]].&lt;br /&gt;
&lt;br /&gt;
== sessions and presentations ==&lt;br /&gt;
* 2008-10-29 Microsoft PDC, &amp;quot;Oomph: A Microformats Toolkit&amp;quot; in room 501B at 3pm.&lt;br /&gt;
** http://twitter.com/Systim/status/980861207&lt;br /&gt;
** http://twitter.com/TommyLee/status/980857229&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[Internet Explorer]]&lt;br /&gt;
* [[Operator]]&lt;/div&gt;</summary>
		<author><name>Karstenj</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=hmedia&amp;diff=40196</id>
		<title>hmedia</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=hmedia&amp;diff=40196"/>
		<updated>2009-08-12T17:33:42Z</updated>

		<summary type="html">&lt;p&gt;Karstenj: /* Implementations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;hMedia&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
{{Template:DraftSpecification}}&lt;br /&gt;
{{TOC-right}}&lt;br /&gt;
&lt;br /&gt;
'''[[hmedia|hMedia]]''' is a simple and open format for publishing Images Video and Audio. hMedia may be embedded in HTML or XHTML, Atom, RSS, and arbitrary XML. hMedia is one of several open [[microformats|microformat]] standards.&lt;br /&gt;
&lt;br /&gt;
== hMedia Draft Specification 2009-01-04 ==&lt;br /&gt;
&lt;br /&gt;
=== Editor/Author ===&lt;br /&gt;
&lt;br /&gt;
* [[User:WebOrganics| Martin McEvoy]]&lt;br /&gt;
&lt;br /&gt;
=== Contributors ===&lt;br /&gt;
&lt;br /&gt;
In historical order of contribution&lt;br /&gt;
&lt;br /&gt;
* [http://tantek.com/log/ Tantek Çelik]&lt;br /&gt;
* [[User:Kevin_Marks|Kevin Marks]]&lt;br /&gt;
* [http://napsterization.org/stories/ Mary Hodder]&lt;br /&gt;
* [[User:RodBegbie | Rod Begbie]]&lt;br /&gt;
* [http://joshkinberg.com/blog/ Joshua Kinberg]&lt;br /&gt;
* [[User:ChrisMessina | ChrisMessina]]&lt;br /&gt;
* [http://onlisareinsradar.com/ Lisa Rein]&lt;br /&gt;
* [[User:ChrisNewell | Chris Newell]] &lt;br /&gt;
* [[User:ManuSporny | Manu Sporny]]&lt;br /&gt;
* [[User:MikeJohnson | Mike Johnson]]&lt;br /&gt;
* [[User:WebOrganics| Martin McEvoy]]&lt;br /&gt;
&lt;br /&gt;
=== Inspiration and Acknowledgements ===&lt;br /&gt;
&lt;br /&gt;
Many thanks to [http://tantek.com/log/ Tantek Çelik], [[User:Kevin_Marks|Kevin Marks]], [http://napsterization.org/stories/ Mary Hodder], [[User:ChrisNewell|Chris Newell]], [[User:ChrisMessina | Chris Messina]], [http://changelog.ca/ Charles Iliya Krempeaux] and [http://blog.digitalbazaar.com Manu Sporny] for their valuable contributions to  Media Info and Media Metadata in general.&lt;br /&gt;
&lt;br /&gt;
=== Patents ===&lt;br /&gt;
&lt;br /&gt;
{{MicroFormatPatentStatement}}&lt;br /&gt;
&lt;br /&gt;
=== Semantic XHTML Design Principles ===&lt;br /&gt;
&lt;br /&gt;
{{semantic-xhtml-design-principles}}&lt;br /&gt;
&lt;br /&gt;
== Scope ==&lt;br /&gt;
&lt;br /&gt;
Images, Video and Audio regularly share several common fields. hMedia has been based on a minimal common subset based on the analysis of 225 media related web pages. All fields discovered during analysis occur more than 80% of the time or more across each of the target domains listed on the [[media-info-examples|Media Info Examples]] page. hMedia was developed using the [[process|Microformats Process]] and [[principles|Design Principles]].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cite&amp;gt;[http://napsterization.org/stories/ Mary Hodder] - 22 Jan 2006&amp;lt;/cite&amp;gt; &lt;br /&gt;
&amp;lt;blockquote&amp;gt;There are many ways to publish media by users, but as people try to access those remixing and aggregation become more and more prevalent, having consistent records becomes important. Audio, photos and video show up in each other's publishing spaces, even though they are unique media objects. A photo might be next to the link for an audio piece, as it's visual artwork. A video can be comprised of quotes of other videos, photos and audio. Still photos can be made from videos. All three types of objects can contain subsets of media that is tagged and described.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
=== Abstract ===&lt;br /&gt;
&lt;br /&gt;
hMedia is a single media publishing format that relates to Images, Video and Audio with an Emphasis on Practical, Simple, and Minimal. Wherever possible field names have been chosen from those defined by the [[hcard|hCard]] standard.&lt;br /&gt;
&lt;br /&gt;
=== Schema ===&lt;br /&gt;
&lt;br /&gt;
See [[hmedia#Key|key]].&lt;br /&gt;
&lt;br /&gt;
* hMedia '''hmedia'''{1}.&lt;br /&gt;
** '''fn'''. {1}.&lt;br /&gt;
** ''contributor'' *. Using text or [[hcard]].&lt;br /&gt;
** photo ?. Using the HTML IMG element.&lt;br /&gt;
** player ?. Using use any appropriate html element such as OBJECT.&lt;br /&gt;
** ''enclosure'' *. A &amp;lt;abbr title=&amp;quot;Uniform Resource Locator&amp;quot;&amp;gt;URL&amp;lt;/abbr&amp;gt; using the [[rel-design-pattern]]&lt;br /&gt;
&lt;br /&gt;
{{cheatsheet-key}}&lt;br /&gt;
&lt;br /&gt;
=== Schema Definition ===&lt;br /&gt;
&lt;br /&gt;
{{rfc-2119-intro}}&lt;br /&gt;
&lt;br /&gt;
==== hmedia ====&lt;br /&gt;
&lt;br /&gt;
hMedia is used to describe information associated with Images, Videos and Audio.&lt;br /&gt;
&lt;br /&gt;
====fn==== &lt;br /&gt;
	&lt;br /&gt;
The name of a media.&lt;br /&gt;
&lt;br /&gt;
* The element is identified by the class name &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;.&lt;br /&gt;
*  hMedia {{must}} include one &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
==== contributor ====&lt;br /&gt;
&lt;br /&gt;
A Contributor is any person or organization that takes part in the creation or distribution of the Media&lt;br /&gt;
&lt;br /&gt;
* The element is identified by the class name &amp;lt;code&amp;gt;contributor&amp;lt;/code&amp;gt;.&lt;br /&gt;
* hMedia {{may}} include one or more contributors.&lt;br /&gt;
* The contents of the element {{may}} include a valid [[hcard|hCard]].&lt;br /&gt;
&lt;br /&gt;
==== photo ==== 	&lt;br /&gt;
&lt;br /&gt;
An embedded Image or Photograph of the Media&lt;br /&gt;
&lt;br /&gt;
* The element is identified by the class name &amp;lt;code&amp;gt;photo&amp;lt;/code&amp;gt;.&lt;br /&gt;
* hMedia {{may}} include one &amp;lt;code&amp;gt;photo&amp;lt;/code&amp;gt; element.&lt;br /&gt;
* The element {{should}} use an &amp;amp;lt;img&amp;amp;gt; element.&lt;br /&gt;
* The &amp;amp;lt;img&amp;amp;gt; element attributes &amp;lt;code&amp;gt;height&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;width&amp;lt;/code&amp;gt; {{may}} be used to determine the dimensions of a &amp;lt;code&amp;gt;photo&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== player ==== 	&lt;br /&gt;
&lt;br /&gt;
The contents are an embedded video or movie of the Media such as a Flash Movie.&lt;br /&gt;
&lt;br /&gt;
* The element is identified by the class name &amp;lt;code&amp;gt;player&amp;lt;/code&amp;gt;.&lt;br /&gt;
* hMedia {{may}} include one &amp;lt;code&amp;gt;player&amp;lt;/code&amp;gt; element.&lt;br /&gt;
* The element {{may}} use any appropriate html element such as &amp;amp;lt;object&amp;amp;gt;.&lt;br /&gt;
* The &amp;amp;lt;object&amp;amp;gt; element attributes &amp;lt;code&amp;gt;height&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;width&amp;lt;/code&amp;gt; {{may}} be used to determine the dimensions of a &amp;lt;code&amp;gt;player&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== enclosure ====&lt;br /&gt;
&lt;br /&gt;
Indicates that the referred &amp;lt;abbr title=&amp;quot;uniform resource locator&amp;quot;&amp;gt;url&amp;lt;/abbr&amp;gt; is a download of the Media.&lt;br /&gt;
&lt;br /&gt;
* The element is identified by a &amp;lt;abbr title=&amp;quot;Uniform Resource Locator&amp;quot;&amp;gt;URL&amp;lt;/abbr&amp;gt; using the [[rel-design-pattern]], the rel attribute {{should}} contain the value of &amp;lt;code&amp;gt;enclosure&amp;lt;/code&amp;gt;..&lt;br /&gt;
* hMedia {{may}} include one or more &amp;lt;code&amp;gt;enclosure&amp;lt;/code&amp;gt;'s.&lt;br /&gt;
* The media type of the enclosure {{should}} be specified by using a &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; specifier for a &amp;lt;abbr title=&amp;quot;uniform resource locator&amp;quot;&amp;gt;url&amp;lt;/abbr&amp;gt;,  the contents {{may}} be any [http://www.iana.org/assignments/media-types/ iana assigned media type] .&lt;br /&gt;
* Multiple enclosure elements {{should}} be used for different representations of the same Audio, video or Image.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== XMDP Profile ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;dl class=&amp;quot;profile&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;dt&amp;gt;class&amp;lt;/dt&amp;gt;&lt;br /&gt;
 &amp;lt;dd&amp;gt;&amp;lt;p&amp;gt;&lt;br /&gt;
  &amp;lt;a rel=&amp;quot;help&amp;quot; href=&amp;quot;http://www.w3.org/TR/html401/struct/global.html#adef-class&amp;quot;&amp;gt;&lt;br /&gt;
   HTML4 definition of the 'class' attribute.&amp;lt;/a&amp;gt;&lt;br /&gt;
  This meta data profile defines some 'class' attribute values (class names) &lt;br /&gt;
  and their meanings as suggested by a &lt;br /&gt;
  &amp;lt;a href=&amp;quot;http://www.w3.org/TR/WD-htmllink-970328#profile&amp;quot;&amp;gt;&lt;br /&gt;
   draft of &amp;quot;Hypertext Links in HTML&amp;quot;&amp;lt;/a&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;dl&amp;gt;&lt;br /&gt;
   &amp;lt;dt&amp;gt;hmedia&amp;lt;/dt&amp;gt;&lt;br /&gt;
   &amp;lt;dd&amp;gt;&lt;br /&gt;
    Used to describe semantic information associated with Images, Videos and Audio.&lt;br /&gt;
   &amp;lt;/dd&amp;gt;&lt;br /&gt;
   &amp;lt;dt&amp;gt;fn&amp;lt;/dt&amp;gt;&lt;br /&gt;
   &amp;lt;dd&amp;gt;&lt;br /&gt;
    The name of a media&lt;br /&gt;
   &amp;lt;/dd&amp;gt;&lt;br /&gt;
   &amp;lt;dt&amp;gt;contributor&amp;lt;/dt&amp;gt;&lt;br /&gt;
   &amp;lt;dd&amp;gt;&lt;br /&gt;
    A Contributor is any person or organization that takes part in the creation or distribution of the Media&lt;br /&gt;
   &amp;lt;/dd&amp;gt;&lt;br /&gt;
   &amp;lt;dt&amp;gt;photo&amp;lt;/dt&amp;gt;&lt;br /&gt;
   &amp;lt;dd&amp;gt;&lt;br /&gt;
    An embedded Image or Photograph of the Media.&lt;br /&gt;
   &amp;lt;/dd&amp;gt;&lt;br /&gt;
   &amp;lt;dt&amp;gt;player&amp;lt;/dt&amp;gt;&lt;br /&gt;
   &amp;lt;dd&amp;gt;&lt;br /&gt;
    An embedded video or movie of the Media.&lt;br /&gt;
   &amp;lt;/dd&amp;gt;&lt;br /&gt;
   &amp;lt;dt&amp;gt;enclosure&amp;lt;/dt&amp;gt;&lt;br /&gt;
   &amp;lt;dd&amp;gt;&lt;br /&gt;
     Indicates that the referred url is a download of the Media.&lt;br /&gt;
   &amp;lt;/dd&amp;gt;&lt;br /&gt;
  &amp;lt;/dl&amp;gt;&lt;br /&gt;
 &amp;lt;/dd&amp;gt;&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modularity ==&lt;br /&gt;
&lt;br /&gt;
Although media items are sometimes presented on their own they are often found in data structures that are supported by existing microformats. It should therefore be possible to use the hMedia microformat as a child (or in some cases a parent) of these microformats.&lt;br /&gt;
&lt;br /&gt;
=== Media Distribution and Syndication ===&lt;br /&gt;
&lt;br /&gt;
* [[hatom|hAtom]]&lt;br /&gt;
&lt;br /&gt;
Podcast and &amp;lt;abbr title=&amp;quot;Video Podcast&amp;quot;&amp;gt;Vidcast&amp;lt;/abbr&amp;gt; feeds reference a sequence of media items. hMedia can therefore be used as a child element of hAtom. &lt;br /&gt;
&lt;br /&gt;
Please see: [[hmedia#hAtom_and_hMedia|hAtom+hMedia example]].&lt;br /&gt;
&lt;br /&gt;
=== Media Events ===&lt;br /&gt;
&lt;br /&gt;
* [[hcalendar|hCalendar]]&lt;br /&gt;
&lt;br /&gt;
hMedia may used to describe a continuous media stream for example a TV channel. An event or a schedule of events on the channel can be signaled using [[hcalendar#Root_Class_Name|vevent]] as child elements. A combination of hMedia and hCalendar may provide what is necessary to capture a specific event, the media stream information and the timing information.&lt;br /&gt;
&lt;br /&gt;
Please see: [[hmedia#hCalendar_and_hMedia|hCalendar and hMedia]].&lt;br /&gt;
&lt;br /&gt;
=== Media Reviews ===&lt;br /&gt;
&lt;br /&gt;
* [[hreview|hReview]]&lt;br /&gt;
&lt;br /&gt;
A Review about Audio, Video or Images often occurs in media publishing, hMedia reviews can often be published using hReview, capturing the reviewer, the reviewed item, a rating, a description, and the Date of a media review. hMedia may therefore be published as a child element of a [[hreview#Schema|hReview item]]&lt;br /&gt;
&lt;br /&gt;
Please see: [[hmedia#hReview_and_hMedia|hReview and hMedia]].&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
Using Real world Examples found on the [[media-info-examples]] page&lt;br /&gt;
&lt;br /&gt;
=== Images ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hmedia&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;a rel=&amp;quot;enclosure&amp;quot; type=&amp;quot;image/jpeg&amp;quot; href=&amp;quot;http://www.treeswing.net/index.php?showimage=355&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img class=&amp;quot;photo&amp;quot; alt=&amp;quot;Saturday Nights alright for fighting, by treeswing&amp;quot; &lt;br /&gt;
     src=&amp;quot;http://cache1.photoblogs.org/thumbnail/?hash=9bece0678c5610bd4b631d9037286df7&amp;amp;amp;size=450&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Saturday Night's Alright For Fighting&amp;lt;/span&amp;gt;, &lt;br /&gt;
    &amp;lt;em&amp;gt;by &amp;lt;span class=&amp;quot;contributor vcard&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;a class=&amp;quot;url fn&amp;quot; href=&amp;quot;http://www.treeswing.net/&amp;quot;&amp;gt;Treeswing&amp;lt;/a&amp;gt; &lt;br /&gt;
      (&amp;lt;a class=&amp;quot;url&amp;quot; href=&amp;quot;http://www.photoblogs.org/profile/treeswing.net/&amp;quot;&amp;gt;profile&amp;lt;/a&amp;gt;)&lt;br /&gt;
    &amp;lt;/span&amp;gt;&amp;lt;/em&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;hmedia&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Introduction to the Open Media Web&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;object class=&amp;quot;player&amp;quot; type=&amp;quot;application/x-shockwave-flash&amp;quot; data=&amp;quot;http://www.viddler.com/player/1d6265f3/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;param name=&amp;quot;movie&amp;quot; value=&amp;quot;http://www.viddler.com/player/1d6265f3/&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;param name=&amp;quot;allowScriptAccess&amp;quot; value=&amp;quot;always&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;param name=&amp;quot;allowFullScreen&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/object&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&amp;lt;a rel=&amp;quot;enclosure&amp;quot; type=&amp;quot;video/mp4&amp;quot; title=&amp;quot;Download the original source file for this movie&amp;quot; &lt;br /&gt;
    href=&amp;quot;/explore/factoryjoe/videos/2.m4v&amp;quot;&amp;gt;Original&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Audio ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;hmedia&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a rel=&amp;quot;enclosure&amp;quot; type=&amp;quot;audio/mpeg&amp;quot; href=&amp;quot;http://homepage.mac.com/mr.gilbert/.Music/earle_waydownhole.mp3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;contributor vcard&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Steve Earle&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt; - &lt;br /&gt;
    &amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;&amp;quot;Way Down in the Hole&amp;quot; (Tom Waits cover)&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Combined ===&lt;br /&gt;
&lt;br /&gt;
==== hAtom and hMedia ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;div id=&amp;quot;example&amp;quot; class=&amp;quot;hentry hmedia&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2 class=&amp;quot;entry-title&amp;quot;&amp;gt;&amp;lt;a class=&amp;quot;fn&amp;quot; href=&amp;quot;#example&amp;quot; rel=&amp;quot;bookmark&amp;quot;&amp;gt;Introduction to the Open Media Web&amp;lt;/a&amp;gt;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;by &amp;lt;cite class=&amp;quot;author vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Author&amp;lt;/span&amp;gt;&amp;lt;/cite&amp;gt; on:&lt;br /&gt;
&amp;lt;abbr class=&amp;quot;updated&amp;quot; title=&amp;quot;2008-12-14T11:08:00+01:00&amp;quot;&amp;gt;14th Dec, 2008&amp;lt;/abbr&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;entry-content&amp;quot;&amp;gt;&amp;lt;p&amp;gt;The introductory video describing the Open Media Web project and where it's -- roughly -- going!&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;object class=&amp;quot;player&amp;quot; width=&amp;quot;545&amp;quot; height=&amp;quot;451&amp;quot; type=&amp;quot;application/x-shockwave-flash&amp;quot; data=&amp;quot;http://www.viddler.com/player/1d6265f3/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;param name=&amp;quot;movie&amp;quot; value=&amp;quot;http://www.viddler.com/player/1d6265f3/&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;param name=&amp;quot;allowScriptAccess&amp;quot; value=&amp;quot;always&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;param name=&amp;quot;allowFullScreen&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/object&amp;gt;&lt;br /&gt;
 &amp;lt;p&amp;gt;Download: &amp;lt;a rel=&amp;quot;enclosure&amp;quot; type=&amp;quot;video/mp4;length=18454938&amp;quot; href=&amp;quot;http://www.viddler.com/explore/factoryjoe/videos/2.m4v&amp;quot;&amp;gt;&lt;br /&gt;
   Original&amp;lt;/a&amp;gt;&lt;br /&gt;
 &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== hCalendar and hMedia ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;div class=&amp;quot;hmedia&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;bip-play-emp&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;object class=&amp;quot;player&amp;quot; height=&amp;quot;395&amp;quot; width=&amp;quot;640&amp;quot; &lt;br /&gt;
  data=&amp;quot;http://www.bbc.co.uk/emp/9player.swf?revision=7276&amp;amp;amp;embedPageUrl=&lt;br /&gt;
  http://www.bbc.co.uk/iplayer/episode/b00gd1mr/Doctor_Who_The_Next_Doctor/#anchor-info-dialog&amp;amp;amp;domId=bip-play-emp&lt;br /&gt;
  &amp;amp;amp;config=http://www.bbc.co.uk/emp/iplayer/config.xml&lt;br /&gt;
  &amp;amp;amp;playlist=http://www.bbc.co.uk/iplayer/playlist/b00gd1mr&lt;br /&gt;
  &amp;amp;amp;guidance=unset&amp;quot; &lt;br /&gt;
  name=&amp;quot;bbc_emp_embed_bip-play-emp&amp;quot; &lt;br /&gt;
  id=&amp;quot;bbc_emp_embed_bip-play-emp&amp;quot; &lt;br /&gt;
  type=&amp;quot;application/x-shockwave-flash&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;param name=&amp;quot;movie&amp;quot; value=&amp;quot;http://www.bbc.co.uk/emp/9player.swf?revision=7276&amp;amp;amp;embedPageUrl=&lt;br /&gt;
  http://www.bbc.co.uk/iplayer/episode/b00gd1mr/Doctor_Who_The_Next_Doctor/#anchor-info-dialog&lt;br /&gt;
  &amp;amp;amp;domId=bip-play-emp&amp;amp;amp;config=http://www.bbc.co.uk/emp/iplayer/config.xml&lt;br /&gt;
  &amp;amp;amp;playlist=http://www.bbc.co.uk/iplayer/playlist/b00gd1mr&lt;br /&gt;
  &amp;amp;amp;guidance=unset&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;param name=&amp;quot;allowScriptAccess&amp;quot; value=&amp;quot;always&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;param name=&amp;quot;allowFullScreen&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;param name=&amp;quot;wmode&amp;quot; value=&amp;quot;default&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;param name=&amp;quot;quality&amp;quot; value=&amp;quot;high&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/object&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;vevent&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;a class=&amp;quot;url fn&amp;quot; href=&amp;quot;http://www.bbc.co.uk/iplayer/episode/b00gd1mr/Doctor_Who_The_Next_Doctor&amp;quot;&amp;gt;&lt;br /&gt;
  Doctor Who: The Next Doctor&lt;br /&gt;
  &amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;/span&amp;gt;,&lt;br /&gt;
   Broadcast on: &amp;lt;span class=&amp;quot;location&amp;quot;&amp;gt;BBC One&amp;lt;/span&amp;gt;,  &lt;br /&gt;
  &amp;lt;abbr class=&amp;quot;dtstart&amp;quot; title=&amp;quot;2008-12-25T18:10:00+01:00&amp;quot;&amp;gt;6:00pm Thursday 25th December&amp;lt;/abbr&amp;gt;, &lt;br /&gt;
   Duration: &lt;br /&gt;
  &amp;lt;abbr class=&amp;quot;duration&amp;quot; title=&amp;quot;PT60M&amp;quot;&amp;gt;60&amp;lt;/abbr&amp;gt; minutes,&lt;br /&gt;
   Available until: &lt;br /&gt;
  &amp;lt;abbr class=&amp;quot;dtend&amp;quot; title=&amp;quot;2009-01-08T15:49:00+01:00&amp;quot;&amp;gt;3:49pm Thursday 8th January&amp;lt;/abbr&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== hReview and hMedia ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;div class=&amp;quot;hreview&amp;quot;&amp;gt;&lt;br /&gt;
 Reviewed by: &amp;lt;span class=&amp;quot;reviewer vcard&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;anonymous&amp;lt;/span&amp;gt;, &lt;br /&gt;
 &amp;lt;/span&amp;gt;&lt;br /&gt;
  On: &amp;lt;abbr class=&amp;quot;dtreviewed&amp;quot; title=&amp;quot;2009-01-03&amp;quot;&amp;gt;January 3rd, 2009&amp;lt;/abbr&amp;gt;.&lt;br /&gt;
 &amp;lt;div class=&amp;quot;item hmedia&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;a class=&amp;quot;url fn&amp;quot; rel=&amp;quot;enclosure&amp;quot; href=&amp;quot;http://mediaweb.musicradio.com/mp3/Mis-takes.mp3&amp;quot; type=&amp;quot;audio/mpeg&amp;quot;&amp;gt;Mis-takes&amp;lt;/a&amp;gt;&lt;br /&gt;
      by: &amp;lt;span class=&amp;quot;contributor vcard&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;The Charlatans&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;div&amp;gt;Rating: &amp;lt;abbr class=&amp;quot;rating&amp;quot; title=&amp;quot;4&amp;quot;&amp;gt;****&amp;lt;/abbr&amp;gt; out of 5 stars&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;description&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;This is a great track from The Charlatans latest album You Cross My Path, well worth a listen.&amp;lt;/p&amp;gt; &lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;/div&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
&lt;br /&gt;
* [http://visitmix.com/Opinions/I-3-hMedia Mix Online] discusses two examples with consume hMedia with [[oomph|Oomph]], one with music on [http://rhizohm.net/music Rhizohm] and one with photos on [http://thunderkick.us/index_hMedia.html Thunderkick].&lt;br /&gt;
* The [http://weborganics.co.uk/hCast/ Hypermedia Podcast] uses [[hmedia|hMedia]] + [[hatom|hAtom]] to generate a [http://search.yahoo.com/mrss MediaRSS] feed ([[hmedia#hAtom_and_hMedia|as demonstrated above]])&lt;br /&gt;
* There is a web-service that extracts [[hmedia|hMedia]] + [[hatom|hAtom]] as [http://search.yahoo.com/mrss MediaRSS] available at [http://transformr.co.uk Transformr]&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
* Dougal Campbell first talks about [http://microformats.org/discuss/mail/microformats-discuss/2005-July/000229.html microformats for various types of media?] on Jul 13th 2005&lt;br /&gt;
&lt;br /&gt;
* Thu Sep 1st 2005, a discussion about a Playlist Microformat by Lucas Gonze, [http://microformats.org/discuss/mail/microformats-discuss/2005-September/000835.html hPlaylist]&lt;br /&gt;
&lt;br /&gt;
* Tantek Çelik starts Initial exploration about a [http://microformats.org/discuss/mail/microformats-discuss/2005-September/000843.html media-info microformat] on Sep 3rd 2005&lt;br /&gt;
&lt;br /&gt;
* Joshua Kinberg discusses a [http://microformats.org/discuss/mail/microformats-discuss/2005-September/000992.html media/enclosure microformat] on Sep 20th 2005&lt;br /&gt;
&lt;br /&gt;
* On November 2nd 2005 Chris Messina discusses [http://microformats.org/discuss/mail/microformats-discuss/2005-November/001833.html a microformat for audio track metadata].&lt;br /&gt;
&lt;br /&gt;
* On December 6th 2005 Charles Iliya Krempeaux discusses a [http://microformats.org/discuss/mail/microformats-discuss/2005-December/002292.html TV show microformat].&lt;br /&gt;
&lt;br /&gt;
* On Jan 1st 2006 Tantek Çelik calls for a simple media microformat which describes the 80/20 of information about a particular piece of media and nothing more. see: [http://microformats.org/discuss/mail/microformats-discuss/2006-January/002551.html]&lt;br /&gt;
&lt;br /&gt;
* March 24th 2006 Rod Begbie [http://microformats.org/discuss/mail/microformats-discuss/2006-March/003383.html Proposed a Music microformat].&lt;br /&gt;
&lt;br /&gt;
* Enric discusses a [http://microformats.org/discuss/mail/microformats-discuss/2006-June/004419.html media file example of hAtom] on Jun 13th 2006&lt;br /&gt;
&lt;br /&gt;
* Steve Williams (Digg) discusses [http://microformats.org/discuss/mail/microformats-discuss/2006-August/005139.html Media Metadata, Specifically Video Thumbnails] on Aug 16th 2006&lt;br /&gt;
&lt;br /&gt;
* First [http://microformats.org/discuss/mail/microformats-discuss/2007-February/008626.html hMedia microformat] Propsal by Chris Newell on Feb 8th 2007&lt;br /&gt;
&lt;br /&gt;
* More interest in a [http://microformats.org/discuss/mail/microformats-discuss/2007-February/008848.html music/media-info microformat] by Marian Steinbach on Feb 26th 2007 and later on [http://microformats.org/discuss/mail/microformats-new/2007-March/000028.html Microformats New]&lt;br /&gt;
&lt;br /&gt;
* Martin McEvoy Renews interest in a [http://microformats.org/discuss/mail/microformats-new/2008-November/001861.html Media Microformat] on Nov 9th 2008&lt;br /&gt;
&lt;br /&gt;
* hMedia 0.1 Draft Specification 2009-01-04&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
=== Normative References ===&lt;br /&gt;
&lt;br /&gt;
* [[hcard]]&lt;br /&gt;
* [[rel-design-pattern]]&lt;br /&gt;
* [[rel-enclosure]]&lt;br /&gt;
&lt;br /&gt;
=== Informative References ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.w3.org/TR/REC-html40/struct/objects.html#h-13.2 HTML4 Image element]&lt;br /&gt;
* [http://www.w3.org/TR/REC-html40/struct/objects.html#h-13.3 HTML4 Object element]&lt;br /&gt;
* [http://www.w3.org/TR/REC-html40/struct/links.html#adef-rel HTML4 rel Definition]&lt;br /&gt;
* [http://www.alistapart.com/articles/byebyeembed/ Article on why you should not use embed] from A List Apart.&lt;br /&gt;
&lt;br /&gt;
== Similar Work ==&lt;br /&gt;
&lt;br /&gt;
* [[media-chapters|Media Chapters]]&lt;br /&gt;
* [[haudio|hAudio]]&lt;br /&gt;
* [[video-info-examples|Video Info]]&lt;br /&gt;
* [[photo-note-examples|Photo Notes]]&lt;br /&gt;
&lt;br /&gt;
== Work in progress ==&lt;br /&gt;
&lt;br /&gt;
=== Brainstorming ===&lt;br /&gt;
&lt;br /&gt;
Do you want to help develop the next version of [[hmedia|hMedia]]? Please add your thoughts and insight on the [[hmedia-brainstorming]] page.&lt;br /&gt;
&lt;br /&gt;
=== Discussions ===&lt;br /&gt;
&lt;br /&gt;
* Please forward questions and ideas to the [http://microformats.org/mailman/listinfo/microformats-new Microformats New] mailing list.&lt;br /&gt;
&lt;br /&gt;
=== Issues ===&lt;br /&gt;
&lt;br /&gt;
Please see: [[hmedia-issues]]&lt;br /&gt;
&lt;br /&gt;
{{Template:hmedia-related-pages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Draft Specifications]]&lt;/div&gt;</summary>
		<author><name>Karstenj</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=oomph-issues&amp;diff=40190</id>
		<title>oomph-issues</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=oomph-issues&amp;diff=40190"/>
		<updated>2009-08-11T21:34:45Z</updated>

		<summary type="html">&lt;p&gt;Karstenj: /* issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;Oomph issues&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Issues with [[oomph]].&lt;br /&gt;
&lt;br /&gt;
== issues ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Apparent problems parsing [[hCards]] and [[hCalendar]] events on [http://en.wikipedia.org/wiki/Thomas_Edison Wikipedia: Edison] page (from report in email). [[User:Tantek|Tantek]] 21:59, 4 July 2009 (UTC)  {corrected page name [[User:Bsd|Bsd]] 20:39, 7 July 2009 (UTC)}&lt;br /&gt;
** This page has changed as the nested (contained) hCards and hCalendar events were disabled on the Wikipedia template on 5 July.   The main issue was that &amp;quot;org&amp;quot; values from the [[hcard-parsing#nested_hCards|nested hCards]] (invalid due to no &amp;quot;n&amp;quot; values) ignored the boundary and were passed to &amp;quot;org&amp;quot; on the root hCard.  A second issue that still exists on this page is that it crashes the MIX hcard-to-vcard service; may be because values for &amp;quot;n&amp;quot; cannot be extracted from the three-name &amp;quot;fn&amp;quot; value (&amp;quot;Thomas Alva Edison&amp;quot;) that is provided. [[User:Bsd|Bsd]] 21:09, 7 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
This is fixed in Oomph V2.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Other issues with Oomph are logged at [http://oomph.codeplex.com/Thread/List.aspx Codeplex]&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[oomph]]&lt;br /&gt;
* [[hCard]]&lt;br /&gt;
* [[hCalendar]]&lt;/div&gt;</summary>
		<author><name>Karstenj</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=value-class-pattern&amp;diff=40183</id>
		<title>value-class-pattern</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=value-class-pattern&amp;diff=40183"/>
		<updated>2009-08-10T21:38:22Z</updated>

		<summary type="html">&lt;p&gt;Karstenj: /* Blog Posts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;Value Class Pattern&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The value class pattern is derived from [[hCard#Value_excerpting|value-excerpting]] in hCard.&lt;br /&gt;
&lt;br /&gt;
''The editors believe the value-class-pattern to be feature complete and ready for use in markup. Implementers are encouraged to update accordingly and provide [[value-class-pattern-feedback|feedback]]. '''Note''', the precise parsing behavior could change in response to implementer feedback, but the core methods are stable. You should watch this page for updates.''&lt;br /&gt;
&lt;br /&gt;
See also, the [http://microformats.org/blog/2009/05/12/value-class-pattern/ blog announcement].&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
; Editors&lt;br /&gt;
: &amp;lt;span class=&amp;quot;vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;[[User:BenWard|Ben Ward]]&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
: &amp;lt;span class=&amp;quot;vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;[[User:Tantek|Tantek Çelik]]&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
; Short URL&lt;br /&gt;
: &amp;lt;kbd&amp;gt;http://tr.im/valueclass&amp;lt;/kbd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sometimes, only a part of an element's content is to be used as the value of a microformat property. This may occur when a property has optional subproperties, such as &amp;lt;code&amp;gt;tel: type&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;tel: value&amp;lt;/code&amp;gt; in [[hCard]]. Other times, the most appropriate structure for a property may include other content.&lt;br /&gt;
&lt;br /&gt;
For these purposes, the special class name &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is used to mark-up the relevant data excerpt from larger element content.&lt;br /&gt;
&lt;br /&gt;
==Simple Examples==&lt;br /&gt;
&lt;br /&gt;
Here is markup for a home phone number:&lt;br /&gt;
&lt;br /&gt;
vCard fragment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;TEL;TYPE=HOME:+1.415.555.1212&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hCard fragment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;tel&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Home&amp;lt;/span&amp;gt;:&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;+1.415.555.1212&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; of &amp;lt;code&amp;gt;tel&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;+1.415.555.1212&amp;lt;/code&amp;gt;, not &amp;lt;code&amp;gt;Home: +1.415.555.1212&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Sometimes the value for a microformats property must be split into multiple pieces in the content of the element representing that property. Multiple elements with a class name of &amp;quot;value&amp;quot; (value elements) can be used to extract and concatenate these pieces into a single value for microformats properties which expect simple strings or tel values.&lt;br /&gt;
&lt;br /&gt;
Another example, this time using a localized (British) telephone number:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;tel&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Home&amp;lt;/span&amp;gt;:&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;+44&amp;lt;/span&amp;gt; (0) &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;1223 123 123&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the valid ''data'' for the telephone number is &amp;lt;samp&amp;gt;+441223123123&amp;lt;/samp&amp;gt;, but the way in which phone number is presented in Britain will include the &amp;lt;samp&amp;gt;(0)&amp;lt;/samp&amp;gt;, for local dialling. That is, from anywhere in the world you may dial &amp;lt;kbd&amp;gt;+441223123123&amp;lt;/kbd&amp;gt;, or from within Britain you may dial &amp;lt;kbd&amp;gt;01223123123&amp;lt;/kbd&amp;gt;. Common local publishing interferes with the data, since dialling &amp;lt;kbd&amp;gt;'''+440'''1223123123&amp;lt;/kbd&amp;gt; is an invalid number.&lt;br /&gt;
&lt;br /&gt;
In the mark-up, two &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; classes target the part of the telephone number string that makes an international, valid number, whilst allowing conventional presentation.&lt;br /&gt;
&lt;br /&gt;
Another example, adding a place name to a [[geo]] co-ordinate:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;I'm loitering outside The Bricklayer's Arms&lt;br /&gt;
  &amp;lt;span class=&amp;quot;geo&amp;quot;&amp;gt;&lt;br /&gt;
    51° 30' 48.45&amp;quot;, -0° 8' 53.23&amp;quot;&lt;br /&gt;
    (&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;51.513458;-0.14812&amp;lt;/span&amp;gt;)&lt;br /&gt;
  &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Whilst the entire string is a geo point, it's only the decimal encoded co-ordinates which must be consumed by a microformats parser, so the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; class isolates it from the degrees form, which the publisher includes for completeness.&lt;br /&gt;
&lt;br /&gt;
==Basic Parsing==&lt;br /&gt;
# The value class pattern only applies to properties which are simple strings, enumerated values, telephone numbers, and datetimes. The value class pattern does not affect parsing of properties of type email, URL, URI, UID.&lt;br /&gt;
# Where an element with such a microformat property class name has a descendant with class name &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; (a &amp;quot;value&amp;quot; element), parsers should use the following portion of that element:  &lt;br /&gt;
## if the value element is an &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt; element, then use the element's &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; attribute value.&lt;br /&gt;
## if the value element is an &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; element, then use the element's &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute value.&lt;br /&gt;
## for any other element, use its inner-text.&lt;br /&gt;
# Where there are multiple descendants of a property with class name of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; (multiple value elements)&lt;br /&gt;
## if the microformats property expects a simple string, enumerated value, or telephone number, then the values extracted from the value elements should be concatenated ''without'' inserting additional characters or white-space.&lt;br /&gt;
## if the microformats property expects a datetime value, see the [[#Date_and_time_parsing|Date Time Parsing]] section.&lt;br /&gt;
# Descendants with class of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; must not be parsed deeper than one level. That is, where an element &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt; with class &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; has a &amp;lt;em&amp;gt;descendant&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;bar&amp;lt;/code&amp;gt; with class &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;, the content of &amp;lt;strong&amp;gt;&amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt;&amp;lt;/strong&amp;gt; is taken as the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;. Nesting additional elements with class of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; cannot be used to further isolate a property's value.&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
 &amp;lt;p class=&amp;quot;description&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;em class=&amp;quot;value&amp;quot;&amp;gt;Puppies Rule!&amp;lt;/em&amp;gt;&lt;br /&gt;
    &amp;lt;strong&amp;gt;But kittens are better!&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example, &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt; has a child ‘&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;’, and that child has a ''grandchild'' ‘&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;’. However, the parsing of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; classes stops at the first level, so the data for &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt; is: &amp;lt;samp&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;em class=&amp;quot;value&amp;quot;&amp;gt;Puppies Rule!&amp;amp;lt;/em&amp;gt;&amp;amp;lt;strong&amp;gt;But kittens are better!&amp;amp;lt;/strong&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/samp&amp;gt;, not just &amp;lt;samp&amp;gt;Puppies Rule!&amp;lt;/samp&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Date and time values ==&lt;br /&gt;
Some microformats properties expect an ISO8601 datetime value, e.g.  [[hCalendar]] &amp;lt;code&amp;gt;dtstart&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;dtend&amp;lt;/code&amp;gt; or [[hAtom]] &amp;lt;code&amp;gt;published&amp;lt;/code&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Authors may use the value class pattern to separately specify the date and the time, which are then combined to specify a single datetime value.&lt;br /&gt;
&lt;br /&gt;
Example, this hCalendar 'dtstart' property with 'value' elements: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The weekly dinner will be on &lt;br /&gt;
    &amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;abbr class=&amp;quot;value&amp;quot; title=&amp;quot;2008-06-24&amp;quot;&amp;gt;this Tuesday&amp;lt;/abbr&amp;gt; &lt;br /&gt;
     at &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;18:30&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
produces the following 'dtstart' value:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
2008-06-24T18:30:00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and iCalendar converters produce the following DTSTART:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
DTSTART:20080624T183000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The lack of a timezone indicates a &amp;quot;floating&amp;quot; datetime, that is a datetime independent of any particular timezone. Examples of floating datetimes could be an alarm clock you set to ring at 7am, or the common 9am-5pm workday.&lt;br /&gt;
&lt;br /&gt;
=== Date and time parsing ===&lt;br /&gt;
For all date time properties (as defined in their respective microformats specifications), the following rules apply in addition to (and in some cases replacing) the above value class pattern parsing rules.&lt;br /&gt;
&lt;br /&gt;
When a &amp;quot;value&amp;quot; element is found, parse a value from the element as follows:&lt;br /&gt;
* if the element is an &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt; element, then use the element's &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; attribute value.&lt;br /&gt;
* if the element is an &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; element, then use the element's &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute value.&lt;br /&gt;
* for any other element, use its inner-text.&lt;br /&gt;
* if the value has both a specific ISO8601 date and a specific time, use those and stop looking for &amp;quot;value&amp;quot; elements.&lt;br /&gt;
* if the value has *only* a specific date, specifically, fits the following ISO8601 date patterns (i.e. as documented in the [http://en.wikipedia.org/wiki/ISO_8601 Wikipedia summary of ISO8601])&lt;br /&gt;
** YYYY-MM-DD&lt;br /&gt;
** YYYY-DDD&lt;br /&gt;
** then use that as the date value.  For the purposes of the value class pattern, the hyphens &amp;quot;-&amp;quot; separating the year, month, day and/or ordinal day are required.&lt;br /&gt;
** ignore any further &amp;quot;value&amp;quot; elements that specify the date.&lt;br /&gt;
* if the value has *only* a specific time (with or without timezone), parse it for a time value that can match any of the following:&lt;br /&gt;
** HH:MM:SS-XX:YY&lt;br /&gt;
** HH:MM:SS+XX:YY&lt;br /&gt;
** HH:MM:SS-XXYY&lt;br /&gt;
** HH:MM:SS+XXYY&lt;br /&gt;
** HH:MM:SSZ&lt;br /&gt;
** HH:MM:SS&lt;br /&gt;
** HH:MM-XX:YY&lt;br /&gt;
** HH:MM+XX:YY&lt;br /&gt;
** HH:MM-XXYY&lt;br /&gt;
** HH:MM+XXYY&lt;br /&gt;
** HH:MMZ&lt;br /&gt;
** HH:MM&lt;br /&gt;
** HH is the 24 hour &amp;quot;hours&amp;quot; in the time, from 00 to 24, with optional leading 0 for values less than 10.&lt;br /&gt;
** MM are the minutes from 00 to 59&lt;br /&gt;
** SS are the optional seconds from 00 to 59 (60 for a leap second). If omitted, infer 00 seconds.&lt;br /&gt;
** XX is the time zone hours offset, from 00 to 12 with optional leading 0 for values less than 10.&lt;br /&gt;
** YY is the time zone minutes offset, from 00 to 59, though in practice only 00, 15, 30, 45 minute offsets are used in global timezones.&lt;br /&gt;
** Z is the literal 'Z' to indicate GMT.&lt;br /&gt;
** For the purposes of the value class pattern, the colons &amp;quot;:&amp;quot; separating the hour, minutes, seconds are required. &lt;br /&gt;
** However the colons &amp;quot;:&amp;quot; separating the hours and minutes of any timezone offset are ''optional'' and discouraged in order to make it less likely that a timezone offset will be confused for a time.&lt;br /&gt;
** Under strong consideration: case insensitive { }&amp;quot;am&amp;quot;|{ }&amp;quot;a.m.&amp;quot; suffix to treat an HH value of 12 as 00, or a case-insensitive { }&amp;quot;pm&amp;quot;|{ }&amp;quot;p.m.&amp;quot; suffix to add 12 to HH value less than 12 - per [http://en.wikipedia.org/wiki/12-hour_clock Wikipedia article on the 12 hour clock]. Note: [[X2V]] has implemented this.&lt;br /&gt;
*** HH:MM:SSam&lt;br /&gt;
*** HH:MM:SSpm&lt;br /&gt;
*** HH:MMam&lt;br /&gt;
*** HH:MMpm&lt;br /&gt;
*** HHam&lt;br /&gt;
*** HHpm&lt;br /&gt;
*** where &amp;quot;am&amp;quot; and &amp;quot;pm&amp;quot; mean &amp;quot;am or a.m.&amp;quot; and &amp;quot;pm or p.m.&amp;quot; &lt;br /&gt;
*** when MM is omitted, infer 00 minutes.&lt;br /&gt;
** ignore any further &amp;quot;value&amp;quot; elements that specify the time.&lt;br /&gt;
* if the value has *only* a specific timezone, parse it for a time zone value that can match any of the following:&lt;br /&gt;
** -XX:YY&lt;br /&gt;
** +XX:YY&lt;br /&gt;
** -XXYY&lt;br /&gt;
** +XXYY&lt;br /&gt;
** -XX&lt;br /&gt;
** +XX&lt;br /&gt;
** Z&lt;br /&gt;
** XX is the time zone hours offset, from 00 to 12 with optional leading 0 for values less than 10.&lt;br /&gt;
** YY is the time zone minutes offset, from 00 to 59, though in practice only 00, 15, 30, 45 minute offsets are used in global timezones.&lt;br /&gt;
** Z is the literal 'Z' to indicate GMT.&lt;br /&gt;
** ignore any further &amp;quot;value&amp;quot; elements that specify the timezone.&lt;br /&gt;
&lt;br /&gt;
If by parsing the &amp;quot;value&amp;quot; element(s), at least a specific date has been found, then the &amp;quot;value&amp;quot; is overall valid, and the parser assembles the overall datetime value by concatenating the specific date, &amp;quot;T&amp;quot; and specific time (if time was specified, with 00 seconds implied if no seconds are provided), and specific timezone (if timezone and a specific time was specified).&lt;br /&gt;
* YYYY-MM-DD - no time specified&lt;br /&gt;
* YYYY-MM-DDTHH:MM:SS - time specified but no timezone.  This is a floating time.&lt;br /&gt;
* YYYY-MM-DDTHH:MM:SS-XXYY or&lt;br /&gt;
* YYYY-MM-DDTHH:MM:SSZ or&lt;br /&gt;
* YYYY-MM-DDTHH:MM:SS+XXYY - both time and timezone were specified.&lt;br /&gt;
&lt;br /&gt;
iCalendar converters in addition must do the following:&lt;br /&gt;
* remove any dash &amp;quot;-&amp;quot; separators in the date.&lt;br /&gt;
* remove any colon &amp;quot;:&amp;quot; separators in the time.&lt;br /&gt;
* perform datetime math on any +/- relative timezone value, and produce an effective UTC value ending with &amp;quot;Z&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Atom converters in addition must do the following:&lt;br /&gt;
* normalize all date and datetime values to RFC 3339.&lt;br /&gt;
&lt;br /&gt;
=== derivation and tests ===&lt;br /&gt;
The handling of date and time values in the value class pattern was originally [[value-excerption-pattern-brainstorming#date_and_time_separation|brainstormed on the value-excerption-pattern-brainstorming]] page and derived from that analysis and feedback. For the curious, historical details may be found there, along with additional thoughts for extension.&lt;br /&gt;
&lt;br /&gt;
See [[value-class-date-time-tests]] for test cases.&lt;br /&gt;
&lt;br /&gt;
=== format specific optimizations ===&lt;br /&gt;
The following are format specific optimizations under strong consideration that make use of the value-class-pattern. Note: [[X2V]] has implemented this for hCalendar.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;span style=&amp;quot;font-size:smaller&amp;quot;&amp;gt;short URL for this section&amp;lt;/span&amp;gt;&lt;br /&gt;
:http://tr.im/vcpfso&lt;br /&gt;
&lt;br /&gt;
==== hCalendar dtend implied date ====&lt;br /&gt;
Typically events that start and end the same day only display the date of the event once (makes sense per the DRY [[principle]]) (real world examples: [http://upcoming.yahoo.com/event/3010807/ Upcoming], ... more examples with URLs would help for thoroughness).  &lt;br /&gt;
&lt;br /&gt;
Thus it would be convenient if we could imply an [[hCalendar]] event &amp;quot;dtend&amp;quot; date from its &amp;quot;dtstart&amp;quot; date when only the time (and optionally timezone) was specified for its &amp;quot;dtend&amp;quot;, e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;vevent&amp;quot;&amp;gt;&lt;br /&gt;
 The &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;party&amp;lt;/span&amp;gt; will be on &lt;br /&gt;
 &amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;2009-06-26&amp;lt;/span&amp;gt;, from&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;19:00&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; to &lt;br /&gt;
 &amp;lt;span class=&amp;quot;dtend&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;22:00&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To simplify this further for authors, hCalendar processors could treat the specifying of just the time per the value-class-pattern date and time value rules, and thus eliminate the need for the &amp;quot;value&amp;quot; span inside the &amp;quot;dtend&amp;quot; span:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;vevent&amp;quot;&amp;gt;&lt;br /&gt;
 The &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;party&amp;lt;/span&amp;gt; will be on &lt;br /&gt;
 &amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;2009-06-26&amp;lt;/span&amp;gt;, from&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;19:00&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; to &lt;br /&gt;
 &amp;lt;span class=&amp;quot;dtend&amp;quot;&amp;gt;22:00&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hCalendar to iCalendar converters should produce the following iCalendar fragment (as part of a valid .ics file) from either of the above two examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
BEGIN:VEVENT&lt;br /&gt;
SUMMARY:party&lt;br /&gt;
DTSTART:20090626T190000&lt;br /&gt;
DTEND:20090626T220000&lt;br /&gt;
END:VEVENT&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: [[X2V]] has implemented this.&lt;br /&gt;
&lt;br /&gt;
Examples &amp;quot;in the wild&amp;quot;:&lt;br /&gt;
* http://microformats.org/wiki/events/2009-08-12-nyc-workshop (real world example, but on this wiki).&lt;br /&gt;
&lt;br /&gt;
==== hAtom updated implied date ====&lt;br /&gt;
Similarly, in blog posts that indicate both when they were &amp;quot;published&amp;quot; and &amp;quot;updated&amp;quot;, the date is usually only displayed once, typically when &amp;quot;published&amp;quot; (real world examples with URLs would help for thoroughness).&lt;br /&gt;
&lt;br /&gt;
Thus it would be convenient if we could imply an [[hAtom]] entry &amp;quot;updated&amp;quot; date from its &amp;quot;published&amp;quot; date when only the time (and optionally timezone) was specified for its &amp;quot;updated&amp;quot;, e.g. for a blog post that was updated the same day:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;entry-summary&amp;quot;&amp;gt;short blog post example&amp;lt;/span&amp;gt;&lt;br /&gt;
 was published on &amp;lt;span class=&amp;quot;published&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;2009-08-01&amp;lt;/span&amp;gt; at &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;12:06&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 and updated at &amp;lt;span class=&amp;quot;updated&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;12:10&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To simplify this further for authors, hAtom processors could treat the specifying of just the time per the value-class-pattern date and time value rules, and thus eliminate the need for the &amp;quot;value&amp;quot; span inside the &amp;quot;updated&amp;quot; span:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;entry-summary&amp;quot;&amp;gt;short blog post example&amp;lt;/span&amp;gt;&lt;br /&gt;
 was published on &amp;lt;span class=&amp;quot;published&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;2009-08-01&amp;lt;/span&amp;gt; at &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;12:06&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 and updated at &amp;lt;span class=&amp;quot;updated&amp;quot;&amp;gt;12:10&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Parsing value from a &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute==&lt;br /&gt;
The &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; class name allows the publisher to indicate the data value for a parent property is contained in the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute of an element, rather than the inner-text.&lt;br /&gt;
&lt;br /&gt;
This can be used to provide a synonym within content, or used to quietly publish alternate forms of information for microformats parsing, without affecting the consumption of content.&lt;br /&gt;
&lt;br /&gt;
For example, you can use casual localization with dates:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;It was &lt;br /&gt;
 &amp;lt;span class='dtstart'&amp;gt;&lt;br /&gt;
  &amp;lt;span class='value-title' title='2008'&amp;gt;last year&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/span&amp;gt;&lt;br /&gt;
  that I realised my addiction to cashew nuts would cost this country so dear.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parsing rules for &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; are the same as for &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; above, with the following change:&lt;br /&gt;
&lt;br /&gt;
* Where a microformats property has a child element with class name of &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt;, the content of the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute of that element must be parsed, rather than the portion of the element that would be parsed for a class name of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Using &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; to publish machine-data===&lt;br /&gt;
&lt;br /&gt;
The initial usage of &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; is used to publish alternate, parsable forms of property values in a visible context without the use of the &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; element whose semantics already support interpretation of the 'title' attribute as an expanded, more precise form of the content. &lt;br /&gt;
&lt;br /&gt;
Experience has found that there are some cases in microformats where a number of publishers want to include a precisely accurate and parsable value for a property but do not want it to be visible in their page, even as a tooltip.&lt;br /&gt;
&lt;br /&gt;
For example, full [[ISO8601]] datetimes may be confusing to readers of the page (as a tooltip or when read aloud by a screen reader), and enumerated values such as the &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; subproperty of hCard's &amp;lt;code&amp;gt;tel&amp;lt;/code&amp;gt; property use US-English terms, which are not part of pages in any other language.&lt;br /&gt;
&lt;br /&gt;
Since both of those scenarios have shown to be obstacles for a number of publishers, for these cases, and these alone, there exists a further extension of value-excerption. This extension allows the parsable form of the property to be published ‘silently’ immediately adjacent with the respective local visible content.&lt;br /&gt;
&lt;br /&gt;
Here is an example, with the required use of a first child element with class name &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p class='tel' lang='en-gb'&amp;gt;&lt;br /&gt;
  &amp;lt;span class='type'&amp;gt;&lt;br /&gt;
    &amp;lt;span class='value-title' title='cell'&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
      mobile&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;span class='value'&amp;gt;+44 7773 000 000&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;samp&amp;gt;cell&amp;lt;/samp&amp;gt; value is parsed for the 'type' subproperty, but &amp;lt;samp&amp;gt;mobile&amp;lt;/samp&amp;gt; is presented to the user.&lt;br /&gt;
&lt;br /&gt;
In the case of dates:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p class='dtstart'&amp;gt;&lt;br /&gt;
  &amp;lt;span class='value-title' title='2009-03-14T16:28-0600'&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
  March 14th 2009, around half-past four&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
A microformats parser will read the ISO8601 format datetime &amp;lt;samp&amp;gt;2009-03-14T16:28-0600&amp;lt;/samp&amp;gt;, but users will only see &amp;lt;samp&amp;gt;March 14th 2009, around half-past four&amp;lt;/samp&amp;gt;. Testing has shown that the ISO8601 datetime above does not get exposed to any user at all.&lt;br /&gt;
&lt;br /&gt;
===Parsing machine-data &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Browsers collapse the &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; span down to a width of &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, effectively providing no visual rendering, whilst keeping the element in the DOM. With no physical dimensions, there is no ‘hover’ state, so no tooltip is revealed. Furthermore, the empty element is not passed to assistive technology layers such as VoiceOver.  Screen readers do not read the contents of the title attribute of an empty &amp;lt;code&amp;gt;span&amp;lt;/code&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
We conducted [[value-excerption-value-title-test|thorough testing]] of these parsing behaviors to ensure accessibility.&lt;br /&gt;
&lt;br /&gt;
''Note: Whilst the &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; element is more gracefully written without whitespace inner-text (or as self-closing &amp;lt;code&amp;gt;&amp;amp;lt;foo /&amp;gt;&amp;lt;/code&amp;gt; element in XHTML), current tools such as WYSIWYG editors and HTML-Tidy will erroneously discard such elements, resulting in parsable data being thrown away by some tools. As such, &amp;lt;code&amp;gt;&amp;amp;lt;span class='value-title'&amp;gt; &amp;amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;, including a single whitespace character between the opening and closing tag, is the required pattern for authors, at this time.''&lt;br /&gt;
&lt;br /&gt;
Parsing this final &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; extension imposes some stricter restrictions on usage. These restrictions exist to reduce the impact of &amp;lt;abbr title=&amp;quot;Don't Repeat Yourself&amp;quot;&amp;gt;DRY&amp;lt;/abbr&amp;gt; violations, reduce the opportunity for sites to spoof data, and encourage best practice for maintaining both forms of data accurately.&lt;br /&gt;
&lt;br /&gt;
Where an element with class &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; is to be parsed as data for a property, and that element also contains no non-whitespace content (hereafter referred to as ‘empty’), the following rules apply:&lt;br /&gt;
&lt;br /&gt;
* The ‘empty’ value-title element must be the '''first, non-whitespace child''' of the property element. That is, it should follow immediately after the property is declared, before the human-readable form, and without any additional nesting.&lt;br /&gt;
* The ‘empty’ value-title element can only be used for specific properties. Microformat specifications must explicitly state which properties may be used with this extension of the value-class-pattern.&lt;br /&gt;
* Where an ‘empty’ value-title element is to be used as the single property value, it must be the ''only'' such &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; content. That is, the first instance of a conforming &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; element overrides all other &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; siblings and/or cousins.&lt;br /&gt;
* Tools written to perform Conformance Testing and/or Validation of microformats ''should'' attempt to compare the machine-data and human legible forms of the property data, and advise authors if the forms do not match.&lt;br /&gt;
&lt;br /&gt;
=== limited use of value-title ===&lt;br /&gt;
Due to the fact that the value-title pattern hides some amount of data which tends to be a machine-specific duplicate of data that is provided in the human readable content, there are two microformats [[principles]] being compromised: '''visibility''' and '''&amp;lt;abbr title=&amp;quot;Don't Repeat Yourself&amp;quot;&amp;gt;DRY&amp;lt;/abbr&amp;gt;'''. Thus the applicability of this pattern is deliberately restricted to properties that have demonstrated through experience a need for it, with no known better alternative.&lt;br /&gt;
&lt;br /&gt;
In general authors should:&lt;br /&gt;
&lt;br /&gt;
# First, try to directly specify microformats property values inline (the most visible, no duplication),&lt;br /&gt;
# Then consider using the value-class pattern&lt;br /&gt;
## Including multiple value elements for date and time properties&lt;br /&gt;
# and then only if those methods are insufficient, consider the value-title pattern.&lt;br /&gt;
&lt;br /&gt;
This document post-dates other microformat specifications, such that they may not yet indicate which properties permit use of this pattern. In the interim, '''only''' the following types of properties should allow the value-title pattern.&lt;br /&gt;
&lt;br /&gt;
* ISO8601 date, datetime, timezone, and duration values&lt;br /&gt;
* Enumerated values (such as the hCard tel/email/adr 'type' subproperties)&lt;br /&gt;
* Co-ordinates (such as the [[geo]] 'latitude' and 'longitude' properties)&lt;br /&gt;
* Telephone number properties (e.g. the hCard 'tel' property)&lt;br /&gt;
&lt;br /&gt;
The [[machine-data]] page has documentation of some of the properties of some specs which experience has shown need a solution like the value-title pattern.&lt;br /&gt;
&lt;br /&gt;
There are some simple reference examples and tests for this pattern on [[value-class-pattern-tests]].&lt;br /&gt;
&lt;br /&gt;
In future use, ''specification authors'' may inherit use of &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; by use of ISO8601 date and time formats, or reuse of other microformats, but specifications should _avoid_ introducing new data structures that depend on or encourage this pattern. New specifications are themselves expected to adhere to the principals of visibile data and &amp;lt;abbr&amp;gt;DRY&amp;lt;/abbr&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
See [[value-class-pattern-tests]].&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;abbr title='Frequently Asked Questions'&amp;gt;FAQ&amp;lt;/abbr&amp;gt;==&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
&lt;br /&gt;
Frequently asked questions about the value-class-pattern. Once this section grows too big, we'll make a separate wiki page (like [[value-class-faq]]).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class='discussion'&amp;gt;&lt;br /&gt;
* '''Why use an 'empty' element? Why not embed data in the class attribute?'''&lt;br /&gt;
** The class attribute is inappropriate for embedded data values, as per the HTML4 specification, which states &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; is for ‘general purposing processing’, which is defined as ‘e.g. for identifying fields when extracting data from HTML pages into a database, translating HTML documents into other formats, etc.’. ‘General purpose processing’ does not extend to data itself. Furthermore, this method avoids inventing a new string pattern for embedding data.&lt;br /&gt;
* '''Why use an 'empty' element? Why not make up a new attribute, like ‘data’?'''&lt;br /&gt;
** Microformats exist and function in ''valid'' HTML4 and XHTML1. Those are the current standards for web development, and microformats exist for use ''now''. In the future, perhaps revisions of HTML will offer up another solution. For now, this method has been tested against browsers, and creates a consistent document structure (where machine-form and human-form data are siblings).&lt;br /&gt;
* '''The &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute should only be used for content!'''&lt;br /&gt;
** The &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute ''is'' used for content and is read by microformats parsers. This exists for cases where data cannot be parsed with sufficient precision from just the commonly published, visible information. This pattern allows both forms of content to be included, whilst keeping it invisible to human consumers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also refer to the general [[faq|Microformats FAQ]] and [[principles]].&lt;br /&gt;
&lt;br /&gt;
== Examples in the wild ==&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
&lt;br /&gt;
The following sites and pages have started marking up content with the value-class-pattern, and are thus good places to go for examples with real world content to test with implementations (i.e. parsers). If you use the value-class-pattern in your content, feel free to add it to the '''top''' of this list. Once the list grows too big, we'll make a separate wiki page (like [[value-class-examples-in-wild]]).&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
    add new items to the TOP of this list&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* [http://georgebrock.com/ George Brocklehurst's activity stream] and [http://blog.georgebrock.com/ blog] use &amp;quot;value-title&amp;quot; for hAtom &amp;lt;code&amp;gt;published&amp;lt;/code&amp;gt; property&lt;br /&gt;
* [http://ben-ward.co.uk/ Ben Ward's home page] uses:&lt;br /&gt;
** &amp;quot;value-title&amp;quot; for hCard &amp;lt;code&amp;gt;bday&amp;lt;/code&amp;gt; property&lt;br /&gt;
** &amp;quot;value-title&amp;quot; for hAtom &amp;lt;code&amp;gt;updated&amp;lt;/code&amp;gt; property&lt;br /&gt;
* [http://microformats.org/ microformats.org] uses:&lt;br /&gt;
** &amp;quot;value-title&amp;quot; for hAtom &amp;lt;code&amp;gt;updated&amp;lt;/code&amp;gt; property in [[http://microformats.org/ microformats.org blog postss]]]&lt;br /&gt;
** date and time value separation for hCalendar &amp;lt;code&amp;gt;dtstart&amp;lt;/code&amp;gt; property in [[events|microformats.org recent and upcoming events wiki page]]&lt;br /&gt;
&lt;br /&gt;
''Add your site/page(s) that use the value-class-pattern here, along with a brief description of what value-class-pattern features you use, with which microformat(s) and which of its/their properties.''&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
&lt;br /&gt;
The following implementations have been developed which either generate or parse value-class-pattern property values. If you have an value-class-pattern implementation, feel free to add it to the '''top''' of this list. Once the list grows too big, we'll make a separate wiki page (like [[value-class-implementations]]).&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
    add new items to the TOP of this list&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* [[X2V]] v0.9.3 and later:&lt;br /&gt;
** implements [[#Date_and_time_values|Date and time values parsing]], including am/pm time values&lt;br /&gt;
** thus passes [[value-class-pattern-tests#Date_and_time_values|Date and time values test cases]].&lt;br /&gt;
** implements [[#hCalendar_dtend_implied_date|hCalendar implied dtend date]]&lt;br /&gt;
* [[Operator]] has *some* implementation of the value-class-pattern according to Michael Kaply, but precisely how much is implemented, for which properties (property types) and which microformats is not currently known.&lt;br /&gt;
* [[Optimus]] v0.8 and later implements &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; as [http://twitter.com/DmitryBaranovsk/status/1891253248 announced by Dmitry Baranovskiy].&lt;br /&gt;
* ... add your implementation(s) that parse or generate the value-class-pattern here, along with which features you support (hopefully all!) and note any limitations if any.&lt;br /&gt;
&lt;br /&gt;
==Blog Posts==&lt;br /&gt;
Blog posts discussing the value class pattern, most recent first:&lt;br /&gt;
* [http://ablognotlimited.com/s/106 Getting Semantic With Microformats, Part 8: Value Class Pattern] -- A very thorough writeup by Emily Lewis on the value class pattern&lt;br /&gt;
* [http://adactio.com/journal/1579/ 2009-05-17 Adactio: Microformation]&lt;br /&gt;
* [http://forabeautifulweb.com/blog/about/value_class_pattern/ For A Beautiful Web: Value Class Pattern]&lt;br /&gt;
* [http://microformats.org/blog/2009/05/12/value-class-pattern/ 2009-05-12 microformats.org: Value Class Pattern]&lt;br /&gt;
&lt;br /&gt;
==Related Pages==&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
&lt;br /&gt;
* [[value-class-pattern-tests]]&lt;br /&gt;
* [[value-excerption-pattern-issues]]&lt;br /&gt;
* [[hcard#Value_excerpting|hCard: Value Excepting]]&lt;br /&gt;
* [[value-excerption-pattern-brainstorming]]&lt;br /&gt;
* [[machine-data|Machine Data in Microformats]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
* [http://www.useit.com/alertbox/9608.html Jakob Nielsen: International Web Usability]&lt;/div&gt;</summary>
		<author><name>Karstenj</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=value-class-pattern&amp;diff=40182</id>
		<title>value-class-pattern</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=value-class-pattern&amp;diff=40182"/>
		<updated>2009-08-10T21:37:23Z</updated>

		<summary type="html">&lt;p&gt;Karstenj: /* Blog Posts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;Value Class Pattern&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The value class pattern is derived from [[hCard#Value_excerpting|value-excerpting]] in hCard.&lt;br /&gt;
&lt;br /&gt;
''The editors believe the value-class-pattern to be feature complete and ready for use in markup. Implementers are encouraged to update accordingly and provide [[value-class-pattern-feedback|feedback]]. '''Note''', the precise parsing behavior could change in response to implementer feedback, but the core methods are stable. You should watch this page for updates.''&lt;br /&gt;
&lt;br /&gt;
See also, the [http://microformats.org/blog/2009/05/12/value-class-pattern/ blog announcement].&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
; Editors&lt;br /&gt;
: &amp;lt;span class=&amp;quot;vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;[[User:BenWard|Ben Ward]]&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
: &amp;lt;span class=&amp;quot;vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;[[User:Tantek|Tantek Çelik]]&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
; Short URL&lt;br /&gt;
: &amp;lt;kbd&amp;gt;http://tr.im/valueclass&amp;lt;/kbd&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sometimes, only a part of an element's content is to be used as the value of a microformat property. This may occur when a property has optional subproperties, such as &amp;lt;code&amp;gt;tel: type&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;tel: value&amp;lt;/code&amp;gt; in [[hCard]]. Other times, the most appropriate structure for a property may include other content.&lt;br /&gt;
&lt;br /&gt;
For these purposes, the special class name &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is used to mark-up the relevant data excerpt from larger element content.&lt;br /&gt;
&lt;br /&gt;
==Simple Examples==&lt;br /&gt;
&lt;br /&gt;
Here is markup for a home phone number:&lt;br /&gt;
&lt;br /&gt;
vCard fragment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;TEL;TYPE=HOME:+1.415.555.1212&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hCard fragment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;tel&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Home&amp;lt;/span&amp;gt;:&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;+1.415.555.1212&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; of &amp;lt;code&amp;gt;tel&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;+1.415.555.1212&amp;lt;/code&amp;gt;, not &amp;lt;code&amp;gt;Home: +1.415.555.1212&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Sometimes the value for a microformats property must be split into multiple pieces in the content of the element representing that property. Multiple elements with a class name of &amp;quot;value&amp;quot; (value elements) can be used to extract and concatenate these pieces into a single value for microformats properties which expect simple strings or tel values.&lt;br /&gt;
&lt;br /&gt;
Another example, this time using a localized (British) telephone number:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;tel&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;type&amp;quot;&amp;gt;Home&amp;lt;/span&amp;gt;:&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;+44&amp;lt;/span&amp;gt; (0) &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;1223 123 123&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the valid ''data'' for the telephone number is &amp;lt;samp&amp;gt;+441223123123&amp;lt;/samp&amp;gt;, but the way in which phone number is presented in Britain will include the &amp;lt;samp&amp;gt;(0)&amp;lt;/samp&amp;gt;, for local dialling. That is, from anywhere in the world you may dial &amp;lt;kbd&amp;gt;+441223123123&amp;lt;/kbd&amp;gt;, or from within Britain you may dial &amp;lt;kbd&amp;gt;01223123123&amp;lt;/kbd&amp;gt;. Common local publishing interferes with the data, since dialling &amp;lt;kbd&amp;gt;'''+440'''1223123123&amp;lt;/kbd&amp;gt; is an invalid number.&lt;br /&gt;
&lt;br /&gt;
In the mark-up, two &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; classes target the part of the telephone number string that makes an international, valid number, whilst allowing conventional presentation.&lt;br /&gt;
&lt;br /&gt;
Another example, adding a place name to a [[geo]] co-ordinate:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;I'm loitering outside The Bricklayer's Arms&lt;br /&gt;
  &amp;lt;span class=&amp;quot;geo&amp;quot;&amp;gt;&lt;br /&gt;
    51° 30' 48.45&amp;quot;, -0° 8' 53.23&amp;quot;&lt;br /&gt;
    (&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;51.513458;-0.14812&amp;lt;/span&amp;gt;)&lt;br /&gt;
  &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Whilst the entire string is a geo point, it's only the decimal encoded co-ordinates which must be consumed by a microformats parser, so the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; class isolates it from the degrees form, which the publisher includes for completeness.&lt;br /&gt;
&lt;br /&gt;
==Basic Parsing==&lt;br /&gt;
# The value class pattern only applies to properties which are simple strings, enumerated values, telephone numbers, and datetimes. The value class pattern does not affect parsing of properties of type email, URL, URI, UID.&lt;br /&gt;
# Where an element with such a microformat property class name has a descendant with class name &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; (a &amp;quot;value&amp;quot; element), parsers should use the following portion of that element:  &lt;br /&gt;
## if the value element is an &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt; element, then use the element's &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; attribute value.&lt;br /&gt;
## if the value element is an &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; element, then use the element's &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute value.&lt;br /&gt;
## for any other element, use its inner-text.&lt;br /&gt;
# Where there are multiple descendants of a property with class name of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; (multiple value elements)&lt;br /&gt;
## if the microformats property expects a simple string, enumerated value, or telephone number, then the values extracted from the value elements should be concatenated ''without'' inserting additional characters or white-space.&lt;br /&gt;
## if the microformats property expects a datetime value, see the [[#Date_and_time_parsing|Date Time Parsing]] section.&lt;br /&gt;
# Descendants with class of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; must not be parsed deeper than one level. That is, where an element &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt; with class &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; has a &amp;lt;em&amp;gt;descendant&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;bar&amp;lt;/code&amp;gt; with class &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;, the content of &amp;lt;strong&amp;gt;&amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt;&amp;lt;/strong&amp;gt; is taken as the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;. Nesting additional elements with class of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; cannot be used to further isolate a property's value.&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
 &amp;lt;p class=&amp;quot;description&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;em class=&amp;quot;value&amp;quot;&amp;gt;Puppies Rule!&amp;lt;/em&amp;gt;&lt;br /&gt;
    &amp;lt;strong&amp;gt;But kittens are better!&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example, &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt; has a child ‘&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;’, and that child has a ''grandchild'' ‘&amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;’. However, the parsing of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; classes stops at the first level, so the data for &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt; is: &amp;lt;samp&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;em class=&amp;quot;value&amp;quot;&amp;gt;Puppies Rule!&amp;amp;lt;/em&amp;gt;&amp;amp;lt;strong&amp;gt;But kittens are better!&amp;amp;lt;/strong&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/samp&amp;gt;, not just &amp;lt;samp&amp;gt;Puppies Rule!&amp;lt;/samp&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Date and time values ==&lt;br /&gt;
Some microformats properties expect an ISO8601 datetime value, e.g.  [[hCalendar]] &amp;lt;code&amp;gt;dtstart&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;dtend&amp;lt;/code&amp;gt; or [[hAtom]] &amp;lt;code&amp;gt;published&amp;lt;/code&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Authors may use the value class pattern to separately specify the date and the time, which are then combined to specify a single datetime value.&lt;br /&gt;
&lt;br /&gt;
Example, this hCalendar 'dtstart' property with 'value' elements: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The weekly dinner will be on &lt;br /&gt;
    &amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;abbr class=&amp;quot;value&amp;quot; title=&amp;quot;2008-06-24&amp;quot;&amp;gt;this Tuesday&amp;lt;/abbr&amp;gt; &lt;br /&gt;
     at &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;18:30&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
produces the following 'dtstart' value:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
2008-06-24T18:30:00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and iCalendar converters produce the following DTSTART:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
DTSTART:20080624T183000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The lack of a timezone indicates a &amp;quot;floating&amp;quot; datetime, that is a datetime independent of any particular timezone. Examples of floating datetimes could be an alarm clock you set to ring at 7am, or the common 9am-5pm workday.&lt;br /&gt;
&lt;br /&gt;
=== Date and time parsing ===&lt;br /&gt;
For all date time properties (as defined in their respective microformats specifications), the following rules apply in addition to (and in some cases replacing) the above value class pattern parsing rules.&lt;br /&gt;
&lt;br /&gt;
When a &amp;quot;value&amp;quot; element is found, parse a value from the element as follows:&lt;br /&gt;
* if the element is an &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt; element, then use the element's &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; attribute value.&lt;br /&gt;
* if the element is an &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; element, then use the element's &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute value.&lt;br /&gt;
* for any other element, use its inner-text.&lt;br /&gt;
* if the value has both a specific ISO8601 date and a specific time, use those and stop looking for &amp;quot;value&amp;quot; elements.&lt;br /&gt;
* if the value has *only* a specific date, specifically, fits the following ISO8601 date patterns (i.e. as documented in the [http://en.wikipedia.org/wiki/ISO_8601 Wikipedia summary of ISO8601])&lt;br /&gt;
** YYYY-MM-DD&lt;br /&gt;
** YYYY-DDD&lt;br /&gt;
** then use that as the date value.  For the purposes of the value class pattern, the hyphens &amp;quot;-&amp;quot; separating the year, month, day and/or ordinal day are required.&lt;br /&gt;
** ignore any further &amp;quot;value&amp;quot; elements that specify the date.&lt;br /&gt;
* if the value has *only* a specific time (with or without timezone), parse it for a time value that can match any of the following:&lt;br /&gt;
** HH:MM:SS-XX:YY&lt;br /&gt;
** HH:MM:SS+XX:YY&lt;br /&gt;
** HH:MM:SS-XXYY&lt;br /&gt;
** HH:MM:SS+XXYY&lt;br /&gt;
** HH:MM:SSZ&lt;br /&gt;
** HH:MM:SS&lt;br /&gt;
** HH:MM-XX:YY&lt;br /&gt;
** HH:MM+XX:YY&lt;br /&gt;
** HH:MM-XXYY&lt;br /&gt;
** HH:MM+XXYY&lt;br /&gt;
** HH:MMZ&lt;br /&gt;
** HH:MM&lt;br /&gt;
** HH is the 24 hour &amp;quot;hours&amp;quot; in the time, from 00 to 24, with optional leading 0 for values less than 10.&lt;br /&gt;
** MM are the minutes from 00 to 59&lt;br /&gt;
** SS are the optional seconds from 00 to 59 (60 for a leap second). If omitted, infer 00 seconds.&lt;br /&gt;
** XX is the time zone hours offset, from 00 to 12 with optional leading 0 for values less than 10.&lt;br /&gt;
** YY is the time zone minutes offset, from 00 to 59, though in practice only 00, 15, 30, 45 minute offsets are used in global timezones.&lt;br /&gt;
** Z is the literal 'Z' to indicate GMT.&lt;br /&gt;
** For the purposes of the value class pattern, the colons &amp;quot;:&amp;quot; separating the hour, minutes, seconds are required. &lt;br /&gt;
** However the colons &amp;quot;:&amp;quot; separating the hours and minutes of any timezone offset are ''optional'' and discouraged in order to make it less likely that a timezone offset will be confused for a time.&lt;br /&gt;
** Under strong consideration: case insensitive { }&amp;quot;am&amp;quot;|{ }&amp;quot;a.m.&amp;quot; suffix to treat an HH value of 12 as 00, or a case-insensitive { }&amp;quot;pm&amp;quot;|{ }&amp;quot;p.m.&amp;quot; suffix to add 12 to HH value less than 12 - per [http://en.wikipedia.org/wiki/12-hour_clock Wikipedia article on the 12 hour clock]. Note: [[X2V]] has implemented this.&lt;br /&gt;
*** HH:MM:SSam&lt;br /&gt;
*** HH:MM:SSpm&lt;br /&gt;
*** HH:MMam&lt;br /&gt;
*** HH:MMpm&lt;br /&gt;
*** HHam&lt;br /&gt;
*** HHpm&lt;br /&gt;
*** where &amp;quot;am&amp;quot; and &amp;quot;pm&amp;quot; mean &amp;quot;am or a.m.&amp;quot; and &amp;quot;pm or p.m.&amp;quot; &lt;br /&gt;
*** when MM is omitted, infer 00 minutes.&lt;br /&gt;
** ignore any further &amp;quot;value&amp;quot; elements that specify the time.&lt;br /&gt;
* if the value has *only* a specific timezone, parse it for a time zone value that can match any of the following:&lt;br /&gt;
** -XX:YY&lt;br /&gt;
** +XX:YY&lt;br /&gt;
** -XXYY&lt;br /&gt;
** +XXYY&lt;br /&gt;
** -XX&lt;br /&gt;
** +XX&lt;br /&gt;
** Z&lt;br /&gt;
** XX is the time zone hours offset, from 00 to 12 with optional leading 0 for values less than 10.&lt;br /&gt;
** YY is the time zone minutes offset, from 00 to 59, though in practice only 00, 15, 30, 45 minute offsets are used in global timezones.&lt;br /&gt;
** Z is the literal 'Z' to indicate GMT.&lt;br /&gt;
** ignore any further &amp;quot;value&amp;quot; elements that specify the timezone.&lt;br /&gt;
&lt;br /&gt;
If by parsing the &amp;quot;value&amp;quot; element(s), at least a specific date has been found, then the &amp;quot;value&amp;quot; is overall valid, and the parser assembles the overall datetime value by concatenating the specific date, &amp;quot;T&amp;quot; and specific time (if time was specified, with 00 seconds implied if no seconds are provided), and specific timezone (if timezone and a specific time was specified).&lt;br /&gt;
* YYYY-MM-DD - no time specified&lt;br /&gt;
* YYYY-MM-DDTHH:MM:SS - time specified but no timezone.  This is a floating time.&lt;br /&gt;
* YYYY-MM-DDTHH:MM:SS-XXYY or&lt;br /&gt;
* YYYY-MM-DDTHH:MM:SSZ or&lt;br /&gt;
* YYYY-MM-DDTHH:MM:SS+XXYY - both time and timezone were specified.&lt;br /&gt;
&lt;br /&gt;
iCalendar converters in addition must do the following:&lt;br /&gt;
* remove any dash &amp;quot;-&amp;quot; separators in the date.&lt;br /&gt;
* remove any colon &amp;quot;:&amp;quot; separators in the time.&lt;br /&gt;
* perform datetime math on any +/- relative timezone value, and produce an effective UTC value ending with &amp;quot;Z&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Atom converters in addition must do the following:&lt;br /&gt;
* normalize all date and datetime values to RFC 3339.&lt;br /&gt;
&lt;br /&gt;
=== derivation and tests ===&lt;br /&gt;
The handling of date and time values in the value class pattern was originally [[value-excerption-pattern-brainstorming#date_and_time_separation|brainstormed on the value-excerption-pattern-brainstorming]] page and derived from that analysis and feedback. For the curious, historical details may be found there, along with additional thoughts for extension.&lt;br /&gt;
&lt;br /&gt;
See [[value-class-date-time-tests]] for test cases.&lt;br /&gt;
&lt;br /&gt;
=== format specific optimizations ===&lt;br /&gt;
The following are format specific optimizations under strong consideration that make use of the value-class-pattern. Note: [[X2V]] has implemented this for hCalendar.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;span style=&amp;quot;font-size:smaller&amp;quot;&amp;gt;short URL for this section&amp;lt;/span&amp;gt;&lt;br /&gt;
:http://tr.im/vcpfso&lt;br /&gt;
&lt;br /&gt;
==== hCalendar dtend implied date ====&lt;br /&gt;
Typically events that start and end the same day only display the date of the event once (makes sense per the DRY [[principle]]) (real world examples: [http://upcoming.yahoo.com/event/3010807/ Upcoming], ... more examples with URLs would help for thoroughness).  &lt;br /&gt;
&lt;br /&gt;
Thus it would be convenient if we could imply an [[hCalendar]] event &amp;quot;dtend&amp;quot; date from its &amp;quot;dtstart&amp;quot; date when only the time (and optionally timezone) was specified for its &amp;quot;dtend&amp;quot;, e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;vevent&amp;quot;&amp;gt;&lt;br /&gt;
 The &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;party&amp;lt;/span&amp;gt; will be on &lt;br /&gt;
 &amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;2009-06-26&amp;lt;/span&amp;gt;, from&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;19:00&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; to &lt;br /&gt;
 &amp;lt;span class=&amp;quot;dtend&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;22:00&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To simplify this further for authors, hCalendar processors could treat the specifying of just the time per the value-class-pattern date and time value rules, and thus eliminate the need for the &amp;quot;value&amp;quot; span inside the &amp;quot;dtend&amp;quot; span:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;vevent&amp;quot;&amp;gt;&lt;br /&gt;
 The &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;party&amp;lt;/span&amp;gt; will be on &lt;br /&gt;
 &amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;2009-06-26&amp;lt;/span&amp;gt;, from&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;19:00&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; to &lt;br /&gt;
 &amp;lt;span class=&amp;quot;dtend&amp;quot;&amp;gt;22:00&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hCalendar to iCalendar converters should produce the following iCalendar fragment (as part of a valid .ics file) from either of the above two examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
BEGIN:VEVENT&lt;br /&gt;
SUMMARY:party&lt;br /&gt;
DTSTART:20090626T190000&lt;br /&gt;
DTEND:20090626T220000&lt;br /&gt;
END:VEVENT&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: [[X2V]] has implemented this.&lt;br /&gt;
&lt;br /&gt;
Examples &amp;quot;in the wild&amp;quot;:&lt;br /&gt;
* http://microformats.org/wiki/events/2009-08-12-nyc-workshop (real world example, but on this wiki).&lt;br /&gt;
&lt;br /&gt;
==== hAtom updated implied date ====&lt;br /&gt;
Similarly, in blog posts that indicate both when they were &amp;quot;published&amp;quot; and &amp;quot;updated&amp;quot;, the date is usually only displayed once, typically when &amp;quot;published&amp;quot; (real world examples with URLs would help for thoroughness).&lt;br /&gt;
&lt;br /&gt;
Thus it would be convenient if we could imply an [[hAtom]] entry &amp;quot;updated&amp;quot; date from its &amp;quot;published&amp;quot; date when only the time (and optionally timezone) was specified for its &amp;quot;updated&amp;quot;, e.g. for a blog post that was updated the same day:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;entry-summary&amp;quot;&amp;gt;short blog post example&amp;lt;/span&amp;gt;&lt;br /&gt;
 was published on &amp;lt;span class=&amp;quot;published&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;2009-08-01&amp;lt;/span&amp;gt; at &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;12:06&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 and updated at &amp;lt;span class=&amp;quot;updated&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;12:10&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To simplify this further for authors, hAtom processors could treat the specifying of just the time per the value-class-pattern date and time value rules, and thus eliminate the need for the &amp;quot;value&amp;quot; span inside the &amp;quot;updated&amp;quot; span:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;entry-summary&amp;quot;&amp;gt;short blog post example&amp;lt;/span&amp;gt;&lt;br /&gt;
 was published on &amp;lt;span class=&amp;quot;published&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;2009-08-01&amp;lt;/span&amp;gt; at &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;12:06&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 and updated at &amp;lt;span class=&amp;quot;updated&amp;quot;&amp;gt;12:10&amp;lt;/span&amp;gt;.&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Parsing value from a &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute==&lt;br /&gt;
The &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; class name allows the publisher to indicate the data value for a parent property is contained in the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute of an element, rather than the inner-text.&lt;br /&gt;
&lt;br /&gt;
This can be used to provide a synonym within content, or used to quietly publish alternate forms of information for microformats parsing, without affecting the consumption of content.&lt;br /&gt;
&lt;br /&gt;
For example, you can use casual localization with dates:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;It was &lt;br /&gt;
 &amp;lt;span class='dtstart'&amp;gt;&lt;br /&gt;
  &amp;lt;span class='value-title' title='2008'&amp;gt;last year&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/span&amp;gt;&lt;br /&gt;
  that I realised my addiction to cashew nuts would cost this country so dear.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parsing rules for &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; are the same as for &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; above, with the following change:&lt;br /&gt;
&lt;br /&gt;
* Where a microformats property has a child element with class name of &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt;, the content of the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute of that element must be parsed, rather than the portion of the element that would be parsed for a class name of &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Using &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; to publish machine-data===&lt;br /&gt;
&lt;br /&gt;
The initial usage of &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; is used to publish alternate, parsable forms of property values in a visible context without the use of the &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; element whose semantics already support interpretation of the 'title' attribute as an expanded, more precise form of the content. &lt;br /&gt;
&lt;br /&gt;
Experience has found that there are some cases in microformats where a number of publishers want to include a precisely accurate and parsable value for a property but do not want it to be visible in their page, even as a tooltip.&lt;br /&gt;
&lt;br /&gt;
For example, full [[ISO8601]] datetimes may be confusing to readers of the page (as a tooltip or when read aloud by a screen reader), and enumerated values such as the &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; subproperty of hCard's &amp;lt;code&amp;gt;tel&amp;lt;/code&amp;gt; property use US-English terms, which are not part of pages in any other language.&lt;br /&gt;
&lt;br /&gt;
Since both of those scenarios have shown to be obstacles for a number of publishers, for these cases, and these alone, there exists a further extension of value-excerption. This extension allows the parsable form of the property to be published ‘silently’ immediately adjacent with the respective local visible content.&lt;br /&gt;
&lt;br /&gt;
Here is an example, with the required use of a first child element with class name &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p class='tel' lang='en-gb'&amp;gt;&lt;br /&gt;
  &amp;lt;span class='type'&amp;gt;&lt;br /&gt;
    &amp;lt;span class='value-title' title='cell'&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
      mobile&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;span class='value'&amp;gt;+44 7773 000 000&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;samp&amp;gt;cell&amp;lt;/samp&amp;gt; value is parsed for the 'type' subproperty, but &amp;lt;samp&amp;gt;mobile&amp;lt;/samp&amp;gt; is presented to the user.&lt;br /&gt;
&lt;br /&gt;
In the case of dates:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p class='dtstart'&amp;gt;&lt;br /&gt;
  &amp;lt;span class='value-title' title='2009-03-14T16:28-0600'&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
  March 14th 2009, around half-past four&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
A microformats parser will read the ISO8601 format datetime &amp;lt;samp&amp;gt;2009-03-14T16:28-0600&amp;lt;/samp&amp;gt;, but users will only see &amp;lt;samp&amp;gt;March 14th 2009, around half-past four&amp;lt;/samp&amp;gt;. Testing has shown that the ISO8601 datetime above does not get exposed to any user at all.&lt;br /&gt;
&lt;br /&gt;
===Parsing machine-data &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Browsers collapse the &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; span down to a width of &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, effectively providing no visual rendering, whilst keeping the element in the DOM. With no physical dimensions, there is no ‘hover’ state, so no tooltip is revealed. Furthermore, the empty element is not passed to assistive technology layers such as VoiceOver.  Screen readers do not read the contents of the title attribute of an empty &amp;lt;code&amp;gt;span&amp;lt;/code&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
We conducted [[value-excerption-value-title-test|thorough testing]] of these parsing behaviors to ensure accessibility.&lt;br /&gt;
&lt;br /&gt;
''Note: Whilst the &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; element is more gracefully written without whitespace inner-text (or as self-closing &amp;lt;code&amp;gt;&amp;amp;lt;foo /&amp;gt;&amp;lt;/code&amp;gt; element in XHTML), current tools such as WYSIWYG editors and HTML-Tidy will erroneously discard such elements, resulting in parsable data being thrown away by some tools. As such, &amp;lt;code&amp;gt;&amp;amp;lt;span class='value-title'&amp;gt; &amp;amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt;, including a single whitespace character between the opening and closing tag, is the required pattern for authors, at this time.''&lt;br /&gt;
&lt;br /&gt;
Parsing this final &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; extension imposes some stricter restrictions on usage. These restrictions exist to reduce the impact of &amp;lt;abbr title=&amp;quot;Don't Repeat Yourself&amp;quot;&amp;gt;DRY&amp;lt;/abbr&amp;gt; violations, reduce the opportunity for sites to spoof data, and encourage best practice for maintaining both forms of data accurately.&lt;br /&gt;
&lt;br /&gt;
Where an element with class &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; is to be parsed as data for a property, and that element also contains no non-whitespace content (hereafter referred to as ‘empty’), the following rules apply:&lt;br /&gt;
&lt;br /&gt;
* The ‘empty’ value-title element must be the '''first, non-whitespace child''' of the property element. That is, it should follow immediately after the property is declared, before the human-readable form, and without any additional nesting.&lt;br /&gt;
* The ‘empty’ value-title element can only be used for specific properties. Microformat specifications must explicitly state which properties may be used with this extension of the value-class-pattern.&lt;br /&gt;
* Where an ‘empty’ value-title element is to be used as the single property value, it must be the ''only'' such &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; content. That is, the first instance of a conforming &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; element overrides all other &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; siblings and/or cousins.&lt;br /&gt;
* Tools written to perform Conformance Testing and/or Validation of microformats ''should'' attempt to compare the machine-data and human legible forms of the property data, and advise authors if the forms do not match.&lt;br /&gt;
&lt;br /&gt;
=== limited use of value-title ===&lt;br /&gt;
Due to the fact that the value-title pattern hides some amount of data which tends to be a machine-specific duplicate of data that is provided in the human readable content, there are two microformats [[principles]] being compromised: '''visibility''' and '''&amp;lt;abbr title=&amp;quot;Don't Repeat Yourself&amp;quot;&amp;gt;DRY&amp;lt;/abbr&amp;gt;'''. Thus the applicability of this pattern is deliberately restricted to properties that have demonstrated through experience a need for it, with no known better alternative.&lt;br /&gt;
&lt;br /&gt;
In general authors should:&lt;br /&gt;
&lt;br /&gt;
# First, try to directly specify microformats property values inline (the most visible, no duplication),&lt;br /&gt;
# Then consider using the value-class pattern&lt;br /&gt;
## Including multiple value elements for date and time properties&lt;br /&gt;
# and then only if those methods are insufficient, consider the value-title pattern.&lt;br /&gt;
&lt;br /&gt;
This document post-dates other microformat specifications, such that they may not yet indicate which properties permit use of this pattern. In the interim, '''only''' the following types of properties should allow the value-title pattern.&lt;br /&gt;
&lt;br /&gt;
* ISO8601 date, datetime, timezone, and duration values&lt;br /&gt;
* Enumerated values (such as the hCard tel/email/adr 'type' subproperties)&lt;br /&gt;
* Co-ordinates (such as the [[geo]] 'latitude' and 'longitude' properties)&lt;br /&gt;
* Telephone number properties (e.g. the hCard 'tel' property)&lt;br /&gt;
&lt;br /&gt;
The [[machine-data]] page has documentation of some of the properties of some specs which experience has shown need a solution like the value-title pattern.&lt;br /&gt;
&lt;br /&gt;
There are some simple reference examples and tests for this pattern on [[value-class-pattern-tests]].&lt;br /&gt;
&lt;br /&gt;
In future use, ''specification authors'' may inherit use of &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; by use of ISO8601 date and time formats, or reuse of other microformats, but specifications should _avoid_ introducing new data structures that depend on or encourage this pattern. New specifications are themselves expected to adhere to the principals of visibile data and &amp;lt;abbr&amp;gt;DRY&amp;lt;/abbr&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
See [[value-class-pattern-tests]].&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;abbr title='Frequently Asked Questions'&amp;gt;FAQ&amp;lt;/abbr&amp;gt;==&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
&lt;br /&gt;
Frequently asked questions about the value-class-pattern. Once this section grows too big, we'll make a separate wiki page (like [[value-class-faq]]).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class='discussion'&amp;gt;&lt;br /&gt;
* '''Why use an 'empty' element? Why not embed data in the class attribute?'''&lt;br /&gt;
** The class attribute is inappropriate for embedded data values, as per the HTML4 specification, which states &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; is for ‘general purposing processing’, which is defined as ‘e.g. for identifying fields when extracting data from HTML pages into a database, translating HTML documents into other formats, etc.’. ‘General purpose processing’ does not extend to data itself. Furthermore, this method avoids inventing a new string pattern for embedding data.&lt;br /&gt;
* '''Why use an 'empty' element? Why not make up a new attribute, like ‘data’?'''&lt;br /&gt;
** Microformats exist and function in ''valid'' HTML4 and XHTML1. Those are the current standards for web development, and microformats exist for use ''now''. In the future, perhaps revisions of HTML will offer up another solution. For now, this method has been tested against browsers, and creates a consistent document structure (where machine-form and human-form data are siblings).&lt;br /&gt;
* '''The &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute should only be used for content!'''&lt;br /&gt;
** The &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute ''is'' used for content and is read by microformats parsers. This exists for cases where data cannot be parsed with sufficient precision from just the commonly published, visible information. This pattern allows both forms of content to be included, whilst keeping it invisible to human consumers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also refer to the general [[faq|Microformats FAQ]] and [[principles]].&lt;br /&gt;
&lt;br /&gt;
== Examples in the wild ==&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
&lt;br /&gt;
The following sites and pages have started marking up content with the value-class-pattern, and are thus good places to go for examples with real world content to test with implementations (i.e. parsers). If you use the value-class-pattern in your content, feel free to add it to the '''top''' of this list. Once the list grows too big, we'll make a separate wiki page (like [[value-class-examples-in-wild]]).&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
    add new items to the TOP of this list&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* [http://georgebrock.com/ George Brocklehurst's activity stream] and [http://blog.georgebrock.com/ blog] use &amp;quot;value-title&amp;quot; for hAtom &amp;lt;code&amp;gt;published&amp;lt;/code&amp;gt; property&lt;br /&gt;
* [http://ben-ward.co.uk/ Ben Ward's home page] uses:&lt;br /&gt;
** &amp;quot;value-title&amp;quot; for hCard &amp;lt;code&amp;gt;bday&amp;lt;/code&amp;gt; property&lt;br /&gt;
** &amp;quot;value-title&amp;quot; for hAtom &amp;lt;code&amp;gt;updated&amp;lt;/code&amp;gt; property&lt;br /&gt;
* [http://microformats.org/ microformats.org] uses:&lt;br /&gt;
** &amp;quot;value-title&amp;quot; for hAtom &amp;lt;code&amp;gt;updated&amp;lt;/code&amp;gt; property in [[http://microformats.org/ microformats.org blog postss]]]&lt;br /&gt;
** date and time value separation for hCalendar &amp;lt;code&amp;gt;dtstart&amp;lt;/code&amp;gt; property in [[events|microformats.org recent and upcoming events wiki page]]&lt;br /&gt;
&lt;br /&gt;
''Add your site/page(s) that use the value-class-pattern here, along with a brief description of what value-class-pattern features you use, with which microformat(s) and which of its/their properties.''&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
&lt;br /&gt;
The following implementations have been developed which either generate or parse value-class-pattern property values. If you have an value-class-pattern implementation, feel free to add it to the '''top''' of this list. Once the list grows too big, we'll make a separate wiki page (like [[value-class-implementations]]).&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
    add new items to the TOP of this list&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* [[X2V]] v0.9.3 and later:&lt;br /&gt;
** implements [[#Date_and_time_values|Date and time values parsing]], including am/pm time values&lt;br /&gt;
** thus passes [[value-class-pattern-tests#Date_and_time_values|Date and time values test cases]].&lt;br /&gt;
** implements [[#hCalendar_dtend_implied_date|hCalendar implied dtend date]]&lt;br /&gt;
* [[Operator]] has *some* implementation of the value-class-pattern according to Michael Kaply, but precisely how much is implemented, for which properties (property types) and which microformats is not currently known.&lt;br /&gt;
* [[Optimus]] v0.8 and later implements &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; as [http://twitter.com/DmitryBaranovsk/status/1891253248 announced by Dmitry Baranovskiy].&lt;br /&gt;
* ... add your implementation(s) that parse or generate the value-class-pattern here, along with which features you support (hopefully all!) and note any limitations if any.&lt;br /&gt;
&lt;br /&gt;
==Blog Posts==&lt;br /&gt;
Blog posts discussing the value class pattern, most recent first:&lt;br /&gt;
* [http://adactio.com/journal/1579/ 2009-05-17 Adactio: Microformation]&lt;br /&gt;
* [http://forabeautifulweb.com/blog/about/value_class_pattern/ For A Beautiful Web: Value Class Pattern]&lt;br /&gt;
* [http://microformats.org/blog/2009/05/12/value-class-pattern/ 2009-05-12 microformats.org: Value Class Pattern]&lt;br /&gt;
* [http://ablognotlimited.com/s/106 Getting Semantic With Microformats, Part 8: Value Class Pattern]&lt;br /&gt;
&lt;br /&gt;
==Related Pages==&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
&lt;br /&gt;
* [[value-class-pattern-tests]]&lt;br /&gt;
* [[value-excerption-pattern-issues]]&lt;br /&gt;
* [[hcard#Value_excerpting|hCard: Value Excepting]]&lt;br /&gt;
* [[value-excerption-pattern-brainstorming]]&lt;br /&gt;
* [[machine-data|Machine Data in Microformats]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
This section is '''informative'''.&lt;br /&gt;
* [http://www.useit.com/alertbox/9608.html Jakob Nielsen: International Web Usability]&lt;/div&gt;</summary>
		<author><name>Karstenj</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=oomph-issues&amp;diff=40074</id>
		<title>oomph-issues</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=oomph-issues&amp;diff=40074"/>
		<updated>2009-07-31T20:42:00Z</updated>

		<summary type="html">&lt;p&gt;Karstenj: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;Oomph issues&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Issues with [[oomph]].&lt;br /&gt;
&lt;br /&gt;
== issues ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Apparent problems parsing [[hCards]] and [[hCalendar]] events on [http://en.wikipedia.org/wiki/Thomas_Edison Wikipedia: Edison] page (from report in email). [[User:Tantek|Tantek]] 21:59, 4 July 2009 (UTC)  {corrected page name [[User:Bsd|Bsd]] 20:39, 7 July 2009 (UTC)}&lt;br /&gt;
** This page has changed as the nested (contained) hCards and hCalendar events were disabled on the Wikipedia template on 5 July.   The main issue was that &amp;quot;org&amp;quot; values from the [[hcard-parsing#nested_hCards|nested hCards]] (invalid due to no &amp;quot;n&amp;quot; values) ignored the boundary and were passed to &amp;quot;org&amp;quot; on the root hCard.  A second issue that still exists on this page is that it crashes the MIX hcard-to-vcard service; may be because values for &amp;quot;n&amp;quot; cannot be extracted from the three-name &amp;quot;fn&amp;quot; value (&amp;quot;Thomas Alva Edison&amp;quot;) that is provided. [[User:Bsd|Bsd]] 21:09, 7 July 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Other issues with Oomph are logged at [http://oomph.codeplex.com/Thread/List.aspx Codeplex]&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[oomph]]&lt;br /&gt;
* [[hCard]]&lt;br /&gt;
* [[hCalendar]]&lt;/div&gt;</summary>
		<author><name>Karstenj</name></author>
	</entry>
</feed>