<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://microformats.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Barnabywalters</id>
	<title>Microformats Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://microformats.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Barnabywalters"/>
	<link rel="alternate" type="text/html" href="http://microformats.org/wiki/Special:Contributions/Barnabywalters"/>
	<updated>2026-06-02T17:50:02Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=existing-rel-values&amp;diff=70569</id>
		<title>existing-rel-values</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=existing-rel-values&amp;diff=70569"/>
		<updated>2022-11-07T17:14:15Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: linked RFC6903 as defining spec for rel-about&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE: existing rel values }}&lt;br /&gt;
&lt;br /&gt;
This page contains tables of known HTML rel values from specifications, formats, proposals, brainstorms, and non-trivial [[POSH]] usage in the wild.  In addition, dropped and rejected values are listed at the end for comprehensiveness.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;usage&amp;quot;&amp;gt;usage&amp;lt;/span&amp;gt;: see [[rel-faq#How_is_rel_used|how is 'rel' used]].  Regarding &amp;lt;span id=&amp;quot;rev&amp;quot;&amp;gt;rev&amp;lt;/span&amp;gt;, see: [[rel-faq#Should_rev_even_be_used|should 'rev' even be used]].&lt;br /&gt;
&lt;br /&gt;
This page is also the official rel registry ([https://html.spec.whatwg.org/multipage/links.html#other-link-types WHATWG HTML] ([http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#other-link-types original link]), [http://www.w3.org/TR/html5/links.html#other-link-types W3C HTML5]). Add new and proposed rel values to the following section:&lt;br /&gt;
* [[existing-rel-values#HTML5_link_type_extensions|HTML5 link type extension]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== formats ==&lt;br /&gt;
These rel values are defined formats from specifications (HTML 4, microformats) are thus are &amp;lt;strong&amp;gt;recommended for general use&amp;lt;/strong&amp;gt;.  Alphabetically ordered by value.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* &amp;lt;strong&amp;gt;Do not&amp;lt;/strong&amp;gt; add proposed rel values for HTML5 here, add them to the [[#HTML5_link_type_extensions|HTML5 link type extensions]] table.&lt;br /&gt;
* &amp;lt;strong&amp;gt;Do not&amp;lt;/strong&amp;gt; add rel values you find in the wild to this table of rel formats, instead add them to the table in the [[existing-rel-values#POSH_usage|POSH section]].&lt;br /&gt;
* &amp;lt;strong&amp;gt;Do not&amp;lt;/strong&amp;gt; add non-HTML rel values you find to this table of rel formats, instead add them to the table in the [[existing-rel-values#non_HTML_rel_values|non HTML rel values section]].&lt;br /&gt;
* &amp;lt;strong&amp;gt;Do not&amp;lt;/strong&amp;gt; add rel values from obsolete/superceded proposals or drafts, instead add them to the table in the &amp;quot;dropped&amp;quot; section.&lt;br /&gt;
&lt;br /&gt;
Sources:&lt;br /&gt;
* W3C Recommendations: &lt;br /&gt;
** [http://www.w3.org/TR/html401/types.html#h-6.12 HTML 4.01 section 6.12 Link types] (HTML4 Link types)&lt;br /&gt;
** [http://www.w3.org/TR/grddl/ Gleaning Resource Descriptions from Dialects of Languages] (GRDDL)&lt;br /&gt;
* [[microformats]] specifications&lt;br /&gt;
** [[xfn]]&lt;br /&gt;
** [[rel-license]]&lt;br /&gt;
** [[rel-nofollow]]&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! Keyword&lt;br /&gt;
! Effect on &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt;&lt;br /&gt;
! Effect on &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt;&lt;br /&gt;
! Brief description &amp;lt;br /&amp;gt;(from the relevant specification where possible)&lt;br /&gt;
! Link to defining specification&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-acquaintance|acquaintance]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| the person represented by the current document considers the person represented by the referenced document to be an acquaintance&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-alternate|alternate]]&lt;br /&gt;
| external resource&lt;br /&gt;
| external relation&lt;br /&gt;
| Designates substitute versions for the document in which the link occurs. When used together with the &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; attribute, it implies a translated version of the document. When used together with the &amp;lt;code&amp;gt;media&amp;lt;/code&amp;gt; attribute, it implies a version designed for a different medium (or media). &lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-appendix|appendix]]&lt;br /&gt;
| allowed&lt;br /&gt;
| allowed&lt;br /&gt;
| Refers to a document serving as an appendix in a collection of documents. &lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-bookmark|bookmark]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| allowed&lt;br /&gt;
| Refers to a bookmark. A bookmark is a link to a key entry point within an extended document. The &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute may be used, for example, to label the bookmark. Note that several bookmarks may be defined in each document. &lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-chapter|chapter]]&lt;br /&gt;
| allowed&lt;br /&gt;
| allowed&lt;br /&gt;
| Refers to a document serving as a chapter in a collection of documents.&lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-child|child]]&lt;br /&gt;
| external relation&lt;br /&gt;
| external relation&lt;br /&gt;
| The referenced person is a child of the person represented by the current document. It may also indicate that the target document is a hierarchical child, or subdocument, of the current document.&lt;br /&gt;
| [[XFN]], [https://www.w3.org/TR/relations.html HTML 4.0 Specification]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-colleague|colleague]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| the referenced person is a colleague of the person represented by the current document&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-contact|contact]] &lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| the person represented by the current document considers the person represented by the referenced document to be a contact&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-contents|contents]]&lt;br /&gt;
| allowed&lt;br /&gt;
| allowed&lt;br /&gt;
| Refers to a document serving as a table of contents. Some user agents also support the synonym ToC (from &amp;quot;Table of Contents&amp;quot;).&lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-copyright|copyright]]&lt;br /&gt;
| allowed&lt;br /&gt;
| allowed&lt;br /&gt;
| Refers to a copyright statement for the current document.&lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-co-resident|co-resident]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| the referenced person lives in the same residence as the person represented by the current document&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-co-worker|co-worker]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| the referenced person is a co-worker of the person represented by the current document&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-crush|crush]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| this person considers the referenced person to be a crush (i.e. has a crush on the referenced person)&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-date|date]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| this person considers the referenced person to be a date (i.e. is dating the referenced person)&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-friend|friend]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| the person represented by the current document considers the person represented by the referenced document to be a friend&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-glossary|glossary]]&lt;br /&gt;
| allowed&lt;br /&gt;
| allowed&lt;br /&gt;
| Refers to a document providing a list of terms and their definitions that pertain to the current document.||[http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-help|help]]&lt;br /&gt;
| allowed&lt;br /&gt;
| allowed&lt;br /&gt;
| Refers to a document offering help (more information, links to other sources information, etc.)&lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-its-rules|its-rules]]&lt;br /&gt;
| allowed&lt;br /&gt;
| not allowed&lt;br /&gt;
| Refers to a document with external ITS rules.&lt;br /&gt;
| [http://www.w3.org/TR/its20/#selection-global-html5 Internationalization Tag Set (ITS) Version 2.0]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-kin|kin]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| the referenced person is part of the extended family of the person represented by the current document&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-license|license]]&lt;br /&gt;
| allowed&lt;br /&gt;
| allowed&lt;br /&gt;
| &amp;amp;hellip;indicates that the &amp;lt;nowiki&amp;gt;[referenced document]&amp;lt;/nowiki&amp;gt; is a license for the current page.&lt;br /&gt;
| [[rel-license]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-me|me]]&lt;br /&gt;
| external relation&lt;br /&gt;
| external relation&lt;br /&gt;
| the referenced document represents the same person as does the current document&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-met|met]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| this person has met the referenced person&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-muse|muse]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| the referenced person inspires the person represented by the current document&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-neighbor|neighbor]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| the referenced person lives nearby the person represented by the current document&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-next|next]]&lt;br /&gt;
| external relation&lt;br /&gt;
| external relation&lt;br /&gt;
| Refers to the next document in a linear sequence of documents. User agents may choose to preload the &amp;quot;next&amp;quot; document, to reduce the perceived load time.&lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-nofollow|nofollow]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| indicates that the destination of that hyperlink {{should-not}} be afforded any additional weight or ranking by user agents which perform link analysis upon web pages (e.g. search engines).&lt;br /&gt;
| [[rel-nofollow]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-parent|parent]]&lt;br /&gt;
| external relation&lt;br /&gt;
| external relation&lt;br /&gt;
| The referenced person is a parent of the person represented by the current document. It may also indicate that the target document is the hierarchical parent, or container, of the current document.&lt;br /&gt;
| [[XFN]], [https://www.w3.org/TR/relations.html HTML 4.0 Specification]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-prev|prev]]&lt;br /&gt;
| external relation&lt;br /&gt;
| external relation&lt;br /&gt;
| Refers to the previous document in an ordered series of documents. Some user agents also support the synonym &amp;quot;Previous&amp;quot;.&lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-previous|previous]]&lt;br /&gt;
| external relation&lt;br /&gt;
| external relation&lt;br /&gt;
| Synonym of &amp;lt;code&amp;gt;prev&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-section|section]]&lt;br /&gt;
| allowed&lt;br /&gt;
| allowed&lt;br /&gt;
| Refers to a document serving as a section in a collection of documents.&lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-sibling|sibling]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| the referenced person is a sibling of the person represented by the current document&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-spouse|spouse]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| the referenced person is a spouse of the person represented by the current document&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-start|start]]&lt;br /&gt;
| allowed&lt;br /&gt;
| allowed&lt;br /&gt;
| Refers to the first document in a collection of documents. This link type tells search engines which document is considered by the author to be the starting point of the collection.&lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-stylesheet|stylesheet]]&lt;br /&gt;
| external resource&lt;br /&gt;
| not allowed&lt;br /&gt;
| a style sheet for the current document&amp;lt;br /&amp;gt; used with the invisible &amp;lt;link href&amp;gt; element which is not ideal for content relationships. Content relationships should be user visible and thus uses with &amp;lt;a href&amp;gt; are strongly preferred. Unfortunately the use of stylesheet in user visible content like &amp;lt;a href&amp;gt; appears to be strictly theoretical.&lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-subsection|subsection]]&lt;br /&gt;
| allowed&lt;br /&gt;
| allowed&lt;br /&gt;
| Refers to a document serving as a subsection in a collection of documents.&lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-sweetheart|sweetheart]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| this person considers the referenced person to be their sweetheart&lt;br /&gt;
| [[XFN]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-tag|tag]]&lt;br /&gt;
| not allowed&lt;br /&gt;
| allowed&lt;br /&gt;
| &amp;amp;hellip;indicates that the &amp;lt;nowiki&amp;gt;[referenced document]&amp;lt;/nowiki&amp;gt; is an author-designated &amp;quot;tag&amp;quot; (or keyword/subject) for the current page.&lt;br /&gt;
| [[rel-tag]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-toc|toc]]&lt;br /&gt;
| allowed&lt;br /&gt;
| allowed&lt;br /&gt;
| Synonym of &amp;lt;code&amp;gt;contents&amp;lt;/code&amp;gt; (from &amp;quot;Table Of Contents&amp;quot;)&lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4 Link types]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-transformation|transformation]]&lt;br /&gt;
| allowed&lt;br /&gt;
| allowed&lt;br /&gt;
| Relates a source document to a transformation, usually represented in XSLT, that relates the source document syntax to the RDF graph syntax. Used in [[grddl|GRDDL]]&lt;br /&gt;
| [http://www.w3.org/TR/grddl/#transformation GRDDL] &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== notes ===&lt;br /&gt;
*&amp;lt;code&amp;gt;rel=&amp;quot;alternate&amp;quot;&amp;lt;/code&amp;gt; can take further meaning from additional attributes, such as &lt;br /&gt;
** &amp;lt;code&amp;gt;rel=&amp;quot;alternate&amp;quot; lang=&amp;quot;fr&amp;quot;&amp;lt;/code&amp;gt; (French language version of this page)&lt;br /&gt;
** &amp;lt;code&amp;gt;rel=&amp;quot;alternate&amp;quot; media=&amp;quot;print&amp;quot;&amp;lt;/code&amp;gt; (printable version of this page)&lt;br /&gt;
** &amp;lt;code&amp;gt;rel=&amp;quot;alternate&amp;quot; media=&amp;quot;handheld&amp;quot;&amp;lt;/code&amp;gt; (version of the page intended or better for handheld/portable devices like PDAs, cell phones, etc.)&lt;br /&gt;
&lt;br /&gt;
*Synonyms such as &amp;quot;previous&amp;quot;, &amp;quot;toc&amp;quot; are not as widely supported as the main term.&lt;br /&gt;
&lt;br /&gt;
== proposals ==&lt;br /&gt;
A few rel values have been developed as drafts as a result of going through most of the microformats [[process]], and are thus listed here for your serious consideration. You &amp;lt;strong&amp;gt;may use these values&amp;lt;/strong&amp;gt;, and if you find any problems with them please point them out on the respective &amp;quot;issues&amp;quot; page for the rel value.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! rel value !! summary !! proposed in !! external spec (if any)&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-pronunciation|pronunciation]] || &amp;amp;hellip;indicates that the destination of the 'link' element is a document providing a pronunciation lexicon for speech-synthesis purposes. || [[rel-pronunciation]]&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-directory|directory]] || &amp;amp;hellip;indicates that the destination of the hyperlink is a directory listing containing an entry for the current page. || [[rel-directory]]&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-enclosure|enclosure]] || &amp;amp;hellip;indicates that the destination of that hyperlink is intended to be downloaded and cached. || [[rel-enclosure]] || [http://www.apps.ietf.org/rfc/rfc4287.html RFC4287]&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-home|home]] || &amp;amp;hellip;indicates that the &amp;lt;nowiki&amp;gt;[referenced document]&amp;lt;/nowiki&amp;gt; is the homepage of the site in which the current page appears. || [[rel-home]]&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-payment|payment]] || &amp;amp;hellip;indicates that the destination of the hyperlink provides a way to show or give support (e.g. financial) for the current page|| [[rel-payment]]&lt;br /&gt;
|-&lt;br /&gt;
| vcs-* || &amp;amp;hellip;indicates that the destination of the hyperlink is the location of a Version Control System repository related to that page.|| || [https://joeyh.name/rfc/rel-vcs/ rel=vcs-*]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== HTML5 link type extensions ==&lt;br /&gt;
&lt;br /&gt;
The following values are registered as link type extensions per the [http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#other-link-types requirements in the WHATWG HTML spec] and the [http://www.w3.org/TR/html5/links.html#other-link-types requirements in the W3C HTML5 spec]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before you register a new value:&lt;br /&gt;
* '''Please check the [[#formats|Formats table]] and DO NOT re-register''' rel values that are already there. Please note that the W3C HTML WG has made a [http://lists.w3.org/Archives/Public/public-html/2011Feb/att-0481/issue-118-decision.html Decision] to drop &amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;up&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;first&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;last&amp;lt;/code&amp;gt; from the HTML5 spec itself.&lt;br /&gt;
* '''Please check the [[#dropped|Dropped table]] and DO NOT register''' values that are already there. If you believe a rel value was dropped from another specification without prejudice, please provide link/cite to explicit text/decision stating as such, e.g. the value was merely postponed, or perhaps expected to be spun-out into its own spec from the group developing that specification.&lt;br /&gt;
&lt;br /&gt;
Note that entries in the [[#formats|Formats table]] and entries that are already in HTML5 as built-in keywords are also considered extensions with the &amp;quot;Ratified&amp;quot; status.&lt;br /&gt;
&lt;br /&gt;
Please make sure that registrations added here have all the required data filled in ''including'':&lt;br /&gt;
* &amp;quot;Effect on link&amp;quot;&lt;br /&gt;
* &amp;quot;Effect on a and area&amp;quot; and &lt;br /&gt;
* a link to a spec that documents the keyword ''as an HTML &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; keyword''. (A spec that merely defines the file format of the link target but does not define the &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; keyword for use in HTML is not the kind of spec that is being required here.)&lt;br /&gt;
&lt;br /&gt;
Entries lacking any of the above required data will likely be removed. &lt;br /&gt;
&lt;br /&gt;
Changes to this registry will not be reflected in validators in real time. But validators will typically get automatically updated with the changes within one week or so&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! Keyword&lt;br /&gt;
! Effect on &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt;&lt;br /&gt;
! Effect on &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt;&lt;br /&gt;
! Brief description&lt;br /&gt;
! Link to specification&lt;br /&gt;
! Synonyms&lt;br /&gt;
! Status&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-about|about]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| The resource linked to contains information about the current page.&lt;br /&gt;
| [https://www.rfc-editor.org/rfc/rfc6903.html#section-2 RFC6903]&lt;br /&gt;
| It might combine with [[rel-me]] or [[rel-author]] in links to an &amp;quot;about&amp;quot; section focused on an author&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-amphtml|amphtml]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Specify an alternate version of the document written in AMP HTML&lt;br /&gt;
| [https://github.com/ampproject/amphtml AMP HTML documentation]&lt;br /&gt;
| could be combined with rel=alternate&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-apple-touch-icon|apple-touch-icon]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Specify a Webpage Icon for a “Web Clip”, or “touch icon”, for mobile devices (not limited to Apple devices).&lt;br /&gt;
| [http://developer.apple.com/library/safari/#documentation/appleapplications/reference/safariwebcontent/configuringwebapplications/configuringwebapplications.html Apple's Safari Web Content Guide]&lt;br /&gt;
| probably redundant with rel=icon&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-apple-touch-icon-precomposed|apple-touch-icon-precomposed]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Specify a Webpage Icon for a “Web Clip”, or “touch icon”, for mobile devices (not limited to Apple devices).&lt;br /&gt;
| [http://developer.apple.com/library/safari/#documentation/appleapplications/reference/safariwebcontent/configuringwebapplications/configuringwebapplications.html Apple's Safari Web Content Guide]&lt;br /&gt;
| probably redundant with rel=icon&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-apple-touch-startup-image|apple-touch-startup-image]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Specify a splashscreen for Web apps on iOS Safari &lt;br /&gt;
| [http://developer.apple.com/library/safari/#documentation/appleapplications/reference/safariwebcontent/configuringwebapplications/configuringwebapplications.html Apple's Safari Web Content Guide]&lt;br /&gt;
| maybe redundant with rel=icon with the sizes attribute?&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-archived|archived]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Hyperlink Annotation&lt;br /&gt;
| The target resource is archived and kept largely or solely for historical purposes.&lt;br /&gt;
| [https://sitemorse.com/rel-archived/ rel=&amp;quot;archived&amp;quot; description]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-attachment|attachment]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| The resource linked to is &amp;quot;attached&amp;quot; to this document, similar to email attachments. Used in WordPress.&lt;br /&gt;
| No formal specification&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-authorization_endpoint|authorization_endpoint]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Specify a hosted authorization server&lt;br /&gt;
| [https://www.w3.org/TR/indieauth/ IndieAuth spec]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-canonical|canonical]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Specifies the canonical URL for the current document in order to help avoid duplicate content.&lt;br /&gt;
| [http://en.wikipedia.org/wiki/Canonical_meta_tag Canonical meta tag] [http://www.Google.com/support/webmasters/bin/answer.py?answer=139066#2 Canonicalization at Google Webmaster Central] [http://www.Bing.com/community/site_blogs/b/webmaster/archive/2009/02/12/partnering-to-help-solve-duplicate-content-issues.aspx Microsoft Webmaster Center] [http://www.YSearchBlog.com/2009/02/12/fighting-duplication-adding-more-arrows-to-your-quiver/ Yahoo! Search Blog]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-category|category]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Refers to a category assigned to the current document or post. Implemented by WordPress for indicating a relation between a blog post and a category.&lt;br /&gt;
| [[rel-category]]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-code-repository|code-repository]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| indicates a code repository location. For link, it specifically indicates, in the case of server-generated content, the location of source code responsible for the generation of the current page, or, in the case of static files, where copies of the current page are housed). If the specific data/content built up at the page is stored separately from the generator (e.g., the code for a CMS vs. the specific CMS instance's SQL tables or JSON data files), this only refers to the generator and [[rel-content-repository|content-repository]] should be used to indicate the location for the storage of content. Otherwise, the code repository can be considered as also including the content. While the repository should contain its own license file, the [[rel-code-license|code-license]] rel-value is proposed as a direct pointer to the license (see also [[rel-content-license|content-license]]).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-code-license|code-license]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| indicates a license for code (a proposed broader replacement for [[rel-jslicense|jslicense]]). For link, it specifically indicates, in the case of server-generated content, the location of the license for all source code responsible for the generation of the current page, or, in the case of static files, the location of the license for all of these files). If the specific data/content built up at the page is stored separately from the generator (e.g., the code for a CMS vs. the specific CMS instance's SQL tables or JSON data files), this only refers to the generator and [[rel-content-license|content-license]] should be used to indication the license for the content. Otherwise, code-license can be considered as also covering the license of the content. Pointing to the repository containing the static or generator code files should be done with [[rel-code-repository|code-repository]] (and [[rel-content-repository|content-repository]] for any separate content).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-component|component]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Specify an HTML document that is treated as a component of this document.&lt;br /&gt;
| [https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/components/index.html Web Components]&lt;br /&gt;
| &lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-chrome-webstore-item|chrome-webstore-item]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Link tag to declare for app and extensions inline installations hosted in the Chrome Web Store.&lt;br /&gt;
| [https://developers.google.com/chrome/web-store/docs/inline_installation Using Inline Installation]&lt;br /&gt;
| &lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-content-repository|content-repository]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| indicates a repository housing data content. For link, it specifically indicates, in the case of server-generated content, the location where separately housed data files used to populate the current page are stored (otherwise &amp;quot;code-repository&amp;quot; is sufficient to include content as well as code). If the specific data/content built up at the page is stored separately from the generator (e.g., the code for a CMS vs. the specific CMS instance's SQL tables or JSON data files), this only refers to the data/content files and [[rel-code-repository|code-repository]] should be used to indicate the location for the storage of the generator source files. Otherwise, [[rel-code-repository|code-repository]] can be considered as also including the content instead. While the repository should contain its own license file, the [[rel-content-license|content-license]] rel-value is proposed as a direct pointer to the license (see also [[rel-code-license|code-license]]).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-content-license|content-license]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| indicates a license for data content. For link, it specifically indicates, in the case of server-generated content, the location of the license for all separately housed data files used to populate the current page are stored, (otherwise &amp;quot;code-license&amp;quot; is sufficient to cover the license of content as well as code)). If the specific data/content built up at the page is stored separately from the generator (e.g., the code for a CMS vs. the specific CMS instance's SQL tables or JSON data files), this only refers to the data/content files and [[rel-code-license|code-license]] should be used to indication the license for the generator source files. Otherwise, code-license can be considered as also covering the license of the content. Pointing to the repository containing the data files should be done with [[rel-content-repository|content-repository]] (and [[rel-code-repository|code-repository]] for the static or generator code files).&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#conformsTo|DCTERMS.conformsTo]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| An established standard to which the described resource conforms. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
| It may be replaced by the literal value in form of &amp;lt;code&amp;gt;&amp;amp;lt;meta name=&amp;quot;DCTERMS.conformsTo&amp;quot; content=&amp;quot;...&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#contributor|DCTERMS.contributor]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| An entity responsible for making contributions to the resource. Examples include a person, an organization, or a service. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
| It may be replaced by the literal value in form of &amp;lt;code&amp;gt;&amp;amp;lt;meta name=&amp;quot;DCTERMS.contributor&amp;quot; content=&amp;quot;...&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#creator|DCTERMS.creator]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| An entity primarily responsible for making the resource. Examples include a person, an organization, or a service. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
| It may be replaced by the literal value in form of &amp;lt;code&amp;gt;&amp;amp;lt;meta name=&amp;quot;DCTERMS.creator&amp;quot; content=&amp;quot;...&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#description|DCTERMS.description]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| An account of the resource. Description may include but is not limited to: an abstract, a table of contents, a graphical representation, or a free-text account of the resource.  &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
| It may be replaced by the literal value in form of &amp;lt;code&amp;gt;&amp;amp;lt;meta name=&amp;quot;DCTERMS.description&amp;quot; content=&amp;quot;...&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#hasFormat|DCTERMS.hasFormat]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A related resource that is substantially the same as the pre-existing described resource, but in another format.  &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#hasPart|DCTERMS.hasPart]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A related resource that is included either physically or logically in the described resource.  &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#hasVersion|DCTERMS.hasVersion]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A related resource that is a version, edition, or adaptation of the described resource.  &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#isFormatOf|DCTERMS.isFormatOf]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A related resource that is substantially the same as the described resource, but in another format.  &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#isPartOf|DCTERMS.isPartOf]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A related resource in which the described resource is physically or logically included.  &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#isReferencedBy|DCTERMS.isReferencedBy]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A related resource that references, cites, or otherwise points to the described resource. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#isReplacedBy|DCTERMS.isReplacedBy]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A related resource that supplants, displaces, or supersedes the described resource. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#isRequiredBy|DCTERMS.isRequiredBy]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A related resource that requires the described resource to support its function, delivery, or coherence. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#isVersionOf|DCTERMS.isVersionOf]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A related resource of which the described resource is a version, edition, or adaptation.	&amp;lt;br /&amp;gt;Changes in version imply substantive changes in content rather than differences in format. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#license|DCTERMS.license]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A legal document giving official permission to do something with the resource. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
| It may be replaced by the literal value in form of &amp;lt;code&amp;gt;&amp;amp;lt;meta name=&amp;quot;DCTERMS.license&amp;quot; content=&amp;quot;...&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#mediator|DCTERMS.mediator]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| An entity that mediates access to the resource and for whom the resource is intended or useful. In an educational context, a mediator might be a parent, teacher, teaching assistant, or care-giver. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
| It may be replaced by the literal value in form of &amp;lt;code&amp;gt;&amp;amp;lt;meta name=&amp;quot;DCTERMS.mediator&amp;quot; content=&amp;quot;...&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#publisher|DCTERMS.publisher]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| An entity responsible for making the resource available. Examples include a person, an organization, or a service. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
| It may be replaced by the literal value in form of &amp;lt;code&amp;gt;&amp;amp;lt;meta name=&amp;quot;DCTERMS.publisher&amp;quot; content=&amp;quot;...&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#references|DCTERMS.references]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A related resource that is referenced, cited, or otherwise pointed to by the described resource. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#relation|DCTERMS.relation]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A related resource. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#replaces|DCTERMS.replaces]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A related resource that is supplanted, displaced, or superseded by the described resource. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#requires|DCTERMS.requires]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A related resource that is required by the described resource to support its function, delivery, or coherence. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#rightsHolder|DCTERMS.rightsHolder]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A person or organization owning or managing rights over the resource. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
| It may be replaced by the literal value in form of &amp;lt;code&amp;gt;&amp;amp;lt;meta name=&amp;quot;DCTERMS.rightsHolder&amp;quot; content=&amp;quot;...&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#source|DCTERMS.source]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A related resource from which the described resource is derived. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dcterms.(property)#subject|DCTERMS.subject]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| The topic of the resource. &amp;lt;br /&amp;gt;&lt;br /&gt;
Requires Dublin Core namespace declaration: &amp;lt;code&amp;gt;'''&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://purl.org/dc/terms/&amp;lt;/nowiki&amp;gt;&amp;quot; /&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://dublincore.org/documents/dcmi-terms/ DCMI Metadata Terms]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-disclosure|disclosure]]&lt;br /&gt;
| Not allowed&lt;br /&gt;
| External Resource&lt;br /&gt;
| The 'disclosure' Link Relation Type designates a list of patent disclosures or a particular patent disclosure itself made with respect to material for which such relation type is specified.&lt;br /&gt;
| [http://tools.ietf.org/html/draft-yevstifeyev-disclosure-relation The 'disclosure' Link Relation Type]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-discussion|discussion]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Refers to discussion of the current document or post.&lt;br /&gt;
| [[rel-discussion]]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-donation|donation]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Indicates that the destination of the hyperlink provides a way to show or give support (e.g. financial) for the current page on a voluntary basis&lt;br /&gt;
| No formal specification&lt;br /&gt;
| Closely related to [[rel-payment]]&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-dns-prefetch|dns-prefetch]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Tells the browser to perform dns lookup for host names ahead of use.&lt;br /&gt;
| [https://developer.mozilla.org/En/Controlling_DNS_prefetching Mozilla documentation] [http://dev.chromium.org/developers/design-documents/dns-prefetching Google documentation]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-edit|edit]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Tells the browser where the current page can be edited&lt;br /&gt;
| [http://universaleditbutton.org/Registered_MIME_type#Alternate_Linking_Scheme Universal Edit Button Alternate Linking Scheme].  Implemented in at least [http://mediawiki.org MediaWiki].&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-edituri|EditURI]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| A blogging auto discovery value, commonly used by WordPress&lt;br /&gt;
| [http://bitworking.org/projects/atom/draft-gregorio-09.html#Edit AtomAPI]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-enclosure|enclosure]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| External Resource&lt;br /&gt;
| Indicates that the referred resource is intended to be downloaded and cached.&lt;br /&gt;
| [[rel-enclosure]]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-entry-content|entry-content]]&lt;br /&gt;
| Not allowed&lt;br /&gt;
| External Resource&lt;br /&gt;
| Indicates that the referenced document is an alternative display source for an Internet Explorer Web Slice.&lt;br /&gt;
| [http://msdn.microsoft.com/en-us/library/cc304073(VS.85).aspx#_alternative Web Slice format specification 0.9]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-external|external]]&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Indicates that the referenced document is not part of the same site as the current document.&lt;br /&gt;
| [[rel-external]]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-first|first]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Indicates that the document is part of a sequence, and that the link is leading to the document that is the first logical document in the sequence.&lt;br /&gt;
| [https://www.w3.org/TR/2011/WD-html5-20110113/links.html#link-type-first W3C Working Draft 13 January 2011]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-gbfs|gbfs]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| The location of the gbfs auto-discovery file&lt;br /&gt;
| [https://github.com/NABSA/gbfs/blob/master/gbfs.md General Bikeshare Feed Specification]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-gtfs-static|gtfs-static]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Indicates the associated GTFS Static file&lt;br /&gt;
| [https://developers.google.com/transit/gtfs/reference General Transit Feed Specification Reference]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-gtfs-realtime|gtfs-realtime]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Indicates the associated GTFS-Realtime file&lt;br /&gt;
| [https://developers.google.com/transit/gtfs-realtime/reference GTFS-realtime Reference]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-home|home]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Refers to the top level document for the current document. It can be combined with 'alternate' to indicate a feed for the site of the current page.&lt;br /&gt;
| [[rel-home]]&lt;br /&gt;
| [[rel-root]]&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-hub|hub]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Refers to a hub that enables registration for notification of updates to the current page.&lt;br /&gt;
| [http://pubsubhubbub.googlecode.com/svn/trunk/pubsubhubbub-core-0.3.html#discovery PubSubHubbub Spec] [https://www.w3.org/TR/websub/ WebSub spec]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-import|import]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| HTML Imports are a way to include and reuse HTML documents in other HTML documents.&lt;br /&gt;
| [http://www.w3.org/TR/html-imports HTML Imports]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-in-reply-to|in-reply-to]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Refers to an original post that the current page is a comment on or reply to.&lt;br /&gt;
| [[rel-in-reply-to]]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-root|root]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| The target document is the root node of the hierarchical tree structure that hosts the current document&lt;br /&gt;
| No formal specification&lt;br /&gt;
| [[rel-home]]&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-index|index]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Refers to a document providing a list of topics with pointers that pertain to the current document.&lt;br /&gt;
| [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-issues|issues]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Refers to issues regarding the current document or specification.&lt;br /&gt;
| [[rel-discussion]]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-jslicense|jslicense]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Refers to a document with JavaScript source code and license information (also called a [http://www.gnu.org/licenses/javascript-labels.html JavaScript License Web Labels] page). We might want choose a keyword for this that is more general -- there are many situations besides JavaScript in which it is desirable or required by license agreements (e.g., GNU GPL) to make an offer of both the source code and a copy of a license when distributing object code versions of a given work.&lt;br /&gt;
| [[rel-jslicense]]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-last|last]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Indicates that the document is part of a sequence, and that the link is leading to the document that is the last logical document in the sequence.&lt;br /&gt;
| [https://www.w3.org/TR/2011/WD-html5-20110113/links.html#link-type-last W3C Working Draft 13 January 2011]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-lightbox|lightbox]]&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Img Pop-Up&lt;br /&gt;
| Images with this attribute are displayed in a larger way than embedded in a website (or how you specified it) when clicked (e.g. with installed &amp;quot;Lightbox 2&amp;quot;-Plugin). When adding [group] to rel=&amp;quot;lightbox&amp;quot; all images get a clickable button for next/prev; insert into &amp;lt;code&amp;gt;&amp;amp;lt;a rel=&amp;quot;lightbox[group]&amp;quot;&amp;gt;&amp;amp;lt;img src=&amp;quot;http:example.com/img.jpg&amp;quot;&amp;gt;&amp;amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://lokeshdhakar.com/projects/lightbox2/ Lightbox 2] (needs actual specification to be kept in this list, this link is just documentation of one implementation)&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-lightvideo|lightvideo]]&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Video Pop-Up&lt;br /&gt;
| Loads the video in a lightbox effect&lt;br /&gt;
| [https://www.drupal.org/node/252276 Lightbox2 - How to display video content]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-main|main]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| The current page is a subsection or a less important page than the target resource &lt;br /&gt;
| No formal specification&lt;br /&gt;
| It can be a synonym of [[rel-parent]] when the latter refers to a document and not a person. It differs however from [[rel-home]] and [[rel-root]], as the latter refer only to the topmost resource in the hierarchical tree structure (and in this case they may be combined with [[rel-main|main]]). Note that [[rel-main]] does not necessarily refer to a higher node in a tree structure, as the target resource can simply be a more important sibling node.&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-manifest|manifest]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Imports or links to a manifest&lt;br /&gt;
| [http://w3c.github.io/manifest/#linking W3C Manifest for web application]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-mask-icon|mask-icon]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Specify a Webpage Icon for a “Pinned Tabs” on Safari 9.&lt;br /&gt;
| probably redundant with rel-icon&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-meta|meta]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| External metadata about the HTML document&lt;br /&gt;
| [http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210/#section-rdf-in-HTML W3C's RDF/XML Syntax Specification]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-micropub|micropub]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| the micropub endpoint for creating new posts&lt;br /&gt;
| [https://www.w3.org/TR/micropub/  Micropub scecification]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-noopener|noopener]]&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Annotation&lt;br /&gt;
| Requires that any browsing context created by following the hyperlink must not have an opener browsing context.&lt;br /&gt;
| [https://html.spec.whatwg.org/multipage/semantics.html#link-type-noopener 4.6.6.11 Link type ”noopener&amp;quot;]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-openid.delegate|openid.delegate]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| When the page that contains the link is used as an OpenID indentifier, the relying party perform sOpenID 1.1 authentication with the link target as the identifier instead. &lt;br /&gt;
| [http://openid.net/specs/openid-authentication-1_1.html#delegating_authentication OpenID Authentication 1.1]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-openid.server|openid.server]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| The OpenID server for the relying party to contact for OpenID 1.1 authentication&lt;br /&gt;
| [http://openid.net/specs/openid-authentication-1_1.html#anchor4 OpenID Authentication 1.1]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-openid2.local_id|openid2.local_id]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| When the page that contains the link is used as an OpenID indentifier, the relying party perform sOpenID 2.0 authentication with the link target as the identifier instead. &lt;br /&gt;
| [http://openid.net/specs/openid-authentication-2_0.html#rfc.section.7.3.3 OpenID Authentication 2.0]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-openid2.provider|openid2.provider]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| The OpenID server for the relying party to contact for OpenID 2.0 authentication&lt;br /&gt;
| [http://openid.net/specs/openid-authentication-2_0.html#rfc.section.7.3.3 OpenID Authentication 2.0]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-p3pv1|p3pv1]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| References a machine-readable privacy policy description in the P3P format&lt;br /&gt;
| [http://www.w3.org/TR/P3P/#syntax_link P3P spec]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-pgpkey|pgpkey]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Associates a PGP key with a Web page so that the Web page URL can be used as the commenter's URL in PGP-signed blog comments and the blogging system receiving the comment can fetch the key and verify the signature as belonging to the owner of the URL.&lt;br /&gt;
| [http://golem.ph.utexas.edu/~distler/blog/archives/000320.html PGP-Signed Comments]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-pingback|pingback]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| gives the address of the pingback server that handles pingbacks to the current document&lt;br /&gt;
| [http://www.hixie.ch/specs/pingback/pingback Pingback]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-preconnect|preconnect]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Indicates an origin that will be used to fetch required resources. Initiating an early connection, which includes the DNS lookup, TCP handshake, and optional TLS negotiation, allows the user agent to mask the high costs of connection establishment latency.&lt;br /&gt;
| [http://www.w3.org/TR/resource-hints/ Resource Hints Working Draft]&lt;br /&gt;
| &lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-prerender|prerender]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| External Resource&lt;br /&gt;
| Prerenders the Web page targeted by the link including running it scripts.&lt;br /&gt;
| [[rel-prerender]]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
 &lt;br /&gt;
|-&lt;br /&gt;
| [[rel-profile|profile]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Contextual External Resource &lt;br /&gt;
| indicate[s] that the destination of that hyperlink is a metadata profile (e.g. an [[XMDP]] profile) for the current page or portion thereof. See also [[xmdp-brainstorming]].&lt;br /&gt;
| [http://microformats.org/wiki/rel-profile rel-profile]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-publisher|publisher]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| External Resource &lt;br /&gt;
| Indicates that the referenced document is a metadata profile (e.g., a social-media/real-name profile such as a Google+ profile) for the publisher of the current page, or some portion of the current page.&lt;br /&gt;
| [https://support.google.com/plus/answer/1713826?hl=en Google help page]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-radioepg|radioepg]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| External Resource &lt;br /&gt;
| Indicates that the referenced document is a RadioDNS Service Information document (ETSI TS 102 818 s10.2.3) containing information on the radio station that publishes the current page&lt;br /&gt;
| [https://radiodns.org/developers/documentation RadioDNS Documentation]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-rendition|rendition]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| External Resource&lt;br /&gt;
| Indicates some example rendering, interpretation, or depiction of the source. User agents may choose to execute, display, or render the target in-place; or navigate to the target.&lt;br /&gt;
| [http://www.globalmentor.com/specs/html-rel-rendition/ HTML rel rendition]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-reply-to|reply-to]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| indicates any mailbox(es) (i.e. email addresses) to which responses are to be sent. ''Note: this is distinct from the 'in-reply-to' value which refers to the originating document, not to the address where comments should be sent.&lt;br /&gt;
| [http://tools.ietf.org/html/rfc2822 RFC2822] (originally [http://tools.ietf.org/html/rfc822#section-4.4.3 RFC822])&lt;br /&gt;
|&lt;br /&gt;
| ratified&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-schema.DCTERMS|schema.DCTERMS]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Maps the prefix &amp;quot;DCTERMS&amp;quot; for use in other Dublin-Core related link relations (such as DCTERMS.creator) and meta keywords&lt;br /&gt;
| [http://dublincore.org/documents/dc-html/#sect-4.2 Section 4.2 of &amp;quot;Expressing Dublin Core metadata using HTML/XHTML meta and link elements&amp;quot;]&lt;br /&gt;
| see also [https://wiki.whatwg.org/wiki/MetaExtensions &amp;quot;WhatWG MetaExtensions Wiki] for usage examples in meta keywords&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-service|service]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Atom Publishing Protocol editing service autodiscovery.&lt;br /&gt;
| [http://wiki.whatwg.org/wiki/ServiceRelExtension Documentation on the WHATWG wiki]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-shortlink|shortlink]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Specifies the preferred shortened URL for the page.&lt;br /&gt;
| [http://code.google.com/p/shortlink/wiki/Specification shortlink spec]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-sidebar|sidebar]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Indicates that the referenced document is intended to be shown in a secondary browsing context.&lt;br /&gt;
| [[rel-sidebar]]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-sitemap|sitemap]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Provides a link to an XML document describing the layout of the site.&lt;br /&gt;
| [[rel-sitemap]]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-subresource|subresource]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| An external resource intended for use within the current page.&lt;br /&gt;
| [http://www.chromium.org/spdy/link-headers-and-server-hint/link-rel-subresource Chromium documentation]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-sword|sword]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Not allowed&lt;br /&gt;
| SWORD is a lightweight protocol for remotely depositing content into repositories. .[http://swordapp.org/ The SWORD project]&lt;br /&gt;
| [[rel-sword]]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-syndication|syndication]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Refers to a page which is a syndicated copy of the current page.&lt;br /&gt;
| [[rel-syndication]]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-timesheet|timesheet]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Applies a timesheet to the document.&lt;br /&gt;
| [http://www.w3.org/TR/timesheets/#smilTimesheetsNS-Elements-Timesheet non-normative section in the Timesheet spec]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-token_endpoint|token_endpoint]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Specify an HTTP endpoint that Micropub clients can use to obtain an access token given an authorization code&lt;br /&gt;
| [https://www.w3.org/TR/indieauth/ IndieAuth spec]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-webmention|webmention]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| gives the address of the webmention endpoint that handles webmentions to the current document&lt;br /&gt;
| [https://www.w3.org/TR/webmention/ Webmention specification]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-widget|widget]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| External Resource&lt;br /&gt;
| Autodiscovery for W3C widgets&lt;br /&gt;
| [http://dev.w3.org/2006/waf/widgets/Overview.html#linking-to-a-widget-package-from-a-html- non-normative section in the Widget packaging spec]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-wlwmanifest|wlwmanifest]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Windows Live Writer manifest autodiscovery&lt;br /&gt;
| [http://msdn.microsoft.com/en-us/library/bb463263.aspx documentation on MSDN]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-image_src|image_src]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Specify a Webpage Icon for use by Facebook, Yahoo, Digg, etc.&lt;br /&gt;
| Unknown, but see for instance [http://www.niallkennedy.com/blog/2009/03/enhanced-social-share.html this]&lt;br /&gt;
| probably redundant with rel=icon&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-cmis-acl|http://docs.oasis-open.org/ns/cmis/link/200908/acl]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| External Resource&lt;br /&gt;
| Identifies the resource containing a CMIS ACL document for the link context&lt;br /&gt;
| [http://docs.oasis-open.org/cmis/CMIS/v1.0/cs01/cmis-spec-v1.0.html#_Toc243905525 CMIS 1.0, Section 3.4.3.4]&lt;br /&gt;
| &lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-stylesheet/less|stylesheet/less]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Less CSS framework stylesheets.&lt;br /&gt;
| [http://lesscss.org/#-client-side-usage Less CSS usage]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-yandex-tableau-widget|yandex-tableau-widget]] &lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Lets webmasters configure the appearance of their own site widgets in Yandex.Browser&lt;br /&gt;
| [https://api.yandex.com/tableau/ Yandex's Tableau API]&lt;br /&gt;
| &lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== brainstorming ==&lt;br /&gt;
Several rel values are being brainstormed as potential microformats and are thus listed here. If you find you have a use for such semantics in real world examples, &amp;lt;strong&amp;gt;consider trying out&amp;lt;/strong&amp;gt; these values and provide feedback on the respective brainstorming page(s) with your results and experiences.&lt;br /&gt;
&lt;br /&gt;
You may list new proposed rel values here, and even better if you can list and link to POSH uses in the wild.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! rel value !! summary !! brainstormed in and usage in the wild&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-accessibility|accessibility]] || indicate[s] that the destination of that hyperlink contains accessibility information for the current page. || [http://www.brucelawson.co.uk/2009/rel-accessibility/ blog post] which itself uses the rel value in a &amp;amp;lt;link&amp;amp;gt; tag in the head of the document.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-author|author]] || indicate[s] that the destination of that hyperlink represents the author of the current page. Combines with [[rel-me|rel-me]] to chain authorship information. || Google has said it will index rel-Author in this [http://googlewebmastercentral.blogspot.com/2011/06/authorship-markup-and-web-search.html blog post], with further [http://www.google.com/support/webmasters/bin/answer.py?answer=1229920 discussion of the rel-me connection] See also [http://dev.w3.org/html5/spec/Overview.html#link-type-author the HTML5 spec]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-bibliography|bibliography]] || indicate[s] that the destination of that hyperlink is a bibliography for the current page. || [http://microformats.org/discuss/mail/microformats-discuss/2007-October/010863.html mailing list post, 2007-10-15]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-cite|cite]] || indicate[s] that the destination of that hyperlink is an authoritative source or a precedent to the current page. || [[distributed-conversation-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-group|group]] || the referenced document represents a group to which the person represented by the current document belongs || [[group-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span id=&amp;quot;longdesc&amp;quot;&amp;gt;[[rel-longdesc|longdesc]]&amp;lt;/span&amp;gt; || Alternative to the img longdesc attribute, for use on visible links || [http://www.google.com/search?q=rel%3D%22longdesc%22 Google search for rel=longdesc in the wild] shows many sources of proposals. Please edit this to list the earliest and perhaps most recent/comprehensive proposal. No known real world POSH usage in the wild yet.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-map|map]] || Link to a map. Possibly embedded within an adr, hCard, geo or hCalendar. Parsers {{may}} attempt to parse the URL if it is a link to a known map site (e.g. Geohash, Google Maps, Multimap) and extract co-ordinates and other useful data. || (to [[User:TobyInk|TobyInk]] by email)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-member|member]] || the referenced document represents a member of the group represented by the current document || [[group-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-m_PageScroll2id|m_PageScroll2id]] || JS to scroll to a defined ID || [[group-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-prefetch|prefetch]] || indicates the URL and content-type of a resource that is likely to be a required resource when the next action or navigation is triggered. Initiating an early fetch allows the user agent to mask the request latency of the resource and make it available sooner to the application.|| [https://igrigorik.github.io/resource-hints/#prefetch resource hints draft]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-preload|preload]] || indicates the URL and content-type of a resource that should be fetched as early as possible by the user agent. Initiating an early fetch allows the user agent to mask the request latency of the resource and make it available sooner to the application.|| [https://igrigorik.github.io/resource-hints/#preload resource hints draft]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-prerender|prerender]] || indicates the URL of the next navigation target. Initiating a prerender allows the user agent to deliver an instant navigation experience: the user agent downloads the top-level resource and its assets, and performs all of the processing steps required to show the page without actually showing it to the user.|| [https://igrigorik.github.io/resource-hints/#prerender resource hints draft]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-profile|profile]] || indicate[s] that the destination of that hyperlink is a metadata profile (e.g. an [[XMDP]] profile) for the current page or portion thereof || [[xmdp-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-shortlink|shortlink]] || the referenced document represents the current document but with a shorter URL || [http://samj.net/2009/04/introducing-relshort-better-alternative.html blog post]&lt;br /&gt;
|-&lt;br /&gt;
| source || the referenced document represents the source code for the current document or project || [[source-brainstorming]] [http://adactio.com/journal/6667/ blog post]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| vcalendar-parent || link from an event to a containing event || [[User:TobyInk/hcalendar-1.1|hCalendar 1.1 draft]]&lt;br /&gt;
|-&lt;br /&gt;
| vcalendar-child || link from an event to a contained event || [[User:TobyInk/hcalendar-1.1|hCalendar 1.1 draft]]&lt;br /&gt;
|-&lt;br /&gt;
| vcalendar-sibling || link from an event to a related event with the same container || [[User:TobyInk/hcalendar-1.1|hCalendar 1.1 draft]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-status|status]] || the referenced document represents the status (or source of status updates) for the author of this document || [http://monkinetic.com/2009/11/24/status-autodiscovery-relstatus.html blog post]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| https://api.w.org/ || Link to Wordpress API || [https://wordpress.org/themes/twentysixteen/ Official Wordpress theme]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== more brainstorming ===&lt;br /&gt;
See also:&lt;br /&gt;
* [[genealogy-brainstorming]] for some thoughts on possible additional values for family relationships (use existing [[XFN]] [[rel-parent|parent]], [[rel-child|child]], [[rel-sibling|sibling]], [[rel-spouse|spouse]], [[rel-kin|kin]] values first though)&lt;br /&gt;
* [[xpn-brainstorming]] for some thoughts on possible additional values for professional relationships (use existing [[XFN]] [[rel-co-worker|co-worker]], [[rel-colleague|colleague]] values first though)&lt;br /&gt;
&lt;br /&gt;
== POSH usage ==&lt;br /&gt;
There are numerous rel values used as [[POSH]], both in the wild, whose origins are not necessarily known, nor are their meanings consistent.  There are also numerous rel values from external proposals of varying degrees of merit.  It is useful to document their existence and summarize their implied meanings/usage intent as research that may be used to perhaps take one or more of them thru the microformats [[process]] if there is both sufficient interest and sufficient in the wild usage.&lt;br /&gt;
&lt;br /&gt;
Note: If a value is missing from this table, it may have either already been promoted by writing it up as a proposal, or demoted by being explicitly dropped. Please check the other tables first before adding to this table.&lt;br /&gt;
&lt;br /&gt;
Note: this list is incomplete, please help complete it from the following sources:&lt;br /&gt;
&lt;br /&gt;
External sources: &lt;br /&gt;
* [http://developer.mozilla.org/about/meta Meta Information in DevMo Docs] (DevMo)&lt;br /&gt;
* [http://wiki.mozilla.org/Microsummaries Microsummary]&lt;br /&gt;
* [http://lachy.id.au/dev/markup/specs/wclr/ Web Communication Link Relationships] (WCLR)&lt;br /&gt;
* [http://www.w3.org/MarkUp/Relationships.html W3C Link Relationship values draft] (LRdraft) - from a draft of the HTML spec circa 1991. &lt;br /&gt;
* [http://www.whatwg.org/specs/web-apps/current-work/multipage/section-links.html#linkTypes HTML5 draft] '''Liable to change'''&lt;br /&gt;
* [http://wiki.foaf-project.org/Autodiscovery FOAF Project Wiki: Autodiscovery] (FOAF)&lt;br /&gt;
* [http://www.apps.ietf.org/rfc/rfc4685.html RFC4685]&lt;br /&gt;
* [http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html Google Blog]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! rel value !! summary !! origin !! proposal(s)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-archive|archive]] || index of archived entries || unknown, perhaps Wordpress open source blogging software || WCLR&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-archives|archives]] || Provides a link to a collection of records, documents, or other materials of historical interest. ||  || HTML5&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[rel-author|author]]||see brainstorming above for suggested use by google||unknown || DevMo / HTML5&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-canonical|canonical]] || To help search engines disambiguate the same page with multiple representations || Google || [http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html Google]/[http://www.bing.com/community/blogs/webmaster/archive/2009/02/12/partnering-to-help-solve-duplicate-content-issues.aspx Microsoft]/[http://www.ysearchblog.com/2009/02/12/fighting-duplication-adding-more-arrows-to-your-quiver/ Yahoo!], [http://blog.ask.com/2009/02/ask-is-going-canonical.html Ask Jeeves]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-comment|comment]] || &amp;amp;hellip; || &amp;amp;hellip; || WCLR&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-contribution|contribution]] || &amp;amp;hellip; || &amp;amp;hellip; || WCLR&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-edituri|EditURI]] &lt;br /&gt;
| Location of the xml-rpc gateway for a Wordpress install that allows external programs to add, edit and delete posts. Used by &amp;quot;[http://codex.wordpress.org/Weblog_Client WordPress blog client]&amp;quot; software for automating posting and updating blog content from your desktop. || Seen in [http://www.wordpress.org/ WordPress], e.g. [http://www.tom-watson.co.uk/].  || Description stubbed in [[rel-edituri]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-endorsed|endorsed]] || &amp;amp;hellip; || &amp;amp;hellip; || WCLR&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-fan|fan]] || xxxx. || &amp;amp;hellip; || [[hcard-user-profile-authoring]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-feed|feed]] || Gives the address of a syndication feed for the current document. || &amp;amp;hellip; || WCLR/ HTML5&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-footnote|footnote]] || Location of the footnote on a link to a footnote. || Markdown preprocessors such as [http://maruku.rubyforge.org/ Maruku] || HTML5&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-icon|icon]] || Imports an icon to represent the current document. (Allowed in &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; only) || [http://dev.w3.org/html5/spec-LC/links.html#rel-icon HTML5] || WCLR/HTML5&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-kinetic-stylesheet|kinetic-stylesheet]] || Imports a [http://kssproject.org/ KSS] 'kinetic stylesheet' to bind dynamic behavior to elements || Used in the [http://plone.org Plone] Content Management System || &amp;amp;hellip;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-lightbox|lightbox]] || Hook - Indicates that following the link will trigger a &amp;quot;lightbox&amp;quot; script (Allowed in &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; only) || ([http://www.google.co.uk/search?q=rel%3D%22lightbox%22 Google search for rel=lightbox in the wild]) Use &amp;quot;lightbox&amp;quot; instead of &amp;quot;clearbox&amp;quot; or &amp;quot;prettyPhoto&amp;quot; || &amp;amp;hellip; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-made|made]] || &amp;amp;hellip; || &amp;amp;hellip; || LRdraft&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-meta|meta]] || &amp;amp;hellip; ||  [http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/#transport 1999 W3C RDF syntax REC] || FOAF&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-microsummary|microsummary]]|| &amp;amp;hellip; || &amp;amp;hellip; ||[http://wiki.mozilla.org/Microsummaries Microsummary], be aware of: [[page-summary-formats#Issues_2|microsummary issues]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-noreferrer|noreferrer]] || indicates that no referrer information is to be leaked when following the link. || [http://dev.w3.org/html5/spec-LC/links.html#rel-noreferrer HTML5] || HTML5&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-openid-delegate|openid.delegate]] || &amp;amp;hellip; || ([http://www.google.co.uk/search?q=%22rel%3Dopenid%22 Google search for rel=openid.* in the wild]) || &amp;amp;hellip;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-openid-server|openid.server]] || &amp;amp;hellip; || ([http://www.google.co.uk/search?q=%22rel%3Dopenid%22 Google search for rel=openid.* in the wild]) || &amp;amp;hellip;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-permalink|permalink]] || indicate a permanent link for some, or all, content within the document. obsolete; use &amp;lt;code&amp;gt;bookmark&amp;lt;/code&amp;gt; instead. || &amp;amp;hellip; || WCLR&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-pgpkey|pgpkey]] || (see also rel-publickey) || &amp;amp;hellip; || [http://golem.ph.utexas.edu/~distler/blog/archives/000320.html], [http://golem.ph.utexas.edu/~distler/blog/archives/000325.html]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-pingback|pingback]] || Gives the address of the pingback server that handles pingbacks to the current document. (Allowed in &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; only) || &amp;amp;hellip; || WCLR/ HTML5&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-popover|popover]] || Used by a JS widget to display a large, descriptive tooltip. || [http://twitter.github.com/bootstrap Twitter's Bootstrap] [http://twitter.github.com/bootstrap/javascript.html#popovers Popover.js] || &amp;amp;hellip;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-prefetch|prefetch]] || Specifies that the target resource should be pre-emptively cached. (Allowed in &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; only) || &amp;amp;hellip; || HTML5&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-privacy|privacy]] || Specifies that the target resource is the privacy policy. || &amp;amp;hellip; || &amp;amp;hellip;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-publickey|publickey]] || (see also rel-pgpkey) || &amp;amp;hellip; || [http://rasterweb.net/raster/2002/12/12/20021212072812/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-referral|referral]] || &amp;amp;hellip; || &amp;amp;hellip; || WCLR&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-related|related]] || &amp;amp;hellip; || &amp;amp;hellip; || WCLR&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-replies|replies]] || indicates a continued thread || unknown || [http://www.apps.ietf.org/rfc/rfc4685.html RFC4685]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-respond-proxy|respond-proxy]] || Working with respond.js - proxy on external server || [https://github.com/scottjehl/Respond] || [https://github.com/scottjehl/Respond]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-respond-redirect|respond-redirect]] || Working with respond.js - redirect location on local server || [https://github.com/scottjehl/Respond] || [https://github.com/scottjehl/Respond]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-resource|resource]] || &amp;amp;hellip; || &amp;amp;hellip; || WCLR&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-search|search]] || &amp;amp;hellip; || unknown || unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-sitemap|sitemap]] || Links to a site map document. || &amp;amp;hellip; || http://www.sitemaps.org/&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-sponsor|sponsor]] || &amp;amp;hellip; || &amp;amp;hellip; || WCLR&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-tooltip|tooltip]] || Used by a JS widget to display a tooltip similar (though more customizable) to what is shown by browsers if the 'title' attribute is present. || [http://twitter.github.com/bootstrap Twitter's Bootstrap] [http://twitter.github.com/bootstrap/javascript.html#tooltips Tooltip.js] (and likely other JS tools) || &amp;amp;hellip;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-trackback|trackback]] || &amp;amp;hellip; || unknown, perhaps open source Movable Type blogging software || WCLR&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-unendorsed|unendorsed]] || (probably redundant to [[rel-nofollow|nofollow]]) || &amp;amp;hellip; || WCLR&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-user|user]] || &amp;amp;hellip; || &amp;amp;hellip; || WCLR&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-wlwmanifest|wlwmanifest]] || Used by &amp;quot;[http://explore.live.com/windows-live-writer Windows Live Writer],&amp;quot; a Microsoft [http://codex.wordpress.org/Weblog_Client blog client] for automating posting and updating blog content from your desktop. || Seen in [http://www.wordpress.org/ WordPress], e.g. [http://www.tom-watson.co.uk/]. Similar values are probably used by other blog content management systems as well. || &amp;amp;hellip;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== WCLR ===&lt;br /&gt;
&lt;br /&gt;
The WCLR proposal is described by its author (in e-mail, 2007-09-25) as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;amp;hellip;now effectively obsolete, since HTML5 and Microformats cover all the worthwhile relationships in that already.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are [http://www.whatwg.org/specs/web-apps/current-work/multipage/section-links.html#linkTypes covered by HTML5 already]:&lt;br /&gt;
&lt;br /&gt;
* permalink -&amp;gt; bookmark&lt;br /&gt;
* archive -&amp;gt; archives&lt;br /&gt;
* feed&lt;br /&gt;
* pingback&lt;br /&gt;
* unendorsed -&amp;gt; nofollow&lt;br /&gt;
&lt;br /&gt;
The rest now seem unnecessary.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nonetheless, there may be some mileage in using them in microformats, at least until HTML5 is widely available.&lt;br /&gt;
&lt;br /&gt;
== Dublin Core ==&lt;br /&gt;
In the past, Dublin Core values have been added to this page in the table about HTML5 features, but no examples, nor an actual specification explicitly stating how the value(s) should be used in HTML could be found. The linked specifications below have been updated so we should start considering Dublin Core values accordingly.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! rel value !! summary !! source&lt;br /&gt;
|-&lt;br /&gt;
| schema.DC || a specification of all metadata terms maintained by the Dublin Core Metadata Initiative, with regard to the fifteen terms of the Dublin Core Metadata Element Set already published || [http://www.dublincore.org/documents/dcq-html/ Dublin Core]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| schema.DCTERMS || a specification of all metadata terms maintained by the Dublin Core Metadata Initiative, reflecting the changes described more fully in the 2012 document &amp;quot;Maintenance changes to DCMI Metadata Terms&amp;quot; [http://dublincore.org/usage/decisions/2012/dcterms-changes/] || [http://www.dublincore.org/documents/dcq-html/ Dublin Core]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Issues need updating given new information from linked resources.'''&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* Dublin Core. This search may help: [http://www.google.co.uk/search?as_q=rel%3Dschema.*&amp;amp;hl=en&amp;amp;num=10&amp;amp;btnG=Google+Search&amp;amp;as_epq=&amp;amp;as_oq=&amp;amp;as_eq=&amp;amp;lr=&amp;amp;as_ft=i&amp;amp;as_filetype=&amp;amp;as_qdr=all&amp;amp;as_occt=any&amp;amp;as_dt=i&amp;amp;as_sitesearch=http%3A%2F%2Fdublincore.org&amp;amp;as_rights=&amp;amp;safe=images]. &lt;br /&gt;
** '''examples from that search only use invisible &amp;lt;code&amp;gt;&amp;amp;lt;link href&amp;amp;gt;&amp;lt;/code&amp;gt; element'''. At first glance it appears the results from the search show only uses with the invisible &amp;lt;code&amp;gt;&amp;amp;lt;link href&amp;amp;gt;&amp;lt;/code&amp;gt; element which is not ideal for content relationships.  Content relationships should be user visible and thus uses with &amp;lt;code&amp;gt;&amp;amp;lt;a href&amp;amp;gt;&amp;lt;/code&amp;gt; are strongly preferred.  &lt;br /&gt;
*** [http://www.ietf.org/rfc/rfc2731.txt RFC2731] defines &amp;lt;code&amp;gt;rel=&amp;quot;schema.AC&amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;rel=&amp;quot;schema.RC&amp;quot;&amp;lt;/code&amp;gt; with the pattern &amp;lt;code&amp;gt;rel=&amp;quot;schema.PREFIX&amp;quot;&amp;lt;/code&amp;gt; as a syntax for defining namespaces for use in meta[@name], *[@rel], *[@rev] and (as per eRDF) *[@class] attributes. A link to a Dublin Core metadata schema is generally not suitable for end users, so &amp;lt;code&amp;gt;&amp;amp;lt;link href&amp;amp;gt;&amp;lt;/code&amp;gt; appears to be more appropriate than &amp;lt;code&amp;gt;&amp;amp;lt;a href&amp;amp;gt;&amp;lt;/code&amp;gt; for those that use Dublin Core metadata schemas.&lt;br /&gt;
*** The scheme proposed above provides metadata namespace declarations. As described by DCMI specifications, such indications '''cannot''' be provided w/o a suitable namespace. In order to give complete pieces of information, the correct description set must be: &amp;lt;code&amp;gt;&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;http://purl.org/dc/terms/&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; (for the namespace declaration, followed by) &amp;lt;code&amp;gt;&amp;amp;lt;meta name=&amp;quot;DCTERMS.&amp;lt;nowiki&amp;gt;[element]&amp;lt;/nowiki&amp;gt;&amp;quot; content=&amp;quot;&amp;lt;nowiki&amp;gt;[element.value]&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; for related elements. &lt;br /&gt;
**** Note: [http://purl.org/dc/terms/ schema.DCTERMS] is conventionally related to an upgraded elements list than [http://purl.org/dc/elements/1.1/ schema.DC] and should be preferred as rel values. Both are discussed here for subject completeness) &lt;br /&gt;
** '''proposal to use in content currently only theoretical'''. Thus unfortunately the use of Dublin Core in user visible content like &amp;lt;code&amp;gt;&amp;amp;lt;a href&amp;amp;gt;&amp;lt;/code&amp;gt; appears to be strictly theoretical. See [http://microformats.org/discuss/mail/microformats-discuss/2008-January/011445.html microformats-discuss/2008-January/011445.html] for a proposal to use Dublin Core in user visible content.&lt;br /&gt;
*** '''recent improvements'''. DCMI solves some trouble concerning metadata through the ''description set model''. Some of these informations cannot currently be provided in any standard ways other than DC, namely dates, validity and periodicity. Following this public bug report ([https://www.w3.org/Bugs/Public/show_bug.cgi?format=multiple&amp;amp;id=22520]), the correct namespace declaration for DC and DCTERMS metadata are now considered valid HTML code. We '''must''' encourage this practice both for internal usefulness and for shared practices. &lt;br /&gt;
&lt;br /&gt;
* The Dublin Core document [http://dublincore.org/documents/dc-html/ &amp;quot;Expressing Dublin Core metadata using HTML/XHTML meta and link elements&amp;quot;] is a specification for, and gives examples of, both &amp;lt;link rel=&amp;quot;schema.DC&amp;quot; href=&amp;quot;http://purl.org/dc/elements/1.1/&amp;quot;&amp;gt; and &amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;http://purl.org/dc/terms/&amp;quot;&amp;gt;. Note that Dublin Core encourages the use of DCTERMS elements over DC. A list of projects which use Dublin Core metadata is maintained [http://dublincore.org/projects/ here].&lt;br /&gt;
* [http://dublincore.org/documents/dc-html/ &amp;quot;Expressing Dublin Core metadata using HTML/XHTML meta and link elements&amp;quot;] also includes examples of &amp;lt;link rel=&amp;quot;DCTERMS.[element]&amp;quot; href=&amp;quot;&amp;quot;&amp;gt;, where [element] = subject, isReferencedBy, creator, and publisher. The &amp;lt;link&amp;gt; tag is used instead of the &amp;lt;meta&amp;gt; tag whenever the content is a URL. (Note that this use is different from, but related to, &amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;&amp;quot;&amp;gt;.) Potentially, ''any'' of the 55 DCTERMS elements could be used in this way, and this could include use in HTML 5.&lt;br /&gt;
** As said before, HTML5 validators now allow the use of &amp;lt;code&amp;gt;&amp;amp;lt;link rel=&amp;quot;schema.DCTERMS&amp;quot; href=&amp;quot;http://purl.org/dc/terms/&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; for namespace declarations.&lt;br /&gt;
&lt;br /&gt;
* According to DCMI specification linked above, as well as [http://dublincore.org/documents/dc-html/ &amp;quot;Expressing Dublin Core metadata using HTML/XHTML meta and link elements&amp;quot;] documentation, HTML5 @rel attribute proposed values table has been updated. It now includes a subset of DCMI ''/terms/'' namespace properties, more specifically those whose value can (or must) be logically expressed by a resource, so that the &amp;quot;href&amp;quot; attribute value becomes a non-literal value surrogate referring to the resource itself.&lt;br /&gt;
** Elements from ''/elements/1.1/'' namespace have not been included on purpose. According to [http://wiki.dublincore.org/index.php/FAQ/DC_and_DCTERMS_Namespaces &amp;quot;FAQ/DC and DCTERMS Namespaces&amp;quot;], the old namespace is maintained for legacy purposes only and it is not as suitable for non-literal values as the ones denoted by &amp;lt;code&amp;gt;&amp;amp;lt;link&amp;gt;&amp;lt;/code&amp;gt; elements.&lt;br /&gt;
&lt;br /&gt;
== Use with HTTP Link Header ==&lt;br /&gt;
You can also use any of the rel values (that are allowed for link elements) with HTTP Link Headers, &lt;br /&gt;
&lt;br /&gt;
Example: returning a Javascript file with a license (since JS itself has no way to indicate a license)&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
Link: &amp;lt;http://creativecommons.org/publicdomain/zero/1.0/&amp;gt;; rel=&amp;quot;license&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For multiple licenses (e.g. CC-SA and GPL), simply use multiple &amp;lt;code&amp;gt;Link:&amp;lt;/code&amp;gt; headers.&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
Link: &amp;lt;http://creativecommons.org/licenses/by-sa/3.0/&amp;gt;; rel=&amp;quot;license&amp;quot;&lt;br /&gt;
Link: &amp;lt;http://www.gnu.org/licenses/gpl.html&amp;gt;; rel=&amp;quot;license&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: similarly, linking to a copyright statement for an image:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
Link: &amp;lt;http://example.org/copyright.html&amp;gt;; rel=&amp;quot;copyright&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
or providing a brief inline copyright statement:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
Link: &amp;lt;data:text/plain;charset=utf-8,Copyright 2013 ExampleCo, All Rights Reserved.&amp;gt;; rel=&amp;quot;copyright&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== unspecified ==&lt;br /&gt;
Some rel values have been added to this page perhaps in one of the tables above, but no examples, nor an actual specification explicitly stating that the value(s) should be used in the HTML 'rel' attribute could be found. They are listed here in the hopes someone can discover more specific/precise URLs to examples or specifications about them (preferably both).  Until such precise URLs to examples/specs are provided, the values can be treated as they are purely theoretical and thus of little interest.&lt;br /&gt;
&lt;br /&gt;
A simple list here is sufficient.&lt;br /&gt;
&lt;br /&gt;
== non HTML rel values ==&lt;br /&gt;
There are markup languages other than HTML that also have a rel attribute, often based upon the HTML rel attribute.&lt;br /&gt;
It is useful to document some of these other languages and their rel values for both reference purposes, and to provide  background research for the possible development and re-use of these values in HTML, as [[poshformats]] or [[microformats]]&lt;br /&gt;
&lt;br /&gt;
Sources:&lt;br /&gt;
* [[Atom]] [[RFC4287]] specification. &lt;br /&gt;
* See http://www.iana.org/assignments/link-relations.html for more.&lt;br /&gt;
* See [http://amundsen.com/media-types/maze/format/#link-relations Maze+XML]&lt;br /&gt;
* See [http://amundsen.com/media-types/collection/format/#link-relations Collection+JSON]&lt;br /&gt;
* See [http://www.opensearch.org/Specifications/OpenSearch/1.1#Url_rel_values OpenSearch]&lt;br /&gt;
* See [http://tools.ietf.org/html/rfc6861 The Create-Form and Edit-Form Link Relations (RFC6861)]&lt;br /&gt;
* See [http://rels.messages.io Workflow-Related Link Relations at Messages.io]&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! rel value !! summary&amp;lt;br /&amp;gt;(from the relevant specification where possible)) !! defining specification&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| self&lt;br /&gt;
| From http://www.ietf.org/rfc/rfc4287.txt : &amp;lt;blockquote&amp;gt;The value &amp;quot;self&amp;quot; signifies that the IRI in the value of the href attribute identifies a resource equivalent to the containing element.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
| [[Atom]] http://www.ietf.org/rfc/rfc4287.txt&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| http://gdata.youtube.com/schemas/2007#in-reply-to || See http://code.google.com/apis/youtube/2.0/developers_guide_protocol_comments.html || YouTube extension to Atom&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| collection || Refers to a resource which represents a collection of which the current resource is a member.&lt;br /&gt;
&lt;br /&gt;
When used in the Maze+XML media type, the associated URI returns the available collection of mazes.&lt;br /&gt;
  || Maze+XML, Collection+JSON, OpenSearch&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| compensatingtx || Link to a resource representing information about a compensating transaction for each member transaction of a [http://www.cs.cornell.edu/andru/cs711/2002fa/reading/sagas.pdf Long-Lived Compensating Transaction] || See [http://rels.messages.io/#compensatingtx Compensating Transaction Link Relation]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| east || Refers to a resource to the &amp;quot;east&amp;quot; of the current resource.&lt;br /&gt;
&lt;br /&gt;
When used in the Maze+XML media type, the associated URI points to a neighboring cell resource to the east in the active maze.&lt;br /&gt;
&lt;br /&gt;
 || Maze+XML&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| events || Link to a collection resource representing a list of subscribe-able events. || See [http://rels.messages.io/#events Events Link Relation]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| exit || Refers to a resource that represents the exit or end of the current client actvity or process.&lt;br /&gt;
&lt;br /&gt;
When used in the Maze+XML media type, the associated URI points to the final exit resource of the active maze.&lt;br /&gt;
&lt;br /&gt;
 || Maze+XML&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| north || Refers to a resource that is &amp;quot;north&amp;quot; of the current resource.&lt;br /&gt;
&lt;br /&gt;
When used in the Maze+XML media type, the associated URI points to a neighboring cell resource to the north in the active maze.&lt;br /&gt;
&lt;br /&gt;
 || Maze+XML&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| south || Refers to a resource that is &amp;quot;south&amp;quot; of the current resource.&lt;br /&gt;
&lt;br /&gt;
When used in the Maze+XML media type, the associated URI points to a neighboring cell resource to the south in the active maze.&lt;br /&gt;
&lt;br /&gt;
 || Maze+XML&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-via|via]] || Identifies a resource that is the source of the information in the context. ||  Atom 1.0 Syndication format (RFC 4287)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| west || Refers to a resource that is &amp;quot;west&amp;quot; of the current resource.&lt;br /&gt;
&lt;br /&gt;
When used in the Maze+XML media type, the associated URI points to a neighboring cell resource to the west in the active maze.&lt;br /&gt;
&lt;br /&gt;
 || Maze+XML&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| item || The target IRI points to a resource that is a member of a collection represented by the context IRI. || Collection+JSON&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| create-form || When included in a resource, the &amp;quot;create-form&amp;quot; link relation MAY identify a target resource that represents the form to append a new member to the link context. || See [http://tools.ietf.org/html/rfc6861 The Create-Form and Edit-Form Link Relations (RFC6861)]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| edit-form || When included in a resource, the &amp;quot;edit-form&amp;quot; link relation identifies a target resource that represents the form for editing associated resource. || See [http://tools.ietf.org/html/rfc6861 The Create-Form and Edit-Form Link Relations (RFC6861)]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| lightframe || Opens the target in a lightbox. On inclusion it provides a simple target the lightframe and loads the content in a lightbox effect || Lightbox&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| superbox[image] || jQuery Superbox! is a script which allows you display windows with the lightbox effect. || superbox&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| wp-video-lightbox || wp-video-lightbox! is a rel to anchor tag script display videos with the lightbox effect. || wp-video-lightbox&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| youtube || Opens the target youtube video in using the Swipebox Plugin || Swipebox&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| shadowbox || shadowbox is a jQuery script for images displaying with the &amp;quot;lightbox&amp;quot; effects. || shadowbox&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| permission || When included in a resource, the &amp;quot;permission&amp;quot; link relation MAY identify a target resource that represents the list of entities that can access or modify the resource in the link context. || See [http://cdoc.io/spec.html#permission-link-relation Collection Document Media Type Specification]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| sub || When included in a resource representation of an event, the &amp;quot;sub&amp;quot; (subscription) link relation MAY identify a target resource that represents the ability to subscribe to the pub/sub  event-type resource in the link context. || See [http://rels.messages.io/#sub Subscription Link Relation]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| unsub || When included in a resource representation of an event, the &amp;quot;unsub&amp;quot; (subscription cancellation) link relation MAY identify a target resource that represents the ability to un-subscribe from the pub/sub  event-type resource in the link context. || See [http://rels.messages.io/#unsub Subscription Cancellation Link Relation]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| version-history&lt;br /&gt;
| When included on a versioned resource, this link points to a resource containing the version history for this resource.&lt;br /&gt;
| [http://tools.ietf.org/html/rfc5829 RFC 5829]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| latest-version&lt;br /&gt;
| When included on a versioned resource, this link points to a resource containing the latest (e.g., current) version.&lt;br /&gt;
| [http://tools.ietf.org/html/rfc5829 RFC 5829]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| working-copy&lt;br /&gt;
| When included on a versioned resource, this link points to a working copy for this resource.&lt;br /&gt;
| [http://tools.ietf.org/html/rfc5829 RFC 5829]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| working-copy-of&lt;br /&gt;
| When included on a working copy, this link points to the versioned resource from which this working copy was obtained.&lt;br /&gt;
| [http://tools.ietf.org/html/rfc5829 RFC 5829]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| predecessor-version&lt;br /&gt;
| When included on a versioned resource, this link points to a resource containing the predecessor version in the version history.&lt;br /&gt;
| [http://tools.ietf.org/html/rfc5829 RFC 5829]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| successor-version&lt;br /&gt;
| When included on a versioned resource, this link points to a resource containing the successor version in the version history.&lt;br /&gt;
| [http://tools.ietf.org/html/rfc5829 RFC 5829]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ... || ... || ...&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== dropped ==&lt;br /&gt;
The following rel values were in earlier version(s) of specification(s) and it is presumed by their absence from the most recent version of the respective specification(s) that they have been deprecated or obsoleted. &lt;br /&gt;
&lt;br /&gt;
In general, you {{should not}} use any dropped values.&lt;br /&gt;
&lt;br /&gt;
If any such values have been superceded by standard values (see the first table on this page), then you {{must not}} use the dropped versions.&lt;br /&gt;
&lt;br /&gt;
In particular:&lt;br /&gt;
* if a rel value was in a draft and is missing (without explanation) from the final spec, or&lt;br /&gt;
* if a rel value was in a previous version of and is missing (without explanation) from an update to the specification (even a draft update)&lt;br /&gt;
&lt;br /&gt;
Then absent any other information or explanation, it is presumed that the group/editors working on that specification decided to explicitly drop it (either in development, or in the updated version) and thus it should be obsoleted (not re-registered). &lt;br /&gt;
&lt;br /&gt;
If you wish to add them, please research &amp;lt;em&amp;gt;why&amp;lt;/em&amp;gt; such values were omitted from latter specifications before doing so. If you do discover the reasoning, please add a short statement or link to thereof into the appropriate place in the following table.&lt;br /&gt;
&lt;br /&gt;
If there is more data, e.g. a link to an email of discussion of the spec development that explains ''why'' the rel value was dropped, and it explicitly states, e.g. it was without prejudice, or merely post-poned, or perhaps expected to be spun-out into its spec (or some other explicit positive reason), then it makes to link/cite that explicit text as part of a proposal.&lt;br /&gt;
&lt;br /&gt;
Sources: &lt;br /&gt;
* [http://www.w3.org/MarkUp/html3/ HTML3] (HTML3) / has been superceded by [http://www.w3.org/MarkUp/Wilbur/ HTML 3.2] - which itself has been superceded by [http://www.w3.org/TR/REC-html40 HTML 4.0] - which itself has been updated by [http://w3.org/TR/html401 HTML 4.01], commonly referred to as &amp;quot;HTML 4&amp;quot; in this wiki and other places.)&lt;br /&gt;
* [http://www.w3.org/TR/relations.html Proposed HTML 4.0 link types] (HTML4dropped) - obsoleted/superceded by the HTML 4.0 Recommendation.  Any values that were in the &amp;quot;Proposed HTML 4.0 link types&amp;quot; document but didn't make it into the HTML 4.0 Recommendation were thus explicitly dropped and should be avoided.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! rel value !! summary !! defining specification !! why dropped &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[rel-banner|banner]]||Was used to reference another document to be used as banner for this document (i.e. a form of &amp;quot;include&amp;quot; statement).|| HTML3 ||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-begin|begin]] || identifies the author-defined start of a sequence of documents of which the current document is a node.&lt;br /&gt;
 || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-biblioentry|biblioentry]] || identifies a bibliographic entry || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-bibliography|bibliography]] || identifies a bibliography || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-child|child]] (obsolete/superceded) || the target document is a hierarchical child, or subdocument, of the current document|| HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-citation|citation]] || the target is a bibliographic citation || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-collection|collection]] || the target document is an collection that contains the current document || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-definition|definition]] || identifies a definition of a term || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-disclaimer|disclaimer]] || identifies a hypertext link to a legal disclaimer || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-editor|editor]] || identifies a hypertext link to an editor || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-end|end]] || identifies the author-defined end of a sequence of documents of which the current document is a node. || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-footnote|footnote]] || the anchor is a footnote marker and the target is a footnote || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-navigate|navigate]] || the target document contains information such as a image map that will help users to gain a sense of how and where to found information || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-origin|origin]] || synonym for &amp;lt;code&amp;gt;top&amp;lt;/code&amp;gt; || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-parent|parent]] (obsolete/superceded) || the target document is the hierarchical parent, or container, of the current document|| HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-pointer|pointer]] || the target is a pointer to the real target. This value can be used by a user agent to perform a pre-fetch of the specified target for evaluation until the real target is reached || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-publisher|publisher]] || identifies a hypertext link to a publisher || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-sibling|sibling]] (obsolete/superceded) || the target document is a child of a common parent, or a hierarchical peer of the current document|| HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-top|top]] || the target document is the logical top node of the tree (see also &amp;lt;code&amp;gt;begin&amp;lt;/code&amp;gt;) || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-trademark|trademark]] || identifies a hypertext link to a trademark notice || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-translation|translation]] || the target is a translation to another language || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-urc|urc]] || identifies a Universal Resource Citation || HTML4dropped||unknown&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== dropped without prejudice ==&lt;br /&gt;
In one known instance (from HTML4 to HTML5), some rel values were in an earlier version of a specification (or a proposal) and were dropped from a latter (draft) version, and it was noted that these values were dropped with the intent that they could still be proposed in a registry and thus they explicitly were not deprecated or obsoleted. This section documents such values as separate from the [[#dropped|dropped]] section.&lt;br /&gt;
&lt;br /&gt;
In general, you {{should not}} use any dropped values.&lt;br /&gt;
&lt;br /&gt;
If any such values have been superceded by standard values (see the first table on this page), then you {{must not}} use the dropped versions.&lt;br /&gt;
&lt;br /&gt;
Rel values that were dropped without prejudice from a specification will be considered similar to new values that have never been specified.&lt;br /&gt;
&lt;br /&gt;
If you know of additional rel values that were dropped without prejudice from an update to a specification, please cite a URL and quote from the group developing the specification that officially states from that group that the dropping of the values was done without prejudice, or equivalent statement (such as explicit allowance of external registration, proposal, and/or development).&lt;br /&gt;
&lt;br /&gt;
This table serves a historical purpose. If you wish to propose a value from this table, please copy it and leave it in place.&lt;br /&gt;
&lt;br /&gt;
Sources: &lt;br /&gt;
* Several rel values were [http://www.w3.org/Bugs/Public/show_bug.cgi?id=7475#c15 explicitly dropped from HTML5]. Per: [http://lists.w3.org/Archives/Public/public-html/2011Feb/att-0481/issue-118-decision.html Issue 118 Decision] ('''emphasis''' added): &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&amp;quot;The final proposal argues for the removal of some relation values, to wit, it suggests removal of '''index, up, first and last'''. It was pointed out in survey comments that these relations are already registered in the IANA link relation registry. Presumably, '''these relations could also be entered in whatever other registry or registries HTML5 adopts for this purpose'''.&amp;lt;/p&amp;gt;...&amp;lt;p&amp;gt;&amp;quot;Next Steps&amp;lt;/p&amp;gt;...&amp;lt;p&amp;gt;&amp;quot;Since the relations to be removed are already registered at the IANA link relation registry, no further action is needed to include them there. WG members are '''free to register or record these relations elsehwere''' [sic], as well.&amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! rel value&lt;br /&gt;
! summary&lt;br /&gt;
! defining specification&lt;br /&gt;
! why dropped &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-first|first]]&lt;br /&gt;
| Synonym for &amp;lt;code&amp;gt;start&amp;lt;/code&amp;gt;&lt;br /&gt;
| HTML4dropped - never in an official spec&lt;br /&gt;
| [http://lists.w3.org/Archives/Public/public-html/2011Feb/att-0481/issue-118-decision.html Explicitly dropped from HTML5 interim draft yet permitted for external registry]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-index|index]]&lt;br /&gt;
| Refers to a document providing an index for the current document.&lt;br /&gt;
| was in [http://www.w3.org/TR/html4/types.html#h-6.12 HTML4];  the token has been re-registered within the [[#HTML5_link_type_extensions|HTML5 link type extensions]] and is now valid.&lt;br /&gt;
| [http://lists.w3.org/Archives/Public/public-html/2011Feb/att-0481/issue-118-decision.html Explicitly dropped from HTML5 interim draft yet permitted for external registry]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-last|last]]&lt;br /&gt;
| Refers to the last document in a collection of documents.&lt;br /&gt;
| HTML4dropped - never in an official spec&lt;br /&gt;
| [http://lists.w3.org/Archives/Public/public-html/2011Feb/att-0481/issue-118-decision.html Explicitly dropped from HTML5 interim draft yet permitted for external registry]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-up|up]]&lt;br /&gt;
| When the document forms part of a hierarchy, this link references the immediate parent of the current document. Synonym for &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt;.&lt;br /&gt;
| was in [http://www.w3.org/MarkUp/html3/dochead.html HTML3] - but [http://www.w3.org/TR/html401/types.html#type-links dropped in HTML4]&lt;br /&gt;
| [http://lists.w3.org/Archives/Public/public-html/2011Feb/att-0481/issue-118-decision.html Explicitly dropped from HTML5 interim draft yet permitted for external registry]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See related [http://dev.w3.org/html5/spec/links.html#linkTypes HTML5: Link types] for existing HTML5 specified rel values.&lt;br /&gt;
&lt;br /&gt;
== rejected ==&lt;br /&gt;
Some rel values have been proposed and rejected.  They are listed here to make that explicit.  Authors {{must not}} use rejected rel values.&lt;br /&gt;
&lt;br /&gt;
Source: [[rejected-formats]].&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
! rel value !! origin / proposal !! why rejected &lt;br /&gt;
|-&lt;br /&gt;
| [[rel-logo|logo]]&lt;br /&gt;
| [http://relogo.org Relogo.org]&lt;br /&gt;
| [[rejected-formats#Logo]]&lt;br /&gt;
|-&lt;br /&gt;
|[[rel-pavatar|pavatar]] || [http://pavatar.com/ pavatar] || [[rejected-formats#Pavatar]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== tools ==&lt;br /&gt;
See [[implementations]].&lt;br /&gt;
&lt;br /&gt;
== addtional external research ==&lt;br /&gt;
Here are some additional historical references to the development or rel-values which may be useful when researching values, especially why specific values may have been proposed but abandoned.&lt;br /&gt;
* 1996-06-07 [http://www.w3.org/MarkUp/draft-ietf-html-relrev-00.txt Hypertext links in HTML] (copies: [http://ftp.ics.uci.edu/pub/ietf/html/draft-ietf-html-relrev-00.txt ftp.ics.uci.edu])&lt;br /&gt;
* 1996-11-13 [http://www.w3.org/Architecture/NOTE-link Describing and Linking Web Resources] &lt;br /&gt;
* 1997-01-23 [http://lists.gnu.org/archive/html/lynx-dev/1997-01/msg00537.html LYNX-DEV Lynx and the LINK tag] &lt;br /&gt;
* 1997-01-24 [http://lists.w3.org/Archives/Public/w3c-sgml-wg/1997Jan/0357.html Taxonomy list] &lt;br /&gt;
* 1997-03-28 [http://www.w3.org/TR/WD-htmllink-970328 W3C Working Draft: Hypertext Links and Meta Information in HTML]&lt;br /&gt;
 &lt;br /&gt;
=== previous attempts at documenting ===&lt;br /&gt;
There have been previous attempts at documenting known rel values, most of which fell out of date due to being dependent on a single author maintaining them. They're listed here purely for historical reasons, and are not sufficient to be references of their own (since they're just individual curations of other references)&lt;br /&gt;
* [http://fantasai.tripod.com/qref/Appendix/LinkTypes/ltdef.html Link Type Definitions Glossary] by fantasai&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== related ==&lt;br /&gt;
{{rel-related-pages}}&lt;br /&gt;
* [[elemental-microformats]]&lt;br /&gt;
* [[existing-rev-values]]&lt;br /&gt;
* [[existing-class-names]]&lt;br /&gt;
&lt;br /&gt;
== copyright ==&lt;br /&gt;
&lt;br /&gt;
{{cc-pd-license}}&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=hcalendar-faq-fr&amp;diff=70492</id>
		<title>hcalendar-faq-fr</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=hcalendar-faq-fr&amp;diff=70492"/>
		<updated>2022-02-16T16:45:01Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;hCalendar FAQ&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette page est destinée à documenter les Q&amp;amp;R à propos de [[hcalendar-fr|hCalendar]].  &lt;br /&gt;
Si vous avez une nouvelle question à poser, considérez SVP de poser d'abord votre question sur le microformats canal [[irc]] (de préférence)  ou sur la [http://microformats.org/mailman/listinfo/microformats-discuss/ liste de discussion microformats]. Les nouvelles questions et réponses devraient être ajoutée à la fin de la liste. Si vous avez une nouvelle question mais pas de réponse, ajoutez-la sur  [[hcalendar-issues-fr|hCalendar problématiques]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Editer cette Page&amp;lt;/h2&amp;gt;&lt;br /&gt;
SVP, n'utilisez pas de &amp;quot;?&amp;quot; ou tout autre signe de ponctuation dans les titres - cela aide à maintenir des URLs vers leurs identifiants plus courts et plus faciles à lire, à copier-coller, etc. Voir [[how-to-play-fr|comment jouer]] pour en savoir plus sur les lignes de conduite wiki.&lt;br /&gt;
&lt;br /&gt;
== date et heure ==&lt;br /&gt;
=== pourquoi mon événement se termine un jour plus tôt que ce que je veux ===&lt;br /&gt;
''Pourquoi mon événement se termine un jour plus tôt que ce que je veux ?''&lt;br /&gt;
* DTEND n'est pas inclusif. Si vous voulez qu'un événement se termine le 2 janvier, alors vous aurez besoin de régler DTEND sur 2006-01-03, un jour plus tard. Ceci parce que l'événement se terminera à la première seconde de la date fournie, aussi si vous spécifiez 2006-01-02, alors cela dit que la fin de l'événement est à minuiut entre le premier et le second.&lt;br /&gt;
&lt;br /&gt;
=== puis-je utiliser des tirets et deux-points dans mes DatesISO ===&lt;br /&gt;
''Puis-je utiliser des tirets et deux-points dans mes DatesISO ?''&lt;br /&gt;
* hCalendar spécifie le [http://fr.wikipedia.org/wiki/ISO_8601 format date heure ISO8601], et les deux exemples sont valides, vous pouvez l'utiliser sans ou avec des tirets/deux points/espaces. Remarquez néanmoins que tant la [http://www.w3.org/TR/NOTE-datetime note du w3C] et la RFC 3339 recommandent l'usage du premier format, étendu (délimité).&lt;br /&gt;
&lt;br /&gt;
=== dois-je spécifier l'information détaillée d'heure et de zone horaire===&lt;br /&gt;
''Dois-je spécifier l'information détaillée d'heure et de zone horaire ?''&lt;br /&gt;
* Incluez autant d'information que nécessaire, à minima incluez AAAA-MM-JJ&lt;br /&gt;
&lt;br /&gt;
=== pourquoi dois-je utiliser un T entre la date et l'heure ===&lt;br /&gt;
''Pourquoi dois-je utiliser un T entre la date et l'heure ?''&lt;br /&gt;
* Vous ne pouvez PAS utiliser un caractère espace-blanc, le 'T' est obligatoire pour séparer la date de l'heure.&lt;br /&gt;
&lt;br /&gt;
=== comment sont représentés les événements récurrents ===&lt;br /&gt;
''Comment sont représentés les événements récurrents ?'' demandé aussi comme ''Comment puis-je représenter un événement qui se répète en hCalendar ?''&lt;br /&gt;
* Si vous jetez un oeil à l'[http://microformats.org/wiki/hcalendar-examples-fr#Exemple_3_2 Exemple 3], il y a un moyen proposé utilisant une propriété &amp;lt;em&amp;gt;RRULE&amp;lt;/em&amp;gt; avec une sous-propriété &amp;lt;em&amp;gt;freq&amp;lt;/em&amp;gt;. C'est un début - plus de brainstorming sur [http://microformats.org/wiki/hcalendar-brainstorming#Recurring_Events hcalendar-brainstorming].&lt;br /&gt;
&lt;br /&gt;
=== comment balisez-vous juste l'année ===&lt;br /&gt;
'''Comment balisez-vous juste l'année à l'inverse d'une date complète ? par exemple pour représenter l'âge ou pour discuter de &amp;quot;l'année passée&amp;quot; ?''&lt;br /&gt;
* Cela dépend du contexte. Si par &amp;quot;l'année passée&amp;quot;, vous voulez dire l'année *calendaire* passée, alors marquez la du 1er janvier au 31 décembre. Si vous voulez dire les 365 derniers jours, alors marquez là selon n'importe quelle date en rapport. etc.&lt;br /&gt;
&lt;br /&gt;
=== comment dois-je baliser un date-time avec le fuseau horaire ===&lt;br /&gt;
''Comment dois-je baliser un date-time avec le fuseau horaire approprié ?''&lt;br /&gt;
* Il y a deux moyens de faire ça. D'abord vous pouvez ajouter votre fuseau horaire à la fin de votre date-time comme ceci : 2006-01-01T12:00:00-0600.  [[http://aa.usno.navy.mil/faq/docs/world_tzones.html Voir ici une carte du monde des décalages horaires]]. Aussi, soyez sûr d'ajuster le décalage à prendre en compte pour l'[[http://fr.wikipedia.org/wiki/Heure_d%27%C3%A9t%C3%A9 heure d'été]] pour les événements dans les dates et lieux applicables. L'autre option est de convertir votre date-time avec une zone horaire à l'intérieur d'un UTC date-time. iCalendar requiert que les heures soient en UTC, mais hCalendar permet aussi d'encoder vos dates-times comme des ISO date-times propres avec leurs décalages de zones horaires.&lt;br /&gt;
&lt;br /&gt;
== endroit / lieu / location ==&lt;br /&gt;
=== comment fournissez-vous une meilleure donnée de lieu pour un évenement que les lat et long ===&lt;br /&gt;
''Pouvez-vous fournir des données d'endroits plus précises pour un évenement hCalendar comme la latitude et la longitude?''&lt;br /&gt;
* Oui, c'est possible, en ajoutant une couche [[hcard-fr|hCard]] avec le balisage location (voir [[hcalendar-brainstorming#hCard_locations|le brainstorming sur hCard locations]]), par ex. en utilisant votre exemple de lat long (prendre les valeurs comme données, quelqu'un se sentira libre de les réparer pour que ce soit des valeurs réelles). Les exemples de code sont supposés être à l'intérieur d'un élément avec un nom de classe &amp;quot;vevent&amp;quot;.  Voir la page [[hcalendar-location-hcard-example]] pour les détails.  Pour plus de discussions sur les données géographiques, d'endroits et recherche à l'intérieur de formats actuels et futurs potentiels, voir la page [[location-formats-fr|location formats]].&lt;br /&gt;
&lt;br /&gt;
=== comment représentez-vous la langue d'un lieu ===&lt;br /&gt;
''Comment représentez-vous la langue d'un LOCATION ?'' - aussi connu comme le paramètre language.&lt;br /&gt;
* Utilisez l'attribut (X)HTML &amp;quot;lang&amp;quot;. Voir par exemple [[hcard-authoring-fr#R.C3.A9gler_la_langue_si_diff.C3.A9rente|l'explication dans la page publication hCard sur la façon d'utiliser &amp;quot;lang&amp;quot;]].&lt;br /&gt;
&lt;br /&gt;
== détails de balisage ==&lt;br /&gt;
=== pourquoi les noms de classe racine &amp;quot;vcalendar&amp;quot; et &amp;quot;vevent&amp;quot; ===&lt;br /&gt;
''Pourquoi les noms de classe racine &amp;quot;vcalendar&amp;quot; et &amp;quot;vevent&amp;quot; et pas &amp;quot;hcalendar&amp;quot; ?''&lt;br /&gt;
* [[hcalendar-fr|hCalendar]] est basé sur la spec iCalendar (RFC 2445), qui est elle-même basée sur  vCalendar.  Les noms des objets sont restés cohérents et sont basés sur les noms originaux provenant de vCalendar.&lt;br /&gt;
&lt;br /&gt;
=== existe-t'il un exemple de hCalendar dans un tableau ===&lt;br /&gt;
''Existe-t'il un exemple de hCalendar dans un tableau ?''&lt;br /&gt;
* Jetez un oeil sur [[hcalendar-examples-in-wild-fr#programmes_de_conf.C3.A9rence|hCalendar exemples dans la jungle : programmes de conférence]].&lt;br /&gt;
&lt;br /&gt;
=== est-ce qu'acronym pour dtstart serait juste aussi bien que abbr ===&lt;br /&gt;
''Est-ce qu'acronym pour DTSTART serait juste aussi bien que  &amp;amp;lt;abbr&amp;amp;gt; ?''&lt;br /&gt;
* Il pourrait l'être, mais il n'y en pas besoin. L'élément &amp;amp;lt;abbr&amp;amp;gt; est aussi préféré car il est mieux défini. L'élement &amp;amp;lt;acronym&amp;amp;gt; et en particulier, le terme &amp;quot;acronym&amp;quot; signifie différentes choses pour différentes personnes, et de ce fait nous ne l'utilisons pas dans [[hcalendar-fr|hCalendar]].&lt;br /&gt;
&lt;br /&gt;
=== et si un navigateur ne supporte pas abbr ===&lt;br /&gt;
''Que se passe t'il si un navigateur ne supporte pas &amp;amp;lt;abbr&amp;amp;gt;?''&lt;br /&gt;
* alors les contenus lisibles par les humains dans l'élément sont affichés, ce qui est le comportement désirable.&lt;br /&gt;
&lt;br /&gt;
== stylisme et affichage ==&lt;br /&gt;
=== comment j'ajoute du style à un groupe d'événements ===&lt;br /&gt;
''Que dois-je faire si je veux ajouter un style au groupe d'événements calendriers, tout spécialement si le calendrier contient du contenu dynamique ?''&lt;br /&gt;
* Vous pouvez écrire des règles de style qui incorporent à la fois le contexte d'un groupe donné (disons qu'il est dans une liste ordonnée avec un noms de classe &amp;quot;group&amp;quot; par exemple) et les événements par ex. :&amp;lt;code&amp;gt;ol.group .vevent { /* insérer un style commun ici */ } &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== et si vous ne voulez pas que le calendrier s'affiche ===&lt;br /&gt;
''Que faites-vous si vous ne voulez pas que le calendrier ou la carte s'affiche ?''&lt;br /&gt;
* Si vous ne voulez pas que le calendrier ou la carte soient affichés, pourquoi les publiez vous sur le Web ?&lt;br /&gt;
&lt;br /&gt;
=== et si vous ne voulez pas que des propriétés s'affichent ===&lt;br /&gt;
''Et si vous ne voulez pas que des propriétés spécifiques s'affichent ?''&lt;br /&gt;
* Bien que cela ne soit pas recommandé, vous pouvez utiliser trivialement CSS pour cacher (ou autrement altérer l'affichage) de certaines propriétés. Par exemple, si vous voulez cacher l'endroit &amp;quot;location&amp;quot; de tous vos VEVENTs vous écririez une règle comme celle-ci : &amp;lt;code&amp;gt; .vevent .location { display:none } &amp;lt;/code&amp;gt;. Ceci n'empêchera pas néanmoins aux propriétés de pouvoir être lues à partir du source HTML ; ou d'être vues par les personnes qui n'ont pas d'autorisation CSS ; ou d'être découvertes par les moteurs de recherche ou autres robots.&lt;br /&gt;
&lt;br /&gt;
=== comment spécifiez-vous un tooltip sur un datetime ===&lt;br /&gt;
''Si nous utilisons &amp;amp;lt;abbr&amp;amp;gt; title pour l'ISODate, comment spécifions-nous un tooltip différent ?''&lt;br /&gt;
* Pour des raisons de transparence et de visibilité des métadonnées, il est recommandé que vous NE SPECIFIEZ pas un tooltip différent. Néanmoins, si vous devez le faire dans votre contenu particulier ou application, vous pouvez faire ainsi avec un span imbriqué par ex. &amp;lt;code&amp;gt; &amp;lt;abbr title=&amp;quot;20050221&amp;quot;&amp;gt;&amp;lt;span title=&amp;quot;tooltip text&amp;quot;&amp;gt;21 février&amp;lt;/span&amp;gt;&amp;lt;/abbr&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== interactions avec d'autres noms de classes ==&lt;br /&gt;
=== Comment dois-je utiliser un nom de classe à l'intérieur d'un événement hCalendar sans qu'il ne devienne une propriété ===&lt;br /&gt;
''Comment j'utilise une classe à l'intérieur de &amp;lt;span class=&amp;quot;vcalendar&amp;quot;&amp;gt; quand je ne veux pas que l'élément que j'utilise dessus soit une propriété du calendrier ?''&lt;br /&gt;
* Utilisez un nom de classe qui ne soit pas défini dans le nom de propriété iCalendar.&lt;br /&gt;
&lt;br /&gt;
=== que se passe t'il si la classe est utilisée à la fois à l'intérieur et en dehors d'un hCalendar ===&lt;br /&gt;
''Que se passe t'il si la classe est utilisée à la fois dans et en dehors de &amp;lt;span class=&amp;quot;vcalendar&amp;quot;&amp;gt; ?''&lt;br /&gt;
* Cela fonctionne bien.&lt;br /&gt;
&lt;br /&gt;
== outils ==&lt;br /&gt;
=== quels programmes ou services convertissent iCalendar vers hCalendar ===&lt;br /&gt;
''Y'a t'il quelques programmes de services qui convertissent iCalendar vers hCalendar ?''&lt;br /&gt;
*A cette heure, il n'y a pas de plans pour créer un programme. Il y a plusieurs problématiques lors de la conversion, principalement COMMENT l'information est représentée en HTML. Parce que vous pouvez simplement utiliser simplement n'importe quel élément que pourrait choisir le convertisseur. Ce n'est pas pour dire qu'un convertisseur ne devrait pas être construit, mais c'est hors du champ des microformats.&lt;br /&gt;
&lt;br /&gt;
=== pourquoi Outlook n'importe pas mon fichier ics ===&lt;br /&gt;
''Pourquoi Outlook n'importera pas mon fichier ics''&lt;br /&gt;
* Outlook est méticuleux sur quelques propriétés. Avec outlook, UID, DTSTAMP et METHOD sont obligatoires. Assurez-vous d'avoir balisé votre hCalendar avec un class=&amp;quot;uid&amp;quot; et un class=&amp;quot;dtstamp&amp;quot; dans un class=&amp;quot;vevent&amp;quot;. Voir [[icalendar-implementations-fr]] pour plus de détails et de quirks sur les implémentations particulières de iCalendar.&lt;br /&gt;
&lt;br /&gt;
=== au moment de transformer un hCalendar en un fichier .ics, les datetimes devraient-elles être converties en UTC ===&lt;br /&gt;
''Au moment de transformer un hCalendar en un fichier .ics, dois-je convertir l'heure en UTC ?''&lt;br /&gt;
* Oui, le format iCalendar ne permet pas que l'heure soit publiée avec un décalage. Les hCalendars peuvent être publiés avec des décalages, parce que cela promeut l'exactitude, parce que cela est plus facilement vérifiée (la mathématique des fuseaux horaires est difficile), mais les outils qui tranforment hCalendar en iCalendar doivent tranformer les heures en UTC.&lt;br /&gt;
&lt;br /&gt;
== autres formats de calendrier ==&lt;br /&gt;
===en quoi hCalendar est différent de xCalendar ===&lt;br /&gt;
''En quoi [[hcalendar-fr|hCalendar]] est différent de xCalendar, cad. les instructions iCalendar XML soumises sous l'[http://www.ietf.org/ID.html IETF Internet-Draft] ?''&lt;br /&gt;
hCalendar et xCalendar sont en fait très similaires en ce sens qu'ils sont tous deux fondés sur le standard iCalendar, RFC2445. Néanmoins, xCalendar est un moyen de représenter les fichiers iCalendar en utilisant des noms d'éléments et d'attributs XML non-standards. Ceci est inapproprié et difficile à servir sur les pages web. xCalendar est encore un document séparé encapsulé, dans le contexte sur le web, ce qui requiert encore un autre nom d'espace. Rien ne ressemblerait même à un fichier xCalendar XML dans le contexte sa navigation ordinaire, à moins que ce ne soit XSLTifié en quelque chose d'autres, par ex. hCalendar. D'un autre côté, [[hcalendar-fr|hCalendar]] est facilement embarquable dans des pages web normales XHTML, facile à styliser avec CSS, il sépare proprement l'information date présentable humainement vs les dates parsables par les machines en ISO-8601, etc. Avec hCalendar, les contenus de calendriers et événements apparaissent à la fois à l'utilisateur humain *et* aux implémentations machines conscientes du hCalendar, parseurs, indexeurs, etc., sur le web d'*aujourd'hui*.&lt;br /&gt;
&lt;br /&gt;
== non supporté actuellement ==&lt;br /&gt;
=== est-il possible de représenter des groupes d'événements ===&lt;br /&gt;
''Est-il possible de représenter des groupes d'événements ?''- par ex. des ateliers sur une conférence.&lt;br /&gt;
* Non, pas à cette heure. iCalendar a vraiment un mécanisme équivalent : le propriété RELATED-TO avec un attribut RELTYPE de PARENT/CHILD/SIBLING (parent étant le défaut). Néanmoins, cette fonctionnalité de iCalendar n'est pas spécifiée actuellement dans hCalendar. Voir [[hcalendar-brainstorming#grouping_events|hCalendar brainstorming: grouping events]].&lt;br /&gt;
&lt;br /&gt;
==Pages en rapport==&lt;br /&gt;
{{hcalendar-related-pages-fr}}&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=hcalendar-faq&amp;diff=70491</id>
		<title>hcalendar-faq</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=hcalendar-faq&amp;diff=70491"/>
		<updated>2022-02-16T16:43:52Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt; hCalendar FAQ &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page is for documenting Q&amp;amp;A about [[hcalendar|hCalendar]].  If you have a new question to ask, Please consider first asking your question on the microformats [[IRC]] channel (preferably) or the [http://microformats.org/mailman/listinfo/microformats-discuss/ microformats-discuss] list. New questions and answers should be added to the end of the list.  If you have a new question but not an answer, please add it to [[hcalendar-issues|hCalendar issues]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Editing this Page&amp;lt;/h2&amp;gt;&lt;br /&gt;
Please do not use &amp;quot;?&amp;quot; or other punctuation in the headers - it helps to keep the URLs to their fragment identifiers shorter and easier to read, copy/paste etc.  See [[how-to-play]] for more wiki editing guidelines.&lt;br /&gt;
&lt;br /&gt;
== date and time ==&lt;br /&gt;
=== Why does my event end a day earlier than I want ===&lt;br /&gt;
''Why does my event end a day earlier than I want?''&lt;br /&gt;
* DTEND is not inclusive. If you want an event to end on January 2nd, then you will need to set DTEND to 2006-01-03, one day later. This is because the event will END the first second of the date provided, so if you specify 2006-01-02, then that says that the end of the event is at midnight between the 1st and 2nd.&lt;br /&gt;
&lt;br /&gt;
=== Can I use hyphens and colons in my ISODates ===&lt;br /&gt;
''Can I use YYYY-MM-DDThh:mm:ss dates or do I have to use the YYYYMMDDThhmmss format?''&lt;br /&gt;
* hCalendar specifies [http://en.wikipedia.org/wiki/ISO8601 ISO8601 datetime format], and both examples are valid, you can use with or without hyphens/colons/spaces. Note, however, that both the [http://www.w3.org/TR/NOTE-datetime w3C note] and RFC 3339 recommend the use of the former, extended (delimited) format.&lt;br /&gt;
&lt;br /&gt;
=== Do I have to specify detailed time and timezone information ===&lt;br /&gt;
''Do I have to specify detailed time and timezone information?''&lt;br /&gt;
* Include as much information as necessary, minimally include YYYY-MM-DD&lt;br /&gt;
&lt;br /&gt;
=== Why do I have to use a T between the date and time ===&lt;br /&gt;
''Why do I have to use a 'T' between the date and time in ISO Dates?''&lt;br /&gt;
* You can NOT use a white-space character, the 'T' is mandatory to separate the date from the time.&lt;br /&gt;
&lt;br /&gt;
=== How are recurring events represented ===&lt;br /&gt;
''How are recurring events represented?'' also asked as ''How do I represent a repeating event in hCalendar?''&lt;br /&gt;
* If you take a look at [http://microformats.org/wiki/hcalendar-examples#Example_3 Example 3], there is a proposed means using an &amp;lt;em&amp;gt;RRULE&amp;lt;/em&amp;gt; property along with a &amp;lt;em&amp;gt;freq&amp;lt;/em&amp;gt; sub-property. It's a start - more brainstorming at [http://microformats.org/wiki/hcalendar-brainstorming#Recurring_Events hcalendar-brainstorming].&lt;br /&gt;
&lt;br /&gt;
=== How do you markup just the year ===&lt;br /&gt;
''How does one markup just the year as opposed to an entire date? e.g. to represent age, or discussing &amp;quot;the past year&amp;quot; ?&lt;br /&gt;
* Depends on the context.  If by &amp;quot;the past year&amp;quot;, you mean the past *calendar* year, then mark it up as January 1st through December 31st.  If you mean the past 365 days, then mark it up according to whatever date it is relative to.  Etc.&lt;br /&gt;
&lt;br /&gt;
=== How do I markup a datetime with timezone ===&lt;br /&gt;
''How do I mark-up a date-time with the proper timezone?''&lt;br /&gt;
* There are two ways to do this. First, you can add your timezone offset to the end of your date-time like this: 2006-01-01T12:00:00-0600.  [[http://aa.usno.navy.mil/faq/docs/world_tzones.html See a world timezone offset map here]]. Also, be sure to adjust offset to account for [[http://en.wikipedia.org/wiki/Daylight_saving_time Daylight Saving Time]] for events within applicable dates and locations. The other option is to convert your date-time with a timezone into a UTC date-time. iCalendar requires that times be in UTC, but hCalendar also allows for encoding your date-times as proper ISO date-times with timezone offsets.&lt;br /&gt;
&lt;br /&gt;
== location ==&lt;br /&gt;
=== How do you provide better location data for an event than lat long ===&lt;br /&gt;
''Can you provide more precise location data for an hCalendar event such as latitude and longitude?'' also asked as  ''What is the best way to represent a full address in the Location?''&lt;br /&gt;
* Yes, it is possible, by overlaying an [[hcard|hCard]] with the location markup (see [[hcalendar-brainstorming#hCard_locations|the brainstorming on hCard locations]]), e.g. using your lat long example (taking the values as given, someone feel free to fix these to be the real values). The code example(s) are presumed to be inside an element with a class name of &amp;quot;vevent&amp;quot;.  See the [[hcalendar-location-hcard-example]] page for details.  For more discussions of location data, geographic data, and research into current and potential future formats, see the [[location-formats|location formats]] page.&lt;br /&gt;
&lt;br /&gt;
=== How do you represent the language of a location ===&lt;br /&gt;
''How do you represent the language of a LOCATION?'' - AKA the language parameter.&lt;br /&gt;
* Use the (X)HTML &amp;quot;lang&amp;quot; attribute.  See for example [[hcard-authoring#Set_the_lang_when_different|the explanation in hCard authoring of how to use &amp;quot;lang&amp;quot;]].&lt;br /&gt;
&lt;br /&gt;
== markup details ==&lt;br /&gt;
=== Why are the root class names vcalendar and vevent ===&lt;br /&gt;
''Why are the root class names &amp;quot;vcalendar&amp;quot; and &amp;quot;vevent&amp;quot; and not &amp;quot;hcalendar&amp;quot;?''&lt;br /&gt;
* [[hcalendar|hCalendar]] is based on the iCalendar spec (RFC 2445), which itself is based on vCalendar.  The names of objects have remained consistent throughout and are based on the original names from vCalendar.&lt;br /&gt;
&lt;br /&gt;
=== Is there an example of hCalendar in a table ===&lt;br /&gt;
''Is there an example of hCalendar in a table?''&lt;br /&gt;
* Take a look at: [[hcalendar-examples-in-wild#conference_schedules|hCalendar examples in the wild: conference schedules]].&lt;br /&gt;
&lt;br /&gt;
=== Would acronym for dtstart be just as good as abbr ===&lt;br /&gt;
''Would the use of &amp;amp;lt;acronym&amp;amp;gt; for DTSTART be just as good as &amp;amp;lt;abbr&amp;amp;gt;?''&lt;br /&gt;
* It could be, but there is no need.  The &amp;amp;lt;abbr&amp;amp;gt;  element is also preferred as it is better defined.  The &amp;amp;lt;acronym&amp;amp;gt; element, and in particular, the term &amp;quot;acronym&amp;quot; means different things to different people, and thus we are not using it in [[hcalendar|hCalendar]].&lt;br /&gt;
&lt;br /&gt;
=== What if a browser lacks support for abbr ===&lt;br /&gt;
''What happens if a browser doesn't support &amp;amp;lt;abbr&amp;amp;gt;?''&lt;br /&gt;
* Then the human readable contents inside the element are displayed, which is the desirable behavior.&lt;br /&gt;
&lt;br /&gt;
== styling and display ==&lt;br /&gt;
=== How do I add styling to a group of events ===&lt;br /&gt;
''What do I do if I want to add styling to a group of calendar events, especially if the calendar contains dynamic content? ''&lt;br /&gt;
* You can write style rules that incorporate both the context of said group (say it is in an ordered list with class name &amp;quot;group&amp;quot; for example) and the events, e.g.:&amp;lt;code&amp;gt;ol.group .vevent { /* insert common styling here */ } &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== What if you do not want the calendar to be displayed ===&lt;br /&gt;
''What do you do if you don't want the calendar or card to be displayed?''&lt;br /&gt;
* If you don't want the calendar or card to be displayed, why are you publishing it on the Web?&lt;br /&gt;
&lt;br /&gt;
=== What if you do not want some properties to show up ===&lt;br /&gt;
''What if you don't want specific properties to show up?''&lt;br /&gt;
* Though not recommended, you can trivially use CSS to hide (or otherwise alter the display) of certain properties.  E.g. if you want to hide the &amp;quot;location&amp;quot; from all your VEVENTs you would write a rule like this: &amp;lt;code&amp;gt; .vevent .location { display:none } &amp;lt;/code&amp;gt;. This won't, however, keep the properties from being read in the HTML source; or seen by people who don't have CSS enabled; or discovered by search engines or other robots. Remember: invisible (meta)data is bad.&lt;br /&gt;
&lt;br /&gt;
=== How do you specify a tooltip on a datetime ===&lt;br /&gt;
''If we use &amp;amp;lt;abbr&amp;amp;gt; title for the ISODate, how do we specify a different tooltip?''&lt;br /&gt;
* For reasons of metadata transparency and visibility, it is recommended that you DO NOT specify a different tooltip.  However, if in your particular content or application you must, you can do so with a nested span e.g. &amp;lt;code&amp;gt; &amp;lt;abbr title=&amp;quot;20050221&amp;quot;&amp;gt;&amp;lt;span title=&amp;quot;tooltip text&amp;quot;&amp;gt;Feb. 21st&amp;lt;/span&amp;gt;&amp;lt;/abbr&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== interactions with other class names ==&lt;br /&gt;
=== How do I use a class name inside an hCalendar event without it becoming a property === &lt;br /&gt;
''How do I use a class inside &amp;lt;span class=&amp;quot;vcalendar&amp;quot;&amp;gt; when I don't want the element I use it on to be a property of the calendar?''&lt;br /&gt;
*Use a class name that isn't a defined iCalendar property name.&lt;br /&gt;
&lt;br /&gt;
=== What happens if a class name is used both inside and outside an hCalendar ===&lt;br /&gt;
''What happens if the class is used both inside and outside &amp;lt;span class=&amp;quot;vcalendar&amp;quot;&amp;gt;?''&lt;br /&gt;
* That works fine.&lt;br /&gt;
&lt;br /&gt;
== tools ==&lt;br /&gt;
=== What programs or services convert iCalendar to hCalendar ===&lt;br /&gt;
''Are there any programs of services that convert from iCalendar to hCalender?''&lt;br /&gt;
*At the moment there are no plans to create a program. There are several issues when converting, mainly HOW the information is represented in HTML. Since you can use just about any element which could the converter choose. This is not to say a converter shouldn't be built, but it is out of the scope of microformats.&lt;br /&gt;
&lt;br /&gt;
=== Why does Outlook not import my ics file ===&lt;br /&gt;
''Why won't Outlook import my ics file''&lt;br /&gt;
* Outlook is picky about some properties. With some versions of Outlook, UID, DTSTAMP and METHOD are mandatory. Be sure you have marked-up your hCalendar with a class=&amp;quot;uid&amp;quot; and a class=&amp;quot;dtstamp&amp;quot; in a class=&amp;quot;vevent&amp;quot;.  See [[icalendar-implementations]] for more details and quirks of particular iCalendar implementations.&lt;br /&gt;
&lt;br /&gt;
=== When transforming hCalendar to ics should datetimes be converted to UTC ===&lt;br /&gt;
''When transforming an hCalendar to a .ics file, do I have to convert the time to UTC?''&lt;br /&gt;
* Yes. The iCalendar format does not permit the time to be published with an offset. hCalendars can be published with offsets, because this promotes accuracy, as it can more easily be verified (timezone math is hard), but tools which transform hCalendar to iCalendar must transformat times to UTC.&lt;br /&gt;
&lt;br /&gt;
== other calendar formats ==&lt;br /&gt;
=== How is hCalendar different from xCalendar ===&lt;br /&gt;
''How is [[hcalendar|hCalendar]] different from xCalendar, i.e. iCalendar XML guidelines submitted as an [http://www.ietf.org/ID.html IETF Internet-Draft]?''&lt;br /&gt;
* hCalendar and xCalendar are actually very similar in that they are both based on iCalendar standard, RFC2445. However, xCalendar is a way of representing iCalendar files using non-standard XML element names and attributes.  This is inadequate and unwieldly for serving on web pages. xCalendar is still a separate, encapsulated document in the context of the web, that requires yet another namespace. Nobody would ever look at an xCalendar XML file in the context of their ordinary browsing, unless it's XSLTed into something else, e.g. hCalendar. On the other hand, [[hcalendar|hCalendar]] is easily embeddable into normal XHTML web pages, easily stylable with CSS, cleanly separates human presentable date information vs. machine parsable ISO-8601 dates, etc. With hCalendar, calendar and events content appears both to the human user *and* to hCalendar-aware machine implementations, parsers, indexers, etc., on *today's* web.&lt;br /&gt;
&lt;br /&gt;
== not supported currently ==&lt;br /&gt;
=== Is it possible to represent groups of events ===&lt;br /&gt;
''Is it possible to represent groups of events?'' - e.g workshops at a conference.&lt;br /&gt;
* Not at this time. iCalendar does have such a mechanism: the RELATED-TO property with a RELTYPE attribute of PARENT/CHILD/SIBLING (parent being the default).  However, this feature of iCalendar is not currently specified in hCalendar.  See [[hcalendar-brainstorming#grouping_events|hCalendar brainstorming: grouping events]].&lt;br /&gt;
&lt;br /&gt;
== Related Pages ==&lt;br /&gt;
{{hcalendar-related-pages}}&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=press&amp;diff=70490</id>
		<title>press</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=press&amp;diff=70490"/>
		<updated>2022-02-16T16:43:33Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;h1&amp;gt; Press &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page documents the press that [[microformats]] has received. See also microformats [[articles]], [[screencasts]], [[presentations]], [[podcasts]], and [[books]]. Note that some of this press may be in response to [[press-faq|the press FAQ]].&lt;br /&gt;
&lt;br /&gt;
Some sources of conventional press:&lt;br /&gt;
&lt;br /&gt;
* [http://news.google.com/news?q=microformat+OR+microformats&amp;amp;scoring=n Google News search for &amp;quot;microformat(s)&amp;quot;] ([http://news.google.es/news?hl=es&amp;amp;ned=es&amp;amp;scoring=n&amp;amp;q=microformatos+OR+microformat news.google.es search for &amp;quot;microformat(os)&amp;quot;])&lt;br /&gt;
* [http://www.google.com/alerts?hl=en&amp;amp;q=microformat+OR+microformats&amp;amp;ie=UTF8&amp;amp;t=1 Google alert (e-mail) for &amp;quot;microformat(s)&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==Press enquiries==&lt;br /&gt;
If you are a journalist, wanting to write or broadcast about microformats, please ask on our [[IRC]] channel or [[mail|microformats-discuss mailing list]].&lt;br /&gt;
== March 2009 ==&lt;br /&gt;
* 2009-03-11 [http://cmscritic.com/microformats-a-set-of-simple-open-data-formats-built-upon-existing-and-widely-adopted-standards &amp;quot;Microformats&amp;quot;]by CMS Critic&lt;br /&gt;
== October 2007 ==&lt;br /&gt;
=== URLs of mentions ===&lt;br /&gt;
* 2007-10-04 http://www.elmundo.es/navegante/2007/10/04/tecnologia/1191529660.html&lt;br /&gt;
* &amp;lt;span class=&amp;quot;vevent&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;description&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;2007-10-04&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;Techcrunch-fr &amp;lt;/span&amp;gt; : le point sur les microformats (&amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://fr.techcrunch.com/2007/10/04/fr-le-point-sur-les-microformats/&amp;lt;/span&amp;gt;)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== September 2007 ==&lt;br /&gt;
=== URLs of mentions ===&lt;br /&gt;
* 2007-09-21 [http://www.internetnews.com/dev-news/article.php/3701096 &amp;quot;Microformats: Toward a Semantic Web&amp;quot;] by Internetnews.com.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span class=&amp;quot;vevent&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;description&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;2007-09-12&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;&amp;quot;Microformats : vendre en ligne sans boutique&amp;quot; - Salon ecommerce Paris - Guide du Participant&amp;lt;/span&amp;gt;: &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://www.flickr.com/photos/christopheducamp/1405921949/&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span class=&amp;quot;vevent&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;description&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;2007-09-11&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;InternetNews.com&amp;lt;/span&amp;gt;: Microformats Hop on Semantic Web 'Griddle' (&amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://www.internetnews.com/dev-news/article.php/3699101&amp;lt;/span&amp;gt;)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== August 2007 ==&lt;br /&gt;
=== URLs of mentions ===&lt;br /&gt;
* &amp;lt;span class=&amp;quot;vevent&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;description&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;2007-08-06&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;PC Magazine&amp;lt;/span&amp;gt;: &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://www.pcmag.com/article2/0,1895,2167604,00.asp&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span class=&amp;quot;vevent&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;description&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;2007-08-03&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;SitePoint&amp;lt;/span&amp;gt;: &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://www.sitepoint.com/blogs/2007/08/03/have-microformats-finally-arrived&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span class=&amp;quot;vevent&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;description&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;2007-08-01&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;WIRED&amp;lt;/span&amp;gt;: &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://blog.wired.com/monkeybites/2007/08/google-maps-tak.html&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span class=&amp;quot;vevent&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;description&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;2007-08-01&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;CMSWire&amp;lt;/span&amp;gt;: &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://www.cmswire.com/cms/web-20/back-to-the-future-of-the-web-what-mattered-most-001526.php&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== July 2007 ==&lt;br /&gt;
=== URLs of mentions ===&lt;br /&gt;
* &amp;lt;span class=&amp;quot;vevent&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;description&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;2007-07-20&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;CMSWire&amp;lt;/span&amp;gt;: http://www.cmswire.com/cms/enterprise-20/openid-and-microformats-become-socially-acceptable-001494.php&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span class=&amp;quot;vevent&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;description&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;2007-07-10&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;Wired&amp;lt;/span&amp;gt;: http://blog.wired.com/monkeybites/2007/07/tim-berners-lee.html&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span class=&amp;quot;vevent&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;description&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;2007-07-02&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;Seatle Times&amp;lt;/span&amp;gt;: http://seattletimes.nwsource.com/html/businesstechnology/2003770628_techsocial02.html&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span class=&amp;quot;vevent&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;description&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;2007-07-02&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;Web Worker Daily&amp;lt;/span&amp;gt;: http://webworkerdaily.com/2007/07/02/powncing-on-the-twitter-bird-or-not/&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== noted and quoted ===&lt;br /&gt;
Remove the above two level 3 headings when all URLs of mentions are noted and quoted here.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li class=&amp;quot;vevent&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;description&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;2007-07-18&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;Forbes article on Plaxo Pushes for ''Open Social Web'' references below microformats announcements&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://www.forbes.com/businesswire/feeds/businesswire/2007/07/18/businesswire20070718005301r1.html&amp;lt;/span&amp;gt;).&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li class=&amp;quot;vevent&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;2007-07-17&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;Plaxo Pushes For &amp;quot;Open Social Web&amp;quot;: Endorses and implements key open standards, OpenID and microformats&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://www.plaxo.com/about/releases/release-20070718&amp;lt;/span&amp;gt;) &amp;lt;blockquote class=&amp;quot;description&amp;quot;&amp;gt;&amp;lt;p&amp;gt;...the company has implemented the microformats hCard and hCal as part of the all-new Plaxo 3.0 making it even easier for members to share information and support more mashups in the future. Public profiles, a new feature of the service, now use the hCard format for contact info, giving users the ability use their profile information on any of the growing list of services that consume hCard data.&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li class=&amp;quot;vevent&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;2007-07-03&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;&amp;quot;What's next for the Internet&amp;quot; in &amp;quot;CNNMoney.com&amp;quot; syndication of an article from &amp;quot;Business 2.0 Magazine&amp;quot; by Michael V. Copeland.&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://money.cnn.com/magazines/business2/business2_archive/2007/07/01/100117068/index.htm?postversion=2007070305&amp;lt;/span&amp;gt;) &amp;lt;blockquote class=&amp;quot;description&amp;quot;&amp;gt;&amp;lt;p&amp;gt;&amp;quot;We've had the problem of overpromising in this industry; a lot of us who were working on semantic Web technologies early on saw the potential and got a little excited. It has taken much longer to realize than we thought. One thing Web 2.0 has taught everybody is that simpler is better. Find something useful and iterate on that.&amp;quot; &amp;lt;nowiki&amp;gt;[- Nova Spivack]&amp;lt;/nowiki&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Tom Coates, whose day job at Yahoo involves working on just these issues, thinks the Web 2.0 crowd is already taking care of the problem. He points to tagging and [[microformats]] that add some of the same metadata to webpages that semantic technologies offer.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;quot;I call it the dirty semantic Web,&amp;quot; Coates says from his London office. &amp;quot;It may not be the pristine Berners-Lee view of the world, but it is headed in the right direction.&amp;quot; &amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== June 2007 ==&lt;br /&gt;
&lt;br /&gt;
=== URLs of mentions ===&lt;br /&gt;
&lt;br /&gt;
To be processed into the below noted and quoted format:&lt;br /&gt;
* &amp;lt;span class=&amp;quot;vevent&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;description&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;2007-06-26&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;Web Worker Daily&amp;lt;/span&amp;gt;: &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://webworkerdaily.com/2007/06/26/location-location-location-get-the-best-out-of-3-presence-apps/&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span class=&amp;quot;vevent&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;description&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;2007-06-25&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;Ars Technica&amp;lt;/span&amp;gt;: &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://arstechnica.com/journals/microsoft.ars/2007/06/25/rumor-internet-explorer-8-beta-coming-by-year-end&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== noted and quoted ===&lt;br /&gt;
&lt;br /&gt;
Remove the above two level 3 headings when all URLs of mentions are noted and quoted here.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li class=&amp;quot;vevent&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;2007-06-29&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;&amp;quot;The Tech Lab: Bradley Horowitz&amp;quot; in &amp;quot;BBC News, Technology&amp;quot;&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://news.bbc.co.uk/1/hi/technology/6252716.stm&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;blockquote class=&amp;quot;description&amp;quot;&amp;gt;&amp;lt;p&amp;gt;Where we find people codifying big blocks of entities - whether in a movie database or books or restaurants, or business entities - I am comfortable taking a pragmatic approach so long as the companies contributing their respective intellectual property are committed to open standards and strategies.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;It will happen through small pieces loosely joined, and it is emerging already. Different domain &amp;lt;span class=&amp;quot;notspam&amp;quot;&amp;gt;specia&amp;lt;span class=&amp;quot;srsly&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;lists&amp;lt;/span&amp;gt; will grab different domain patches.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Once we begin to have this information we can then put it in [[microformats]] on the web, which are machine-readable. So then in an automated fashion crawlers can take advantage of that structure. &amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;...&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;The web itself is sloppy, loose and unstructured - and these, by the way, are virtues!&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;But in making it easy to add [[microformats]], which are just machine-readable, coded bits of structure, we let machines talk to machines and ambiguity over which restaurant I am blogging about, or which film, or which person, will end.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;This represents a huge step toward the vision of the semantic web, and will not only create entirely new applications, but will also solve problems that users today have come to accept as part of &amp;quot;life on the web.&amp;quot;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;This structure should be optional, not imposed. The onus is on us, the builders of the tools, to make it brain dead simple to add this structure.&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li class=&amp;quot;vevent&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;2007-06-29&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;'''&amp;quot;&amp;lt;span lang=&amp;quot;fr&amp;quot;&amp;gt;Les microformats donnent du sens aux pages web&amp;lt;/span&amp;gt;&amp;quot;''' in &amp;quot;01 Informatique&amp;quot; - issue 1911 by Frederic Bordage&amp;lt;/span&amp;gt;. [http://www.flickr.com/photos/christopheducamp/682883268/in/photostream/] with a french interview of Tantek Çelik [http://www.flickr.com/photos/christopheducamp/682882852/in/photostream/]&amp;lt;span style=&amp;quot;float:right&amp;quot;&amp;gt;[http://www.flickr.com/photos/christopheducamp/682882852 http://farm2.static.flickr.com/1348/682882852_15a6587a30_m.jpg]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;blockquote class=&amp;quot;description&amp;quot; lang=&amp;quot;fr&amp;quot;&amp;gt;&amp;lt;p&amp;gt;Web Sémantique. Ces formats transforment les pages web en bases de données structurées. L'indexation devient ainsi plus riche et plus pertinente. ''&amp;quot;Une approche du web sémantique pragmatique et simple à mettre en oeuvre&amp;quot;''. C'est ainsi que François Goube, PDG du moteur de recherche JobiJoba.com qualifie les microformats. (...)&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;blockquote class=&amp;quot;description&amp;quot; lang=&amp;quot;en&amp;quot;&amp;gt;&amp;lt;p&amp;gt;Translation : These microformats enhance web pages, and lead them to structured data. As a search engine, it makes more sense. ''&amp;quot;Integrating Microformats is a really simple and pragmatic way to start with semantic web&amp;quot;'', said Francois Goube, CEO of JobiJoba.com : a European JobSearch engine.&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li class=&amp;quot;vevent&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;2007-06-21&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;&amp;quot;Microformats: People First, Machines Second&amp;quot; in &amp;quot;Electronic Design&amp;quot; by William Wong. ED Online ID #15742.&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://www.elecdesign.com/Articles/ArticleID/15742/15742.html&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;blockquote class=&amp;quot;description&amp;quot;&amp;gt;&amp;lt;p&amp;gt;It's amazing what you can find bouncing around the Internet. I stumbled across microformats while looking for something else. Microformats are a way of embedding semantic information on a Web page. They're designed to augment human-readable versions so software can easily and accurately extract the same information. Also, they're based on a small set of open data formats built upon existing and widely adopted standards.&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== January 2007==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span class=&amp;quot;vevent&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;description&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;2007-01-15&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;''Government Computer News'' (UK); Microformats get real by Joab Jackson&amp;lt;/span&amp;gt;: &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://www.gcn.com/blogs/tech/42930.html&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span class=&amp;quot;vevent&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;description&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;2007-01-03&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;Information Week; Firefox 3: From HTML Renderer To Information Broker by Mitch Wagner&amp;lt;/span&amp;gt;: &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://www.informationweek.com/blog/main/archives/2007/01/firefox_3_from.html&amp;lt;/span&amp;gt; Discusses the implications of native microformat support in Firefox.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span class=&amp;quot;vevent&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;description&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;2007-01-02&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;Read/ Write Web; Mozilla Does Microformats: Firefox 3 as Information Broker&amp;lt;/span&amp;gt;: &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://www.readwriteweb.com/archives/mozilla_does_microformats_firefox3.php&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span class=&amp;quot;vevent&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;description&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;dtstart&amp;quot;&amp;gt;2007-01-01 &amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;summary&amp;quot;&amp;gt;''Linux Format Magazine'' (UK); What on earth... are Microformats?&amp;lt;/span&amp;gt;: &amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;http://www.flickr.com/photos/christopheducamp/500478421/&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Blog Mentions ==&lt;br /&gt;
While not conventionally thought of as press or news, mentions by blogs can often be significant and may superficially resemble press due to their reverse chronological, most recent post first organization.&lt;br /&gt;
* [http://s.technorati.com/microformat+OR+microformst Technorati search for &amp;quot;microformat(s)&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== Related pages ==&lt;br /&gt;
&amp;lt;div id=&amp;quot;2006&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;2005&amp;quot;&amp;gt;&lt;br /&gt;
{{press-related pages}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[articles]]&lt;br /&gt;
* [[books]]&lt;br /&gt;
* [[presentations]]&lt;br /&gt;
* [[podcasts]]&lt;br /&gt;
* [[quotes]]&lt;br /&gt;
* [[screencasts]]&lt;br /&gt;
* [[external-resources]] for external resources related to microformats.&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=turns-nine-upgrade-to-microformats2&amp;diff=70489</id>
		<title>turns-nine-upgrade-to-microformats2</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=turns-nine-upgrade-to-microformats2&amp;diff=70489"/>
		<updated>2022-02-16T16:42:41Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;published on tantek.com and the [[blog]]:&lt;br /&gt;
* http://tantek.com/2014/171/b1/microformats-org-turns-nine&lt;br /&gt;
* http://microformats.org/2014/06/20/microformats-org-turns-9-upgrade-to-microformats2&lt;br /&gt;
&lt;br /&gt;
= microformats.org turns 9 - upgrade to microformats2 and more =&lt;br /&gt;
&lt;br /&gt;
Nine years ago we launched microformats.org with a basic premise: that it is possible to express meaning on the web in HTML in a simple way—far simpler than the complex alternatives (XML) being promoted by mature companies and standards organizations alike.&lt;br /&gt;
&lt;br /&gt;
None of the other alternatives promoted in the 2000s (even by big companies like Google and Yahoo) survive to this day in any meaningful way:&lt;br /&gt;
* [[Google Base]]&lt;br /&gt;
* [[Google Data]]&lt;br /&gt;
* Yahoo's [[CommonTag]].org&lt;br /&gt;
* too many XML approaches to count&lt;br /&gt;
&lt;br /&gt;
From this experience, we conclude that what large companies support (or claim to prefer) is often a trailing indicator (at best).  &lt;br /&gt;
&lt;br /&gt;
Large companies tend to promote more complex solutions, perhaps because they can afford the staff, time, and other resources to develop and support complex solutions. Such approaches fundamentally lack empathy for independent developers and designers, who don't have time to keep up with all the complexity.&lt;br /&gt;
&lt;br /&gt;
If there's one value that's at the heart of microformats' focus and continued evolution of [[simplicity]], it is that empathy for independent developers and designers, for small consulting shops, for curious hobbyists who are most enabled and empowered by the simplest possible solutions to problems.&lt;br /&gt;
&lt;br /&gt;
We now know that no amount of large company marketing and evangelism can make up for a focus on ever simpler solutions which take less time to learn, use, and reliably maintain. As long as we focus on that, we will create better solutions.&lt;br /&gt;
&lt;br /&gt;
== Community Changes ==&lt;br /&gt;
Speaking of taking less time, we've learned some community lessons about that too. Perhaps the most important is that as a community we are far more efficiently productive using &amp;lt;em&amp;gt;just&amp;lt;/em&amp;gt; [[IRC]] and the wiki, than any amount of use of email. In fact, the microformats drafts that were developed wtih the most email (e.g. hAudio) turned out to be the hardest to follow and discuss (too many long emails), and sadly ended up lacking the simplicity that real world publishers wanted (e.g. last.fm).&lt;br /&gt;
&lt;br /&gt;
Email tends to bias design and discussions towards those who have more time to read and write long emails, and (apparently) enjoy that for its own sake, than those who want to quickly research &amp;amp;amp; brainstorm, and get to actually &amp;lt;em&amp;gt;creating, building, and deploying&amp;lt;/em&amp;gt; things with microformats.&lt;br /&gt;
&lt;br /&gt;
Thus we're making these changes effective today:&lt;br /&gt;
* [[IRC]] for all microformats discussions, whether research, questions, or brainstorming&lt;br /&gt;
* [[email]] only for occasional announcements and to direct people to IRC.&lt;br /&gt;
* [[wiki]] for capturing questions, brainstorming, conclusions, and different points of view&lt;br /&gt;
&lt;br /&gt;
We're going to update the site to direct all discussion (e.g links) to the IRC channel accordingly.&lt;br /&gt;
&lt;br /&gt;
Hope to see you there: [ircs://irc.libera.chat:6697/microformats #microformats on libera.chat]&lt;br /&gt;
&lt;br /&gt;
== Upgrading to microformats2 ==&lt;br /&gt;
Over the past few years [[microformats2]] has proven itself in practice, with numerous sites both publishing and consuming, several open source parsing libraries, and a growing test suite. All the lessons learned from the evolution from original microformats, from RDFa, and from microdata have been incorporated into microformats2 which is now the simplest to both publish and parse.&lt;br /&gt;
&lt;br /&gt;
It's time to throw the switch and upgrade everything to [[microformats2]]. This means three things:&lt;br /&gt;
&lt;br /&gt;
=== Upgrading microformats.org ===&lt;br /&gt;
First, we're starting by upgrading the links on the microformats.org home page to point to the microformats2 drafts, which are ready for use.&lt;br /&gt;
&lt;br /&gt;
We'll be incrementally upgrading the markup of the microformats.org site itself to use microformats2 markup.&lt;br /&gt;
&lt;br /&gt;
=== Upgrade sites ===&lt;br /&gt;
Second, if you publish any kind of semantic information, start upgrading your web pages to microformats2 across the board. &lt;br /&gt;
&lt;br /&gt;
If you're concerned about what search engines claim to support, there are two approaches to choose from:&lt;br /&gt;
# Know that search engines are a trailing indicator, and as microformats2 usage grows, they'll index it as well.&lt;br /&gt;
# Or: Use &amp;lt;em&amp;gt;one&amp;lt;/em&amp;gt; classic microformat (supported by all major [[search engines]]) at top of your page, e.g. on the &amp;lt;code&amp;gt;&amp;amp;lt;body&amp;amp;gt;&amp;lt;/code&amp;gt;, in addition to your microformats2 markup throughout your pages. Search engines only really care to summarize the primary topic or purpose of a web page in their &amp;quot;rich snippets&amp;quot; or &amp;quot;cards&amp;quot;, and thus that's sufficient.&lt;br /&gt;
&lt;br /&gt;
Check out the latest [[validators]] which now include some microformats2 support as well!&lt;br /&gt;
&lt;br /&gt;
=== Upgrade tools ===&lt;br /&gt;
Third, this is a call to upgrade all microformats supporting tools to microformats2. As nearly all of these are open source, this is an open call for contributions, updates, patches, etc. for:&lt;br /&gt;
* [[Operator]]&lt;br /&gt;
* [[H2VX]]&lt;br /&gt;
* [[validators]]&lt;br /&gt;
* [[hCard creator]]&lt;br /&gt;
* [[hCalendar creator]]&lt;br /&gt;
* [[hReview creator]]&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
If it generates microformats, upgrade it to &amp;lt;em&amp;gt;instead&amp;lt;/em&amp;gt; generate microformats2.&lt;br /&gt;
&lt;br /&gt;
If it consumes microformats, upgrade it to &amp;lt;em&amp;gt;also&amp;lt;/em&amp;gt; consume microformats2 (which may be most easily done by making use of one of the microformats2 parsers that has backward compatible parsing built in).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
As we enter the tenth year of microformats.org let's make it our collective goal to upgrade our pages, our sites, and our tools to microformats2.&lt;br /&gt;
&lt;br /&gt;
Our goal is to complete all the above upgrades by microformats.org's tenth birthday, if not sooner. Let's get to work.&lt;br /&gt;
&lt;br /&gt;
Thanks to Barnaby Walters and fellow microformats [[admins]] Kevin Marks &amp;amp;amp; Ted O'Connor for reviewing drafts of this post. Thanks to Kevin especially for some copy edits!&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=hreview-faq&amp;diff=70488</id>
		<title>hreview-faq</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=hreview-faq&amp;diff=70488"/>
		<updated>2022-02-16T16:42:12Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= hReview FAQ =&lt;br /&gt;
&lt;br /&gt;
This page is for documenting Q&amp;amp;A about [[hreview|hReview]].  If you have a new question to ask, Please consider first asking your question on the [ircs://irc.libera.chat:6697/microformats microformats irc channel] (preferably) or the [http://microformats.org/mailman/listinfo/microformats-discuss/ microformats-discuss] list.&lt;br /&gt;
&lt;br /&gt;
== Q&amp;amp;A ==&lt;br /&gt;
&lt;br /&gt;
# What is the purpose of the hReview microformat (i.e. why is it important for it to exist)?&lt;br /&gt;
&lt;br /&gt;
# What are the advantages of using the hReview microformat?&lt;br /&gt;
&lt;br /&gt;
# ''How do you specify more detail for the 'type' field, e.g. for an item of type &amp;quot;product&amp;quot; that is a book, or a movie (on DVD or in a theater), or a music CD? -- paraphrased from [[User:Dougal Campbell|Dougal Campbell]] 11:54, 21 Jun 2005 (PDT)''&lt;br /&gt;
#* The 'type' field was kept delibrately coarse and simple.  Any attempt to build a thorough and meaningful taxonomy of all specific types of things that can be reviewed would be futile.  Instead, the set of reviewed item types is kept small and fairly generic.  Specific &amp;quot;typing&amp;quot; information about the item being reviewed should be published as tags as defined in [[hreview|hReview]].  E.g. a review of a book would be tagged with a [http://en.wikipedia.org/wiki/Book book tag]: &amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;tag&amp;quot; href=&amp;quot;http://en.wikipedia.org/wiki/Book&amp;quot;&amp;gt;book&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt; .  Similarly a movie that was a DVD should be tagged with both: &amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;tag&amp;quot; href=&amp;quot;http://en.wikipedia.org/wiki/Movie&amp;quot;&amp;gt;movie&amp;lt;/a&amp;gt; &amp;lt;a rel=&amp;quot;tag&amp;quot; href=&amp;quot;http://en.wikipedia.org/wiki/DVD&amp;quot;&amp;gt;DVD&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt; . Or a music CD: &amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;tag&amp;quot; href=&amp;quot;http://en.wikipedia.org/wiki/music&amp;quot;&amp;gt;music&amp;lt;/a&amp;gt; &amp;lt;a rel=&amp;quot;tag&amp;quot; href=&amp;quot;http://en.wikipedia.org/wiki/CD&amp;quot;&amp;gt;CD&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt; .&lt;br /&gt;
# ''What is the difference between the 'website' and 'url' type? --[[User:Dougal Campbell|Dougal Campbell]] 11:54, 21 Jun 2005 (PDT)''&lt;br /&gt;
#* A 'website' presumably includes everything located on that site, whereas 'url' refers only to the particular page located at the given 'url'.&lt;br /&gt;
# ''What if I want to use hReview to review a podcast?  Which type should I use?''&lt;br /&gt;
#* As a podcast is typically a specific URL (often ending with &amp;quot;.mp3&amp;quot;) the &amp;quot;url&amp;quot; item type should be used when publishing an hReview of a podcast.&lt;br /&gt;
# ''What is the proper 'type' to use for a restaurant?''&lt;br /&gt;
#* A restaurant is a &amp;quot;business&amp;quot;.&lt;br /&gt;
# ''Is there a standard way to add information that isn't in the default list of fields?  It seems like book reviews should include the author's name, but there's no obvious way to add it to the markup.  The example reviews include it in the text, but it's not part of their markup. [[User:Chris Hibbert|Chris Hibbert]]''&lt;br /&gt;
#* See [http://microformats.org/discuss/mail/microformats-discuss/2005-September/000985.html email answer on microformats-discuss] - [http://tantek.com/log/ Tantek]&lt;br /&gt;
# ''How do I state the scale of the rating field? [http://k.digitalfarmers.com/ Kal Ström]''&lt;br /&gt;
#* Please read the [http://microformats.org/wiki/hreview#Field_details rating field description].  The default scale is 1 (worst) to 5 (best) and either can be changed by the author.  See the [http://microformats.org/wiki/hreview#Multidimensional_Restaurant_Review multidimensional restaurant review] for an example of this. - [http://tantek.com/log/ Tantek]&lt;br /&gt;
# ''Is there some recommendation as to the url for movies, imdb perhaps?'' - [[User:Judson Dunn|Judson Dunn]] 12:40, 17 Dec 2005 (PST)&lt;br /&gt;
#* Many users use imdb.com URLs to refer to movies.  Others use amazon.com or other DVD etc. product URLs to refer to movies.  Some even use the URLs to specific movie sites themselves, e.g. whatisthematrix.com.  Some also use URLs to movie traliers on movie trailer sites.  You should use whatever you think best represents the specific item you are reviewing.  Microformats.org does not make a recommendation to use one of the above in particular. - [http://tantek.com/log/ Tantek]&lt;br /&gt;
# ''Can the item being reviewed have more than one photo?''&lt;br /&gt;
#* Yes.  In general if the specification does not explicitly forbid it, a property may take multiple values (or be specified multiple times).&lt;br /&gt;
# ''Is there a recommended way to use hReview to &amp;quot;rate&amp;quot; stocks?''&lt;br /&gt;
#* Typically what you are rating is not the stock, but the company behind the stock, which would simply be an item of 'type' 'business', and you would include an [[hcard|hCard]] for the company.  If you are actually rating a specific stock (for example in the case where a company has more than one type of stock for trade), then in essence you are reviewing a 'product' which is bought and sold.  In that case, you can specify the item 'type' to be a 'product', and then use a standard stock market name for the stock symbol, e.g. &amp;quot;[http://finance.yahoo.com/q?s=T NYSE:T]&amp;quot; for AT&amp;amp;T stock, &amp;quot;[http://finance.yahoo.com/q?s=MSFT NasdaqNM:MSFT]&amp;quot; for Microsoft stock, &amp;quot;[http://finance.yahoo.com/q?s=%5EDJI DJI:^DJI]&amp;quot; for the Dow Jones Industrial Average.  More such scoped names for stocks can be found by looking them up on [http://finance.yahoo.com/ Yahoo! Finance], and you could even use a stock's Yahoo! Finance URL as the item's 'url' in the hReview, e.g. as linked from the examples listed.&lt;br /&gt;
#* In addition, see the FAQ#1 above.  As a &amp;quot;stock&amp;quot; is a particular kind of product, you should probably tag the item in the hReview with a set of tags, e.g.: &lt;br /&gt;
#** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;a href=&amp;quot;http://technorati.com/tag/stock&amp;quot; rel=&amp;quot;tag&amp;quot;&amp;gt;stock&amp;lt;/a&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
#** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;a href=&amp;quot;http://technorati.com/tag/msft&amp;quot; rel=&amp;quot;tag&amp;quot;&amp;gt;msft&amp;lt;/a&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
#** ... etc.&lt;br /&gt;
# ''Should rated tags show up alongside other tags in an hReview?''&lt;br /&gt;
#* Both rated tags and normal tags apply to the item being reviewed, and thus both are in the total set of tags for the item.  As far as where they should show up, that is up to the user interface of the software or service that is displaying the hReviews.&lt;br /&gt;
# ''Are decimal-number ratings allowed?  (ie 4.5)''&lt;br /&gt;
#* One decimal point of precision is added in hReview 0.3 based on analysis of common rating behaviors on the Web.&lt;br /&gt;
# ''How do you markup a page for an item that has multiple reviews on that page (without having to repeat the information about the item in each review? Ning could use this, specifically in their default http://reviewit.ning.com/ , see also http://hreviewit.ning.com''&lt;br /&gt;
#* Possibly use the object inclusion method from [[resume-brainstorming]].&lt;br /&gt;
# ''For a music review, is there a standard for designating/tagging the Artist name separate from the Album name or Track name etc?''&lt;br /&gt;
#* It depends on what specifically you are reviewing.  If you are reviewing the Artist as a whole, then the Artist is the item.  If you are reviewing a specific Album, then the Album is the item.  If you are reviewing a particular Track, then the Track is the item.  You can then just use tags for the rest of the information.&lt;br /&gt;
#*# ''Is there a standard way of specifying what the tag is addressing semantically?  That is, say I were reviewing the album OK Computer from Radiohead - the item is of course OK Computer - and I can have a tag to Radiohead - but is there an accepted practice as marking it as an &amp;quot;artist&amp;quot; tag?''&lt;br /&gt;
#*#* The short answer is no, tags are a relatively flat set of &amp;quot;aspects&amp;quot; of the item, and you can't give tags a &amp;quot;type&amp;quot; like that.  The longer answer is, you could tag it Radiohead using a tagspace (see [[rel-tag]] for details) that specifically defined Radiohead as an artist, e.g. perhaps the [http://en.wikipedia.org/wiki/Radiohead Wikipedia page for Radiohead].&lt;br /&gt;
# ''Does anyone have a examples of hReview documents? I.e.  both valid and invalid examples to test a parser against?''&lt;br /&gt;
#* Please see [[hreview-examples-in-wild|hReview Examples in the Wild]].&lt;br /&gt;
&lt;br /&gt;
==Related pages==&lt;br /&gt;
{{hreview-related-pages}}&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=faqs-for-rdf-fr&amp;diff=70487</id>
		<title>faqs-for-rdf-fr</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=faqs-for-rdf-fr&amp;diff=70487"/>
		<updated>2022-02-16T16:40:26Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;FAQs Microformat pour les Fans de RDF&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Que sont les Microformats ==&lt;br /&gt;
Les Microformats sont un ensemble simple et ouvert de formats de données construits sur des standards existant et largment adoptés, en particulier le XHTML utilisé ''correctement''. Les processus, principes et pratiques du groupe (ouvert) des microformats sont ce qui font les microformats des &amp;quot;microformats&amp;quot;, mais ils se concentrent sur l'utilisation du XHTML tel qu'il est conçu, comme un langage sémantique (même s'ils peuvent être aussi implémentés sur d'autres formats XML, comme Atom).&lt;br /&gt;
&lt;br /&gt;
Bien que l'initiative des microformats mettent la priorité sur la lisibilité-par-les-humains, avec l'aide du mécanisme [http://www.w3.org/2004/01/rdxh/spec GRDDL], il est possible de visualiser les microformats comme spécifique à un domaine des feuilletons [http://www.w3.org/RDF/ RDF]. &lt;br /&gt;
&lt;br /&gt;
Voir aussi : [http://microformateurs.org/about/ Introduction aux Microformats]&lt;br /&gt;
&lt;br /&gt;
== Par exemple...  ==&lt;br /&gt;
&lt;br /&gt;
Cet [[hcard-example1-steps-fr|exemple]] montre comment le microformat hCard peut être utilisé pour exprimer des données vCard.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mais je produis du RDF, pourquoi devrais-je m'y intéresser ====&lt;br /&gt;
Les Microformats peuvent baisser la barrière pour placer des données explicites sur les Web. Ceci est complètement dans la lignée des objectifs du [http://www.w3.org/2001/sw/ Web Sémantique]. &lt;br /&gt;
&lt;br /&gt;
Dan Connolly [http://lists.w3.org/Archives/Public/www-rdf-interest/2000Mar/0103 rdf-interest, Mars 2000] :&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Je crois que l'un des meilleurs moyens de faire la transition vers RDF, si ce n'est pas une stratégie de déploiement à long terme pour RDF, est de gérer l'information dans un format consommable-par-un-humain (XHTML) annoté avec juste assez d'information pour extraire les déclarations RDF que l'information humaine voudra charrier à l'avenir. En d'autres mots : utiliser une base de données relationnelle ou quelque sorte de donnée native RDF et de recracher dynamiquement du HTML, représente beaucoup d'infrastructure pour opérer et ne vaut probablement pas la peine de s'y intéresser pour beaucoup de cas intéressants. Nous savons tous que nous devons produire une version lisible-par-les-humains de la chose... pourquoi ne pas utiliser la soure primaire ?&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== J'ai un vocabulaire RDF que j'aimerais utiliser comme un microformat. Comment puis-je le produire ==&lt;br /&gt;
&lt;br /&gt;
Avant de produire quoi que ce soit d'autre, lisez le [[process-fr|Processus]. En général, le processus microformat est guidé par les données. Il démarre par du contenu déjà publié, plutôt que d'un format d'un modèle ou d'un schéma existant. Vous devriez aussi regarder la liste de ce qui a déjà été couvert et le travail en cours sur la [[Main-Page-fr|page d'accueil principale du wiki]].&lt;br /&gt;
&lt;br /&gt;
Ce peut être bien que ce que vous avez en tête n'est pas approprié pour l'utilisation en tant que microformat, mais ce peut être encore une bonne idée de développer une représentation XHTML (sémantique). Les microformats existants démontrent un moyen &amp;quot;standards-friendly&amp;quot; de faire ça.&lt;br /&gt;
&lt;br /&gt;
Voir aussi : [http://tantek.com/presentations/2005/03/elementsofxhtml/ The Elements of Meaningful XHTML] (à traduire)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ainsi, cela concerne l'utilisation de valeurs de classe CSS à ajouter à la sémantique ==&lt;br /&gt;
&lt;br /&gt;
Non. Le XHTML exprime déjà la sémantique, l'attribut '''HTML''' &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; est juste l'un des nombreux mécanismes. Extrait de la [http://www.la-grange.net/w3c/html4.01/cover.html spécification HTML 4] :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
L'attribut class, au contraire, assigne un ou plusieurs noms de classe à un élément ; on peut dire de l'élément qu'il appartient à ces classes. &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voir aussi : [http://www.microformats.org/blog/2005/10/19/more-than-styling/ Les attributs &amp;quot;Class&amp;quot; font plus que styliser]&lt;br /&gt;
&lt;br /&gt;
== Qu'en est-il des espaces-noms pour les attributs, devrais-je utiliser &amp;quot;xxx:term&amp;quot; ? ==&lt;br /&gt;
En général, les microformats rejettent l'utilisation de préfixes explicites d'espace-nom dans les documents car ce n'est pas nécessaire pour résoudre le 80/20 des problèmes que les microformats cherchent à résoudre. L'approche générale adoptée est de ne pas essayer de généraliser vers l'extension de [http://research.talis.com/2005/erdf/wiki/Main/RdfInHtml RDF-in-HTML], mais plutôt de définir des formats plus spécifiques-au-domaine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mais il n'y aura pas de conflits de nommage ==&lt;br /&gt;
L'aspect social des microformats [[process-fr|Processus] est tel que les conflits devraient être empêchés. Le but est de garder les choses aussi simples que possible en se concentrant seulement sur les problèmes '''existants''' bien définis, plutôt que d'essayer de faire &amp;quot;bouillir l'océan&amp;quot; (résoudre le cas général hypothétique).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ainsi comment fais-je pour obtenir les données ==&lt;br /&gt;
Voir [http://www.w3.org/TeamSubmission/grddl/ GRDDL] ([http://www.w3.org/2004/01/rdxh/spec plus ancienne version])&lt;br /&gt;
&lt;br /&gt;
Voir aussi : [http://www.w3.org/2006/05/08-htmltf-minutes.html#item03 hGRDDL proposal]&lt;br /&gt;
&lt;br /&gt;
== N'y a t'il pas un conflit entre la sémantique de XFN et FOAF==&lt;br /&gt;
&lt;br /&gt;
L'utilisation de la page URI dans XFN pour identifier une personne semble être en conflit avec l'approche par référence de FOAF, et d'esquinter le potentiel pour dire des choses à propos de la page elle-même. Néanmoins en pratique ce n'est pas un problème. Il est possible de parser le document sous XFN (en utilisant par ex. [http://www.w3.org/2003/12/rdf-in-xhtml-xslts/grokXFN.xsl grokXFN.xsl]) pour extraire les déclarations apparentées à la personne par ex.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
_:personA foaf:homepage &amp;amp;lt;http://exemple.org/cette-page&amp;amp;gt; .&lt;br /&gt;
_:personA foaf:knows _:personB .&lt;br /&gt;
_:personB foaf:homepage &amp;amp;lt;http://exemple.org/page-liée&amp;amp;gt; . &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
- et parser ''indépendamment'' le document en utilisant d'autres mappings de formats (par ex. [http://www.w3.org/2000/06/dc-extract/dc-extract.xsl dc-extract.xsl]) pour obtenir d'autres déclarations, par ex. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;lt;http://exemple.org/cette-page&amp;amp;gt; dc:creator &amp;quot;Le Créateur&amp;quot; .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voir aussi : [http://www.w3.org/2003/g/td/xfn-workalike XFN sur le GRDDL], [http://www.oreillynet.com/pub/wlg/8281 XFN Delusions of Grandeur], [http://www.microformats.org/blog/2005/11/02/xfn-grandeur/ XFN Grandeur], [http://dannyayers.com/archives/2005/11/03/xfn-vs-foaf/ XFN vs. FOAF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Quels autres travaux ont été produits avec les microformats et RDF ==&lt;br /&gt;
* [http://www.w3.org/2003/g/td/xfn-workalike XFN sur le GRDDL]&lt;br /&gt;
* [http://people.w3.org/~dom/archives/2005/05/grddl-specification-updated/ travaux de mises à jour de la spécification avec les Microformats]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Y'a t'il des Schémas pour les Microformats ==&lt;br /&gt;
Une sorte. La spécification primaire est XHTML, mais HTML4 fournit un mécanisme (l'attribut 'profile' de l'élément &amp;amp;lt;head&amp;amp;gt;) pour pointer vers un profil de méta-donnée qui définit les propriétés et valeurs. Il existe un format (fondé sur HTML) spécifié pour les profils microformat - [http://www.gmpg.org/xmdp/ XHTML Meta Data Profiles]. Notez que les URLs de XMDP pour spécifier les termes sont compatibles avec celles utilisées par RDF, avec &amp;quot;#term&amp;quot; à la fin.&lt;br /&gt;
&lt;br /&gt;
== Quels sont les vocabulaires RDF (et XSLT) disponbiles correspondants aux microformats ==&lt;br /&gt;
Voir les [http://esw.w3.org/topic/MicroModels MicroModels] (sur le wiki ESW)&lt;br /&gt;
&lt;br /&gt;
== Est-ce que ce n'est pas simplement de la friction ==&lt;br /&gt;
Non. Parce que les microformats (devraient) incluent les URI(s) pour chaque profil utilisé, et les profils sont clairement définis, les données explicites contenues dans un document peuvent être extraites par un parsage.&lt;br /&gt;
&lt;br /&gt;
=== Qui d'autre est en train de regarder RDF et les microformats==&lt;br /&gt;
Beaucoup de monde. Y compris : [http://www.w3.org/People/Connolly/ Dan Connolly], [http://internetalchemy.org/ Ian Davis], [http://sw.deri.org/~jbreslin/ John Breslin], [http://dannyayers.com Danny Ayers]....&lt;br /&gt;
&lt;br /&gt;
== Comment puis-je m'impliquer ==&lt;br /&gt;
Si vous utilisez le web, vous *êtes* déjà impliqué ! Le prochain endroit à visiter est le site  [http://microformats.org/ microformats.org] et peut-être vous enregistrer sur quelques [http://microformats.org/discuss/ listes de discussion] (en particulier celle de [http://microformats.org/mailman/listinfo/microformats-discuss/ microformats-discuss]). Il existe aussi un canal [ircs://irc.libera.chat:6697/microformats #microformats sur libera.chat]. Nous avons aussi besoin de traducteurs pour amorcer la communauté francophone des [http://microformateurs.org/ microformateurs].&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=process-faq-fr&amp;diff=70486</id>
		<title>process-faq-fr</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=process-faq-fr&amp;diff=70486"/>
		<updated>2022-02-16T16:39:31Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;microformats processus FAQ&amp;lt;/h1&amp;gt;&lt;br /&gt;
Cette page est là pour documenter les Q&amp;amp;R concernant le [[process-fr|processus]] des microformats.  Si vous avez une nouvelle question à poser, considérez svp de la poser tout d'abord sur le [ircs://irc.libera.chat:6697/microformats canal irc microformats] (de préférence) ou sur la liste de discussion [http://microformats.org/mailman/listinfo/microformats-discuss/ microformats-discuss]. Les nouvelles questions et réponses devraient être ajoutées en fin de liste. Si vous avez une nouvelle question mais pas de réponse, ajoutez-là svp à [[process-issues-fr|processus-problématiques]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Editer cette Page&amp;lt;/h2&amp;gt;&lt;br /&gt;
SVP, n'utilisez pas de &amp;quot;?&amp;quot; ou tout autre signe de ponctuation dans les titres - cela aide à maintenir les URLs vers leurs identifiants fragments plus courts et plus faciles à lire, copier/coller. Voir [[how-to-play-fr|comment jouer]] pour en savoir plus sur les lignes de conduite de modification du wiki.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt; Q&amp;amp;R &amp;lt;/h2&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
=== Pourquoi perdre du temps à barboter dans le HTML friable ===&lt;br /&gt;
''Would it not be better for microformats to standardize markup based on the domain model than waste time wading through flakey html?''&lt;br /&gt;
* The &amp;quot;gather real world examples&amp;quot; for analysis step of the [[process-fr|process]] is specifically focusing on the &amp;lt;em&amp;gt;data&amp;lt;/em&amp;gt; published, and &amp;lt;strong style=&amp;quot;text-transform:uppercase&amp;quot;&amp;gt;not&amp;lt;/strong&amp;gt; the &amp;lt;em&amp;gt;markup&amp;lt;/em&amp;gt; patterns (or lack thereof). This is why the &amp;lt;strong&amp;gt;*-examples&amp;lt;/strong&amp;gt; step says: &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&amp;quot;Document the schemas implied by the content examples.&amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;Every word in that sentence matters. &amp;lt;em&amp;gt;implicit&amp;lt;/em&amp;gt; schemas, that is, you have to look at the &amp;lt;em&amp;gt;content&amp;lt;/em&amp;gt; of the examples and note what abstract notions/fields/properties that people are publishing.  That's very deliberate in that it is &amp;lt;strong style=&amp;quot;text-transform:uppercase&amp;quot;&amp;gt;much&amp;lt;/strong&amp;gt; less important (if at all) what flakey html is being used.&amp;lt;p&amp;gt;Analysis of current publishing practices helps us prioritize what problems are worth solving (i.e. there is already demonstrated incentive for people to publish such information) as opposed to what problems are purely theoretical, or wishful thinking (e.g. if only everyone would publish metadata ABC then we could build applications XYZ).  In fact, this is probably one of the most important parts of the process. Domain models that don't account for what is published on the real web tend to be less useful on the real web as has been demonstrated by the numerous a priori XML formats that have been proposed but never got any adoption.  The XML formats that have gained adoption are those that modeled the data of existing content publishing behaviors (e.g. the Atom format).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;En rapport&amp;lt;/h2&amp;gt;&lt;br /&gt;
* [[process-fr|processus]]&lt;br /&gt;
* [[process-issues-fr|processus-problématiques]]&lt;br /&gt;
* [[process-brainstorming-fr|processus-brainstorming]]&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=faq-template-fr&amp;diff=70485</id>
		<title>faq-template-fr</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=faq-template-fr&amp;diff=70485"/>
		<updated>2022-02-16T16:39:16Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt; ((FORMAT-OU-NOM-SUJET)) FAQ &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette page est destinée à documenter les Q&amp;amp;R à propos de ((WIKILIEN-VERS-FORMAT-OU-SUJET)) &lt;br /&gt;
Si vous avez une nouvelle question à poser, considérez SVP de poser d'abord votre question sur le [ircs://irc.libera.chat:6697/microformats microformats canal irc] (de préférence)  ou sur la [http://microformats.org/mailman/listinfo/microformats-discuss/ liste de discussion microformats]. Les nouvelles questions et réponses devraient être ajoutée à la fin de la liste. Si vous avez une nouvelle question mais pas de réponse, ajoutez-la sur  ((WIKILIEN-VERS-FORMAT-OU-SUJET-issues-fr)).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Editer cette Page&amp;lt;/h2&amp;gt;&lt;br /&gt;
N'utilisez pas SVP de &amp;quot;?&amp;quot; ou tout autre signe de ponctuation dans les titres - cela aide à maintenir des URLs vers leurs identifiants plus courts et plus faciles à lire, à copier-coller, etc. Voir [[how-to-play-fr|comment jouer]] pour en savoir plus sur les lignes de conduite wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt; Q&amp;amp;R &amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ((RESUME-QUESTION-SANS-PONCTUATION)) ===&lt;br /&gt;
''((QUESTION COMPLETE))''&lt;br /&gt;
* REPONSE COMPLETE&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;en rapport&amp;lt;/h2&amp;gt;&lt;br /&gt;
* ((WIKILIEN-VERS-FORMAT-OU-SUJET))&lt;br /&gt;
* ((WIKILIEN-VERS-FORMAT-OU-SUJET-issues-fr))&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=irc-ja&amp;diff=70484</id>
		<title>irc-ja</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=irc-ja&amp;diff=70484"/>
		<updated>2022-02-16T16:38:49Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: /* Microformats IRC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- english: 19:34, 23 Oct 2006 --&amp;gt;&lt;br /&gt;
= Microformats IRC =&lt;br /&gt;
&lt;br /&gt;
microformatsに関するIRCチャンネルがあります。[ircs://irc.libera.chat:6697/microformats freenodeネットワークの#microformats]にjoinしてください。文字エンコーディングはUTF-8を推奨します。&lt;br /&gt;
&lt;br /&gt;
また、主に日本語を使う人のためのチャンネルが[irc://irc.freenode.net/microformats-ja freenodeネットワークの#microformats-ja]にあります。文字エンコーディングはUTF-8です。&lt;br /&gt;
&lt;br /&gt;
There's typically someone there at any point during the day, though there isn't always active discussion. Sometimes, though this is the best place to debate issues that need lots of back and forth discussion.&lt;br /&gt;
&lt;br /&gt;
== ログ ==&lt;br /&gt;
チャンネルのログ: http://rbach.priv.at/Microformats-IRC/&lt;br /&gt;
&lt;br /&gt;
ログはAtomフィードでも取得可能です: http://microformat.makedatamakesense.com/log_feed/&lt;br /&gt;
&lt;br /&gt;
== IRCにいる人々 ==&lt;br /&gt;
&lt;br /&gt;
IRCによくいる人のリストとその人の通常のタイムゾーンについては[[irc-people|list of IRC regulars]]を見てください。&lt;br /&gt;
&lt;br /&gt;
以下は日本語が通じる人のリストです。&lt;br /&gt;
&lt;br /&gt;
* [[User:Vantguarde|vant]] (+0900)&lt;br /&gt;
**can read/write/talk in English. Et mon francais n'est pas très bon, mais je le comprend un peu.&lt;br /&gt;
* [[User:IwaiMasaharu|iwaim]] (+0900)&lt;br /&gt;
* [[User:TaichiKaminogoya|goya]] (+0900)&lt;br /&gt;
&lt;br /&gt;
== 挨拶 ==&lt;br /&gt;
チャンネルにjoinしたときに簡単な自己紹介を流すことができます。&amp;lt;tt&amp;gt;?def&amp;lt;/tt&amp;gt;コマンドを持ちいて次のように自己紹介文を登録してください。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;?def jdoe is John Doe and can be found online at &amp;lt;nowiki&amp;gt;http://www.example.com&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JiBotに関する情報は[http://joiwiki.ito.com/joiwiki/index.cgi?jibot jibotのウェブサイト]をご覧下さい。&lt;br /&gt;
&lt;br /&gt;
== ボット ==&lt;br /&gt;
&lt;br /&gt;
The IRC channel uses these bots:&lt;br /&gt;
* [[mfbot]]&lt;br /&gt;
* [[mflogbot]]&lt;br /&gt;
* [http://joiwiki.ito.com/joiwiki/index.cgi?jibot jibot]&lt;br /&gt;
&lt;br /&gt;
==Meetups==&lt;br /&gt;
&lt;br /&gt;
The idea of having IRC meetups (that is, a set time for meeting on IRC) has been suggested by [[User:RyanKing|Ryan King]], as it appears to work well for the WordPress community and may help us from time-to-time. As of yet, there are no plans to have meetups, though.&lt;br /&gt;
&lt;br /&gt;
==Clients==&lt;br /&gt;
&lt;br /&gt;
The following clients are recommended by #microformats participants:&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
* [http://www.mirc.com/ mIRC] - Popular Windows client. Trial version only.&lt;br /&gt;
* [http://xchat.org/ X-Chat] - Popular cross-platform client. [http://www.silverex.org/download/ Free Windows version] available.&lt;br /&gt;
* [http://www.adiirc.com/ AdiIRC] - Simple C# based IRC client.&lt;br /&gt;
* [http://www.miranda-im.org/ Miranda] - Lightweight, muti-protocol instant messenger.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
&lt;br /&gt;
* [http://colloquy.info Colloquy] -- open source, free&lt;br /&gt;
* [http://sourceforge.net/projects/fire Fire] -- open source, free&lt;br /&gt;
* [http://www.snak.com/ Snak]&lt;br /&gt;
* [http://xchataqua.sourceforge.net/twiki/bin/view/Main/WebHome XChat Aqua] -- X11 based IRC chat&lt;br /&gt;
* [http://homepage.mac.com/philrobin/conversation/ Conversation]&lt;br /&gt;
* [http://www.chipersoft.com/minerva/ Minerva]&lt;br /&gt;
* [http://www.aquaticx.com/ Xirc]&lt;br /&gt;
&lt;br /&gt;
===Cross-platform===&lt;br /&gt;
* [http://www.hacksrus.com/~ginda/chatzilla/ Chatzilla] - Cross-platform IRC extension for Firefox&lt;br /&gt;
* [http://irssi.org/ Irssi] - Unix client, often run from a shell, sometimes [http://f0rked.com/articles/irssi in conjunction with 'screen'].&lt;br /&gt;
* [http://gaim.sourceforge.net/ Gaim] - Cross-platform multi-protocol instant messenger.&lt;br /&gt;
* [http://jirc.hick.org/jirc/ jIRCii]&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=gender&amp;diff=70412</id>
		<title>gender</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=gender&amp;diff=70412"/>
		<updated>2021-06-22T21:59:34Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: /* see also */ linked pronouns&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:gender}}&lt;br /&gt;
&lt;br /&gt;
As of 2011-08, [[vCard4]] has been published with a &amp;quot;gender&amp;quot; property:&lt;br /&gt;
* http://tools.ietf.org/html/rfc6350#section-6.2.7&lt;br /&gt;
Largely based on the research here and [https://wiki.mozilla.org/VCard4#section_6.2.7._GENDER feedback documented on the Mozilla vCard4 wiki page].&lt;br /&gt;
&lt;br /&gt;
Per the microformats [[process]]:&lt;br /&gt;
* [[gender-examples]]&lt;br /&gt;
* [[gender-formats]]&lt;br /&gt;
* [[gender-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[vcard-suggestions#Gender]]&lt;br /&gt;
* [[genealogy-brainstorming#Gender]]&lt;br /&gt;
* [[hcard-faq#How_is_gender_represented]]&lt;br /&gt;
* [[pronouns]]&lt;br /&gt;
* [[interested-in]]&lt;br /&gt;
* [[looking-for]]&lt;br /&gt;
* [[relationship-status]]&lt;br /&gt;
&lt;br /&gt;
== related articles ==&lt;br /&gt;
* 2011-09-30 NYT: [http://www.nytimes.com/2011/10/02/fashion/choosing-a-pronoun-he-she-or-other-after-curfew.html The Freedom To Choose Your Pronoun]&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=microformats2-experimental-properties&amp;diff=70411</id>
		<title>microformats2-experimental-properties</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=microformats2-experimental-properties&amp;diff=70411"/>
		<updated>2021-06-22T21:59:11Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: /* p-x-pronoun-* */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== h-as-* ==&lt;br /&gt;
ActivityStreams-based post types, usually done in combination with h-entry.&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
* [http://glennjones.net/ glennjones.net] ([http://glennjones.net/notes/2015-07-11 example: h-as-note])&lt;br /&gt;
&lt;br /&gt;
Formerly:&lt;br /&gt;
* tantek.com - used to (~2014) use h-as-article and h-as-note but decided this type of explicit typing was unnecessary from a format perspective so dropped them. [[User:Tantek|Tantek]] 19:52, 11 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== h-x-username ==&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
* [http://glennjones.net/ glennjones.net] ([http://glennjones.net/notes/2015-07-11 example])&lt;br /&gt;
* [http://tantek.com/ tantek.com] ([http://tantek.com/2015/191/t1/indiewebcamp-pre-party example])&lt;br /&gt;
&lt;br /&gt;
how is this different from [[h-card]]'s p-nickname ? [[User:Kevin Marks|Kevin Marks]]&lt;br /&gt;
&lt;br /&gt;
== p-x-dietary-preference ==&lt;br /&gt;
&lt;br /&gt;
For dietary preferences (vegetarian, vegan etc.) - the intention is to help event organisers organise catering by aggregating together the dietary preferences of attendees.&lt;br /&gt;
&lt;br /&gt;
=== Suggested values ===&lt;br /&gt;
* ovo-lacto vegetarian&lt;br /&gt;
* lacto vegetarian&lt;br /&gt;
* ovo vegetarian&lt;br /&gt;
* vegan&lt;br /&gt;
* pescatarian&lt;br /&gt;
* omnivore&lt;br /&gt;
* gluten-free&lt;br /&gt;
* lactose-free&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
* [https://tommorris.org/ tommorris.org]&lt;br /&gt;
&lt;br /&gt;
== p-x-pronoun-* ==&lt;br /&gt;
&lt;br /&gt;
See the [[pronouns]] page for more pronoun discussion, examples, and alternative properties.&lt;br /&gt;
&lt;br /&gt;
Properties to identify a user's preferred pronouns&lt;br /&gt;
&lt;br /&gt;
; p-x-pronoun-nominative: the user's preferred nominative pronoun (e.g. he, she, they)&lt;br /&gt;
; p-x-pronoun-oblique: the user's preferred oblique pronoun (e.g. him, her, them)&lt;br /&gt;
; p-x-pronoun-possessive: the user's preferred possessive pronoun (e.g. his, hers, theirs)&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
* [https://waterpigs.co.uk/ waterpigs.co.uk]&lt;br /&gt;
* [https://unrelenting.technology/ unrelenting.technology]&lt;br /&gt;
* [[User:GRegorLove|gRegor]] on https://gregorlove.com/about&lt;br /&gt;
&lt;br /&gt;
== p-x-sexual-orientation ==&lt;br /&gt;
&lt;br /&gt;
For when we eventually build the open web dating service.&lt;br /&gt;
&lt;br /&gt;
;Suggested values:&lt;br /&gt;
:* straight or heterosexual&lt;br /&gt;
:* bisexual&lt;br /&gt;
:* pansexual&lt;br /&gt;
:* gay or lesbian or homosexual&lt;br /&gt;
:* asexual&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
* [https://tommorris.org/ tommorris.org]&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=microformats2-experimental-properties&amp;diff=70410</id>
		<title>microformats2-experimental-properties</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=microformats2-experimental-properties&amp;diff=70410"/>
		<updated>2021-06-22T21:59:01Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: /* p-x-pronoun-* */ linked to pronouns&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== h-as-* ==&lt;br /&gt;
ActivityStreams-based post types, usually done in combination with h-entry.&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
* [http://glennjones.net/ glennjones.net] ([http://glennjones.net/notes/2015-07-11 example: h-as-note])&lt;br /&gt;
&lt;br /&gt;
Formerly:&lt;br /&gt;
* tantek.com - used to (~2014) use h-as-article and h-as-note but decided this type of explicit typing was unnecessary from a format perspective so dropped them. [[User:Tantek|Tantek]] 19:52, 11 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== h-x-username ==&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
* [http://glennjones.net/ glennjones.net] ([http://glennjones.net/notes/2015-07-11 example])&lt;br /&gt;
* [http://tantek.com/ tantek.com] ([http://tantek.com/2015/191/t1/indiewebcamp-pre-party example])&lt;br /&gt;
&lt;br /&gt;
how is this different from [[h-card]]'s p-nickname ? [[User:Kevin Marks|Kevin Marks]]&lt;br /&gt;
&lt;br /&gt;
== p-x-dietary-preference ==&lt;br /&gt;
&lt;br /&gt;
For dietary preferences (vegetarian, vegan etc.) - the intention is to help event organisers organise catering by aggregating together the dietary preferences of attendees.&lt;br /&gt;
&lt;br /&gt;
=== Suggested values ===&lt;br /&gt;
* ovo-lacto vegetarian&lt;br /&gt;
* lacto vegetarian&lt;br /&gt;
* ovo vegetarian&lt;br /&gt;
* vegan&lt;br /&gt;
* pescatarian&lt;br /&gt;
* omnivore&lt;br /&gt;
* gluten-free&lt;br /&gt;
* lactose-free&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
* [https://tommorris.org/ tommorris.org]&lt;br /&gt;
&lt;br /&gt;
== p-x-pronoun-* ==&lt;br /&gt;
&lt;br /&gt;
See the [[pronouns] page for more pronoun discussion, examples, and alternative properties.&lt;br /&gt;
&lt;br /&gt;
Properties to identify a user's preferred pronouns&lt;br /&gt;
&lt;br /&gt;
; p-x-pronoun-nominative: the user's preferred nominative pronoun (e.g. he, she, they)&lt;br /&gt;
; p-x-pronoun-oblique: the user's preferred oblique pronoun (e.g. him, her, them)&lt;br /&gt;
; p-x-pronoun-possessive: the user's preferred possessive pronoun (e.g. his, hers, theirs)&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&lt;br /&gt;
* [https://waterpigs.co.uk/ waterpigs.co.uk]&lt;br /&gt;
* [https://unrelenting.technology/ unrelenting.technology]&lt;br /&gt;
* [[User:GRegorLove|gRegor]] on https://gregorlove.com/about&lt;br /&gt;
&lt;br /&gt;
== p-x-sexual-orientation ==&lt;br /&gt;
&lt;br /&gt;
For when we eventually build the open web dating service.&lt;br /&gt;
&lt;br /&gt;
;Suggested values:&lt;br /&gt;
:* straight or heterosexual&lt;br /&gt;
:* bisexual&lt;br /&gt;
:* pansexual&lt;br /&gt;
:* gay or lesbian or homosexual&lt;br /&gt;
:* asexual&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
* [https://tommorris.org/ tommorris.org]&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=pronouns-formats&amp;diff=70409</id>
		<title>pronouns-formats</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=pronouns-formats&amp;diff=70409"/>
		<updated>2021-06-22T21:57:43Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: Stubbed with vcard mailing list discussion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is for documenting existing, stable standards and formats for publishing [[pronouns|pronoun]] information.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== vCard ==&lt;br /&gt;
&lt;br /&gt;
* [https://mailarchive.ietf.org/arch/msg/vcarddav/FCjVznQHsmtPPLmv2z69OcxL8u0/ VCARDDAV mailing list discussion on adding a pronoun property]&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=pronouns-brainstorming&amp;diff=70408</id>
		<title>pronouns-brainstorming</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=pronouns-brainstorming&amp;diff=70408"/>
		<updated>2021-06-22T21:51:11Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: Stubbed, moved content from h-card-brainstorming&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is for proposing and experimenting with markup for publishing [[pronouns|pronoun]] information, as well as documenting experimental markup already in use.&lt;br /&gt;
&lt;br /&gt;
== Experimental Examples ==&lt;br /&gt;
&lt;br /&gt;
Ashton McAllan marks up her pronouns as:&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;p-x-pronoun-nominative&amp;quot;&amp;gt;she&amp;lt;/span&amp;gt; / &lt;br /&gt;
&amp;lt;span class=&amp;quot;p-x-pronoun-oblique&amp;quot;&amp;gt;her&amp;lt;/span&amp;gt; / &lt;br /&gt;
&amp;lt;span class=&amp;quot;p-x-pronoun-posessive&amp;quot;&amp;gt;hers&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
in her [[h-card]] on http://acegiak.net/&lt;br /&gt;
&lt;br /&gt;
Each pronoun is listed individually with it's form allowing parsers and programs to identify them for different uses. Other languages may include different forms of pronoun. This solution is suggested after reading [https://en.wikipedia.org/wiki/Personal_pronoun the Wikipedia Personal Pronouns article]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:GRegorLove|gRegor Morrill]] marks up his pronouns similarly (note corrected spelling of &amp;quot;possessive&amp;quot;):&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Pronouns: &amp;lt;span class=&amp;quot;p-x-pronoun-nominative&amp;quot;&amp;gt;he&amp;lt;/span&amp;gt;/&lt;br /&gt;
&amp;lt;span class=&amp;quot;p-x-pronoun-oblique&amp;quot;&amp;gt;him&amp;lt;/span&amp;gt;/&lt;br /&gt;
&amp;lt;span class=&amp;quot;p-x-pronoun-possessive&amp;quot;&amp;gt;his&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
on http://gregorlove.com/about/&lt;br /&gt;
&lt;br /&gt;
[https://www.jvt.me/ Jamie Tanna] followed this same pattern, and [https://www.jvt.me/posts/2019/04/10/pronouns-microformats/ blogged about implementing it, and why].&lt;br /&gt;
&lt;br /&gt;
[[User:Jgarber|Jason Garber]] marks up his pronouns using the pattern:&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  I use the pronouns &lt;br /&gt;
  &amp;lt;a href=&amp;quot;https://my.pronoun.is/he/him/his&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-x-pronoun-nominative&amp;quot;&amp;gt;he&amp;lt;/span&amp;gt;/&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-x-pronoun-oblique&amp;quot;&amp;gt;him&amp;lt;/span&amp;gt;/&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-x-pronoun-possessive&amp;quot;&amp;gt;his&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;/a&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://vanderven.se/martijn/ Martijn van der Ven] marks up his pronouns (more clearly on [http://vanderven.se/martijn/gender/ his gender page]) using only a dictionary URL:&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  I use male pronouns (&lt;br /&gt;
  &amp;lt;a href=&amp;quot;https://nl.wiktionary.org/wiki/hij#Persoonlijk_voornaamwoord&amp;quot; lang=&amp;quot;nl&amp;quot; class=&amp;quot;u-pronoun&amp;quot;&amp;gt;hij&amp;lt;/a&amp;gt;,&lt;br /&gt;
  &amp;lt;a href=&amp;quot;https://sv.wiktionary.org/wiki/han#Pronomen&amp;quot; lang=&amp;quot;sv&amp;quot; class=&amp;quot;u-pronoun&amp;quot;&amp;gt;han&amp;lt;/a&amp;gt;,&lt;br /&gt;
  &amp;lt;a href=&amp;quot;https://en.wiktionary.org/wiki/he#Pronoun&amp;quot; class=&amp;quot;u-pronoun&amp;quot;&amp;gt;he&amp;lt;/a&amp;gt;,&lt;br /&gt;
  &amp;lt;a href=&amp;quot;https://de.wiktionary.org/wiki/er#Personalpronomen&amp;quot; lang=&amp;quot;de&amp;quot; class=&amp;quot;u-pronoun&amp;quot;&amp;gt;er&amp;lt;/a&amp;gt;&lt;br /&gt;
  ) but also accept gender-neutral pronouns (&lt;br /&gt;
  &amp;lt;a href=&amp;quot;https://sv.wiktionary.org/wiki/hen#Pronomen&amp;quot; lang=&amp;quot;sv&amp;quot; class=&amp;quot;u-pronoun&amp;quot;&amp;gt;hen&amp;lt;/a&amp;gt;,&lt;br /&gt;
  &amp;lt;a href=&amp;quot;https://en.wiktionary.org/wiki/they#Pronoun&amp;quot; class=&amp;quot;u-pronoun&amp;quot;&amp;gt;they&amp;lt;/a&amp;gt;&lt;br /&gt;
  ). If you are writing about me and are in doubt: ask.&lt;br /&gt;
&amp;lt;/p&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* There is no way Martijn sees himself supporting 4 cases for English (subjective, objective, reflexive, and possessive), 5 cases for German (nominative, accusative, genitive, dative, and possessive), and a possible 13 cases for Finnish in the future. Doubtful anyone else will be doing that either: at least 1 implementation (by [https://unrelenting.technology/ Greg V]) of English p-x-pronoun-* exists in the wild that only specifies 2 cases.&lt;br /&gt;
* Simplifying for human visitors who can instantly get started with my pronoun of choice is seen as more important than catering to theoretical computer parsers.&lt;br /&gt;
* His thought process [http://wiki.zegnat.net/microformats/pronoun has been documented].&lt;br /&gt;
* [https://00dani.me/ Danielle McLean] is also using &amp;lt;code&amp;gt;u-pronoun&amp;lt;/code&amp;gt;, linking to the popular [https://pronoun.is/ Pronoun Island] registry page for her pronouns: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;a class=&amp;quot;u-pronoun&amp;quot; href=&amp;quot;https://pronoun.is/she/her&amp;quot;&amp;gt;she/her&amp;lt;/a&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Started looking for a way to mark-up pronouns because the p-sex/p-gender-identity combo is “[https://chat.indieweb.org/2017-10-29/1509268972735000 unbelievably terrible]”.&lt;br /&gt;
** [https://chat.indieweb.org/2017-10-29/1509269322353000 Agreed with Martijn’s arguments] for why a link is better than per-case mark-up.&lt;br /&gt;
* [[User:Sknebel|sknebel]] [https://chat.indieweb.org/microformats/2018-08-19#t1534703222243600 notes] (2018-08-19) that he would prefer to see text (that possibly leads him to Google for proper use) than just URLs in the parser output. Although the URLs are useful, [https://chat.indieweb.org/microformats/2018-08-19#t1534705418184500 a simple name:url pair] would increase the usefulness.&lt;br /&gt;
** Possibly something like &amp;lt;code&amp;gt;.[up]-pronoun.h-pronoun &amp;gt; .u-url&amp;lt;/code&amp;gt; paired with &amp;lt;code&amp;gt;.[up]-pronoun.h-pronoun &amp;gt; .p-name&amp;lt;/code&amp;gt;. [[h-cite]] would be prior art as also expressing “a reference to &amp;lt;i&amp;gt;[something]&amp;lt;/i&amp;gt; in some way with name and url”. [https://chat.indieweb.org/microformats/2018-08-19/1534705492641900]&lt;br /&gt;
&lt;br /&gt;
== Other Platforms ==&lt;br /&gt;
A [https://github.com/tootsuite/mastodon/issues/3211 GitHub issue about adding pronoun fields] to [https://indieweb.org/Mastodon Mastodon] was [https://chat.indieweb.org/microformats/2018-08-19#t1534700249077000 discussed in #microformats] on 2018-08-19. The comments in the issue bring up some points previously brought up by Martijn in regards to how useful it would be for machines. Also includes interesting survey data showing that just listing the minimal amount of cases does not show all inflections, e.g. does “ne/nim” refer to “ne/nem/neir/neirs/nemself” or “ne/nem/nayr/nayrs/nemself”?&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=h-card-brainstorming&amp;diff=70407</id>
		<title>h-card-brainstorming</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=h-card-brainstorming&amp;diff=70407"/>
		<updated>2021-06-22T21:49:04Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: /* Explorations */ moved pronoun content to pronouns-brainstorming&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
{{DISPLAYTITLE:h-card Brainstorming }}&lt;br /&gt;
This page is for brainstorming about various uses, details of, and additions to [[h-card]].&lt;br /&gt;
&lt;br /&gt;
This page contains &amp;lt;em&amp;gt;proposals&amp;lt;/em&amp;gt;.  For the current state please see [[h-card]].&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
Brainstorm proposals that illustrate how to use the existing hCard spec will likely be incorporated into existing hCard documentation such as:&lt;br /&gt;
* [[h-card-authoring]]&lt;br /&gt;
* [[h-card-examples]]&lt;br /&gt;
* ... and potentially additional documentation.&lt;br /&gt;
&lt;br /&gt;
== Explorations ==&lt;br /&gt;
Add new explorations here as === === triple level headings&lt;br /&gt;
&lt;br /&gt;
=== Pronouns ===&lt;br /&gt;
See [[pronouns-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[h-card]]&lt;br /&gt;
* [[hcard-brainstorming]] - for additional proposals to bring forth to h-card&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=pronouns-examples&amp;diff=70406</id>
		<title>pronouns-examples</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=pronouns-examples&amp;diff=70406"/>
		<updated>2021-06-22T21:47:28Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: /* Sites and Services */ bagcheck.com example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents specific examples of how [[pronouns|pronoun]] information is currently published on the web, as well as UIs which support pronoun fields.&lt;br /&gt;
&lt;br /&gt;
== Sites and Services ==&lt;br /&gt;
Examples of sites/software which allow their users to specify their pronouns, either to be displayed in a profile, or to configure pronouns used by the software to refer to the user.&lt;br /&gt;
&lt;br /&gt;
* [https://bagcheck.com/blog/01-the-gender-question Bagcheck] chose to ask which pronoun you want to use:&lt;br /&gt;
** Preferred Possessive Pronoun: ( )Her ( )His ( )Their&lt;br /&gt;
* MediaWiki.org has radio button choice on Preferences: &amp;quot;(I prefer not to say)&amp;quot;, &amp;quot;She edits wiki pages&amp;quot;, &amp;quot;He edits wiki pages&amp;quot;&lt;br /&gt;
* MetaFilter updated their user profile field from &amp;quot;Gender&amp;quot; to &amp;quot;Gender and/or pronouns&amp;quot; [http://metatalk.metafilter.com/24423/Making-room-for-pronouns-on-the-profile-page]&lt;br /&gt;
* …&lt;br /&gt;
&lt;br /&gt;
== Incidentally in Profiles ==&lt;br /&gt;
Examples of pronoun information published by people on sites which don’t explicitly implement pronoun support, e.g. as part of a description field in their profile.&lt;br /&gt;
&lt;br /&gt;
* https://twitter.com/rknLA &amp;lt;q&amp;gt;he/him&amp;lt;/q&amp;gt; in profile&lt;br /&gt;
* [https://twitter.com/abbieandahalf @abbieandahalf] has &amp;quot;they/them&amp;quot; in their Twitter bio&lt;br /&gt;
* [https://twitter.com/brianloveswords @brianloveswords] has &amp;quot;he/him&amp;quot; in his Twitter bio&lt;br /&gt;
* [https://twitter.com/lindseybieda @lindseybieda] has &amp;quot;she/her&amp;quot; in her Twitter bio&lt;br /&gt;
* [https://twitter.com/jneen_ @jneen_] has http://pronoun.is/she in her Twitter bio&lt;br /&gt;
* [http://my.pronoun.is my.pronoun.is] (or just [http://pronoun.is pronoun.is]) is a little website that offers a way to show your pronouns on a silo profile using a link, e.g. [http://my.pronoun.is/they/them my.pronoun.is/they/them]&lt;br /&gt;
* …&lt;br /&gt;
&lt;br /&gt;
== Personal Sites ==&lt;br /&gt;
See also: [https://indieweb.org/pronoun#IndieWeb_Examples pronoun#Indieweb Examples]&lt;br /&gt;
&lt;br /&gt;
Examples of people who publish pronoun information on their personal sites, sometimes with experimental microformats2 properties.&lt;br /&gt;
&lt;br /&gt;
* http://acegiak.net as of 2015-02-18 using experimental &amp;lt;code&amp;gt;p-x-pronoun-*&amp;lt;/code&amp;gt; property classes in an h-card&lt;br /&gt;
* http://gregorlove.com/about as of 2015-03-12 using experimental &amp;lt;code&amp;gt;p-x-pronoun-*&amp;lt;/code&amp;gt; property classes in an h-card&lt;br /&gt;
* http://vanderven.se/martijn/ on 2017-05-21 using experimental &amp;lt;code&amp;gt;u-pronoun&amp;lt;/code&amp;gt; property classes in an h-card to link to language-specific wiktionary.org pages for each pronoun&lt;br /&gt;
* https://00dani.me/ using experimental a &amp;lt;code&amp;gt;u-pronoun&amp;lt;/code&amp;gt; property class linking to a pronoun.is page&lt;br /&gt;
* https://aaronparecki.com/about/ plain text &amp;lt;q&amp;gt;He / Him&amp;lt;/q&amp;gt; inside an h-card&lt;br /&gt;
* https://www.jvt.me on [https://www.jvt.me/posts/2019/04/10/pronouns-microformats/ 2019-04-10] using experimental &amp;lt;code&amp;gt;[x-]pronoun-*&amp;lt;/code&amp;gt; property classes in an h-card&lt;br /&gt;
* [https://sixtwothree.org sixtwothree.org] on 2019-08-27 using experimental &amp;lt;code&amp;gt;x-pronoun-*&amp;lt;/code&amp;gt; property classes in an h-card, also linked to my.pronoun.is&lt;br /&gt;
* beesbuzz[.]biz/about on 2018-11-16, and to the representative h-card on 2019-12-06 using experimental &amp;lt;code&amp;gt;p-pronouns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;p-pronoun-*&amp;lt;/code&amp;gt; property classes inside an h-card: &amp;lt;q&amp;gt;she/her or they/them&amp;lt;/q&amp;gt;&lt;br /&gt;
* https://tantek.com h-card on 2020-10-22 using p-pronouns for the full set as a string, and p-pronoun h-pronoun for each individual pronoun linked to a URL explaining its use.&lt;br /&gt;
* https://waterpigs.co.uk using experimental &amp;lt;code&amp;gt;x-pronoun-*&amp;lt;/code&amp;gt; classes in an h-card: &amp;lt;q&amp;gt;Pronouns: he/him/his&amp;lt;/q&amp;gt;&lt;br /&gt;
* …&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=pronouns-examples&amp;diff=70405</id>
		<title>pronouns-examples</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=pronouns-examples&amp;diff=70405"/>
		<updated>2021-06-22T21:46:32Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents specific examples of how [[pronouns|pronoun]] information is currently published on the web, as well as UIs which support pronoun fields.&lt;br /&gt;
&lt;br /&gt;
== Sites and Services ==&lt;br /&gt;
Examples of sites/software which allow their users to specify their pronouns, either to be displayed in a profile, or to configure pronouns used by the software to refer to the user.&lt;br /&gt;
&lt;br /&gt;
* MediaWiki.org has radio button choice on Preferences: &amp;quot;(I prefer not to say)&amp;quot;, &amp;quot;She edits wiki pages&amp;quot;, &amp;quot;He edits wiki pages&amp;quot;&lt;br /&gt;
* MetaFilter updated their user profile field from &amp;quot;Gender&amp;quot; to &amp;quot;Gender and/or pronouns&amp;quot; [http://metatalk.metafilter.com/24423/Making-room-for-pronouns-on-the-profile-page]&lt;br /&gt;
* …&lt;br /&gt;
&lt;br /&gt;
== Incidentally in Profiles ==&lt;br /&gt;
Examples of pronoun information published by people on sites which don’t explicitly implement pronoun support, e.g. as part of a description field in their profile.&lt;br /&gt;
&lt;br /&gt;
* https://twitter.com/rknLA &amp;lt;q&amp;gt;he/him&amp;lt;/q&amp;gt; in profile&lt;br /&gt;
* [https://twitter.com/abbieandahalf @abbieandahalf] has &amp;quot;they/them&amp;quot; in their Twitter bio&lt;br /&gt;
* [https://twitter.com/brianloveswords @brianloveswords] has &amp;quot;he/him&amp;quot; in his Twitter bio&lt;br /&gt;
* [https://twitter.com/lindseybieda @lindseybieda] has &amp;quot;she/her&amp;quot; in her Twitter bio&lt;br /&gt;
* [https://twitter.com/jneen_ @jneen_] has http://pronoun.is/she in her Twitter bio&lt;br /&gt;
* [http://my.pronoun.is my.pronoun.is] (or just [http://pronoun.is pronoun.is]) is a little website that offers a way to show your pronouns on a silo profile using a link, e.g. [http://my.pronoun.is/they/them my.pronoun.is/they/them]&lt;br /&gt;
* …&lt;br /&gt;
&lt;br /&gt;
== Personal Sites ==&lt;br /&gt;
See also: [https://indieweb.org/pronoun#IndieWeb_Examples pronoun#Indieweb Examples]&lt;br /&gt;
&lt;br /&gt;
Examples of people who publish pronoun information on their personal sites, sometimes with experimental microformats2 properties.&lt;br /&gt;
&lt;br /&gt;
* http://acegiak.net as of 2015-02-18 using experimental &amp;lt;code&amp;gt;p-x-pronoun-*&amp;lt;/code&amp;gt; property classes in an h-card&lt;br /&gt;
* http://gregorlove.com/about as of 2015-03-12 using experimental &amp;lt;code&amp;gt;p-x-pronoun-*&amp;lt;/code&amp;gt; property classes in an h-card&lt;br /&gt;
* http://vanderven.se/martijn/ on 2017-05-21 using experimental &amp;lt;code&amp;gt;u-pronoun&amp;lt;/code&amp;gt; property classes in an h-card to link to language-specific wiktionary.org pages for each pronoun&lt;br /&gt;
* https://00dani.me/ using experimental a &amp;lt;code&amp;gt;u-pronoun&amp;lt;/code&amp;gt; property class linking to a pronoun.is page&lt;br /&gt;
* https://aaronparecki.com/about/ plain text &amp;lt;q&amp;gt;He / Him&amp;lt;/q&amp;gt; inside an h-card&lt;br /&gt;
* https://www.jvt.me on [https://www.jvt.me/posts/2019/04/10/pronouns-microformats/ 2019-04-10] using experimental &amp;lt;code&amp;gt;[x-]pronoun-*&amp;lt;/code&amp;gt; property classes in an h-card&lt;br /&gt;
* [https://sixtwothree.org sixtwothree.org] on 2019-08-27 using experimental &amp;lt;code&amp;gt;x-pronoun-*&amp;lt;/code&amp;gt; property classes in an h-card, also linked to my.pronoun.is&lt;br /&gt;
* beesbuzz[.]biz/about on 2018-11-16, and to the representative h-card on 2019-12-06 using experimental &amp;lt;code&amp;gt;p-pronouns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;p-pronoun-*&amp;lt;/code&amp;gt; property classes inside an h-card: &amp;lt;q&amp;gt;she/her or they/them&amp;lt;/q&amp;gt;&lt;br /&gt;
* https://tantek.com h-card on 2020-10-22 using p-pronouns for the full set as a string, and p-pronoun h-pronoun for each individual pronoun linked to a URL explaining its use.&lt;br /&gt;
* https://waterpigs.co.uk using experimental &amp;lt;code&amp;gt;x-pronoun-*&amp;lt;/code&amp;gt; classes in an h-card: &amp;lt;q&amp;gt;Pronouns: he/him/his&amp;lt;/q&amp;gt;&lt;br /&gt;
* …&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=pronouns-examples&amp;diff=70404</id>
		<title>pronouns-examples</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=pronouns-examples&amp;diff=70404"/>
		<updated>2021-06-22T21:46:11Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: /* Sites and Services */ de-IWified&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents specific examples of how [[pronouns|pronoun]] information is currently published on the web, as well as UIs which support pronoun fields.&lt;br /&gt;
&lt;br /&gt;
== Sites and Services ==&lt;br /&gt;
Examples of sites/software which allow their users to specify their pronouns, either to be displayed in a profile, or to configure pronouns used by the software to refer to the user.&lt;br /&gt;
&lt;br /&gt;
* MediaWiki.org has radio button choice on Preferences: &amp;quot;(I prefer not to say)&amp;quot;, &amp;quot;She edits wiki pages&amp;quot;, &amp;quot;He edits wiki pages&amp;quot;&lt;br /&gt;
* MetaFilter updated their user profile field from &amp;quot;Gender&amp;quot; to &amp;quot;Gender and/or pronouns&amp;quot; [http://metatalk.metafilter.com/24423/Making-room-for-pronouns-on-the-profile-page |published=2017-05-15]&lt;br /&gt;
* …&lt;br /&gt;
&lt;br /&gt;
== Incidentally in Profiles ==&lt;br /&gt;
Examples of pronoun information published by people on sites which don’t explicitly implement pronoun support, e.g. as part of a description field in their profile.&lt;br /&gt;
&lt;br /&gt;
* https://twitter.com/rknLA &amp;lt;q&amp;gt;he/him&amp;lt;/q&amp;gt; in profile&lt;br /&gt;
* [https://twitter.com/abbieandahalf @abbieandahalf] has &amp;quot;they/them&amp;quot; in their Twitter bio&lt;br /&gt;
* [https://twitter.com/brianloveswords @brianloveswords] has &amp;quot;he/him&amp;quot; in his Twitter bio&lt;br /&gt;
* [https://twitter.com/lindseybieda @lindseybieda] has &amp;quot;she/her&amp;quot; in her Twitter bio&lt;br /&gt;
* [https://twitter.com/jneen_ @jneen_] has http://pronoun.is/she in her Twitter bio&lt;br /&gt;
* [http://my.pronoun.is my.pronoun.is] (or just [http://pronoun.is pronoun.is]) is a little website that offers a way to show your pronouns on a silo profile using a link, e.g. [http://my.pronoun.is/they/them my.pronoun.is/they/them]&lt;br /&gt;
* …&lt;br /&gt;
&lt;br /&gt;
== Personal Sites ==&lt;br /&gt;
See also: [https://indieweb.org/pronoun#IndieWeb_Examples pronoun#Indieweb Examples]&lt;br /&gt;
&lt;br /&gt;
Examples of people who publish pronoun information on their personal sites, sometimes with experimental microformats2 properties.&lt;br /&gt;
&lt;br /&gt;
* http://acegiak.net as of 2015-02-18 using experimental &amp;lt;code&amp;gt;p-x-pronoun-*&amp;lt;/code&amp;gt; property classes in an h-card&lt;br /&gt;
* http://gregorlove.com/about as of 2015-03-12 using experimental &amp;lt;code&amp;gt;p-x-pronoun-*&amp;lt;/code&amp;gt; property classes in an h-card&lt;br /&gt;
* http://vanderven.se/martijn/ on 2017-05-21 using experimental &amp;lt;code&amp;gt;u-pronoun&amp;lt;/code&amp;gt; property classes in an h-card to link to language-specific wiktionary.org pages for each pronoun&lt;br /&gt;
* https://00dani.me/ using experimental a &amp;lt;code&amp;gt;u-pronoun&amp;lt;/code&amp;gt; property class linking to a pronoun.is page&lt;br /&gt;
* https://aaronparecki.com/about/ plain text &amp;lt;q&amp;gt;He / Him&amp;lt;/q&amp;gt; inside an h-card&lt;br /&gt;
* https://www.jvt.me on [https://www.jvt.me/posts/2019/04/10/pronouns-microformats/ 2019-04-10] using experimental &amp;lt;code&amp;gt;[x-]pronoun-*&amp;lt;/code&amp;gt; property classes in an h-card&lt;br /&gt;
* [https://sixtwothree.org sixtwothree.org] on 2019-08-27 using experimental &amp;lt;code&amp;gt;x-pronoun-*&amp;lt;/code&amp;gt; property classes in an h-card, also linked to my.pronoun.is&lt;br /&gt;
* beesbuzz[.]biz/about on 2018-11-16, and to the representative h-card on 2019-12-06 using experimental &amp;lt;code&amp;gt;p-pronouns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;p-pronoun-*&amp;lt;/code&amp;gt; property classes inside an h-card: &amp;lt;q&amp;gt;she/her or they/them&amp;lt;/q&amp;gt;&lt;br /&gt;
* https://tantek.com h-card on 2020-10-22 using p-pronouns for the full set as a string, and p-pronoun h-pronoun for each individual pronoun linked to a URL explaining its use.&lt;br /&gt;
* https://waterpigs.co.uk using experimental &amp;lt;code&amp;gt;x-pronoun-*&amp;lt;/code&amp;gt; classes in an h-card: &amp;lt;q&amp;gt;Pronouns: he/him/his&amp;lt;/q&amp;gt;&lt;br /&gt;
* …&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=pronouns-examples&amp;diff=70403</id>
		<title>pronouns-examples</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=pronouns-examples&amp;diff=70403"/>
		<updated>2021-06-22T21:45:33Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: /* Sites and Services */ added metafilter example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents specific examples of how [[pronouns|pronoun]] information is currently published on the web, as well as UIs which support pronoun fields.&lt;br /&gt;
&lt;br /&gt;
== Sites and Services ==&lt;br /&gt;
Examples of sites/software which allow their users to specify their pronouns, either to be displayed in a profile, or to configure pronouns used by the software to refer to the user.&lt;br /&gt;
&lt;br /&gt;
* MediaWiki.org has radio button choice on Preferences: &amp;quot;(I prefer not to say)&amp;quot;, &amp;quot;She edits wiki pages&amp;quot;, &amp;quot;He edits wiki pages&amp;quot;&lt;br /&gt;
* [[MetaFilter]] updated their user profile field from &amp;quot;Gender&amp;quot; to &amp;quot;Gender and/or pronouns&amp;quot; &lt;br /&gt;
** {{citation |title=&lt;br /&gt;
Making room for pronouns on the profile page |url=http://metatalk.metafilter.com/24423/Making-room-for-pronouns-on-the-profile-page |published=2017-05-15 |author=&amp;lt;a href=&amp;quot;http://www.metafilter.com/user/7418&amp;quot; class=&amp;quot;h-card&amp;quot;&amp;gt;Josh Millard&amp;lt;/a&amp;gt; |archiveurl=http://web.archive.org/web/20170515204711/http://metatalk.metafilter.com/24423/Making-room-for-pronouns-on-the-profile-page }}&lt;br /&gt;
* …&lt;br /&gt;
&lt;br /&gt;
== Incidentally in Profiles ==&lt;br /&gt;
Examples of pronoun information published by people on sites which don’t explicitly implement pronoun support, e.g. as part of a description field in their profile.&lt;br /&gt;
&lt;br /&gt;
* https://twitter.com/rknLA &amp;lt;q&amp;gt;he/him&amp;lt;/q&amp;gt; in profile&lt;br /&gt;
* [https://twitter.com/abbieandahalf @abbieandahalf] has &amp;quot;they/them&amp;quot; in their Twitter bio&lt;br /&gt;
* [https://twitter.com/brianloveswords @brianloveswords] has &amp;quot;he/him&amp;quot; in his Twitter bio&lt;br /&gt;
* [https://twitter.com/lindseybieda @lindseybieda] has &amp;quot;she/her&amp;quot; in her Twitter bio&lt;br /&gt;
* [https://twitter.com/jneen_ @jneen_] has http://pronoun.is/she in her Twitter bio&lt;br /&gt;
* [http://my.pronoun.is my.pronoun.is] (or just [http://pronoun.is pronoun.is]) is a little website that offers a way to show your pronouns on a silo profile using a link, e.g. [http://my.pronoun.is/they/them my.pronoun.is/they/them]&lt;br /&gt;
* …&lt;br /&gt;
&lt;br /&gt;
== Personal Sites ==&lt;br /&gt;
See also: [https://indieweb.org/pronoun#IndieWeb_Examples pronoun#Indieweb Examples]&lt;br /&gt;
&lt;br /&gt;
Examples of people who publish pronoun information on their personal sites, sometimes with experimental microformats2 properties.&lt;br /&gt;
&lt;br /&gt;
* http://acegiak.net as of 2015-02-18 using experimental &amp;lt;code&amp;gt;p-x-pronoun-*&amp;lt;/code&amp;gt; property classes in an h-card&lt;br /&gt;
* http://gregorlove.com/about as of 2015-03-12 using experimental &amp;lt;code&amp;gt;p-x-pronoun-*&amp;lt;/code&amp;gt; property classes in an h-card&lt;br /&gt;
* http://vanderven.se/martijn/ on 2017-05-21 using experimental &amp;lt;code&amp;gt;u-pronoun&amp;lt;/code&amp;gt; property classes in an h-card to link to language-specific wiktionary.org pages for each pronoun&lt;br /&gt;
* https://00dani.me/ using experimental a &amp;lt;code&amp;gt;u-pronoun&amp;lt;/code&amp;gt; property class linking to a pronoun.is page&lt;br /&gt;
* https://aaronparecki.com/about/ plain text &amp;lt;q&amp;gt;He / Him&amp;lt;/q&amp;gt; inside an h-card&lt;br /&gt;
* https://www.jvt.me on [https://www.jvt.me/posts/2019/04/10/pronouns-microformats/ 2019-04-10] using experimental &amp;lt;code&amp;gt;[x-]pronoun-*&amp;lt;/code&amp;gt; property classes in an h-card&lt;br /&gt;
* [https://sixtwothree.org sixtwothree.org] on 2019-08-27 using experimental &amp;lt;code&amp;gt;x-pronoun-*&amp;lt;/code&amp;gt; property classes in an h-card, also linked to my.pronoun.is&lt;br /&gt;
* beesbuzz[.]biz/about on 2018-11-16, and to the representative h-card on 2019-12-06 using experimental &amp;lt;code&amp;gt;p-pronouns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;p-pronoun-*&amp;lt;/code&amp;gt; property classes inside an h-card: &amp;lt;q&amp;gt;she/her or they/them&amp;lt;/q&amp;gt;&lt;br /&gt;
* https://tantek.com h-card on 2020-10-22 using p-pronouns for the full set as a string, and p-pronoun h-pronoun for each individual pronoun linked to a URL explaining its use.&lt;br /&gt;
* https://waterpigs.co.uk using experimental &amp;lt;code&amp;gt;x-pronoun-*&amp;lt;/code&amp;gt; classes in an h-card: &amp;lt;q&amp;gt;Pronouns: he/him/his&amp;lt;/q&amp;gt;&lt;br /&gt;
* …&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=pronouns-examples&amp;diff=70402</id>
		<title>pronouns-examples</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=pronouns-examples&amp;diff=70402"/>
		<updated>2021-06-22T21:45:17Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: /* Incidentally in Profiles */ added some more examples from IW&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents specific examples of how [[pronouns|pronoun]] information is currently published on the web, as well as UIs which support pronoun fields.&lt;br /&gt;
&lt;br /&gt;
== Sites and Services ==&lt;br /&gt;
Examples of sites/software which allow their users to specify their pronouns, either to be displayed in a profile, or to configure pronouns used by the software to refer to the user.&lt;br /&gt;
&lt;br /&gt;
* MediaWiki.org has radio button choice on Preferences: &amp;quot;(I prefer not to say)&amp;quot;, &amp;quot;She edits wiki pages&amp;quot;, &amp;quot;He edits wiki pages&amp;quot;&lt;br /&gt;
* …&lt;br /&gt;
&lt;br /&gt;
== Incidentally in Profiles ==&lt;br /&gt;
Examples of pronoun information published by people on sites which don’t explicitly implement pronoun support, e.g. as part of a description field in their profile.&lt;br /&gt;
&lt;br /&gt;
* https://twitter.com/rknLA &amp;lt;q&amp;gt;he/him&amp;lt;/q&amp;gt; in profile&lt;br /&gt;
* [https://twitter.com/abbieandahalf @abbieandahalf] has &amp;quot;they/them&amp;quot; in their Twitter bio&lt;br /&gt;
* [https://twitter.com/brianloveswords @brianloveswords] has &amp;quot;he/him&amp;quot; in his Twitter bio&lt;br /&gt;
* [https://twitter.com/lindseybieda @lindseybieda] has &amp;quot;she/her&amp;quot; in her Twitter bio&lt;br /&gt;
* [https://twitter.com/jneen_ @jneen_] has http://pronoun.is/she in her Twitter bio&lt;br /&gt;
* [http://my.pronoun.is my.pronoun.is] (or just [http://pronoun.is pronoun.is]) is a little website that offers a way to show your pronouns on a silo profile using a link, e.g. [http://my.pronoun.is/they/them my.pronoun.is/they/them]&lt;br /&gt;
* …&lt;br /&gt;
&lt;br /&gt;
== Personal Sites ==&lt;br /&gt;
See also: [https://indieweb.org/pronoun#IndieWeb_Examples pronoun#Indieweb Examples]&lt;br /&gt;
&lt;br /&gt;
Examples of people who publish pronoun information on their personal sites, sometimes with experimental microformats2 properties.&lt;br /&gt;
&lt;br /&gt;
* http://acegiak.net as of 2015-02-18 using experimental &amp;lt;code&amp;gt;p-x-pronoun-*&amp;lt;/code&amp;gt; property classes in an h-card&lt;br /&gt;
* http://gregorlove.com/about as of 2015-03-12 using experimental &amp;lt;code&amp;gt;p-x-pronoun-*&amp;lt;/code&amp;gt; property classes in an h-card&lt;br /&gt;
* http://vanderven.se/martijn/ on 2017-05-21 using experimental &amp;lt;code&amp;gt;u-pronoun&amp;lt;/code&amp;gt; property classes in an h-card to link to language-specific wiktionary.org pages for each pronoun&lt;br /&gt;
* https://00dani.me/ using experimental a &amp;lt;code&amp;gt;u-pronoun&amp;lt;/code&amp;gt; property class linking to a pronoun.is page&lt;br /&gt;
* https://aaronparecki.com/about/ plain text &amp;lt;q&amp;gt;He / Him&amp;lt;/q&amp;gt; inside an h-card&lt;br /&gt;
* https://www.jvt.me on [https://www.jvt.me/posts/2019/04/10/pronouns-microformats/ 2019-04-10] using experimental &amp;lt;code&amp;gt;[x-]pronoun-*&amp;lt;/code&amp;gt; property classes in an h-card&lt;br /&gt;
* [https://sixtwothree.org sixtwothree.org] on 2019-08-27 using experimental &amp;lt;code&amp;gt;x-pronoun-*&amp;lt;/code&amp;gt; property classes in an h-card, also linked to my.pronoun.is&lt;br /&gt;
* beesbuzz[.]biz/about on 2018-11-16, and to the representative h-card on 2019-12-06 using experimental &amp;lt;code&amp;gt;p-pronouns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;p-pronoun-*&amp;lt;/code&amp;gt; property classes inside an h-card: &amp;lt;q&amp;gt;she/her or they/them&amp;lt;/q&amp;gt;&lt;br /&gt;
* https://tantek.com h-card on 2020-10-22 using p-pronouns for the full set as a string, and p-pronoun h-pronoun for each individual pronoun linked to a URL explaining its use.&lt;br /&gt;
* https://waterpigs.co.uk using experimental &amp;lt;code&amp;gt;x-pronoun-*&amp;lt;/code&amp;gt; classes in an h-card: &amp;lt;q&amp;gt;Pronouns: he/him/his&amp;lt;/q&amp;gt;&lt;br /&gt;
* …&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=pronouns-examples&amp;diff=70401</id>
		<title>pronouns-examples</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=pronouns-examples&amp;diff=70401"/>
		<updated>2021-06-22T21:43:57Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents specific examples of how [[pronouns|pronoun]] information is currently published on the web, as well as UIs which support pronoun fields.&lt;br /&gt;
&lt;br /&gt;
== Sites and Services ==&lt;br /&gt;
Examples of sites/software which allow their users to specify their pronouns, either to be displayed in a profile, or to configure pronouns used by the software to refer to the user.&lt;br /&gt;
&lt;br /&gt;
* MediaWiki.org has radio button choice on Preferences: &amp;quot;(I prefer not to say)&amp;quot;, &amp;quot;She edits wiki pages&amp;quot;, &amp;quot;He edits wiki pages&amp;quot;&lt;br /&gt;
* …&lt;br /&gt;
&lt;br /&gt;
== Incidentally in Profiles ==&lt;br /&gt;
Examples of pronoun information published by people on sites which don’t explicitly implement pronoun support, e.g. as part of a description field in their profile.&lt;br /&gt;
&lt;br /&gt;
* https://twitter.com/rknLA &amp;lt;q&amp;gt;he/him&amp;lt;/q&amp;gt; in profile&lt;br /&gt;
* …&lt;br /&gt;
&lt;br /&gt;
== Personal Sites ==&lt;br /&gt;
See also: [https://indieweb.org/pronoun#IndieWeb_Examples pronoun#Indieweb Examples]&lt;br /&gt;
&lt;br /&gt;
Examples of people who publish pronoun information on their personal sites, sometimes with experimental microformats2 properties.&lt;br /&gt;
&lt;br /&gt;
* http://acegiak.net as of 2015-02-18 using experimental &amp;lt;code&amp;gt;p-x-pronoun-*&amp;lt;/code&amp;gt; property classes in an h-card&lt;br /&gt;
* http://gregorlove.com/about as of 2015-03-12 using experimental &amp;lt;code&amp;gt;p-x-pronoun-*&amp;lt;/code&amp;gt; property classes in an h-card&lt;br /&gt;
* http://vanderven.se/martijn/ on 2017-05-21 using experimental &amp;lt;code&amp;gt;u-pronoun&amp;lt;/code&amp;gt; property classes in an h-card to link to language-specific wiktionary.org pages for each pronoun&lt;br /&gt;
* https://00dani.me/ using experimental a &amp;lt;code&amp;gt;u-pronoun&amp;lt;/code&amp;gt; property class linking to a pronoun.is page&lt;br /&gt;
* https://aaronparecki.com/about/ plain text &amp;lt;q&amp;gt;He / Him&amp;lt;/q&amp;gt; inside an h-card&lt;br /&gt;
* https://www.jvt.me on [https://www.jvt.me/posts/2019/04/10/pronouns-microformats/ 2019-04-10] using experimental &amp;lt;code&amp;gt;[x-]pronoun-*&amp;lt;/code&amp;gt; property classes in an h-card&lt;br /&gt;
* [https://sixtwothree.org sixtwothree.org] on 2019-08-27 using experimental &amp;lt;code&amp;gt;x-pronoun-*&amp;lt;/code&amp;gt; property classes in an h-card, also linked to my.pronoun.is&lt;br /&gt;
* beesbuzz[.]biz/about on 2018-11-16, and to the representative h-card on 2019-12-06 using experimental &amp;lt;code&amp;gt;p-pronouns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;p-pronoun-*&amp;lt;/code&amp;gt; property classes inside an h-card: &amp;lt;q&amp;gt;she/her or they/them&amp;lt;/q&amp;gt;&lt;br /&gt;
* https://tantek.com h-card on 2020-10-22 using p-pronouns for the full set as a string, and p-pronoun h-pronoun for each individual pronoun linked to a URL explaining its use.&lt;br /&gt;
* https://waterpigs.co.uk using experimental &amp;lt;code&amp;gt;x-pronoun-*&amp;lt;/code&amp;gt; classes in an h-card: &amp;lt;q&amp;gt;Pronouns: he/him/his&amp;lt;/q&amp;gt;&lt;br /&gt;
* …&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=pronouns-examples&amp;diff=70400</id>
		<title>pronouns-examples</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=pronouns-examples&amp;diff=70400"/>
		<updated>2021-06-22T21:43:23Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: Created page with &amp;quot;This page documents specific examples of how pronoun information is currently published on the web, as well as UIs which support pronoun fields.  == Sites and Services == Exam...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents specific examples of how pronoun information is currently published on the web, as well as UIs which support pronoun fields.&lt;br /&gt;
&lt;br /&gt;
== Sites and Services ==&lt;br /&gt;
Examples of sites/software which allow their users to specify their pronouns, either to be displayed in a profile, or to configure pronouns used by the software to refer to the user.&lt;br /&gt;
&lt;br /&gt;
* MediaWiki.org has radio button choice on Preferences: &amp;quot;(I prefer not to say)&amp;quot;, &amp;quot;She edits wiki pages&amp;quot;, &amp;quot;He edits wiki pages&amp;quot;&lt;br /&gt;
* …&lt;br /&gt;
&lt;br /&gt;
== Incidentally in Profiles ==&lt;br /&gt;
Examples of pronoun information published by people on sites which don’t explicitly implement pronoun support, e.g. as part of a description field in their profile.&lt;br /&gt;
&lt;br /&gt;
* https://twitter.com/rknLA &amp;lt;q&amp;gt;he/him&amp;lt;/q&amp;gt; in profile&lt;br /&gt;
* …&lt;br /&gt;
&lt;br /&gt;
== Personal Sites ==&lt;br /&gt;
See also: [https://indieweb.org/pronoun#IndieWeb_Examples pronoun#Indieweb Examples]&lt;br /&gt;
&lt;br /&gt;
Examples of people who publish pronoun information on their personal sites, sometimes with experimental microformats2 properties.&lt;br /&gt;
&lt;br /&gt;
* http://acegiak.net as of 2015-02-18 using experimental &amp;lt;code&amp;gt;p-x-pronoun-*&amp;lt;/code&amp;gt; property classes in an h-card&lt;br /&gt;
* http://gregorlove.com/about as of 2015-03-12 using experimental &amp;lt;code&amp;gt;p-x-pronoun-*&amp;lt;/code&amp;gt; property classes in an h-card&lt;br /&gt;
* http://vanderven.se/martijn/ on 2017-05-21 using experimental &amp;lt;code&amp;gt;u-pronoun&amp;lt;/code&amp;gt; property classes in an h-card to link to language-specific wiktionary.org pages for each pronoun&lt;br /&gt;
* https://00dani.me/ using experimental a &amp;lt;code&amp;gt;u-pronoun&amp;lt;/code&amp;gt; property class linking to a pronoun.is page&lt;br /&gt;
* https://aaronparecki.com/about/ plain text &amp;lt;q&amp;gt;He / Him&amp;lt;/q&amp;gt; inside an h-card&lt;br /&gt;
* https://www.jvt.me on [https://www.jvt.me/posts/2019/04/10/pronouns-microformats/ 2019-04-10] using experimental &amp;lt;code&amp;gt;[x-]pronoun-*&amp;lt;/code&amp;gt; property classes in an h-card&lt;br /&gt;
* [https://sixtwothree.org sixtwothree.org] on 2019-08-27 using experimental &amp;lt;code&amp;gt;x-pronoun-*&amp;lt;/code&amp;gt; property classes in an h-card, also linked to my.pronoun.is&lt;br /&gt;
* beesbuzz[.]biz/about on 2018-11-16, and to the representative h-card on 2019-12-06 using experimental &amp;lt;code&amp;gt;p-pronouns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;p-pronoun-*&amp;lt;/code&amp;gt; property classes inside an h-card: &amp;lt;q&amp;gt;she/her or they/them&amp;lt;/q&amp;gt;&lt;br /&gt;
* https://tantek.com h-card on 2020-10-22 using p-pronouns for the full set as a string, and p-pronoun h-pronoun for each individual pronoun linked to a URL explaining its use.&lt;br /&gt;
* https://waterpigs.co.uk using experimental &amp;lt;code&amp;gt;x-pronoun-*&amp;lt;/code&amp;gt; classes in an h-card: &amp;lt;q&amp;gt;Pronouns: he/him/his&amp;lt;/q&amp;gt;&lt;br /&gt;
* …&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=pronouns&amp;diff=70399</id>
		<title>pronouns</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=pronouns&amp;diff=70399"/>
		<updated>2021-06-22T21:12:15Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: Stubbed page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pronouns are words used to stand-in for people’s names. They are often published on the web as part of people’s profiles, and could be candidates for inclusion in a microformats vocabulary e.g. h-card.&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
&lt;br /&gt;
* [[pronouns-examples]] documents real-world examples of publishing pronouns&lt;br /&gt;
* [[pronouns-formats]] documents existing formats used to publish pronouns&lt;br /&gt;
* [[pronouns-brainstorming]] for experimenting with and proposing possible pronoun formats&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[gender]]&lt;br /&gt;
* [[h-card]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Pronoun Pronoun on wikipedia]&lt;br /&gt;
* [https://indieweb.org/pronoun pronoun on the indieweb wiki]&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=h-card&amp;diff=70398</id>
		<title>h-card</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=h-card&amp;diff=70398"/>
		<updated>2021-06-22T18:52:15Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: /* Implementations */ added some of the more notable indieweb software which publishes/consumes h-card&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;dfn style=&amp;quot;font-style:normal;font-weight:bold&amp;quot;&amp;gt;h-card&amp;lt;/dfn&amp;gt; is a simple, open format for publishing people and organisations on the web. h-card is often used on home pages and individual blog posts. h-card is one of several open [[microformats|microformat]] draft standards suitable for embedding data in HTML.&lt;br /&gt;
&lt;br /&gt;
h-card is the [[microformats2]] update to [[hCard]].&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;span id=&amp;quot;status&amp;quot;&amp;gt;Status&amp;lt;/span&amp;gt;&lt;br /&gt;
:This is a '''Living Specification''' yet mature enough to encourage additional implementations and [https://github.com/microformats/h-card/issues feedback].&lt;br /&gt;
;&amp;lt;span id=&amp;quot;participate&amp;quot;&amp;gt;Participate&amp;lt;/span&amp;gt;&lt;br /&gt;
:[https://github.com/microformats/h-card/issues Open Issues]&lt;br /&gt;
:[[IRC]]&lt;br /&gt;
&amp;lt;div class=&amp;quot;p-author h-card vcard&amp;quot;&amp;gt;&lt;br /&gt;
;&amp;lt;span class=&amp;quot;p-role role&amp;quot;&amp;gt;Editor&amp;lt;/span&amp;gt;&lt;br /&gt;
:&amp;lt;span class=&amp;quot;p-name fn&amp;quot;&amp;gt;[[User:Tantek|Tantek Çelik]]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
;License&lt;br /&gt;
: {{cc0-owfa-license}}&lt;br /&gt;
&amp;lt;span style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Here are a couple of minimal examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;h-card&amp;quot; href=&amp;quot;https://tantek.com/&amp;quot;&amp;gt;Tantek Çelik&amp;lt;/a&amp;gt;, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;a class=&amp;quot;p-name p-org u-url&amp;quot; href=&amp;quot;https://microformats.org/&amp;quot;&amp;gt;microformats.org&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parsed JSON: &lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;items&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;Tantek Çelik&amp;quot;],&lt;br /&gt;
        &amp;quot;url&amp;quot;: [&amp;quot;https://tantek.com/&amp;quot;]&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;microformats.org&amp;quot;],&lt;br /&gt;
        &amp;quot;org&amp;quot;: [&amp;quot;microformats.org&amp;quot;],&lt;br /&gt;
        &amp;quot;url&amp;quot;: [&amp;quot;https://microformats.org/&amp;quot;]&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Note a single element was sufficient for the simple person example with implied name and URL properties, while for an organization, which requires a name and org, it needed explicit markup for the h-card and all properties, though still with only two elements.&lt;br /&gt;
&lt;br /&gt;
Nested h-card example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;a class=&amp;quot;p-name u-url&amp;quot;&lt;br /&gt;
     href=&amp;quot;https://blog.lizardwrangler.com/&amp;quot; &lt;br /&gt;
    &amp;gt;Mitchell Baker&amp;lt;/a&amp;gt; &lt;br /&gt;
  (&amp;lt;a class=&amp;quot;p-org h-card&amp;quot; &lt;br /&gt;
      href=&amp;quot;https://mozilla.org/&amp;quot;&lt;br /&gt;
     &amp;gt;Mozilla Foundation&amp;lt;/a&amp;gt;)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parsed JSON:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;items&amp;quot;: [{ &lt;br /&gt;
    &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;name&amp;quot;: [&amp;quot;Mitchell Baker&amp;quot;],&lt;br /&gt;
      &amp;quot;url&amp;quot;: [&amp;quot;https://blog.lizardwrangler.com/&amp;quot;],&lt;br /&gt;
      &amp;quot;org&amp;quot;: [{&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;Mozilla Foundation&amp;quot;,&lt;br /&gt;
        &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;name&amp;quot;: [&amp;quot;Mozilla Foundation&amp;quot;],&lt;br /&gt;
          &amp;quot;url&amp;quot;: [&amp;quot;https://mozilla.org/&amp;quot;]&lt;br /&gt;
        }&lt;br /&gt;
      }]&lt;br /&gt;
    }&lt;br /&gt;
  }]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: the nested h-card has implied 'name' and 'url' properties, just like any other root-class-name-only h-card on an &amp;lt;code&amp;gt;&amp;amp;lt;a href&amp;amp;gt;&amp;lt;/code&amp;gt; would.&lt;br /&gt;
&lt;br /&gt;
=== Get started ===&lt;br /&gt;
The class '''&amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt;''' is a ''root class name'' that indicates the presence of an h-card.&lt;br /&gt;
&lt;br /&gt;
For minimal examples where at most &amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;u-url&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;u-photo&amp;lt;/code&amp;gt; are required (such as the first given above), only the root class name is needed — see [[microformats-2-implied-properties|implied properties]].&lt;br /&gt;
&lt;br /&gt;
When more than those three minimal properties are needed, the root class name must be placed on an element which encloses all the desired properties, and then the properties themselves marked up using the classnames given below.&lt;br /&gt;
&lt;br /&gt;
See [[microformats2-parsing]] to learn more about property classnames.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
h-card properties, inside an element with class '''h-card'''. All properties are optional and may be plural.&lt;br /&gt;
* See [[microformats2-parsing]] to learn more about property classnames.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:-.4em; float:right;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;Example h-card with common properties:&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style:none&amp;quot;&amp;gt;&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''h-card'''&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style:none; margin-top:-.02em&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-name'''&amp;quot;&amp;amp;gt;Sally Ride&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-honorific-prefix'''&amp;quot;&amp;amp;gt;Dr.&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-given-name'''&amp;quot;&amp;amp;gt;Sally&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;abbr class=&amp;quot;'''p-additional-name'''&amp;quot;&amp;amp;gt;K.&amp;amp;lt;/abbr&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-family-name'''&amp;quot;&amp;amp;gt;Ride&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-honorific-suffix'''&amp;quot;&amp;amp;gt;Ph.D.&amp;amp;lt;/span&amp;amp;gt;,&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-nickname'''&amp;quot;&amp;amp;gt;sallykride&amp;amp;lt;/span&amp;amp;gt; (IRC)&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-org'''&amp;quot;&amp;amp;gt;Sally Ride Science&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;img class=&amp;quot;'''u-photo'''&amp;quot; src=&amp;quot;&amp;lt;nowiki&amp;gt;http://example.com/sk.jpg&amp;lt;/nowiki&amp;gt;&amp;quot;/&amp;amp;gt; &amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;a class=&amp;quot;'''u-url'''&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://sally.example.com&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;amp;gt;w&amp;amp;lt;/a&amp;amp;gt;,&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;a class=&amp;quot;'''u-email'''&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;mailto:sally@example.com&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;amp;gt;e&amp;amp;lt;/a&amp;amp;gt; &amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-tel'''&amp;quot;&amp;amp;gt;+1.818.555.1212&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-street-address'''&amp;quot;&amp;amp;gt;123 Main st.&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-locality'''&amp;quot;&amp;amp;gt;Los Angeles&amp;amp;lt;/span&amp;amp;gt;, &amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;abbr class=&amp;quot;'''p-region'''&amp;quot; title=&amp;quot;California&amp;quot;&amp;amp;gt;CA&amp;amp;lt;/abbr&amp;amp;gt;, &amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-postal-code'''&amp;quot;&amp;amp;gt;91316&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-country-name'''&amp;quot;&amp;amp;gt;U.S.A&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;time class=&amp;quot;'''dt-bday'''&amp;quot;&amp;amp;gt;1951-05-26&amp;amp;lt;/time&amp;amp;gt; birthday&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-category'''&amp;quot;&amp;amp;gt;physicist&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-note'''&amp;quot;&amp;amp;gt;First American woman in space.&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Core properties:&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;''' - The full/formatted name of the person or organization&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-honorific-prefix&amp;lt;/code&amp;gt;''' - e.g. Mrs., Mr. or Dr.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-given-name&amp;lt;/code&amp;gt;''' - given (often first) name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-additional-name&amp;lt;/code&amp;gt;''' - other (e.g. middle) name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-family-name&amp;lt;/code&amp;gt;''' - family (often last) name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-sort-string&amp;lt;/code&amp;gt;''' - string to sort by&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-honorific-suffix&amp;lt;/code&amp;gt;''' - e.g. Ph.D, Esq.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-nickname&amp;lt;/code&amp;gt;''' - nickname/alias/handle&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-email&amp;lt;/code&amp;gt;''' - email address&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-logo&amp;lt;/code&amp;gt;''' - a logo representing the person or organization (e.g. a face icon)&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-photo&amp;lt;/code&amp;gt;''' - a photo of the person or organization&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-url&amp;lt;/code&amp;gt;''' - home page or other URL representing the person or organization&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-uid&amp;lt;/code&amp;gt;''' - universally unique identifier, preferably canonical URL&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-category&amp;lt;/code&amp;gt;''' - category/tag&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-adr&amp;lt;/code&amp;gt;''' - postal address, optionally embed an [[h-adr]] {{main|h-adr}}&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-post-office-box&amp;lt;/code&amp;gt;''' - post office box description if any&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-extended-address&amp;lt;/code&amp;gt;''' - apartment/suite/room name/number if any&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-street-address&amp;lt;/code&amp;gt;''' - street number + name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-locality&amp;lt;/code&amp;gt;''' - city/town/village&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-region&amp;lt;/code&amp;gt;''' - state/county/province&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-postal-code&amp;lt;/code&amp;gt;''' - postal code, e.g. US ZIP&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-country-name&amp;lt;/code&amp;gt;''' - country name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-label&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-geo&amp;lt;/code&amp;gt;''' or '''&amp;lt;code&amp;gt;u-geo&amp;lt;/code&amp;gt;''', optionally embed an [[h-geo]] {{main|h-geo}}&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-latitude&amp;lt;/code&amp;gt;''' - decimal latitude&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-longitude&amp;lt;/code&amp;gt;''' - decimal longitude&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-altitude&amp;lt;/code&amp;gt;''' - decimal altitude&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-tel&amp;lt;/code&amp;gt;''' - telephone number&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-note&amp;lt;/code&amp;gt;''' - additional notes&lt;br /&gt;
* '''&amp;lt;code&amp;gt;dt-bday&amp;lt;/code&amp;gt;''' - birth date&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-key&amp;lt;/code&amp;gt;''' - cryptographic public key e.g. SSH or GPG&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-org&amp;lt;/code&amp;gt;''' - affiliated organization, optionally embed an [[h-card]]&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-job-title&amp;lt;/code&amp;gt;''' - job title, previously 'title' in [[hCard]], disambiguated.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-role&amp;lt;/code&amp;gt;''' - description of role &lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-impp&amp;lt;/code&amp;gt;''' per RFC4770, new in vCard4 (RFC 6350)&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-sex&amp;lt;/code&amp;gt;''' - biological sex, new in vCard4 (RFC 6350)&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-gender-identity&amp;lt;/code&amp;gt;''' - gender identity, new in vCard4 (RFC 6350)&lt;br /&gt;
* '''&amp;lt;code&amp;gt;dt-anniversary&amp;lt;/code&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Experimental properties currently in use in the wild but not (yet) part of the official h-card spec.&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-sound&amp;lt;/code&amp;gt;''' - sound file containing the proper pronunciation of the name property, per vCard (RFC 6350).&lt;br /&gt;
** Used by [https://vanderven.se/martijn/ Martijn van der Ven] with a clip of his given name.&lt;br /&gt;
** Needs a GitHub issue to track.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
'''h-card''' is a microformats.org draft specification. Public discussion on h-card takes place on the [[irc|#microformats channel on irc.freenode.net]] ([https://chat.indieweb.org/microformats view recent discussions]), and specific issues [https://github.com/microformats/h-card/issues may be filed on GitHub].&lt;br /&gt;
&lt;br /&gt;
h-card is ready to use and implemented in the wild. For backwards compatibility you should also mark up top-level h-cards as classic [[hCard]]s.&lt;br /&gt;
&lt;br /&gt;
== Property Details ==&lt;br /&gt;
(stub, to be expanded)&lt;br /&gt;
&lt;br /&gt;
=== p-adr ===&lt;br /&gt;
&amp;lt;code&amp;gt;p-adr&amp;lt;/code&amp;gt; can optionally embed an [[h-adr]] to cluster associated structured address properties. E.g. adding &amp;quot;p-adr&amp;quot; to the example earlier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;p-name&amp;quot;&amp;gt;Joe Bloggs&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;p-adr h-adr&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-street-address&amp;quot;&amp;gt;17 Austerstræti&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-locality&amp;quot;&amp;gt;Reykjavík&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-country-name&amp;quot;&amp;gt;Iceland&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Q: Why would you use &amp;quot;p-adr&amp;quot; to cluster associated structured address properties?&lt;br /&gt;
&lt;br /&gt;
A: Because if you have more than one structured address, clustering which properties go with which address keeps them deterministically together, instead of depending on array indices or other heuristics.&lt;br /&gt;
&lt;br /&gt;
=== p-tel ===&lt;br /&gt;
Note: use of 'value' within 'p-tel' should be automatically handled by the support of the [[value-class-pattern]]. And for now, the former [[hCard]] 'type' subproperty of 'tel' is dropped/ignored. If there is demonstrable documented need for additional tel types (e.g. fax), we can introduce new flat properties as needed (e.g. p-tel-fax).&lt;br /&gt;
&lt;br /&gt;
=== dt-bday ===&lt;br /&gt;
Using truncated representations of dates for birth date is often good practice as noted in [https://tools.ietf.org/html/rfc6350#section-4.3.1 the vcard spec] eg&lt;br /&gt;
* &amp;lt;code&amp;gt;1985-04&amp;lt;/code&amp;gt; for April 1985&lt;br /&gt;
* &amp;lt;code&amp;gt;1985&amp;lt;/code&amp;gt; for the year 1985&lt;br /&gt;
* &amp;lt;code&amp;gt;--04-12&amp;lt;/code&amp;gt; for April 12th with no specified year&lt;br /&gt;
&lt;br /&gt;
=== Reserved properties ===&lt;br /&gt;
The following properties were supported by the legacy hCard format, but were not carried over to h-card due to lack of real-world usage, or other problems. They are not part of h-card and should not be published, consumed, or proposed.&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-organization-name&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-organization-unit&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-tz&amp;lt;/code&amp;gt;''' — timezone offset&lt;br /&gt;
** &amp;lt;q&amp;gt;it's going to be a hard one to &amp;quot;get right&amp;quot;, as the way timezones work in vcard/ical is very weird, and timezones as a whole are an iffy thing to denote (quite the disconnect between complexity, automated processing ability, actually representing what a user would want to show/display or already does on their homepage, and actually representing something useful to parse and do something with)&amp;lt;/q&amp;gt;&lt;br /&gt;
** &amp;lt;q&amp;gt;there's certainly no ecosystem of publishers &amp;amp; consumers supporting p-tz in any meaningful interoperable way&amp;lt;/q&amp;gt; — [https://chat.indieweb.org/microformats/2021-06-22/1624385751126500 tantek in #microformats]&lt;br /&gt;
* '''&amp;lt;code&amp;gt;dt-rev&amp;lt;/code&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
== Examples in the wild ==&lt;br /&gt;
See also: [https://indieweb.org/h-card#IndieWeb_Examples h-card Examples on indieweb.org]&lt;br /&gt;
&lt;br /&gt;
Real world in the wild examples of sites and services that publish or consume h-card:&lt;br /&gt;
&lt;br /&gt;
* ... add uses of h-card you see in the wild here.&lt;br /&gt;
* [http://www.securityjobslondon.co.uk Security Jobs London] uses h-card with legacy [[hCard]] fallback markup (to satisfy [https://search.google.com/structured-data/testing-tool Google's Structured Data Testing Tool]) in the footer of each page&lt;br /&gt;
* Brett Comnes marks up his posts with h-card ([http://bret.io/2013/06/29/getting-started-with-bower/ example])&lt;br /&gt;
* Ben Werdmuller marks up his homepage and posts with h-card [http://werd.io/view/51d5097fbed7ded0633a5956 example])&lt;br /&gt;
* [https://joelpurra.com/ Joel Purra] uses a hidden h-card with legacy [[hCard]] fallback markup (to satisfy [https://search.google.com/structured-data/testing-tool Google's Structured Data Testing Tool]) on the front page&lt;br /&gt;
* [http://eschnou.com/ Laurent Eschenauer] marks his homepage profile up using h-card&lt;br /&gt;
* [http://tommorris.org/ Tom Morris] marks himself up with h-card as well as venues he’s checked into ([http://tommorris.org/posts/8408 example])&lt;br /&gt;
* [https://www.w3.org/conf/ W3Conf 2013] uses h-card for all the event speakers and notable attendees. The h-cards make particularly good use of implied name, url, and photo properties.&lt;br /&gt;
* [http://wordpress.org/extend/themes/sempress SemPress] is a WordPress theme that supports h-card, h-feed/h-entry and h-as-*&lt;br /&gt;
* [http://the-pastry-box-project.net/ The Pastry Box Project] use h-card markup on their homepage and individual thoughts pages&lt;br /&gt;
* Tom Morris uses h-card and [[XFN]] to markup [http://tommorris.org/pages/blogroll his blogroll].&lt;br /&gt;
* Aaron Parecki uses h-card to markup both authorship and references to people in his notes permalinks, e.g. [https://aaronparecki.com/2012/230/reply/1 2012/230/reply/1].&lt;br /&gt;
* [https://tantek.com/ Tantek Çelik] uses h-card  on his home page as well as within [[h-entry]]s on permalink pages to indicate authorship.&lt;br /&gt;
* [http://waterpigs.co.uk/ Barnaby Walters] uses h-card on his home page, as well as within h-entries for notes and articles, both to indicate authorship and also when mentioning people within the body of the notes.&lt;br /&gt;
* [https://tantek.com/presentations/2012/06/microformats microformats.org at 7 years] presentation with and h-card markup for people and organizations.&lt;br /&gt;
* [https://tantek.com/presentations/2012/06/pdf2012-indieweb.html Rise of the Indie Web hCards] (from Personal Democracy Forum 2012 #pdf12 #pdf2012) has [[microformats2]] h-card markup&lt;br /&gt;
* WebMaker by Mozilla has [[microformats2]] h-card on event search (e.g. [https://webmaker.org/en-US/events/near/?lat=45.5234515&amp;amp;lng=-122.6762071 search near Portland Oregon]) and event pages (e.g. [https://webmaker.org/en-US/events/192f56eb9/ IndieWebCamp 2012]).[https://twitter.com/microformats/status/212207925643587585]&lt;br /&gt;
* WebFWD by Mozilla has [[microformats2]] h-card markup on [https://webfwd.org/about/experts/ experts] and [https://webfwd.org/about/team/ team] pages&lt;br /&gt;
* [https://indiewebcamp.com IndieWebCamp] has [[microformats2]] h-event markup with embedded h-cards for the organizers and the location.&lt;br /&gt;
* [https://wiki.mozilla.org/Events Mozilla Events] page has [[microformats2]] h-event markup with attendees marked up with h-card.&lt;br /&gt;
* [https://tristanthomas.me Tristan Thomas] uses h-card on his home page&lt;br /&gt;
* [http://cold32.com/about-the-author-and-contact.htm Cold32.com] uses h-card (and h-geo) on its about-the-author-and-contact page&lt;br /&gt;
* [https://workfrom.co/ Workfrom.co] renders h-cards for venues (e.g. [https://workfrom.co/palio-dessert-and-espresso-house])&lt;br /&gt;
* [http://www.pcwdld.com/ PCWDLD.com] renders h-cards for download pages(e.g. [http://www.pcwdld.com/solarwinds-network-topology-mapper-review Download page example])&lt;br /&gt;
&lt;br /&gt;
=== offline ===&lt;br /&gt;
* spreadly marks up share permalink pages with minimal h-cards inside h-entry&lt;br /&gt;
* App.net rolled out support for h-card and h-entry on all profile pages and permalink pages as of 2013-08-06 ([https://alpha.app.net/voidfiles example])&lt;br /&gt;
* Sandeep Shetty marks his homepage and posts up with h-card and h-entry ([https://sandeep.io/101 example])&lt;br /&gt;
&lt;br /&gt;
== Validating ==&lt;br /&gt;
* '''[https://indiewebify.me/validate-h-card/ indiewebify.me h-card validator]''' parses [[h-card]] markup and makes suggestions for things to add, with code samples&lt;br /&gt;
{{h-spec-section-validating}}&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
Software implementations that publish or consume h-card, including themes, plugins, or extensions:&lt;br /&gt;
&lt;br /&gt;
(This section is a stub that needs expansion! In practice, nearly every CMS on every [https://indieweb.org/ indie web] site supports publishing h-card by default, and most sites which support receiving webmentions parse h-card for authorship data.)&lt;br /&gt;
&lt;br /&gt;
When adding an implementation, please provide and link to its home page and open source repo if any.&lt;br /&gt;
* [https://gnu.io/social/ GNUsocial] [https://git.gnu.io/gnu/gnu-social/ source code]&lt;br /&gt;
* [https://hubzilla.org/hubzilla/ Hubzilla] [https://github.org/redmatrix/hubzilla source code]&lt;br /&gt;
* [http://friendica.com/ Friendica] [https://github.org/friendica/friendica source code]&lt;br /&gt;
* [https://github.com/dissolve/inkblot InkBlot]&lt;br /&gt;
* [https://aperture.p3k.io/ Aperture] consumes h-card to show authorship information of feed posts ([https://github.com/aaronpk/Aperture/ source code])&lt;br /&gt;
* [https://xray.p3k.app/ XRay] consumes h-card and flattens it into a more minimal format ([https://github.com/aaronpk/XRay/ source code])&lt;br /&gt;
* [https://withknown.com/ Known] publishes and consumes h-card to show authorship of posts and responses&lt;br /&gt;
* [https://brid.gy/ Bridgy] publishes microformats-2 versions of siloed content (including h-card for authorship) for consumption by mf2-consumers&lt;br /&gt;
* [https://webmention.io/ webmention.io] consumes h-card for authorship data of incoming webmentions which it accepts on behalf of other sites&lt;br /&gt;
* ...&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== Backward Compatibility ==&lt;br /&gt;
=== Publisher Compatibility ===&lt;br /&gt;
For backward compatibility, you may wish to use classic [[hCard]] classnames in addition to the more future-proof h-card properties, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;h-card vcard&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-name fn&amp;quot;&amp;gt;Joe Bloggs&amp;lt;/span&amp;gt;,&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-org org&amp;quot;&amp;gt;Awesome Nonprofit&amp;lt;/span&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The class '''&amp;lt;code&amp;gt;vcard&amp;lt;/code&amp;gt;''' is a ''backward compatible root class name'' that indicates the presence of an [[hCard]].&lt;br /&gt;
&lt;br /&gt;
'''fn''', '''org''', and all the other backward compatibility hCard property class names are listed below.&lt;br /&gt;
&lt;br /&gt;
=== Parser Compatibility ===&lt;br /&gt;
Microformats parsers {{should}} detect classic properties only if a classic root class name is found and parse them as microformats2 properties. &lt;br /&gt;
&lt;br /&gt;
If an &amp;quot;h-card&amp;quot; is found, don't look for a &amp;quot;vcard&amp;quot; on the same element.&lt;br /&gt;
&lt;br /&gt;
Compat. root class name: &amp;lt;code id=&amp;quot;vcard&amp;quot;&amp;gt;vcard&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Properties: (parsed as '''p-''' plain text unless otherwise specified)&lt;br /&gt;
* &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* &amp;lt;code&amp;gt;honorific-prefix&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;given-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;additional-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;family-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;honorific-suffix&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;nickname&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;email&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;logo&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;photo&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;url&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;uid&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;category&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;p-adr h-adr&amp;lt;/code&amp;gt;''' including compat root class &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;extended-address&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;street-address&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;locality&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;region&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;postal-code&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;country-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;geo&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;p-geo h-geo&amp;lt;/code&amp;gt;''' including compat root class &amp;lt;code&amp;gt;geo&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;latitude&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;longitude&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;tel&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;note&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bday&amp;lt;/code&amp;gt; - parse as '''dt-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;org&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;organization-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;organization-unit&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; - parse as '''p-job-title'''&lt;br /&gt;
* &amp;lt;code&amp;gt;role&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reserved: (backward compat properties that parsers {{may}} implement, if they do, they {{must}} implement in this way:&lt;br /&gt;
* &amp;lt;code&amp;gt;tz&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;rev&amp;lt;/code&amp;gt; - parse as '''dt-'''&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
This work is based on the existing [[hCard]] and [[vcard]] specifications.&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
(stub, expand)&lt;br /&gt;
&lt;br /&gt;
== Additions ==&lt;br /&gt;
We've tried very hard with h-card to stay compatible with the vCard4 vocabulary, and thus additions should be proposed on the vCard4 mailing list.&lt;br /&gt;
&lt;br /&gt;
However, you may still use this wiki to capture additions for h-card here:&lt;br /&gt;
* [[h-card-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[microformats2]]&lt;br /&gt;
* [[microformats2-parsing]]&lt;br /&gt;
* [[h-adr]]&lt;br /&gt;
* [[h-geo]]&lt;br /&gt;
* [[hCard]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Draft Specifications]]&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=h-card&amp;diff=70397</id>
		<title>h-card</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=h-card&amp;diff=70397"/>
		<updated>2021-06-22T18:42:55Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: /* Examples in the wild */ linked to indieweb wiki examples&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;dfn style=&amp;quot;font-style:normal;font-weight:bold&amp;quot;&amp;gt;h-card&amp;lt;/dfn&amp;gt; is a simple, open format for publishing people and organisations on the web. h-card is often used on home pages and individual blog posts. h-card is one of several open [[microformats|microformat]] draft standards suitable for embedding data in HTML.&lt;br /&gt;
&lt;br /&gt;
h-card is the [[microformats2]] update to [[hCard]].&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;span id=&amp;quot;status&amp;quot;&amp;gt;Status&amp;lt;/span&amp;gt;&lt;br /&gt;
:This is a '''Living Specification''' yet mature enough to encourage additional implementations and [https://github.com/microformats/h-card/issues feedback].&lt;br /&gt;
;&amp;lt;span id=&amp;quot;participate&amp;quot;&amp;gt;Participate&amp;lt;/span&amp;gt;&lt;br /&gt;
:[https://github.com/microformats/h-card/issues Open Issues]&lt;br /&gt;
:[[IRC]]&lt;br /&gt;
&amp;lt;div class=&amp;quot;p-author h-card vcard&amp;quot;&amp;gt;&lt;br /&gt;
;&amp;lt;span class=&amp;quot;p-role role&amp;quot;&amp;gt;Editor&amp;lt;/span&amp;gt;&lt;br /&gt;
:&amp;lt;span class=&amp;quot;p-name fn&amp;quot;&amp;gt;[[User:Tantek|Tantek Çelik]]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
;License&lt;br /&gt;
: {{cc0-owfa-license}}&lt;br /&gt;
&amp;lt;span style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Here are a couple of minimal examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;h-card&amp;quot; href=&amp;quot;https://tantek.com/&amp;quot;&amp;gt;Tantek Çelik&amp;lt;/a&amp;gt;, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;a class=&amp;quot;p-name p-org u-url&amp;quot; href=&amp;quot;https://microformats.org/&amp;quot;&amp;gt;microformats.org&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parsed JSON: &lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;items&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;Tantek Çelik&amp;quot;],&lt;br /&gt;
        &amp;quot;url&amp;quot;: [&amp;quot;https://tantek.com/&amp;quot;]&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;microformats.org&amp;quot;],&lt;br /&gt;
        &amp;quot;org&amp;quot;: [&amp;quot;microformats.org&amp;quot;],&lt;br /&gt;
        &amp;quot;url&amp;quot;: [&amp;quot;https://microformats.org/&amp;quot;]&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Note a single element was sufficient for the simple person example with implied name and URL properties, while for an organization, which requires a name and org, it needed explicit markup for the h-card and all properties, though still with only two elements.&lt;br /&gt;
&lt;br /&gt;
Nested h-card example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;a class=&amp;quot;p-name u-url&amp;quot;&lt;br /&gt;
     href=&amp;quot;https://blog.lizardwrangler.com/&amp;quot; &lt;br /&gt;
    &amp;gt;Mitchell Baker&amp;lt;/a&amp;gt; &lt;br /&gt;
  (&amp;lt;a class=&amp;quot;p-org h-card&amp;quot; &lt;br /&gt;
      href=&amp;quot;https://mozilla.org/&amp;quot;&lt;br /&gt;
     &amp;gt;Mozilla Foundation&amp;lt;/a&amp;gt;)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parsed JSON:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;items&amp;quot;: [{ &lt;br /&gt;
    &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;name&amp;quot;: [&amp;quot;Mitchell Baker&amp;quot;],&lt;br /&gt;
      &amp;quot;url&amp;quot;: [&amp;quot;https://blog.lizardwrangler.com/&amp;quot;],&lt;br /&gt;
      &amp;quot;org&amp;quot;: [{&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;Mozilla Foundation&amp;quot;,&lt;br /&gt;
        &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;name&amp;quot;: [&amp;quot;Mozilla Foundation&amp;quot;],&lt;br /&gt;
          &amp;quot;url&amp;quot;: [&amp;quot;https://mozilla.org/&amp;quot;]&lt;br /&gt;
        }&lt;br /&gt;
      }]&lt;br /&gt;
    }&lt;br /&gt;
  }]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: the nested h-card has implied 'name' and 'url' properties, just like any other root-class-name-only h-card on an &amp;lt;code&amp;gt;&amp;amp;lt;a href&amp;amp;gt;&amp;lt;/code&amp;gt; would.&lt;br /&gt;
&lt;br /&gt;
=== Get started ===&lt;br /&gt;
The class '''&amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt;''' is a ''root class name'' that indicates the presence of an h-card.&lt;br /&gt;
&lt;br /&gt;
For minimal examples where at most &amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;u-url&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;u-photo&amp;lt;/code&amp;gt; are required (such as the first given above), only the root class name is needed — see [[microformats-2-implied-properties|implied properties]].&lt;br /&gt;
&lt;br /&gt;
When more than those three minimal properties are needed, the root class name must be placed on an element which encloses all the desired properties, and then the properties themselves marked up using the classnames given below.&lt;br /&gt;
&lt;br /&gt;
See [[microformats2-parsing]] to learn more about property classnames.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
h-card properties, inside an element with class '''h-card'''. All properties are optional and may be plural.&lt;br /&gt;
* See [[microformats2-parsing]] to learn more about property classnames.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:-.4em; float:right;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;Example h-card with common properties:&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style:none&amp;quot;&amp;gt;&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''h-card'''&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style:none; margin-top:-.02em&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-name'''&amp;quot;&amp;amp;gt;Sally Ride&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-honorific-prefix'''&amp;quot;&amp;amp;gt;Dr.&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-given-name'''&amp;quot;&amp;amp;gt;Sally&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;abbr class=&amp;quot;'''p-additional-name'''&amp;quot;&amp;amp;gt;K.&amp;amp;lt;/abbr&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-family-name'''&amp;quot;&amp;amp;gt;Ride&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-honorific-suffix'''&amp;quot;&amp;amp;gt;Ph.D.&amp;amp;lt;/span&amp;amp;gt;,&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-nickname'''&amp;quot;&amp;amp;gt;sallykride&amp;amp;lt;/span&amp;amp;gt; (IRC)&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-org'''&amp;quot;&amp;amp;gt;Sally Ride Science&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;img class=&amp;quot;'''u-photo'''&amp;quot; src=&amp;quot;&amp;lt;nowiki&amp;gt;http://example.com/sk.jpg&amp;lt;/nowiki&amp;gt;&amp;quot;/&amp;amp;gt; &amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;a class=&amp;quot;'''u-url'''&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://sally.example.com&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;amp;gt;w&amp;amp;lt;/a&amp;amp;gt;,&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;a class=&amp;quot;'''u-email'''&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;mailto:sally@example.com&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;amp;gt;e&amp;amp;lt;/a&amp;amp;gt; &amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-tel'''&amp;quot;&amp;amp;gt;+1.818.555.1212&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-street-address'''&amp;quot;&amp;amp;gt;123 Main st.&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-locality'''&amp;quot;&amp;amp;gt;Los Angeles&amp;amp;lt;/span&amp;amp;gt;, &amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;abbr class=&amp;quot;'''p-region'''&amp;quot; title=&amp;quot;California&amp;quot;&amp;amp;gt;CA&amp;amp;lt;/abbr&amp;amp;gt;, &amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-postal-code'''&amp;quot;&amp;amp;gt;91316&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-country-name'''&amp;quot;&amp;amp;gt;U.S.A&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;time class=&amp;quot;'''dt-bday'''&amp;quot;&amp;amp;gt;1951-05-26&amp;amp;lt;/time&amp;amp;gt; birthday&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-category'''&amp;quot;&amp;amp;gt;physicist&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-note'''&amp;quot;&amp;amp;gt;First American woman in space.&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Core properties:&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;''' - The full/formatted name of the person or organization&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-honorific-prefix&amp;lt;/code&amp;gt;''' - e.g. Mrs., Mr. or Dr.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-given-name&amp;lt;/code&amp;gt;''' - given (often first) name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-additional-name&amp;lt;/code&amp;gt;''' - other (e.g. middle) name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-family-name&amp;lt;/code&amp;gt;''' - family (often last) name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-sort-string&amp;lt;/code&amp;gt;''' - string to sort by&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-honorific-suffix&amp;lt;/code&amp;gt;''' - e.g. Ph.D, Esq.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-nickname&amp;lt;/code&amp;gt;''' - nickname/alias/handle&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-email&amp;lt;/code&amp;gt;''' - email address&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-logo&amp;lt;/code&amp;gt;''' - a logo representing the person or organization (e.g. a face icon)&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-photo&amp;lt;/code&amp;gt;''' - a photo of the person or organization&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-url&amp;lt;/code&amp;gt;''' - home page or other URL representing the person or organization&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-uid&amp;lt;/code&amp;gt;''' - universally unique identifier, preferably canonical URL&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-category&amp;lt;/code&amp;gt;''' - category/tag&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-adr&amp;lt;/code&amp;gt;''' - postal address, optionally embed an [[h-adr]] {{main|h-adr}}&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-post-office-box&amp;lt;/code&amp;gt;''' - post office box description if any&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-extended-address&amp;lt;/code&amp;gt;''' - apartment/suite/room name/number if any&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-street-address&amp;lt;/code&amp;gt;''' - street number + name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-locality&amp;lt;/code&amp;gt;''' - city/town/village&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-region&amp;lt;/code&amp;gt;''' - state/county/province&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-postal-code&amp;lt;/code&amp;gt;''' - postal code, e.g. US ZIP&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-country-name&amp;lt;/code&amp;gt;''' - country name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-label&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-geo&amp;lt;/code&amp;gt;''' or '''&amp;lt;code&amp;gt;u-geo&amp;lt;/code&amp;gt;''', optionally embed an [[h-geo]] {{main|h-geo}}&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-latitude&amp;lt;/code&amp;gt;''' - decimal latitude&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-longitude&amp;lt;/code&amp;gt;''' - decimal longitude&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-altitude&amp;lt;/code&amp;gt;''' - decimal altitude&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-tel&amp;lt;/code&amp;gt;''' - telephone number&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-note&amp;lt;/code&amp;gt;''' - additional notes&lt;br /&gt;
* '''&amp;lt;code&amp;gt;dt-bday&amp;lt;/code&amp;gt;''' - birth date&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-key&amp;lt;/code&amp;gt;''' - cryptographic public key e.g. SSH or GPG&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-org&amp;lt;/code&amp;gt;''' - affiliated organization, optionally embed an [[h-card]]&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-job-title&amp;lt;/code&amp;gt;''' - job title, previously 'title' in [[hCard]], disambiguated.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-role&amp;lt;/code&amp;gt;''' - description of role &lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-impp&amp;lt;/code&amp;gt;''' per RFC4770, new in vCard4 (RFC 6350)&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-sex&amp;lt;/code&amp;gt;''' - biological sex, new in vCard4 (RFC 6350)&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-gender-identity&amp;lt;/code&amp;gt;''' - gender identity, new in vCard4 (RFC 6350)&lt;br /&gt;
* '''&amp;lt;code&amp;gt;dt-anniversary&amp;lt;/code&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Experimental properties currently in use in the wild but not (yet) part of the official h-card spec.&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-sound&amp;lt;/code&amp;gt;''' - sound file containing the proper pronunciation of the name property, per vCard (RFC 6350).&lt;br /&gt;
** Used by [https://vanderven.se/martijn/ Martijn van der Ven] with a clip of his given name.&lt;br /&gt;
** Needs a GitHub issue to track.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
'''h-card''' is a microformats.org draft specification. Public discussion on h-card takes place on the [[irc|#microformats channel on irc.freenode.net]] ([https://chat.indieweb.org/microformats view recent discussions]), and specific issues [https://github.com/microformats/h-card/issues may be filed on GitHub].&lt;br /&gt;
&lt;br /&gt;
h-card is ready to use and implemented in the wild. For backwards compatibility you should also mark up top-level h-cards as classic [[hCard]]s.&lt;br /&gt;
&lt;br /&gt;
== Property Details ==&lt;br /&gt;
(stub, to be expanded)&lt;br /&gt;
&lt;br /&gt;
=== p-adr ===&lt;br /&gt;
&amp;lt;code&amp;gt;p-adr&amp;lt;/code&amp;gt; can optionally embed an [[h-adr]] to cluster associated structured address properties. E.g. adding &amp;quot;p-adr&amp;quot; to the example earlier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;p-name&amp;quot;&amp;gt;Joe Bloggs&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;p-adr h-adr&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-street-address&amp;quot;&amp;gt;17 Austerstræti&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-locality&amp;quot;&amp;gt;Reykjavík&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-country-name&amp;quot;&amp;gt;Iceland&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Q: Why would you use &amp;quot;p-adr&amp;quot; to cluster associated structured address properties?&lt;br /&gt;
&lt;br /&gt;
A: Because if you have more than one structured address, clustering which properties go with which address keeps them deterministically together, instead of depending on array indices or other heuristics.&lt;br /&gt;
&lt;br /&gt;
=== p-tel ===&lt;br /&gt;
Note: use of 'value' within 'p-tel' should be automatically handled by the support of the [[value-class-pattern]]. And for now, the former [[hCard]] 'type' subproperty of 'tel' is dropped/ignored. If there is demonstrable documented need for additional tel types (e.g. fax), we can introduce new flat properties as needed (e.g. p-tel-fax).&lt;br /&gt;
&lt;br /&gt;
=== dt-bday ===&lt;br /&gt;
Using truncated representations of dates for birth date is often good practice as noted in [https://tools.ietf.org/html/rfc6350#section-4.3.1 the vcard spec] eg&lt;br /&gt;
* &amp;lt;code&amp;gt;1985-04&amp;lt;/code&amp;gt; for April 1985&lt;br /&gt;
* &amp;lt;code&amp;gt;1985&amp;lt;/code&amp;gt; for the year 1985&lt;br /&gt;
* &amp;lt;code&amp;gt;--04-12&amp;lt;/code&amp;gt; for April 12th with no specified year&lt;br /&gt;
&lt;br /&gt;
=== Reserved properties ===&lt;br /&gt;
The following properties were supported by the legacy hCard format, but were not carried over to h-card due to lack of real-world usage, or other problems. They are not part of h-card and should not be published, consumed, or proposed.&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-organization-name&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-organization-unit&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-tz&amp;lt;/code&amp;gt;''' — timezone offset&lt;br /&gt;
** &amp;lt;q&amp;gt;it's going to be a hard one to &amp;quot;get right&amp;quot;, as the way timezones work in vcard/ical is very weird, and timezones as a whole are an iffy thing to denote (quite the disconnect between complexity, automated processing ability, actually representing what a user would want to show/display or already does on their homepage, and actually representing something useful to parse and do something with)&amp;lt;/q&amp;gt;&lt;br /&gt;
** &amp;lt;q&amp;gt;there's certainly no ecosystem of publishers &amp;amp; consumers supporting p-tz in any meaningful interoperable way&amp;lt;/q&amp;gt; — [https://chat.indieweb.org/microformats/2021-06-22/1624385751126500 tantek in #microformats]&lt;br /&gt;
* '''&amp;lt;code&amp;gt;dt-rev&amp;lt;/code&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
== Examples in the wild ==&lt;br /&gt;
See also: [https://indieweb.org/h-card#IndieWeb_Examples h-card Examples on indieweb.org]&lt;br /&gt;
&lt;br /&gt;
Real world in the wild examples of sites and services that publish or consume h-card:&lt;br /&gt;
&lt;br /&gt;
* ... add uses of h-card you see in the wild here.&lt;br /&gt;
* [http://www.securityjobslondon.co.uk Security Jobs London] uses h-card with legacy [[hCard]] fallback markup (to satisfy [https://search.google.com/structured-data/testing-tool Google's Structured Data Testing Tool]) in the footer of each page&lt;br /&gt;
* Brett Comnes marks up his posts with h-card ([http://bret.io/2013/06/29/getting-started-with-bower/ example])&lt;br /&gt;
* Ben Werdmuller marks up his homepage and posts with h-card [http://werd.io/view/51d5097fbed7ded0633a5956 example])&lt;br /&gt;
* [https://joelpurra.com/ Joel Purra] uses a hidden h-card with legacy [[hCard]] fallback markup (to satisfy [https://search.google.com/structured-data/testing-tool Google's Structured Data Testing Tool]) on the front page&lt;br /&gt;
* [http://eschnou.com/ Laurent Eschenauer] marks his homepage profile up using h-card&lt;br /&gt;
* [http://tommorris.org/ Tom Morris] marks himself up with h-card as well as venues he’s checked into ([http://tommorris.org/posts/8408 example])&lt;br /&gt;
* [https://www.w3.org/conf/ W3Conf 2013] uses h-card for all the event speakers and notable attendees. The h-cards make particularly good use of implied name, url, and photo properties.&lt;br /&gt;
* [http://wordpress.org/extend/themes/sempress SemPress] is a WordPress theme that supports h-card, h-feed/h-entry and h-as-*&lt;br /&gt;
* [http://the-pastry-box-project.net/ The Pastry Box Project] use h-card markup on their homepage and individual thoughts pages&lt;br /&gt;
* Tom Morris uses h-card and [[XFN]] to markup [http://tommorris.org/pages/blogroll his blogroll].&lt;br /&gt;
* Aaron Parecki uses h-card to markup both authorship and references to people in his notes permalinks, e.g. [https://aaronparecki.com/2012/230/reply/1 2012/230/reply/1].&lt;br /&gt;
* [https://tantek.com/ Tantek Çelik] uses h-card  on his home page as well as within [[h-entry]]s on permalink pages to indicate authorship.&lt;br /&gt;
* [http://waterpigs.co.uk/ Barnaby Walters] uses h-card on his home page, as well as within h-entries for notes and articles, both to indicate authorship and also when mentioning people within the body of the notes.&lt;br /&gt;
* [https://tantek.com/presentations/2012/06/microformats microformats.org at 7 years] presentation with and h-card markup for people and organizations.&lt;br /&gt;
* [https://tantek.com/presentations/2012/06/pdf2012-indieweb.html Rise of the Indie Web hCards] (from Personal Democracy Forum 2012 #pdf12 #pdf2012) has [[microformats2]] h-card markup&lt;br /&gt;
* WebMaker by Mozilla has [[microformats2]] h-card on event search (e.g. [https://webmaker.org/en-US/events/near/?lat=45.5234515&amp;amp;lng=-122.6762071 search near Portland Oregon]) and event pages (e.g. [https://webmaker.org/en-US/events/192f56eb9/ IndieWebCamp 2012]).[https://twitter.com/microformats/status/212207925643587585]&lt;br /&gt;
* WebFWD by Mozilla has [[microformats2]] h-card markup on [https://webfwd.org/about/experts/ experts] and [https://webfwd.org/about/team/ team] pages&lt;br /&gt;
* [https://indiewebcamp.com IndieWebCamp] has [[microformats2]] h-event markup with embedded h-cards for the organizers and the location.&lt;br /&gt;
* [https://wiki.mozilla.org/Events Mozilla Events] page has [[microformats2]] h-event markup with attendees marked up with h-card.&lt;br /&gt;
* [https://tristanthomas.me Tristan Thomas] uses h-card on his home page&lt;br /&gt;
* [http://cold32.com/about-the-author-and-contact.htm Cold32.com] uses h-card (and h-geo) on its about-the-author-and-contact page&lt;br /&gt;
* [https://workfrom.co/ Workfrom.co] renders h-cards for venues (e.g. [https://workfrom.co/palio-dessert-and-espresso-house])&lt;br /&gt;
* [http://www.pcwdld.com/ PCWDLD.com] renders h-cards for download pages(e.g. [http://www.pcwdld.com/solarwinds-network-topology-mapper-review Download page example])&lt;br /&gt;
&lt;br /&gt;
=== offline ===&lt;br /&gt;
* spreadly marks up share permalink pages with minimal h-cards inside h-entry&lt;br /&gt;
* App.net rolled out support for h-card and h-entry on all profile pages and permalink pages as of 2013-08-06 ([https://alpha.app.net/voidfiles example])&lt;br /&gt;
* Sandeep Shetty marks his homepage and posts up with h-card and h-entry ([https://sandeep.io/101 example])&lt;br /&gt;
&lt;br /&gt;
== Validating ==&lt;br /&gt;
* '''[https://indiewebify.me/validate-h-card/ indiewebify.me h-card validator]''' parses [[h-card]] markup and makes suggestions for things to add, with code samples&lt;br /&gt;
{{h-spec-section-validating}}&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
Software implementations that publish or consume h-card, including themes, plugins, or extensions:&lt;br /&gt;
&lt;br /&gt;
(This section is a stub that needs expansion! In practice, nearly every CMS on every [https://indieweb.org/ indie web] site supports publishing h-card by default.)&lt;br /&gt;
&lt;br /&gt;
When adding an implementation, please provide and link to its home page and open source repo if any.&lt;br /&gt;
* [https://gnu.io/social/ GNUsocial] [https://git.gnu.io/gnu/gnu-social/ source code]&lt;br /&gt;
* [https://hubzilla.org/hubzilla/ Hubzilla] [https://github.org/redmatrix/hubzilla source code]&lt;br /&gt;
* [http://friendica.com/ Friendica] [https://github.org/friendica/friendica source code]&lt;br /&gt;
* [https://github.com/dissolve/inkblot InkBlot]&lt;br /&gt;
* ...&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== Backward Compatibility ==&lt;br /&gt;
=== Publisher Compatibility ===&lt;br /&gt;
For backward compatibility, you may wish to use classic [[hCard]] classnames in addition to the more future-proof h-card properties, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;h-card vcard&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-name fn&amp;quot;&amp;gt;Joe Bloggs&amp;lt;/span&amp;gt;,&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-org org&amp;quot;&amp;gt;Awesome Nonprofit&amp;lt;/span&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The class '''&amp;lt;code&amp;gt;vcard&amp;lt;/code&amp;gt;''' is a ''backward compatible root class name'' that indicates the presence of an [[hCard]].&lt;br /&gt;
&lt;br /&gt;
'''fn''', '''org''', and all the other backward compatibility hCard property class names are listed below.&lt;br /&gt;
&lt;br /&gt;
=== Parser Compatibility ===&lt;br /&gt;
Microformats parsers {{should}} detect classic properties only if a classic root class name is found and parse them as microformats2 properties. &lt;br /&gt;
&lt;br /&gt;
If an &amp;quot;h-card&amp;quot; is found, don't look for a &amp;quot;vcard&amp;quot; on the same element.&lt;br /&gt;
&lt;br /&gt;
Compat. root class name: &amp;lt;code id=&amp;quot;vcard&amp;quot;&amp;gt;vcard&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Properties: (parsed as '''p-''' plain text unless otherwise specified)&lt;br /&gt;
* &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* &amp;lt;code&amp;gt;honorific-prefix&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;given-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;additional-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;family-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;honorific-suffix&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;nickname&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;email&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;logo&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;photo&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;url&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;uid&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;category&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;p-adr h-adr&amp;lt;/code&amp;gt;''' including compat root class &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;extended-address&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;street-address&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;locality&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;region&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;postal-code&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;country-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;geo&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;p-geo h-geo&amp;lt;/code&amp;gt;''' including compat root class &amp;lt;code&amp;gt;geo&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;latitude&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;longitude&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;tel&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;note&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bday&amp;lt;/code&amp;gt; - parse as '''dt-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;org&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;organization-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;organization-unit&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; - parse as '''p-job-title'''&lt;br /&gt;
* &amp;lt;code&amp;gt;role&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reserved: (backward compat properties that parsers {{may}} implement, if they do, they {{must}} implement in this way:&lt;br /&gt;
* &amp;lt;code&amp;gt;tz&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;rev&amp;lt;/code&amp;gt; - parse as '''dt-'''&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
This work is based on the existing [[hCard]] and [[vcard]] specifications.&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
(stub, expand)&lt;br /&gt;
&lt;br /&gt;
== Additions ==&lt;br /&gt;
We've tried very hard with h-card to stay compatible with the vCard4 vocabulary, and thus additions should be proposed on the vCard4 mailing list.&lt;br /&gt;
&lt;br /&gt;
However, you may still use this wiki to capture additions for h-card here:&lt;br /&gt;
* [[h-card-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[microformats2]]&lt;br /&gt;
* [[microformats2-parsing]]&lt;br /&gt;
* [[h-adr]]&lt;br /&gt;
* [[h-geo]]&lt;br /&gt;
* [[hCard]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Draft Specifications]]&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=h-card&amp;diff=70396</id>
		<title>h-card</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=h-card&amp;diff=70396"/>
		<updated>2021-06-22T18:37:25Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: /* Examples in the wild */ moved some examples to offline&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;dfn style=&amp;quot;font-style:normal;font-weight:bold&amp;quot;&amp;gt;h-card&amp;lt;/dfn&amp;gt; is a simple, open format for publishing people and organisations on the web. h-card is often used on home pages and individual blog posts. h-card is one of several open [[microformats|microformat]] draft standards suitable for embedding data in HTML.&lt;br /&gt;
&lt;br /&gt;
h-card is the [[microformats2]] update to [[hCard]].&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;span id=&amp;quot;status&amp;quot;&amp;gt;Status&amp;lt;/span&amp;gt;&lt;br /&gt;
:This is a '''Living Specification''' yet mature enough to encourage additional implementations and [https://github.com/microformats/h-card/issues feedback].&lt;br /&gt;
;&amp;lt;span id=&amp;quot;participate&amp;quot;&amp;gt;Participate&amp;lt;/span&amp;gt;&lt;br /&gt;
:[https://github.com/microformats/h-card/issues Open Issues]&lt;br /&gt;
:[[IRC]]&lt;br /&gt;
&amp;lt;div class=&amp;quot;p-author h-card vcard&amp;quot;&amp;gt;&lt;br /&gt;
;&amp;lt;span class=&amp;quot;p-role role&amp;quot;&amp;gt;Editor&amp;lt;/span&amp;gt;&lt;br /&gt;
:&amp;lt;span class=&amp;quot;p-name fn&amp;quot;&amp;gt;[[User:Tantek|Tantek Çelik]]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
;License&lt;br /&gt;
: {{cc0-owfa-license}}&lt;br /&gt;
&amp;lt;span style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Here are a couple of minimal examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;h-card&amp;quot; href=&amp;quot;https://tantek.com/&amp;quot;&amp;gt;Tantek Çelik&amp;lt;/a&amp;gt;, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;a class=&amp;quot;p-name p-org u-url&amp;quot; href=&amp;quot;https://microformats.org/&amp;quot;&amp;gt;microformats.org&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parsed JSON: &lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;items&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;Tantek Çelik&amp;quot;],&lt;br /&gt;
        &amp;quot;url&amp;quot;: [&amp;quot;https://tantek.com/&amp;quot;]&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;microformats.org&amp;quot;],&lt;br /&gt;
        &amp;quot;org&amp;quot;: [&amp;quot;microformats.org&amp;quot;],&lt;br /&gt;
        &amp;quot;url&amp;quot;: [&amp;quot;https://microformats.org/&amp;quot;]&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Note a single element was sufficient for the simple person example with implied name and URL properties, while for an organization, which requires a name and org, it needed explicit markup for the h-card and all properties, though still with only two elements.&lt;br /&gt;
&lt;br /&gt;
Nested h-card example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;a class=&amp;quot;p-name u-url&amp;quot;&lt;br /&gt;
     href=&amp;quot;https://blog.lizardwrangler.com/&amp;quot; &lt;br /&gt;
    &amp;gt;Mitchell Baker&amp;lt;/a&amp;gt; &lt;br /&gt;
  (&amp;lt;a class=&amp;quot;p-org h-card&amp;quot; &lt;br /&gt;
      href=&amp;quot;https://mozilla.org/&amp;quot;&lt;br /&gt;
     &amp;gt;Mozilla Foundation&amp;lt;/a&amp;gt;)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parsed JSON:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;items&amp;quot;: [{ &lt;br /&gt;
    &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;name&amp;quot;: [&amp;quot;Mitchell Baker&amp;quot;],&lt;br /&gt;
      &amp;quot;url&amp;quot;: [&amp;quot;https://blog.lizardwrangler.com/&amp;quot;],&lt;br /&gt;
      &amp;quot;org&amp;quot;: [{&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;Mozilla Foundation&amp;quot;,&lt;br /&gt;
        &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;name&amp;quot;: [&amp;quot;Mozilla Foundation&amp;quot;],&lt;br /&gt;
          &amp;quot;url&amp;quot;: [&amp;quot;https://mozilla.org/&amp;quot;]&lt;br /&gt;
        }&lt;br /&gt;
      }]&lt;br /&gt;
    }&lt;br /&gt;
  }]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: the nested h-card has implied 'name' and 'url' properties, just like any other root-class-name-only h-card on an &amp;lt;code&amp;gt;&amp;amp;lt;a href&amp;amp;gt;&amp;lt;/code&amp;gt; would.&lt;br /&gt;
&lt;br /&gt;
=== Get started ===&lt;br /&gt;
The class '''&amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt;''' is a ''root class name'' that indicates the presence of an h-card.&lt;br /&gt;
&lt;br /&gt;
For minimal examples where at most &amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;u-url&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;u-photo&amp;lt;/code&amp;gt; are required (such as the first given above), only the root class name is needed — see [[microformats-2-implied-properties|implied properties]].&lt;br /&gt;
&lt;br /&gt;
When more than those three minimal properties are needed, the root class name must be placed on an element which encloses all the desired properties, and then the properties themselves marked up using the classnames given below.&lt;br /&gt;
&lt;br /&gt;
See [[microformats2-parsing]] to learn more about property classnames.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
h-card properties, inside an element with class '''h-card'''. All properties are optional and may be plural.&lt;br /&gt;
* See [[microformats2-parsing]] to learn more about property classnames.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:-.4em; float:right;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;Example h-card with common properties:&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style:none&amp;quot;&amp;gt;&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''h-card'''&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style:none; margin-top:-.02em&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-name'''&amp;quot;&amp;amp;gt;Sally Ride&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-honorific-prefix'''&amp;quot;&amp;amp;gt;Dr.&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-given-name'''&amp;quot;&amp;amp;gt;Sally&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;abbr class=&amp;quot;'''p-additional-name'''&amp;quot;&amp;amp;gt;K.&amp;amp;lt;/abbr&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-family-name'''&amp;quot;&amp;amp;gt;Ride&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-honorific-suffix'''&amp;quot;&amp;amp;gt;Ph.D.&amp;amp;lt;/span&amp;amp;gt;,&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-nickname'''&amp;quot;&amp;amp;gt;sallykride&amp;amp;lt;/span&amp;amp;gt; (IRC)&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-org'''&amp;quot;&amp;amp;gt;Sally Ride Science&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;img class=&amp;quot;'''u-photo'''&amp;quot; src=&amp;quot;&amp;lt;nowiki&amp;gt;http://example.com/sk.jpg&amp;lt;/nowiki&amp;gt;&amp;quot;/&amp;amp;gt; &amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;a class=&amp;quot;'''u-url'''&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://sally.example.com&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;amp;gt;w&amp;amp;lt;/a&amp;amp;gt;,&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;a class=&amp;quot;'''u-email'''&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;mailto:sally@example.com&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;amp;gt;e&amp;amp;lt;/a&amp;amp;gt; &amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-tel'''&amp;quot;&amp;amp;gt;+1.818.555.1212&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-street-address'''&amp;quot;&amp;amp;gt;123 Main st.&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-locality'''&amp;quot;&amp;amp;gt;Los Angeles&amp;amp;lt;/span&amp;amp;gt;, &amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;abbr class=&amp;quot;'''p-region'''&amp;quot; title=&amp;quot;California&amp;quot;&amp;amp;gt;CA&amp;amp;lt;/abbr&amp;amp;gt;, &amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-postal-code'''&amp;quot;&amp;amp;gt;91316&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-country-name'''&amp;quot;&amp;amp;gt;U.S.A&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;time class=&amp;quot;'''dt-bday'''&amp;quot;&amp;amp;gt;1951-05-26&amp;amp;lt;/time&amp;amp;gt; birthday&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-category'''&amp;quot;&amp;amp;gt;physicist&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-note'''&amp;quot;&amp;amp;gt;First American woman in space.&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Core properties:&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;''' - The full/formatted name of the person or organization&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-honorific-prefix&amp;lt;/code&amp;gt;''' - e.g. Mrs., Mr. or Dr.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-given-name&amp;lt;/code&amp;gt;''' - given (often first) name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-additional-name&amp;lt;/code&amp;gt;''' - other (e.g. middle) name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-family-name&amp;lt;/code&amp;gt;''' - family (often last) name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-sort-string&amp;lt;/code&amp;gt;''' - string to sort by&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-honorific-suffix&amp;lt;/code&amp;gt;''' - e.g. Ph.D, Esq.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-nickname&amp;lt;/code&amp;gt;''' - nickname/alias/handle&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-email&amp;lt;/code&amp;gt;''' - email address&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-logo&amp;lt;/code&amp;gt;''' - a logo representing the person or organization (e.g. a face icon)&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-photo&amp;lt;/code&amp;gt;''' - a photo of the person or organization&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-url&amp;lt;/code&amp;gt;''' - home page or other URL representing the person or organization&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-uid&amp;lt;/code&amp;gt;''' - universally unique identifier, preferably canonical URL&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-category&amp;lt;/code&amp;gt;''' - category/tag&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-adr&amp;lt;/code&amp;gt;''' - postal address, optionally embed an [[h-adr]] {{main|h-adr}}&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-post-office-box&amp;lt;/code&amp;gt;''' - post office box description if any&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-extended-address&amp;lt;/code&amp;gt;''' - apartment/suite/room name/number if any&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-street-address&amp;lt;/code&amp;gt;''' - street number + name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-locality&amp;lt;/code&amp;gt;''' - city/town/village&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-region&amp;lt;/code&amp;gt;''' - state/county/province&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-postal-code&amp;lt;/code&amp;gt;''' - postal code, e.g. US ZIP&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-country-name&amp;lt;/code&amp;gt;''' - country name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-label&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-geo&amp;lt;/code&amp;gt;''' or '''&amp;lt;code&amp;gt;u-geo&amp;lt;/code&amp;gt;''', optionally embed an [[h-geo]] {{main|h-geo}}&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-latitude&amp;lt;/code&amp;gt;''' - decimal latitude&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-longitude&amp;lt;/code&amp;gt;''' - decimal longitude&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-altitude&amp;lt;/code&amp;gt;''' - decimal altitude&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-tel&amp;lt;/code&amp;gt;''' - telephone number&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-note&amp;lt;/code&amp;gt;''' - additional notes&lt;br /&gt;
* '''&amp;lt;code&amp;gt;dt-bday&amp;lt;/code&amp;gt;''' - birth date&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-key&amp;lt;/code&amp;gt;''' - cryptographic public key e.g. SSH or GPG&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-org&amp;lt;/code&amp;gt;''' - affiliated organization, optionally embed an [[h-card]]&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-job-title&amp;lt;/code&amp;gt;''' - job title, previously 'title' in [[hCard]], disambiguated.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-role&amp;lt;/code&amp;gt;''' - description of role &lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-impp&amp;lt;/code&amp;gt;''' per RFC4770, new in vCard4 (RFC 6350)&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-sex&amp;lt;/code&amp;gt;''' - biological sex, new in vCard4 (RFC 6350)&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-gender-identity&amp;lt;/code&amp;gt;''' - gender identity, new in vCard4 (RFC 6350)&lt;br /&gt;
* '''&amp;lt;code&amp;gt;dt-anniversary&amp;lt;/code&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Experimental properties currently in use in the wild but not (yet) part of the official h-card spec.&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-sound&amp;lt;/code&amp;gt;''' - sound file containing the proper pronunciation of the name property, per vCard (RFC 6350).&lt;br /&gt;
** Used by [https://vanderven.se/martijn/ Martijn van der Ven] with a clip of his given name.&lt;br /&gt;
** Needs a GitHub issue to track.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
'''h-card''' is a microformats.org draft specification. Public discussion on h-card takes place on the [[irc|#microformats channel on irc.freenode.net]] ([https://chat.indieweb.org/microformats view recent discussions]), and specific issues [https://github.com/microformats/h-card/issues may be filed on GitHub].&lt;br /&gt;
&lt;br /&gt;
h-card is ready to use and implemented in the wild. For backwards compatibility you should also mark up top-level h-cards as classic [[hCard]]s.&lt;br /&gt;
&lt;br /&gt;
== Property Details ==&lt;br /&gt;
(stub, to be expanded)&lt;br /&gt;
&lt;br /&gt;
=== p-adr ===&lt;br /&gt;
&amp;lt;code&amp;gt;p-adr&amp;lt;/code&amp;gt; can optionally embed an [[h-adr]] to cluster associated structured address properties. E.g. adding &amp;quot;p-adr&amp;quot; to the example earlier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;p-name&amp;quot;&amp;gt;Joe Bloggs&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;p-adr h-adr&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-street-address&amp;quot;&amp;gt;17 Austerstræti&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-locality&amp;quot;&amp;gt;Reykjavík&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-country-name&amp;quot;&amp;gt;Iceland&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Q: Why would you use &amp;quot;p-adr&amp;quot; to cluster associated structured address properties?&lt;br /&gt;
&lt;br /&gt;
A: Because if you have more than one structured address, clustering which properties go with which address keeps them deterministically together, instead of depending on array indices or other heuristics.&lt;br /&gt;
&lt;br /&gt;
=== p-tel ===&lt;br /&gt;
Note: use of 'value' within 'p-tel' should be automatically handled by the support of the [[value-class-pattern]]. And for now, the former [[hCard]] 'type' subproperty of 'tel' is dropped/ignored. If there is demonstrable documented need for additional tel types (e.g. fax), we can introduce new flat properties as needed (e.g. p-tel-fax).&lt;br /&gt;
&lt;br /&gt;
=== dt-bday ===&lt;br /&gt;
Using truncated representations of dates for birth date is often good practice as noted in [https://tools.ietf.org/html/rfc6350#section-4.3.1 the vcard spec] eg&lt;br /&gt;
* &amp;lt;code&amp;gt;1985-04&amp;lt;/code&amp;gt; for April 1985&lt;br /&gt;
* &amp;lt;code&amp;gt;1985&amp;lt;/code&amp;gt; for the year 1985&lt;br /&gt;
* &amp;lt;code&amp;gt;--04-12&amp;lt;/code&amp;gt; for April 12th with no specified year&lt;br /&gt;
&lt;br /&gt;
=== Reserved properties ===&lt;br /&gt;
The following properties were supported by the legacy hCard format, but were not carried over to h-card due to lack of real-world usage, or other problems. They are not part of h-card and should not be published, consumed, or proposed.&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-organization-name&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-organization-unit&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-tz&amp;lt;/code&amp;gt;''' — timezone offset&lt;br /&gt;
** &amp;lt;q&amp;gt;it's going to be a hard one to &amp;quot;get right&amp;quot;, as the way timezones work in vcard/ical is very weird, and timezones as a whole are an iffy thing to denote (quite the disconnect between complexity, automated processing ability, actually representing what a user would want to show/display or already does on their homepage, and actually representing something useful to parse and do something with)&amp;lt;/q&amp;gt;&lt;br /&gt;
** &amp;lt;q&amp;gt;there's certainly no ecosystem of publishers &amp;amp; consumers supporting p-tz in any meaningful interoperable way&amp;lt;/q&amp;gt; — [https://chat.indieweb.org/microformats/2021-06-22/1624385751126500 tantek in #microformats]&lt;br /&gt;
* '''&amp;lt;code&amp;gt;dt-rev&amp;lt;/code&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
== Examples in the wild ==&lt;br /&gt;
Real world in the wild examples of sites and services that publish or consume h-card:&lt;br /&gt;
&lt;br /&gt;
* ... add uses of h-card you see in the wild here.&lt;br /&gt;
* [http://www.securityjobslondon.co.uk Security Jobs London] uses h-card with legacy [[hCard]] fallback markup (to satisfy [https://search.google.com/structured-data/testing-tool Google's Structured Data Testing Tool]) in the footer of each page&lt;br /&gt;
* Brett Comnes marks up his posts with h-card ([http://bret.io/2013/06/29/getting-started-with-bower/ example])&lt;br /&gt;
* Ben Werdmuller marks up his homepage and posts with h-card [http://werd.io/view/51d5097fbed7ded0633a5956 example])&lt;br /&gt;
* [https://joelpurra.com/ Joel Purra] uses a hidden h-card with legacy [[hCard]] fallback markup (to satisfy [https://search.google.com/structured-data/testing-tool Google's Structured Data Testing Tool]) on the front page&lt;br /&gt;
* [http://eschnou.com/ Laurent Eschenauer] marks his homepage profile up using h-card&lt;br /&gt;
* [http://tommorris.org/ Tom Morris] marks himself up with h-card as well as venues he’s checked into ([http://tommorris.org/posts/8408 example])&lt;br /&gt;
* [https://www.w3.org/conf/ W3Conf 2013] uses h-card for all the event speakers and notable attendees. The h-cards make particularly good use of implied name, url, and photo properties.&lt;br /&gt;
* [http://wordpress.org/extend/themes/sempress SemPress] is a WordPress theme that supports h-card, h-feed/h-entry and h-as-*&lt;br /&gt;
* [http://the-pastry-box-project.net/ The Pastry Box Project] use h-card markup on their homepage and individual thoughts pages&lt;br /&gt;
* Tom Morris uses h-card and [[XFN]] to markup [http://tommorris.org/pages/blogroll his blogroll].&lt;br /&gt;
* Aaron Parecki uses h-card to markup both authorship and references to people in his notes permalinks, e.g. [https://aaronparecki.com/2012/230/reply/1 2012/230/reply/1].&lt;br /&gt;
* [https://tantek.com/ Tantek Çelik] uses h-card  on his home page as well as within [[h-entry]]s on permalink pages to indicate authorship.&lt;br /&gt;
* [http://waterpigs.co.uk/ Barnaby Walters] uses h-card on his home page, as well as within h-entries for notes and articles, both to indicate authorship and also when mentioning people within the body of the notes.&lt;br /&gt;
* [https://tantek.com/presentations/2012/06/microformats microformats.org at 7 years] presentation with and h-card markup for people and organizations.&lt;br /&gt;
* [https://tantek.com/presentations/2012/06/pdf2012-indieweb.html Rise of the Indie Web hCards] (from Personal Democracy Forum 2012 #pdf12 #pdf2012) has [[microformats2]] h-card markup&lt;br /&gt;
* WebMaker by Mozilla has [[microformats2]] h-card on event search (e.g. [https://webmaker.org/en-US/events/near/?lat=45.5234515&amp;amp;lng=-122.6762071 search near Portland Oregon]) and event pages (e.g. [https://webmaker.org/en-US/events/192f56eb9/ IndieWebCamp 2012]).[https://twitter.com/microformats/status/212207925643587585]&lt;br /&gt;
* WebFWD by Mozilla has [[microformats2]] h-card markup on [https://webfwd.org/about/experts/ experts] and [https://webfwd.org/about/team/ team] pages&lt;br /&gt;
* [https://indiewebcamp.com IndieWebCamp] has [[microformats2]] h-event markup with embedded h-cards for the organizers and the location.&lt;br /&gt;
* [https://wiki.mozilla.org/Events Mozilla Events] page has [[microformats2]] h-event markup with attendees marked up with h-card.&lt;br /&gt;
* [https://tristanthomas.me Tristan Thomas] uses h-card on his home page&lt;br /&gt;
* [http://cold32.com/about-the-author-and-contact.htm Cold32.com] uses h-card (and h-geo) on its about-the-author-and-contact page&lt;br /&gt;
* [https://workfrom.co/ Workfrom.co] renders h-cards for venues (e.g. [https://workfrom.co/palio-dessert-and-espresso-house])&lt;br /&gt;
* [http://www.pcwdld.com/ PCWDLD.com] renders h-cards for download pages(e.g. [http://www.pcwdld.com/solarwinds-network-topology-mapper-review Download page example])&lt;br /&gt;
&lt;br /&gt;
=== offline ===&lt;br /&gt;
* spreadly marks up share permalink pages with minimal h-cards inside h-entry&lt;br /&gt;
* App.net rolled out support for h-card and h-entry on all profile pages and permalink pages as of 2013-08-06 ([https://alpha.app.net/voidfiles example])&lt;br /&gt;
* Sandeep Shetty marks his homepage and posts up with h-card and h-entry ([https://sandeep.io/101 example])&lt;br /&gt;
&lt;br /&gt;
== Validating ==&lt;br /&gt;
* '''[https://indiewebify.me/validate-h-card/ indiewebify.me h-card validator]''' parses [[h-card]] markup and makes suggestions for things to add, with code samples&lt;br /&gt;
{{h-spec-section-validating}}&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
Software implementations that publish or consume h-card, including themes, plugins, or extensions:&lt;br /&gt;
&lt;br /&gt;
(This section is a stub that needs expansion! In practice, nearly every CMS on every [https://indieweb.org/ indie web] site supports publishing h-card by default.)&lt;br /&gt;
&lt;br /&gt;
When adding an implementation, please provide and link to its home page and open source repo if any.&lt;br /&gt;
* [https://gnu.io/social/ GNUsocial] [https://git.gnu.io/gnu/gnu-social/ source code]&lt;br /&gt;
* [https://hubzilla.org/hubzilla/ Hubzilla] [https://github.org/redmatrix/hubzilla source code]&lt;br /&gt;
* [http://friendica.com/ Friendica] [https://github.org/friendica/friendica source code]&lt;br /&gt;
* [https://github.com/dissolve/inkblot InkBlot]&lt;br /&gt;
* ...&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== Backward Compatibility ==&lt;br /&gt;
=== Publisher Compatibility ===&lt;br /&gt;
For backward compatibility, you may wish to use classic [[hCard]] classnames in addition to the more future-proof h-card properties, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;h-card vcard&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-name fn&amp;quot;&amp;gt;Joe Bloggs&amp;lt;/span&amp;gt;,&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-org org&amp;quot;&amp;gt;Awesome Nonprofit&amp;lt;/span&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The class '''&amp;lt;code&amp;gt;vcard&amp;lt;/code&amp;gt;''' is a ''backward compatible root class name'' that indicates the presence of an [[hCard]].&lt;br /&gt;
&lt;br /&gt;
'''fn''', '''org''', and all the other backward compatibility hCard property class names are listed below.&lt;br /&gt;
&lt;br /&gt;
=== Parser Compatibility ===&lt;br /&gt;
Microformats parsers {{should}} detect classic properties only if a classic root class name is found and parse them as microformats2 properties. &lt;br /&gt;
&lt;br /&gt;
If an &amp;quot;h-card&amp;quot; is found, don't look for a &amp;quot;vcard&amp;quot; on the same element.&lt;br /&gt;
&lt;br /&gt;
Compat. root class name: &amp;lt;code id=&amp;quot;vcard&amp;quot;&amp;gt;vcard&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Properties: (parsed as '''p-''' plain text unless otherwise specified)&lt;br /&gt;
* &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* &amp;lt;code&amp;gt;honorific-prefix&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;given-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;additional-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;family-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;honorific-suffix&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;nickname&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;email&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;logo&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;photo&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;url&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;uid&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;category&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;p-adr h-adr&amp;lt;/code&amp;gt;''' including compat root class &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;extended-address&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;street-address&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;locality&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;region&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;postal-code&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;country-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;geo&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;p-geo h-geo&amp;lt;/code&amp;gt;''' including compat root class &amp;lt;code&amp;gt;geo&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;latitude&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;longitude&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;tel&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;note&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bday&amp;lt;/code&amp;gt; - parse as '''dt-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;org&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;organization-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;organization-unit&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; - parse as '''p-job-title'''&lt;br /&gt;
* &amp;lt;code&amp;gt;role&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reserved: (backward compat properties that parsers {{may}} implement, if they do, they {{must}} implement in this way:&lt;br /&gt;
* &amp;lt;code&amp;gt;tz&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;rev&amp;lt;/code&amp;gt; - parse as '''dt-'''&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
This work is based on the existing [[hCard]] and [[vcard]] specifications.&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
(stub, expand)&lt;br /&gt;
&lt;br /&gt;
== Additions ==&lt;br /&gt;
We've tried very hard with h-card to stay compatible with the vCard4 vocabulary, and thus additions should be proposed on the vCard4 mailing list.&lt;br /&gt;
&lt;br /&gt;
However, you may still use this wiki to capture additions for h-card here:&lt;br /&gt;
* [[h-card-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[microformats2]]&lt;br /&gt;
* [[microformats2-parsing]]&lt;br /&gt;
* [[h-adr]]&lt;br /&gt;
* [[h-geo]]&lt;br /&gt;
* [[hCard]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Draft Specifications]]&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=h-card&amp;diff=70395</id>
		<title>h-card</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=h-card&amp;diff=70395"/>
		<updated>2021-06-22T18:33:45Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: /* Reserved properties */ removed example, clarified status of reserved properties&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;dfn style=&amp;quot;font-style:normal;font-weight:bold&amp;quot;&amp;gt;h-card&amp;lt;/dfn&amp;gt; is a simple, open format for publishing people and organisations on the web. h-card is often used on home pages and individual blog posts. h-card is one of several open [[microformats|microformat]] draft standards suitable for embedding data in HTML.&lt;br /&gt;
&lt;br /&gt;
h-card is the [[microformats2]] update to [[hCard]].&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;span id=&amp;quot;status&amp;quot;&amp;gt;Status&amp;lt;/span&amp;gt;&lt;br /&gt;
:This is a '''Living Specification''' yet mature enough to encourage additional implementations and [https://github.com/microformats/h-card/issues feedback].&lt;br /&gt;
;&amp;lt;span id=&amp;quot;participate&amp;quot;&amp;gt;Participate&amp;lt;/span&amp;gt;&lt;br /&gt;
:[https://github.com/microformats/h-card/issues Open Issues]&lt;br /&gt;
:[[IRC]]&lt;br /&gt;
&amp;lt;div class=&amp;quot;p-author h-card vcard&amp;quot;&amp;gt;&lt;br /&gt;
;&amp;lt;span class=&amp;quot;p-role role&amp;quot;&amp;gt;Editor&amp;lt;/span&amp;gt;&lt;br /&gt;
:&amp;lt;span class=&amp;quot;p-name fn&amp;quot;&amp;gt;[[User:Tantek|Tantek Çelik]]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
;License&lt;br /&gt;
: {{cc0-owfa-license}}&lt;br /&gt;
&amp;lt;span style=&amp;quot;float:right&amp;quot;&amp;gt;__TOC__&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Here are a couple of minimal examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;h-card&amp;quot; href=&amp;quot;https://tantek.com/&amp;quot;&amp;gt;Tantek Çelik&amp;lt;/a&amp;gt;, &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;a class=&amp;quot;p-name p-org u-url&amp;quot; href=&amp;quot;https://microformats.org/&amp;quot;&amp;gt;microformats.org&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parsed JSON: &lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;items&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;Tantek Çelik&amp;quot;],&lt;br /&gt;
        &amp;quot;url&amp;quot;: [&amp;quot;https://tantek.com/&amp;quot;]&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;microformats.org&amp;quot;],&lt;br /&gt;
        &amp;quot;org&amp;quot;: [&amp;quot;microformats.org&amp;quot;],&lt;br /&gt;
        &amp;quot;url&amp;quot;: [&amp;quot;https://microformats.org/&amp;quot;]&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Note a single element was sufficient for the simple person example with implied name and URL properties, while for an organization, which requires a name and org, it needed explicit markup for the h-card and all properties, though still with only two elements.&lt;br /&gt;
&lt;br /&gt;
Nested h-card example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;a class=&amp;quot;p-name u-url&amp;quot;&lt;br /&gt;
     href=&amp;quot;https://blog.lizardwrangler.com/&amp;quot; &lt;br /&gt;
    &amp;gt;Mitchell Baker&amp;lt;/a&amp;gt; &lt;br /&gt;
  (&amp;lt;a class=&amp;quot;p-org h-card&amp;quot; &lt;br /&gt;
      href=&amp;quot;https://mozilla.org/&amp;quot;&lt;br /&gt;
     &amp;gt;Mozilla Foundation&amp;lt;/a&amp;gt;)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parsed JSON:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;items&amp;quot;: [{ &lt;br /&gt;
    &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;name&amp;quot;: [&amp;quot;Mitchell Baker&amp;quot;],&lt;br /&gt;
      &amp;quot;url&amp;quot;: [&amp;quot;https://blog.lizardwrangler.com/&amp;quot;],&lt;br /&gt;
      &amp;quot;org&amp;quot;: [{&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;Mozilla Foundation&amp;quot;,&lt;br /&gt;
        &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;name&amp;quot;: [&amp;quot;Mozilla Foundation&amp;quot;],&lt;br /&gt;
          &amp;quot;url&amp;quot;: [&amp;quot;https://mozilla.org/&amp;quot;]&lt;br /&gt;
        }&lt;br /&gt;
      }]&lt;br /&gt;
    }&lt;br /&gt;
  }]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: the nested h-card has implied 'name' and 'url' properties, just like any other root-class-name-only h-card on an &amp;lt;code&amp;gt;&amp;amp;lt;a href&amp;amp;gt;&amp;lt;/code&amp;gt; would.&lt;br /&gt;
&lt;br /&gt;
=== Get started ===&lt;br /&gt;
The class '''&amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt;''' is a ''root class name'' that indicates the presence of an h-card.&lt;br /&gt;
&lt;br /&gt;
For minimal examples where at most &amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;u-url&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;u-photo&amp;lt;/code&amp;gt; are required (such as the first given above), only the root class name is needed — see [[microformats-2-implied-properties|implied properties]].&lt;br /&gt;
&lt;br /&gt;
When more than those three minimal properties are needed, the root class name must be placed on an element which encloses all the desired properties, and then the properties themselves marked up using the classnames given below.&lt;br /&gt;
&lt;br /&gt;
See [[microformats2-parsing]] to learn more about property classnames.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
h-card properties, inside an element with class '''h-card'''. All properties are optional and may be plural.&lt;br /&gt;
* See [[microformats2-parsing]] to learn more about property classnames.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:-.4em; float:right;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;Example h-card with common properties:&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style:none&amp;quot;&amp;gt;&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''h-card'''&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style:none; margin-top:-.02em&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-name'''&amp;quot;&amp;amp;gt;Sally Ride&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-honorific-prefix'''&amp;quot;&amp;amp;gt;Dr.&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-given-name'''&amp;quot;&amp;amp;gt;Sally&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;abbr class=&amp;quot;'''p-additional-name'''&amp;quot;&amp;amp;gt;K.&amp;amp;lt;/abbr&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-family-name'''&amp;quot;&amp;amp;gt;Ride&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-honorific-suffix'''&amp;quot;&amp;amp;gt;Ph.D.&amp;amp;lt;/span&amp;amp;gt;,&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-nickname'''&amp;quot;&amp;amp;gt;sallykride&amp;amp;lt;/span&amp;amp;gt; (IRC)&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-org'''&amp;quot;&amp;amp;gt;Sally Ride Science&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;img class=&amp;quot;'''u-photo'''&amp;quot; src=&amp;quot;&amp;lt;nowiki&amp;gt;http://example.com/sk.jpg&amp;lt;/nowiki&amp;gt;&amp;quot;/&amp;amp;gt; &amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;a class=&amp;quot;'''u-url'''&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://sally.example.com&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;amp;gt;w&amp;amp;lt;/a&amp;amp;gt;,&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;a class=&amp;quot;'''u-email'''&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;mailto:sally@example.com&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;amp;gt;e&amp;amp;lt;/a&amp;amp;gt; &amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-tel'''&amp;quot;&amp;amp;gt;+1.818.555.1212&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-street-address'''&amp;quot;&amp;amp;gt;123 Main st.&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-locality'''&amp;quot;&amp;amp;gt;Los Angeles&amp;amp;lt;/span&amp;amp;gt;, &amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;abbr class=&amp;quot;'''p-region'''&amp;quot; title=&amp;quot;California&amp;quot;&amp;amp;gt;CA&amp;amp;lt;/abbr&amp;amp;gt;, &amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;'''p-postal-code'''&amp;quot;&amp;amp;gt;91316&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-country-name'''&amp;quot;&amp;amp;gt;U.S.A&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;time class=&amp;quot;'''dt-bday'''&amp;quot;&amp;amp;gt;1951-05-26&amp;amp;lt;/time&amp;amp;gt; birthday&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-category'''&amp;quot;&amp;amp;gt;physicist&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=&amp;quot;'''p-note'''&amp;quot;&amp;amp;gt;First American woman in space.&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Core properties:&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;''' - The full/formatted name of the person or organization&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-honorific-prefix&amp;lt;/code&amp;gt;''' - e.g. Mrs., Mr. or Dr.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-given-name&amp;lt;/code&amp;gt;''' - given (often first) name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-additional-name&amp;lt;/code&amp;gt;''' - other (e.g. middle) name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-family-name&amp;lt;/code&amp;gt;''' - family (often last) name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-sort-string&amp;lt;/code&amp;gt;''' - string to sort by&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-honorific-suffix&amp;lt;/code&amp;gt;''' - e.g. Ph.D, Esq.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-nickname&amp;lt;/code&amp;gt;''' - nickname/alias/handle&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-email&amp;lt;/code&amp;gt;''' - email address&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-logo&amp;lt;/code&amp;gt;''' - a logo representing the person or organization (e.g. a face icon)&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-photo&amp;lt;/code&amp;gt;''' - a photo of the person or organization&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-url&amp;lt;/code&amp;gt;''' - home page or other URL representing the person or organization&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-uid&amp;lt;/code&amp;gt;''' - universally unique identifier, preferably canonical URL&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-category&amp;lt;/code&amp;gt;''' - category/tag&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-adr&amp;lt;/code&amp;gt;''' - postal address, optionally embed an [[h-adr]] {{main|h-adr}}&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-post-office-box&amp;lt;/code&amp;gt;''' - post office box description if any&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-extended-address&amp;lt;/code&amp;gt;''' - apartment/suite/room name/number if any&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-street-address&amp;lt;/code&amp;gt;''' - street number + name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-locality&amp;lt;/code&amp;gt;''' - city/town/village&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-region&amp;lt;/code&amp;gt;''' - state/county/province&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-postal-code&amp;lt;/code&amp;gt;''' - postal code, e.g. US ZIP&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-country-name&amp;lt;/code&amp;gt;''' - country name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-label&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-geo&amp;lt;/code&amp;gt;''' or '''&amp;lt;code&amp;gt;u-geo&amp;lt;/code&amp;gt;''', optionally embed an [[h-geo]] {{main|h-geo}}&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-latitude&amp;lt;/code&amp;gt;''' - decimal latitude&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-longitude&amp;lt;/code&amp;gt;''' - decimal longitude&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-altitude&amp;lt;/code&amp;gt;''' - decimal altitude&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-tel&amp;lt;/code&amp;gt;''' - telephone number&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-note&amp;lt;/code&amp;gt;''' - additional notes&lt;br /&gt;
* '''&amp;lt;code&amp;gt;dt-bday&amp;lt;/code&amp;gt;''' - birth date&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-key&amp;lt;/code&amp;gt;''' - cryptographic public key e.g. SSH or GPG&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-org&amp;lt;/code&amp;gt;''' - affiliated organization, optionally embed an [[h-card]]&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-job-title&amp;lt;/code&amp;gt;''' - job title, previously 'title' in [[hCard]], disambiguated.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-role&amp;lt;/code&amp;gt;''' - description of role &lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-impp&amp;lt;/code&amp;gt;''' per RFC4770, new in vCard4 (RFC 6350)&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-sex&amp;lt;/code&amp;gt;''' - biological sex, new in vCard4 (RFC 6350)&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-gender-identity&amp;lt;/code&amp;gt;''' - gender identity, new in vCard4 (RFC 6350)&lt;br /&gt;
* '''&amp;lt;code&amp;gt;dt-anniversary&amp;lt;/code&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Experimental properties currently in use in the wild but not (yet) part of the official h-card spec.&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-sound&amp;lt;/code&amp;gt;''' - sound file containing the proper pronunciation of the name property, per vCard (RFC 6350).&lt;br /&gt;
** Used by [https://vanderven.se/martijn/ Martijn van der Ven] with a clip of his given name.&lt;br /&gt;
** Needs a GitHub issue to track.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
'''h-card''' is a microformats.org draft specification. Public discussion on h-card takes place on the [[irc|#microformats channel on irc.freenode.net]] ([https://chat.indieweb.org/microformats view recent discussions]), and specific issues [https://github.com/microformats/h-card/issues may be filed on GitHub].&lt;br /&gt;
&lt;br /&gt;
h-card is ready to use and implemented in the wild. For backwards compatibility you should also mark up top-level h-cards as classic [[hCard]]s.&lt;br /&gt;
&lt;br /&gt;
== Property Details ==&lt;br /&gt;
(stub, to be expanded)&lt;br /&gt;
&lt;br /&gt;
=== p-adr ===&lt;br /&gt;
&amp;lt;code&amp;gt;p-adr&amp;lt;/code&amp;gt; can optionally embed an [[h-adr]] to cluster associated structured address properties. E.g. adding &amp;quot;p-adr&amp;quot; to the example earlier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;p-name&amp;quot;&amp;gt;Joe Bloggs&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;p-adr h-adr&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-street-address&amp;quot;&amp;gt;17 Austerstræti&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-locality&amp;quot;&amp;gt;Reykjavík&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-country-name&amp;quot;&amp;gt;Iceland&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Q: Why would you use &amp;quot;p-adr&amp;quot; to cluster associated structured address properties?&lt;br /&gt;
&lt;br /&gt;
A: Because if you have more than one structured address, clustering which properties go with which address keeps them deterministically together, instead of depending on array indices or other heuristics.&lt;br /&gt;
&lt;br /&gt;
=== p-tel ===&lt;br /&gt;
Note: use of 'value' within 'p-tel' should be automatically handled by the support of the [[value-class-pattern]]. And for now, the former [[hCard]] 'type' subproperty of 'tel' is dropped/ignored. If there is demonstrable documented need for additional tel types (e.g. fax), we can introduce new flat properties as needed (e.g. p-tel-fax).&lt;br /&gt;
&lt;br /&gt;
=== dt-bday ===&lt;br /&gt;
Using truncated representations of dates for birth date is often good practice as noted in [https://tools.ietf.org/html/rfc6350#section-4.3.1 the vcard spec] eg&lt;br /&gt;
* &amp;lt;code&amp;gt;1985-04&amp;lt;/code&amp;gt; for April 1985&lt;br /&gt;
* &amp;lt;code&amp;gt;1985&amp;lt;/code&amp;gt; for the year 1985&lt;br /&gt;
* &amp;lt;code&amp;gt;--04-12&amp;lt;/code&amp;gt; for April 12th with no specified year&lt;br /&gt;
&lt;br /&gt;
=== Reserved properties ===&lt;br /&gt;
The following properties were supported by the legacy hCard format, but were not carried over to h-card due to lack of real-world usage, or other problems. They are not part of h-card and should not be published, consumed, or proposed.&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-organization-name&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-organization-unit&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-tz&amp;lt;/code&amp;gt;''' — timezone offset&lt;br /&gt;
** &amp;lt;q&amp;gt;it's going to be a hard one to &amp;quot;get right&amp;quot;, as the way timezones work in vcard/ical is very weird, and timezones as a whole are an iffy thing to denote (quite the disconnect between complexity, automated processing ability, actually representing what a user would want to show/display or already does on their homepage, and actually representing something useful to parse and do something with)&amp;lt;/q&amp;gt;&lt;br /&gt;
** &amp;lt;q&amp;gt;there's certainly no ecosystem of publishers &amp;amp; consumers supporting p-tz in any meaningful interoperable way&amp;lt;/q&amp;gt; — [https://chat.indieweb.org/microformats/2021-06-22/1624385751126500 tantek in #microformats]&lt;br /&gt;
* '''&amp;lt;code&amp;gt;dt-rev&amp;lt;/code&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
== Examples in the wild ==&lt;br /&gt;
Real world in the wild examples of sites and services that publish or consume h-card:&lt;br /&gt;
&lt;br /&gt;
* ... add uses of h-card you see in the wild here.&lt;br /&gt;
* [http://www.securityjobslondon.co.uk Security Jobs London] uses h-card with legacy [[hCard]] fallback markup (to satisfy [https://search.google.com/structured-data/testing-tool Google's Structured Data Testing Tool]) in the footer of each page&lt;br /&gt;
* App.net rolled out support for h-card and h-entry on all profile pages and permalink pages as of 2013-08-06 ([https://alpha.app.net/voidfiles example])&lt;br /&gt;
* Brett Comnes marks up his posts with h-card ([http://bret.io/2013/06/29/getting-started-with-bower/ example])&lt;br /&gt;
* Ben Werdmuller marks up his homepage and posts with h-card [http://werd.io/view/51d5097fbed7ded0633a5956 example])&lt;br /&gt;
* [https://joelpurra.com/ Joel Purra] uses a hidden h-card with legacy [[hCard]] fallback markup (to satisfy [https://search.google.com/structured-data/testing-tool Google's Structured Data Testing Tool]) on the front page&lt;br /&gt;
* Sandeep Shetty marks his homepage and posts up with h-card and h-entry ([sandeep.io/101 example])&lt;br /&gt;
* [http://eschnou.com/ Laurent Eschenauer] marks his homepage profile up using h-card&lt;br /&gt;
* [http://tommorris.org/ Tom Morris] marks himself up with h-card as well as venues he’s checked into ([http://tommorris.org/posts/8408 example])&lt;br /&gt;
* [https://www.w3.org/conf/ W3Conf 2013] uses h-card for all the event speakers and notable attendees. The h-cards make particularly good use of implied name, url, and photo properties.&lt;br /&gt;
* [http://wordpress.org/extend/themes/sempress SemPress] is a WordPress theme that supports h-card, h-feed/h-entry and h-as-*&lt;br /&gt;
* [http://the-pastry-box-project.net/ The Pastry Box Project] use h-card markup on their homepage and individual thoughts pages&lt;br /&gt;
* Tom Morris uses h-card and [[XFN]] to markup [http://tommorris.org/pages/blogroll his blogroll].&lt;br /&gt;
* Aaron Parecki uses h-card to markup both authorship and references to people in his notes permalinks, e.g. [https://aaronparecki.com/2012/230/reply/1 2012/230/reply/1].&lt;br /&gt;
* [https://tantek.com/ Tantek Çelik] uses h-card  on his home page as well as within [[h-entry]]s on permalink pages to indicate authorship.&lt;br /&gt;
* [http://waterpigs.co.uk/ Barnaby Walters] uses h-card on his home page, as well as within h-entries for notes and articles, both to indicate authorship and also when mentioning people within the body of the notes.&lt;br /&gt;
* [https://tantek.com/presentations/2012/06/microformats microformats.org at 7 years] presentation with and h-card markup for people and organizations.&lt;br /&gt;
* [https://tantek.com/presentations/2012/06/pdf2012-indieweb.html Rise of the Indie Web hCards] (from Personal Democracy Forum 2012 #pdf12 #pdf2012) has [[microformats2]] h-card markup&lt;br /&gt;
* WebMaker by Mozilla has [[microformats2]] h-card on event search (e.g. [https://webmaker.org/en-US/events/near/?lat=45.5234515&amp;amp;lng=-122.6762071 search near Portland Oregon]) and event pages (e.g. [https://webmaker.org/en-US/events/192f56eb9/ IndieWebCamp 2012]).[https://twitter.com/microformats/status/212207925643587585]&lt;br /&gt;
* WebFWD by Mozilla has [[microformats2]] h-card markup on [https://webfwd.org/about/experts/ experts] and [https://webfwd.org/about/team/ team] pages&lt;br /&gt;
* [https://indiewebcamp.com IndieWebCamp] has [[microformats2]] h-event markup with embedded h-cards for the organizers and the location.&lt;br /&gt;
* [https://wiki.mozilla.org/Events Mozilla Events] page has [[microformats2]] h-event markup with attendees marked up with h-card.&lt;br /&gt;
* [https://tristanthomas.me Tristan Thomas] uses h-card on his home page&lt;br /&gt;
* [http://cold32.com/about-the-author-and-contact.htm Cold32.com] uses h-card (and h-geo) on its about-the-author-and-contact page&lt;br /&gt;
* [https://workfrom.co/ Workfrom.co] renders h-cards for venues (e.g. [https://workfrom.co/palio-dessert-and-espresso-house])&lt;br /&gt;
* [http://www.pcwdld.com/ PCWDLD.com] renders h-cards for download pages(e.g. [http://www.pcwdld.com/solarwinds-network-topology-mapper-review Download page example])&lt;br /&gt;
&lt;br /&gt;
=== offline ===&lt;br /&gt;
* spreadly marks up share permalink pages with minimal h-cards inside h-entry&lt;br /&gt;
&lt;br /&gt;
== Validating ==&lt;br /&gt;
* '''[https://indiewebify.me/validate-h-card/ indiewebify.me h-card validator]''' parses [[h-card]] markup and makes suggestions for things to add, with code samples&lt;br /&gt;
{{h-spec-section-validating}}&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
Software implementations that publish or consume h-card, including themes, plugins, or extensions:&lt;br /&gt;
&lt;br /&gt;
(This section is a stub that needs expansion! In practice, nearly every CMS on every [https://indieweb.org/ indie web] site supports publishing h-card by default.)&lt;br /&gt;
&lt;br /&gt;
When adding an implementation, please provide and link to its home page and open source repo if any.&lt;br /&gt;
* [https://gnu.io/social/ GNUsocial] [https://git.gnu.io/gnu/gnu-social/ source code]&lt;br /&gt;
* [https://hubzilla.org/hubzilla/ Hubzilla] [https://github.org/redmatrix/hubzilla source code]&lt;br /&gt;
* [http://friendica.com/ Friendica] [https://github.org/friendica/friendica source code]&lt;br /&gt;
* [https://github.com/dissolve/inkblot InkBlot]&lt;br /&gt;
* ...&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== Backward Compatibility ==&lt;br /&gt;
=== Publisher Compatibility ===&lt;br /&gt;
For backward compatibility, you may wish to use classic [[hCard]] classnames in addition to the more future-proof h-card properties, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;h-card vcard&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-name fn&amp;quot;&amp;gt;Joe Bloggs&amp;lt;/span&amp;gt;,&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-org org&amp;quot;&amp;gt;Awesome Nonprofit&amp;lt;/span&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The class '''&amp;lt;code&amp;gt;vcard&amp;lt;/code&amp;gt;''' is a ''backward compatible root class name'' that indicates the presence of an [[hCard]].&lt;br /&gt;
&lt;br /&gt;
'''fn''', '''org''', and all the other backward compatibility hCard property class names are listed below.&lt;br /&gt;
&lt;br /&gt;
=== Parser Compatibility ===&lt;br /&gt;
Microformats parsers {{should}} detect classic properties only if a classic root class name is found and parse them as microformats2 properties. &lt;br /&gt;
&lt;br /&gt;
If an &amp;quot;h-card&amp;quot; is found, don't look for a &amp;quot;vcard&amp;quot; on the same element.&lt;br /&gt;
&lt;br /&gt;
Compat. root class name: &amp;lt;code id=&amp;quot;vcard&amp;quot;&amp;gt;vcard&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Properties: (parsed as '''p-''' plain text unless otherwise specified)&lt;br /&gt;
* &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* &amp;lt;code&amp;gt;honorific-prefix&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;given-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;additional-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;family-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;honorific-suffix&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;nickname&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;email&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;logo&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;photo&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;url&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;uid&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;category&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;p-adr h-adr&amp;lt;/code&amp;gt;''' including compat root class &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;extended-address&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;street-address&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;locality&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;region&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;postal-code&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;country-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;geo&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;p-geo h-geo&amp;lt;/code&amp;gt;''' including compat root class &amp;lt;code&amp;gt;geo&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;latitude&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;longitude&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;tel&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;note&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bday&amp;lt;/code&amp;gt; - parse as '''dt-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;org&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;organization-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;organization-unit&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; - parse as '''p-job-title'''&lt;br /&gt;
* &amp;lt;code&amp;gt;role&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reserved: (backward compat properties that parsers {{may}} implement, if they do, they {{must}} implement in this way:&lt;br /&gt;
* &amp;lt;code&amp;gt;tz&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;rev&amp;lt;/code&amp;gt; - parse as '''dt-'''&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
This work is based on the existing [[hCard]] and [[vcard]] specifications.&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
(stub, expand)&lt;br /&gt;
&lt;br /&gt;
== Additions ==&lt;br /&gt;
We've tried very hard with h-card to stay compatible with the vCard4 vocabulary, and thus additions should be proposed on the vCard4 mailing list.&lt;br /&gt;
&lt;br /&gt;
However, you may still use this wiki to capture additions for h-card here:&lt;br /&gt;
* [[h-card-brainstorming]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[microformats2]]&lt;br /&gt;
* [[microformats2-parsing]]&lt;br /&gt;
* [[h-adr]]&lt;br /&gt;
* [[h-geo]]&lt;br /&gt;
* [[hCard]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Draft Specifications]]&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=representative-h-card-parsing&amp;diff=70394</id>
		<title>representative-h-card-parsing</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=representative-h-card-parsing&amp;diff=70394"/>
		<updated>2021-06-22T12:45:49Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: /* Implementations */ added rockorager/representative-h-card&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Assuming you already have access to a [[parsers#microformats2_parsers|microformats2 parser]], the algorithm defined here allows you to determine the representative [[h-card]] for a given page.&lt;br /&gt;
&lt;br /&gt;
This algorithm is the microformats2 update to [[representative-hcard-parsing]].&lt;br /&gt;
&lt;br /&gt;
== Algorithm ==&lt;br /&gt;
&lt;br /&gt;
After [[parsing]] the page:&lt;br /&gt;
&lt;br /&gt;
* If the page contains an h-card with '''uid''' and '''url''' properties both matching the page URL, the first such h-card is the representative h-card&lt;br /&gt;
* If no representative h-card was found, if the page contains an h-card with a '''url''' property value which also has a &amp;lt;code&amp;gt;rel=me&amp;lt;/code&amp;gt; relation (i.e. matches a URL in parse_results.rels.me), the first such h-card is the representative h-card&lt;br /&gt;
* If no representative h-card was found, if the page contains '''one single''' h-card, and the h-card has a '''url''' property matching the page URL, that h-card is the representative h-card&lt;br /&gt;
* If no representative h-card was found, the page has no representative h-card&lt;br /&gt;
&lt;br /&gt;
=== Matching URLs ===&lt;br /&gt;
URLs are to be matched as per the parsing algorithm defined in https://url.spec.whatwg.org:&lt;br /&gt;
&lt;br /&gt;
* Parse the URLs&lt;br /&gt;
* If every component matches, the URLs match&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
Open source implementations of the representative h-card algorithm.&lt;br /&gt;
&lt;br /&gt;
* '''PHP''' [https://github.com/barnabywalters/php-mf-cleaner barnabywalters/mf-cleaner] package implements representative h-card parsing in [https://github.com/barnabywalters/php-mf-cleaner/blob/master/src/BarnabyWalters/Mf2/Functions.php#L211 getRepresentativeHCard()] function&lt;br /&gt;
** Example usage: &amp;lt;code&amp;gt;$hcard = BarnabyWalters\Mf2\getRepresentativeHCard($mfs, $url);&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''PHP''' [https://github.com/indieweb/representative-h-card-php indieweb/representative-h-card-php]&lt;br /&gt;
* '''node.js''' [https://github.com/rockorager/representative-h-card rockorager/representative-h-card]&lt;br /&gt;
* Add yours here!&lt;br /&gt;
* …&lt;br /&gt;
&lt;br /&gt;
== Back compat ==&lt;br /&gt;
All backcompat for representative h-card parsing should already be handled by the [[h-card#Backward_Compatibility|h-card backcompat]] rules, implemented by a conforming parser.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[h-card]]&lt;br /&gt;
* [[representative-hcard]] — original hCard work, most of which applies equally to the updated algorithm&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=FAQ&amp;diff=70384</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=FAQ&amp;diff=70384"/>
		<updated>2021-05-25T12:40:14Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[faq]]&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=Template:warning&amp;diff=70383</id>
		<title>Template:warning</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=Template:warning&amp;diff=70383"/>
		<updated>2021-04-28T17:31:02Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: Changed styles for readability, consistency with Template:inactive&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;padding: 1em; border: 5px solid #f78c00; background: #fcdcb3; font-size: 1.5em; margin-bottom: 1em;&amp;quot;&amp;gt;⚠️ &amp;lt;strong&amp;gt;Warning:&amp;lt;/strong&amp;gt; {{{1}}}&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=Template:inactive&amp;diff=70382</id>
		<title>Template:inactive</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=Template:inactive&amp;diff=70382"/>
		<updated>2021-04-28T17:23:32Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;padding: 1em; border: 5px solid #af0011; background: #fcd2cf; font-size: 1.5em; margin-bottom: 1em;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Inactive:&amp;lt;/strong&amp;gt; This page is outdated and no longer represents the current approach to developing microformats. See also: [[process]]&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=species-brainstorming&amp;diff=70381</id>
		<title>species-brainstorming</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=species-brainstorming&amp;diff=70381"/>
		<updated>2021-04-28T17:17:00Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: Added inactive template per discussion in IRC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{inactive}}&lt;br /&gt;
&lt;br /&gt;
=Species Brainstorming=&lt;br /&gt;
&lt;br /&gt;
:'''Note: the original name of the proposed microformat, &amp;quot;species&amp;quot;, is likely to change, probably to &amp;quot;biota&amp;quot; or &amp;quot;taxon&amp;quot;. The former has been retained here, to avoid having to make many repetitive and perhaps redundant edits'''&lt;br /&gt;
&lt;br /&gt;
:'''{{UpdateMarker}} The [http://www.kaply.com/weblog/2007/02/16/operator-07a-is-available/ Operator] extension now detects ''Species''. [http://www.westmidlandbirdclub.com/records/lists-2004uf.htm A test page is available]. Work on both continues!'''&lt;br /&gt;
&lt;br /&gt;
==Andy Mabbett==&lt;br /&gt;
===Proposal===&lt;br /&gt;
&lt;br /&gt;
There should, I believe, be a &amp;quot;'''[[species]]'''&amp;quot; microformat for the markup of plant and animal names, to include their scientific names. Consider: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;abbr class=&amp;quot;species&amp;quot; title=&amp;quot;Anas platyrhynchos&amp;quot;&amp;gt;Mallard&amp;lt;/abbr&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
:&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;span class=&amp;quot;species&amp;quot;&amp;gt;Anas platyrhynchos&amp;lt;/span&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The microformat would allow user agents to be configured to perform look-ups on on-line databases of species, according to user preferences. Specification of the taxonomic class would help user agents to know which such databases were applicable (i.e., use database A for plants, but database B for mammals and database C for insects.) &lt;br /&gt;
&lt;br /&gt;
It would also allow for more specific searching (do I mean &amp;quot;crow&amp;quot; or do I mean &amp;quot;Corvus corone&amp;quot;?).&lt;br /&gt;
&lt;br /&gt;
The specification should encourage, but not mandate, the correct capitalisation of scientific names, so &amp;quot;''Anas platyrhynchos'''&amp;quot; not &amp;quot;''anas platyrhynchos''&amp;quot; nor (except historically) &amp;quot;''Anas Platyrhynchos''&amp;quot;. A reminder that such names should be styled with italics will also be included.&lt;br /&gt;
&lt;br /&gt;
===Straw man proposal===&lt;br /&gt;
&lt;br /&gt;
See : [[species-strawman-01]]&lt;br /&gt;
&lt;br /&gt;
==Bill Hull==&lt;br /&gt;
[http://www.mangoverde.com/ My website] has 17000+ photos of 4700+ bird species. There are also a handful of butterflies (organized very poorly as I am unaware of any published butterfly world taxonomies) and shortly will have a number of dragon/damselflies. The site is made up of static pages but is built from a database so it is easy for me to add it new HTML tags to the pages. If you are interested in some prototyping at some point I can probably build stuff into the pages. - Bill Hull&lt;br /&gt;
&lt;br /&gt;
==Roger Hyam==&lt;br /&gt;
===Taxonomic Databases Working Group===&lt;br /&gt;
&lt;br /&gt;
[http://www.tdwg.org/index.html TDWG] is the organisation for standardisation in exchange of biodiversity data. The organisation has now (November 2007) undergone some re-organization. It has a new collaborative development environment, standards process, standards architecture and it has formed alliances with major organizations in the domains of geospatial and ecological data.&lt;br /&gt;
&lt;br /&gt;
Central to the TDWG standards architecture are the [http://wiki.tdwg.org/twiki/bin/view/TAG/LsidVocs LSID vocabularies]. The role of these vocabularies is to define URIs for the nuts-and-bolts concepts that occur in the biodiversity informatics domain. See [http://wiki.tdwg.org/twiki/bin/view/TAG/WhatIsTheOntology a description of what the TDWG ontology is] for details. Although the vocabularies are defined in OWL the intention is for their URIs to be used as namespaces across different XML and non-XML based technologies. They can act as a central mapping point for those hard pressed developers who want to combine data presented to them in many formats.&lt;br /&gt;
&lt;br /&gt;
The species microformats that are proposed here are a good thing. The only danger is that they re-define any of the central terms defined in the TDWG vocabularies. If they do that then they are creating another language instead of extending HTML to embrace existing semantics - which I don't think is their intent. It would be nice to have the data in web pages in a form that can be combined with the hundreds of millions of records marked up with the TDWG URIs.&lt;br /&gt;
&lt;br /&gt;
If there is enough belief in the need for a Species Microformat why not propose a TDWG Applicability Statement and take it through a peer review process. The [http://www.tdwg.org/about-tdwg/process/ TDWG process] is quite simple and free (unless you count blood, sweat and tears). You would need to form a Task Group with a charter saying what you intended to do. As convener of the TAG Interest Group I would willingly host the Task Group. You could then propose a standard and have it reviewed by a range of biologists and IT people before it becomes ratified and recommended for adoption. RogerHyam 2007-11-5&lt;br /&gt;
&lt;br /&gt;
==Malcolm Storey==&lt;br /&gt;
(extracted from e-mails to Andy Mabbett, by kind permission)&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Hopefully I'll have more time for things like this in the New Year, but expect it all be done and dusted by then!!&amp;quot; - Malcolm Storey, [http://www.bioimages.org.uk/ BioImages] &lt;br /&gt;
&lt;br /&gt;
===ICZN, ICBN et al===&lt;br /&gt;
You don't cover the full set of levels of taxonomic hierarchy defined by the relevant body ICZN or ICBN (plus the others - one each for garden plant varieties, bacteria, viruses. Don't know about mycoplasmas, diseases, BSE factors etc.&lt;br /&gt;
&lt;br /&gt;
ICBN Ranks listed [http://www.bgbm.org/iapt/nomenclature/code/SaintLouis/0007Ch1Art003.htm],  [http://www.bgbm.org/iapt/nomenclature/code/SaintLouis/0008Ch1Art004.htm]&lt;br /&gt;
&lt;br /&gt;
AIUI ICBN only goes down to species.&lt;br /&gt;
&lt;br /&gt;
ICZN isn't so easy: [http://www.nhm.ac.uk/hosted_sites/iczn/]&lt;br /&gt;
&lt;br /&gt;
:1.2.2. The Code regulates the names of taxa in the family group, genus group, and species group. Articles 1-4, 7-10, 11.1-11.3, 14, 27, 28 and 32.5.2.5 also regulate names of taxa at ranks above the family group. (But none of the above articles list the taxonomic ranks.)&lt;br /&gt;
 &lt;br /&gt;
ICZN Only goes down to subspecies (art 1.3.4)&lt;br /&gt;
&lt;br /&gt;
Note also: &lt;br /&gt;
&lt;br /&gt;
:1.4.  Independence.  Zoological nomenclature is independent of other systems of nomenclature in that the name of an animal taxon is not to be rejected merely because it is identical with the name of a taxon that is not animal (see Article 1.1.1)&lt;br /&gt;
&lt;br /&gt;
(eg Trichia, Oenanthe, Melanotus)&lt;br /&gt;
&lt;br /&gt;
Myxomycetes are the exception - they're in kingdom protozoa which falls under ICZN but they fall under the ICBN name space. (Hence &amp;quot;Trichia&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
===DNA===&lt;br /&gt;
You may want to consider refs to DNA sequences. They're not part of taxonomy, but they can be considered the bottom rung of the taxonomic hierarchy and they will be of increasing significance.&lt;br /&gt;
&lt;br /&gt;
===Typography===&lt;br /&gt;
what about ''Adalia 2-punctata'', and ''Adalia bipunctata'' (not to mention those with hyphens [or apostrophes] which may get left out. And what about accented characters)?&lt;br /&gt;
&lt;br /&gt;
:''Adalia 2-punctata'' is an abbreviation of ''Adalia bipunctata'', so:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;abbr class=&amp;quot;binominal&amp;quot; title=&amp;quot;Adalia bipunctata&amp;quot;&amp;gt;Adalia 2-punctata&amp;lt;/abbr&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[User:AndyMabbett|AndyMabbett]] 09:55, 21 Oct 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
===Gaps===&lt;br /&gt;
The hierarchy is not always fully populated. Not every species belongs to a class. Maybe this was where fungi are different. In Paul Kirk's databases (which are the official ones used to drive the checklists and NBN) he has fixed fields for the higher level taxa which means that only certain ranks can be used. The blanks he fills in (mostly!!) with &amp;quot;insertae sedis&amp;quot; (think it's Latin for &amp;quot;unknown seat&amp;quot;). In my database I use a self-join which gives much more flexibility. Anyway there are lots of &amp;quot;insertae sedis&amp;quot; in Paul's database! &lt;br /&gt;
&lt;br /&gt;
===Homonyms===&lt;br /&gt;
''Apion carduorum'' sensu Morris 1990 is ''Apion gibbirostre'' (Gyllenhal, 1813). ''Apion carduorum'' Kirby, 1808 is a different species. &lt;br /&gt;
&lt;br /&gt;
:You'd mark the former up as something like&lt;br /&gt;
:&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;abbr class=&amp;quot;binominal&amp;quot; title=&amp;quot;Apion gibbirostre&amp;quot;&amp;gt;''Apion carduorum'' sensu Morris 1990&amp;lt;/abbr&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:[[User:AndyMabbett|AndyMabbett]] 12:21, 5 Oct 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
===Citations for authorites===&lt;br /&gt;
If people are citing the authority in full they would include the literature reference, not just the date e.g.&lt;br /&gt;
:''Cuphophyllus niveus'' (Scop.) Bon, ''Doc. Mycol.'' 14(56): 11 (1985)[1984]&lt;br /&gt;
&lt;br /&gt;
::Perhaps we should allow for the inclusion of an [[hcitation|hCitation]]? [[User:AndyMabbett|Andy Mabbett]] 15:08, 28 Feb 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
==Hyppo==&lt;br /&gt;
===Nomenclatural challenge===&lt;br /&gt;
You asked for comments. One challenge I see is the difference in Nomenclature for Animalia and Plantae (coming from the old 2 kingdom system). For Plantae the International Code of Botanical Nomenclature[http://www.bgbm.org/iapt/nomenclature/code/SaintLouis/0000St.Luistitle.htm] is used and for Animalia the code from [http://www.iczn.org/ http://www.iczn.org/]. Animalia code is not officially accepted but ICZN tries to be authoritive starting from 2008.&lt;br /&gt;
&lt;br /&gt;
The two different nomenclatural systems differ in a few areas, and they affect markup.&lt;br /&gt;
&lt;br /&gt;
*Subgenus (Plantae): ''Dendroceros'' subg. ''Apoceros''&lt;br /&gt;
*Subgenus (Animalia): ''Sula (Morus)''&lt;br /&gt;
&lt;br /&gt;
*Subspecies (Plantae): ''Begonia grandis'' ssp. ''evansiana''&lt;br /&gt;
*Subspecies (Animalia): ''Gorilla beringei graueri'' &lt;br /&gt;
:--[[User:Hyppo|Hyppo]] 14:23, 9 Oct 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
:I would mark those up as:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;span class=genus&amp;quot;&amp;gt;Dendroceros&amp;lt;/span&amp;gt; subg. &amp;lt;span class=&amp;quot;subgenus&amp;quot;&amp;gt;Apoceros&amp;lt;/span&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;span class=genus&amp;quot;&amp;gt;Sula&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;subgenus&amp;quot;&amp;gt;Morus&amp;lt;/span&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;span class=&amp;quot;binominal&amp;quot;&amp;gt;Begonia grandis&amp;lt;/span&amp;gt; ssp. &amp;lt;span class=&amp;quot;subspecies&amp;quot;&amp;gt;evansiana''&amp;lt;/span&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;span class=&amp;quot;binominal&amp;quot;&amp;gt;Gorilla beringei&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;subspecies&amp;quot;&amp;gt;graueri&amp;lt;/span&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:With wrapping class=&amp;quot;biota&amp;quot; and possibly kingdom, attributes. &lt;br /&gt;
&lt;br /&gt;
:[[User:AndyMabbett|AndyMabbett]] 11:37, 10 Oct 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
==Cyndy Parr==&lt;br /&gt;
&lt;br /&gt;
The ideas expressed here are promising. Below are my comments on all the preceding -- as I have time I'll organize, elaborate, and try to move parts into the right discussion threads above.&lt;br /&gt;
&lt;br /&gt;
In the [http://spire.umbc.edu Spire project] we have been developing ontologies in OWL for taxonomic names and hierarchies. Ideally, we'd like to have a microformat where people can tag a scientific name and an application can then check an ontology of their choice for more information (richer semantics).&lt;br /&gt;
&lt;br /&gt;
We would discourage full expression of the Linnaean hierarchy except for those who are maintaining such classifications (such as uBio). The rest of the hierarchy can be retrieved ontologically as necessary. &lt;br /&gt;
&lt;br /&gt;
Better to tie the scientific name (taxon name) to the authority or ontology from which it came. I.e. for those who are able to provide information on taxonomic concepts,  support for TCS (Taxonomic Concept Schema) fields would be important.&lt;br /&gt;
&lt;br /&gt;
I prefer &amp;quot;taxon&amp;quot; or &amp;quot;taxon-name&amp;quot; or TaxonName over biota (which is plural, and too close to biotic which has a far larger scope than taxa). Would prefer &amp;quot;binomial&amp;quot; to &amp;quot;binominal&amp;quot;&lt;br /&gt;
*I also favour &amp;quot;taxon&amp;quot; over &amp;quot;biota&amp;quot; simply because it the more commonly used term. I also prefer &amp;quot;binomial&amp;quot;. I did a quick straw poll of various experts and all favoured binomial. Neither is technically incorrect, but binomial is more commonly used. Indeed, a Google search for binomial returns 6,580,000 results while binominal returns 342,000 and a &amp;quot;did you mean: binomial&amp;quot; prompt. --[[User:CharlesRoper|Charles Roper]] 04:12, 9 Jan 2007 (PST)&lt;br /&gt;
**This [http://www.googlebattle.com/index.php?domain=%22binomial+name%22+-equation&amp;amp;domain2=%22binominal+name%22+-equation&amp;amp;submit=Go%21 binomial vs. binominal Google battle] seems even more conclusive. [[User:AndyMabbett|Andy Mabbett]] 06:17, 9 Jan 2007 (PST)&lt;br /&gt;
&amp;quot;class&amp;quot; is difficult not only because of the confusion with the programming  concept of classes, but because it is a taxonomic rank. However, most of us have figured out the difference by now so this is not critical.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;cname&amp;quot; should be &amp;quot;comname&amp;quot; or &amp;quot;common-name&amp;quot; or &amp;quot;vernacular&amp;quot; to make it more obvious what the information is. A sub-component would be the language for which that common name is used ( something like an HTML attribute lang=&amp;quot;en&amp;quot;)&lt;br /&gt;
*I also favour &amp;quot;common-name&amp;quot; or &amp;quot;vernacular&amp;quot; --[[User:CharlesRoper|Charles Roper]] 04:12, 9 Jan 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
There are known conflicts between names across kingdoms (as current codes of nomenclature allow these). Thus specification of kingdom may be encouraged. Disambiguation could be handled by applications outside the microformats (this could be difficult), or they could be dealt with in the core microformat: e.g. plant-taxon or fungal-taxon or animal-taxon.&lt;br /&gt;
&lt;br /&gt;
A sightings microformat is a good idea and I would be interested in being involved in that. We've been toying with this in OWL and also using structured blogging over at http://fieldmarking.reger.com&lt;br /&gt;
&lt;br /&gt;
Your terms such as gender (better: sex), age bracket (better: life stage), count, type (better: depending on the meaning, caste or morph) all belong in a specimen or sighting microformat and used in combination with the taxon microformat, not be part of it.&lt;br /&gt;
&lt;br /&gt;
===Response by Andy Mabbett===&lt;br /&gt;
Thank you very much for your detailed contribution. I have a few responses:&lt;br /&gt;
&lt;br /&gt;
*We would discourage full expression of the Linnaean hierarchy except for those who are maintaining such classifications (such as uBio).&lt;br /&gt;
** Why? Also, I'm not aware of any microformat which is restricted to a subset of users, nor how this would be done. How would you suggest that someone mark up this: &amp;quot;Not all of the Passeriformes sing&amp;quot;?&lt;br /&gt;
*** I would prefer express this something like so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;taxon lsidres:urn:lsid:ubio.org:namebank:21833&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;i class=&amp;quot;sci-name&amp;quot;&amp;gt;Passeriformes&amp;lt;/i&amp;gt;&lt;br /&gt;
  &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or, to simplify further:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
  &amp;lt;i class=&amp;quot;taxon sci-name lsidres:urn:lsid:ubio.org:namebank:21833&amp;quot;&amp;gt;Passeriformes&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or, at the simplest level:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
  &amp;lt;i class=&amp;quot;taxon&amp;quot;&amp;gt;Passeriformes&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Simply marking up the word as a taxon would lighten the load of any parser, making its job much simpler. --[[User:CharlesRoper|Charles Roper]] 10:50, 8 Jan 2007 (PST)&lt;br /&gt;
***Your first example requires the author of that page to find LSID, even assuming that they know such a thing exists. How is that &amp;quot;paving the cowpaths&amp;quot;? Your latter example removes semantic detail which is included in the straw-man proposal. It is akin to removing all the children of &amp;quot;adr&amp;quot; in hCard. I think your parser-load issue is a red herring. [[User:AndyMabbett|Andy Mabbett]] 11:07, 8 Jan 2007 (PST)&lt;br /&gt;
**** I would argue that finding and using an LSID would not be a difficult task for any author who is using a microformat. I don't see how it is any more difficult - in fact I see it as being easier - than manually marking up ranks. Why is parser-load a red herring? --[[User:CharlesRoper|Charles Roper]] 12:26, 8 Jan 2007 (PST)&lt;br /&gt;
***Nice example (having done my doctoral work on a Passerine that may or may not be singing...). Absolutely I'd recommending marking up &amp;quot;Passeriformes&amp;quot; but no need to go on to specify &amp;quot;Aves.&amp;quot; I'm still grokking microformats so I don't think we've got a conflict. [[User:CyndyParr|CyndyParr]] 10:20, 10 Jan 2007 (PST)&lt;br /&gt;
****''Aves'' is available for use, but not required, so indeed, we don't have conflict ;-) [[User:AndyMabbett|Andy Mabbett]] 10:42, 10 Jan 2007 (PST)&lt;br /&gt;
*The rest of the hierarchy can be retrieved ontologically as necessary.&lt;br /&gt;
**That's a use-case once the uF is published, certainly. the proposal doesn't require that the hierarchy be marked-up, it merely allows for it, in cases where it is '''already published'''.&lt;br /&gt;
***I've yet to see any consistent examples of a hierarchy being marked-up using class names resembling those found in the proposal. A microformat is supposed take (and perhaps tweak, or clean up) mark-up practises that are '''already in use''', not invent new ones. In other words, microformats should pave the cowpaths. While allowing for the marking-up of the hierarchy is fair enough (I understand the reasons for wanting that option), I believe the vast majority of authors do not need that facility, or (from my own experience) do not have time or energy to make use of anything more complex than simply marking-up a piece of text as a taxonomic name. In its current state, I don't believe the current species microformat proposal fulfils any of the &amp;quot;philosophy of microformats&amp;quot; points raised in [http://ifindkarma.typepad.com/relax/2004/12/microformats.html this article]. I believe the added complexity acts as a disincentive potential users and is also clearly confusing. With taxonomic intelligence (hierarchies, synonymy, etc) being available from elsewhere (e.g. uBio), why have it embedded in the microformat? What examples of this kind of usage are there and what leads you to believe authors '''will''' use it, if it's available? [[rel-license]] is an example of a microformat that is simple and holds intelligence elsewhere. I believe simplicity is the key to a successful species microformat. --[[User:CharlesRoper|Charles Roper]] 10:50, 8 Jan 2007 (PST)&lt;br /&gt;
****''I've yet to see any consistent examples of a hierarchy being marked-up using class names resembling those found in the proposal.'' Perhaps not but, unlike other uFs, in taxonomy there exist clearly defined standards for the names of the components of taxonomic names. This is akin to the pre-existing class names from vCard, as used in hCard.&lt;br /&gt;
*****Not so: vCard is widely used standard already and thus it was a natural progression to develop hCard. There is no software based vCard equivalent of the taxonomic hierarchy in common use that I am aware of.&lt;br /&gt;
****''A microformat is supposed take (and perhaps tweak, or clean up) mark-up practises that are '''already in use''''' Taxonomic classes ''''are '''' already in use.[[User:AndyMabbett|Andy Mabbett]]&lt;br /&gt;
*****My concern still stands that there is no consistent mark-up usage that I can find.&lt;br /&gt;
***Fair enough [[User:CyndyParr|CyndyParr]] 10:20, 10 Jan 2007 (PST)&lt;br /&gt;
****''I believe the vast majority of authors [...] do not have time or energy to make use of anything more complex than simply marking-up a piece of text as a taxonomic name''' and - as has been pointed out previously, they will be able to do the latter, and nobody will force them to do the former. Why should they not, though, be able to do the latter should they wish?&lt;br /&gt;
*****As I say, I find the concept of allowing the full suite of ranks to be fair - I understand your desire to have them in there. I just feel that the complexity they add to the specification will put off authors and confuse them. I also maintain that very few authors will make use of this extra complexity. Should we have some sort of poll to try and determine how many people would be able to make use of the full proposal? I'm not totally against having all of the ranks in the Species microformat, I've just yet to be convinced they are necessary or conducive to adoption of the standard. --[[User:CharlesRoper|Charles Roper]] 12:26, 8 Jan 2007 (PST)&lt;br /&gt;
****''What examples of this kind of usage are there'' Those on [[species-examples]], e.g. Wikipedia.&lt;br /&gt;
*****I've yet to find any consistent mark-up usage.--[[User:CharlesRoper|Charles Roper]] 12:26, 8 Jan 2007 (PST)&lt;br /&gt;
****''[[rel-license]] is an example of a microformat that is simple and holds intelligence elsewhere'''' It holds no intelligence elsewhere, which was not already on the pre-microformatting page.[[User:AndyMabbett|Andy Mabbett]] 11:07, 8 Jan 2007 (PST)&lt;br /&gt;
*****The license on the end of the rel-license link is the intelligence. To look at it from a different angle, why not embed the license information within class attributes? Why not have a full license microformat, just in case some author needs it? Rel-license as it stands serves the needs of most authors most of the time, which is a fundamental philosophy of microformats.&lt;br /&gt;
*Better to tie the scientific name (taxon name) to the authority or ontology from which it came.&lt;br /&gt;
**That would require the publisher to add extra data, which they might not wish to publish, nor, indeed, have to hand. Microformats are about recognising what data is '''already''' published and then enabling people to add semantics which identify the type of data on their pages.&lt;br /&gt;
***I'm just suggesting support for such authority or ontology for those of us who think it important [[User:CyndyParr|CyndyParr]] 10:20, 10 Jan 2007 (PST) &lt;br /&gt;
****Again, the option to do so is in the current proposal. [[User:AndyMabbett|Andy Mabbett]] 10:42, 10 Jan 2007 (PST)&lt;br /&gt;
*[common names] A sub-component would be the language for which that common name is used (something like an HTML attribute lang=&amp;quot;en&amp;quot;)&lt;br /&gt;
**Indeed, but that's already available, and (on properly constructed pages) should already be on the parent container. [[User:AndyMabbett|Andy Mabbett]]&lt;br /&gt;
***Fair enough [[User:CyndyParr|CyndyParr]] 10:20, 10 Jan 2007 (PST)&lt;br /&gt;
*conflicts between names across kingdoms (as current codes of nomenclature allow these). Thus specification of kingdom may be encouraged.&lt;br /&gt;
**already in the proposal! [[User:AndyMabbett|Andy Mabbett]]&lt;br /&gt;
***but perhaps the proposal could be more explicit about the importance of kingdom given its important role in disambiguating species names (using a name of any other rank is less desirable given instability and required application overhead). I realize that I'm going beyond the microformat itself to &amp;quot;best practices&amp;quot; but please forgive me; I've been wrangling with taxonomic databases for a long time. [[User:CyndyParr|CyndyParr]] 10:20, 10 Jan 2007 (PST)&lt;br /&gt;
*Disambiguation could be handled by applications outside the microformats&lt;br /&gt;
**Not sure what you mean here, since all parsing is done &amp;quot;outside microformats&amp;quot;. [[User:AndyMabbett|Andy Mabbett]]&lt;br /&gt;
***Thanks for the clarification [[User:CyndyParr|CyndyParr]] 10:20, 10 Jan 2007 (PST)&lt;br /&gt;
***Another reason to make use of nameservers, rather than embedding the information within the microformat. --[[User:CharlesRoper|Charles Roper]] 10:50, 8 Jan 2007 (PST)&lt;br /&gt;
**** And how is enforcing the use of nameservers &amp;quot;paving the cowpaths&amp;quot;? [[User:AndyMabbett|Andy Mabbett]] 11:07, 8 Jan 2007 (PST)&lt;br /&gt;
*****The use of nameservers isn't enforced; it's optional (if disambiguation or further taxonomic intelligence is required). --[[User:CharlesRoper|Charles Roper]] 12:26, 8 Jan 2007 (PST)&lt;br /&gt;
******Agreed [[User:CyndyParr|CyndyParr]] 10:20, 10 Jan 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
(I'm either in agreement with your other points, or ambivalent.)&lt;br /&gt;
&lt;br /&gt;
Thank you again - do stick around. Are you on the [[mailing-lists#microformats-discuss|mailing list]]?&lt;br /&gt;
&lt;br /&gt;
[[User:AndyMabbett|Andy Mabbett]] 11:06, 5 Jan 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
*I am now! [[User:CyndyParr|CyndyParr]] 10:20, 10 Jan 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
==Pengo==&lt;br /&gt;
&lt;br /&gt;
Unfortunately scientific names seem to change as often as common names. I have some examples and use cases this microformat needs to address, around the problems of ambiguity:&lt;br /&gt;
&lt;br /&gt;
Ambiguity 1. Ambiguous scientific names.. ''[http://en.wikipedia.org/wiki/Sousa_chinensis Sousa chinensis]'' may either refer to '''Chinese White Dolphin''' (also known as ''Sousa chinensis chinensis'') or Humpback dolphin, also known as '''''Sousa''''' (genus) which includes up to five species or subspecies of dolphin including the Chinese White Dolphin. I don't care whether the Chinese White Dolphin is a species or subspecies, but the microformat needs to allow the user to be specific about which system is being addressed.&lt;br /&gt;
&lt;br /&gt;
Ambiguity 2. Another example is the [http://en.wikipedia.org/wiki/Orangutan Orangutan]... or Orangutans. Organutans were once believed to be a single species, but are now considered two separate species. The problem is that the new scientific name for just the Bornean species (''Pongo pygmaeus'') is the same as the old scientific name which encompassed both species (''Pongo pygmaeus''). Meanwhile the new scientific name for the Sumatran Orangutan (''Pongo abelii'') is always unambiguous. &lt;br /&gt;
&lt;br /&gt;
Ambiguity 3. ''[http://en.wikipedia.org/wiki/Doronomyrmex_pocahontas Doronomyrmex pocahontas]'' is an ant species that probably doesn't belong in the genus ''Doronomyrmex'', but rather ''Leptothorax''. But, until a full taxonomic study of the known species of ''Doronomyrmex'' and ''Leptothorax'' is carried out, it will stay there. Meanwhile the the term &amp;quot;''Leptothorax'' ([http://en.wiktionary.org/wiki/sensu_stricto sensu stricto])&amp;quot; is used to mean &amp;quot;in the sense of the original author&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Use cases: &lt;br /&gt;
So how do we: &lt;br /&gt;
# tag species in new documents, where we are using the most current nomenclature in the tags, to indicate that we don't mean the old nomenclature&lt;br /&gt;
# tag species allowing for new nomenclature to arise which may obsolete what we're using&lt;br /&gt;
# tag species in old documents, where we have updated the nomenclature in the tag, but the taxt may be referring to the old nomenclature, and we want to indicate that the updated nomenclature is being used.&lt;br /&gt;
# tag species in [others'] documents that are tagged automatically and where the specific nomenclature being used is unknown or ambiguous&lt;br /&gt;
# address issues where competing nomenclatures exist side-by-side, or transition periods&lt;br /&gt;
# tag species that have some clues as to which nomenclature is being used, e.g. the date of publication, and the author.&lt;br /&gt;
# tag a taxon which is now considered paraphyletic&lt;br /&gt;
# decide what's out of the scope of this microformat&lt;br /&gt;
&lt;br /&gt;
Brainstorm solutions:&lt;br /&gt;
* Allow an &amp;quot;old-synonym&amp;quot; field, which strictly lists the previous name of the species (and never a newer name). So, e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;span species=&amp;quot;Pongo pygmaeus&amp;quot; old-synonym=&amp;quot;Pongo pygmaeus pygmaeus&amp;quot;&amp;gt;Bornean Orangutan&amp;lt;/span&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Allow the English common name to be included, when it clears ambiguity. E.g. the &amp;quot;Chinese White Dolphin&amp;quot; has always been called that, regardless of whether it was considered a species or subspecies.&lt;br /&gt;
* Allow a taxonomy-year field for what year the taxonomy used in the tag comes from.&lt;br /&gt;
* Use a UID as described by others above.&lt;br /&gt;
* Have an ad-hoc &amp;quot;disambiguation&amp;quot; field which could include anything to disambiguate, such as years, synonyms, &amp;quot;sensu stricto&amp;quot;, common names, authors (i.e. &amp;quot;in the sense of this author&amp;quot;) etc. What goes in it for a particular taxon will develop from usage.&lt;br /&gt;
* Have a taxonomy-uncertain=&amp;quot;true&amp;quot; field to indicate it has been (for example) automatically tagged and may not be accurate, so that other suggestions can be given by 3rd party software.&lt;br /&gt;
&lt;br /&gt;
Basically I don't synonyms are necessary unless they are to show that the species was previously called something else, which may help to give a more exact meaning.&lt;br /&gt;
&lt;br /&gt;
Comments? Are there already existing solutions to this problem in the real world?&lt;br /&gt;
[[User:PeNGo|Pengo]] 19:49, 28 Jan 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
===Response to Pengo by Andy Mabbett===&lt;br /&gt;
Thank you for your expert contribution. Of your proposed solutions, the common (or vernacular) name, UID and author/ year are already in the current proposal. It may be sensible to have a &amp;quot;synonym&amp;quot; property (as used on http://en.wikipedia.org/wiki/Doronomyrmex_pocahontas), but I don't think &amp;quot;old-synonym&amp;quot; is particularly well named. Perhaps, if it's needed at all, &amp;quot;formerly&amp;quot; would be better? It is worth remembering, though, that the microformat is meant for labelling what people '''''already''''' publish and, for instance, http://en.wikipedia.org/wiki/Bornean_Orangutan refers to ''Pongo pygmaeus'', not any previous name. [[User:AndyMabbett|Andy Mabbett]] 02:20, 30 Jan 2007 (PST)&lt;br /&gt;
* Then most effective way to disambiguate is to use a UID. I feel other solutions would over-complicate the specification. I think we need to put some effort into populating the examples regrouped page with specific examples of publishing styles, e.g., plain binomials, plain common names, scientific names with common names, scientific names with synonyms, binomial with subspecies, etc. [[User:CharlesRoper|Charles Roper]] 05:25, 2 Feb 2007 (PST)&lt;br /&gt;
**There are very few exmples of UIDs being published in-the-wild. [[User:AndyMabbett|Andy Mabbett]] 06:00, 2 Feb 2007 (PST)&lt;br /&gt;
***I found a good source of synonym usage; see the Coleopterist's Checklist of Beetles of the British Isles: http://www.coleopterist.org.uk/checklist.htm. Look for the indented specific epithet names, e.g. in the family [http://www.coleopterist.org.uk/haliplidae-list.htm HALIPLIDAE], ''pallens'' Fowler, 1887 and ''halberti'' Bullock, 1928 are examples of synonyms, with the favoured specific epithet being ''confinis'' Stephens, 1828. On a more general note, checklists such as this are ripe for microformatting and are an excellent example of common markup practice. The species microformat could be used to great effect with content such as this, creating minable dictionaries of species names which are, in turn, essential tools in for use in biodiversity informatics. [[User:CharlesRoper|Charles Roper]] 14:43, 24 Feb 2007 (PST)&lt;br /&gt;
***Re. UIDs: yes, we have an interesting chicken &amp;amp; egg situation here. Without a reliable way to publish a UID (other than making them human readable text, which is undesirable) how are we supposed to be able to make use of them? A microformat would be a good means with which to deploy UIDs, but it is frowned upon to implement a pattern that isn't already being practised. Judging by the messages here, on the discussion list and elsewhere, there is clearly a desire for linking taxon names with UIDs, particularly LSIDs, which look set to become the standard UID for taxonomic naming. [[User:CharlesRoper|Charles Roper]] 10:41, 2 Feb 2007 (PST)&lt;br /&gt;
****Well, the proposal allows for the inclusion of UIDs (as with all the suggested attributes, some work on the exact format might need to be done), should people to chose to publish them; whether or not they do is not something for uFs to push for. [[User:AndyMabbett|Andy Mabbett]] 13:13, 2 Feb 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
==Charles Roper==&lt;br /&gt;
===Synonyms===&lt;br /&gt;
I found an interesting [http://collections2.eeb.uconn.edu/collections/insects/CTBnew/duodecimguttata.html example of synonym usage] in the [http://collections2.eeb.uconn.edu/collections/insects/CTBnew/checklist.htm Tiger Beetles of Connecticut checklist]. In the particular example cited, the synonyms refer to, or are associated with, the species name - ''Cicindela duodecimguttata'' Dejean 1825. Synonyms are often mentioned alongside or near preferred scientific names; how should we tie them together, especially when, as in this case, the name and the synonym are not positioned close to one another, but are still clearly associated? As a segue to this question, how should multiple synonymous common names be represented? How about common names in different languages? For example, the [http://names.ubio.org/browser/details.php?names=on&amp;amp;authors=on&amp;amp;sci=on&amp;amp;vern=on&amp;amp;namebankID=2478269 Otter has many different common names].&lt;br /&gt;
&lt;br /&gt;
:I take it you refer to the text which may be paraphrased (by omitting some prose) as:&lt;br /&gt;
&lt;br /&gt;
::'''''Cicindela duodecimguttata'' is known from 23 localities. ''Cicindela duodecimguttata'', once classified as a subspecies of ''C. repanda'', shares many traits with ''C. repanda''. Where ''C. duodecimguttata'' occurs, the more common ''C. repanda'' is usually found.'''&lt;br /&gt;
&lt;br /&gt;
::'''Synonomies: ''Cicindela proteus'' Kirby 1837:9. ''Cicindela bucolica'' Casey 1913:28. ''Cicindela hudsonica'' Casey 1916:29. ''Cicindela edmontonensis'' Carr 1920:21'''&lt;br /&gt;
&lt;br /&gt;
:The problem would seem to be that ''C. repanda'' is referred to both as a species in its own right, and as a past synonym of ''C. duodecimguttata''. If the whole thing is wrapped in one &amp;lt;code&amp;gt;div class=&amp;quot;biota&amp;quot;&amp;lt;/code&amp;gt;, allowing the other listed synonyms to be included, then how is ''C. repanda'' to be marked up as a species in its own right? &lt;br /&gt;
&lt;br /&gt;
:I would mark up the first occurrence of each, then use the include-pattern to &amp;quot;attach&amp;quot; the other listed synonyms with the former (I've only included one synonym in the following, for clarity):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;biota&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;binominal&amp;quot;&amp;gt;Cicindela duodecimguttata&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;object class=&amp;quot;include&amp;quot; data=&amp;quot;#C-proteus&amp;quot;&amp;gt;&amp;lt;/object&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
is known from 23 localities. Cicindela duodecimguttata, once classified as a subspecies of&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;span class=&amp;quot;biota&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;binominal&amp;quot;&amp;gt;C. repanda&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
, shares many traits with C. repanda. Where C. duodecimguttata occurs, the more common C. repanda is usually found. &lt;br /&gt;
&lt;br /&gt;
Synonomies: &lt;br /&gt;
&amp;lt;span class=&amp;quot;synonym&amp;quot; id=&amp;quot;C-proteus&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;binominal&amp;quot;&amp;gt;Cicindela proteus&amp;lt;/span&amp;gt; [or maybe &amp;quot;synonym-binominal&amp;quot; ?]&lt;br /&gt;
  &amp;lt;span class=&amp;quot;authority&amp;quot;&amp;gt;Kirby&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;year&amp;quot;&amp;gt;1837&amp;lt;/span&amp;gt;:9.&amp;lt;/span&amp;gt;&lt;br /&gt;
Cicindela bucolica Casey 1913:28. Cicindela hudsonica Casey 1916:29. Cicindela edmontonensis Carr 1920:21&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:I might then use the its entry on the &amp;quot;shares many traits&amp;quot; line to mark up ''C. repanda'' as an synonym, and include it in the same way.&lt;br /&gt;
&lt;br /&gt;
:Multiple and foreign-language common names would be catered for by allowing the common name attribute to be &amp;quot;0 or many&amp;quot; (the first such occurrence having precedence), and using a &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; attribte where appropraite.&lt;br /&gt;
&lt;br /&gt;
:[[User:AndyMabbett|Andy Mabbett]] 14:42, 28 Feb 2007 (PST)&lt;br /&gt;
&lt;br /&gt;
==Ryan Kaldari==&lt;br /&gt;
1. The name of this microformat needs to be changed ASAP. Calling it &amp;quot;species&amp;quot; is confusing and misleading. There was even resistance to implementing this microformat in Wikipedia solely because of the confusing name.[http://en.wikipedia.org/wiki/Template_talk:Taxobox#Hidden_microformat_category]&lt;br /&gt;
&lt;br /&gt;
2. Synonyms should be added as a node to the format.&lt;br /&gt;
&lt;br /&gt;
3. I wouldn't worry too much about accommodating LSIDs specifically, as it seems to be a rapidly dying format. Just concentrate on accommodating GUIDs in general (of any format) and identifying them as such. Also, keep in mind that many objects are going to have more than one GUID (even though this is discouraged), so we should be able to accommodate this.&lt;br /&gt;
&lt;br /&gt;
== Other use cases ==&lt;br /&gt;
Please add your suggestions!&lt;br /&gt;
&lt;br /&gt;
'Species' microformats could be used to:&lt;br /&gt;
*...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
{{species}}&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=species&amp;diff=70380</id>
		<title>species</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=species&amp;diff=70380"/>
		<updated>2021-04-28T17:16:47Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: Added inactive template per discussion in IRC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{inactive}}&lt;br /&gt;
&lt;br /&gt;
=Species=&lt;br /&gt;
&lt;br /&gt;
:'''For the latest ideas, and to make comments, please see [[species-brainstorming]].'''&lt;br /&gt;
&lt;br /&gt;
:'''Note: the original name of the proposed microformat, &amp;quot;species&amp;quot;, is likely to change, probably to &amp;quot;biota&amp;quot; or &amp;quot;taxon&amp;quot;. The former has been retained here, to avoid having to make many repetitive and perhaps redundant edits'''&lt;br /&gt;
&lt;br /&gt;
:'''The [http://www.kaply.com/weblog/2007/02/16/operator-07a-is-available/ beta of Operator] (0.7a) detects ''Species''.  [http://www.westmidlandbirdclub.com/records/lists-2004.htm A test page is available]. Work on both continues!'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
People use the vernacular AND taxonomic names of species in everyday speech and writing - just read or watch any populist gardening magazine or television programme.&lt;br /&gt;
&lt;br /&gt;
*Consider this list: &amp;quot;'''Blackbird'''&amp;quot;, &amp;quot;'''poodle'''&amp;quot;, &amp;quot;'''T Rex'''&amp;quot;, &amp;quot;'''potato'''&amp;quot;, &amp;quot;'''French Marigold'''&amp;quot;, &amp;quot;'''Wisteria'''&amp;quot;, &amp;quot;'''E. Coli'''&amp;quot;, &amp;quot;'''HIV'''&amp;quot;, &amp;quot;'''Rubella'''&amp;quot; and &amp;quot;'''human being'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;'''T Rex'''&amp;quot; is &amp;quot;''Tyrannosaurus rex''&amp;quot;; &amp;quot;'''E. Coli'''&amp;quot; is &amp;quot;''Escherichia coli''&amp;quot;; &amp;quot;'''HIV'''&amp;quot; is &amp;quot;''Human immunodeficiency virus''&amp;quot; and &amp;quot;'''Rubella'''&amp;quot; is &amp;quot;''Rubella virus''&amp;quot;. All are the taxonomic (or scientific) names of unique species.&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;'''''Wisteria'''''&amp;quot; is a taxonomic genus.&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;'''Blackbird'''&amp;quot;; &amp;quot;'''poodle'''&amp;quot;; &amp;quot;'''potato'''&amp;quot;; &amp;quot;'''French Marigold'''&amp;quot; and &amp;quot;'''human being'''&amp;quot; (arguments about Neanderthals not withstanding) are vernacular (or common) names, but still refer to individual species.&lt;br /&gt;
&lt;br /&gt;
*The scientific naming of organisms is a part of [http://www.calacademy.org/research/informatics/sblum/pub/biodiv_informatics.html biodiversity informatics] - &amp;quot;the application of information technology to the domain of biodiversity&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*The proposal aligns with [http://www.ted.com/tedprize/2007/wilson.cfm E.O Wilson's wish]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;...that we will work together to help create the key tool that we need to inspire preservation of Earth's biodiversity: the Encyclopedia of Life [...] an encyclopedia that lives on the Internet, with an ever-evolving page for every species [and which] &lt;br /&gt;
does not duplicate existing efforts, but instead incorporates them through linking [with a] search technology that can aggregate existing biological information and make it easily accessible.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*As long ago as April 1998 on [http://www.w3.org/MarkUp/future/papers/rothenburg-19980412.html Robert Rothenburg's paper on Dictionaries] (''Note 4'') said:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is missing [from HTML] is an element for marking up &amp;quot;proper names&amp;quot; (names of people, geographic locations, institutions, or even '''scientific names such as genus/species''').&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:It's interesting that microformats have given us the first three missing items - and we're now debating the fourth!&lt;br /&gt;
&lt;br /&gt;
==Proposal==&lt;br /&gt;
Imagine viewing a web page with a reference to a species - and being able to use an add-on to you browser to be taken directly to information about that species, on, say, Wikipedia, or Wikispecies, or Google Images, or another site, such as in an academic database, of your choosing. &lt;br /&gt;
&lt;br /&gt;
Your software would automatically know to search site A if the scientific name referred to a moth, site B for a bird, and site C for a plant - and you could set your preferences as to which sites those were to be, and in which order two or more were to be searched (e.g. for moths, try [http://ukmoths.org.uk/ UK Moths] first, if not found try [http://www.nhm.ac.uk/research-curation/projects/lepindex/index.html The Global Lepidoptera Names Index]).&lt;br /&gt;
&lt;br /&gt;
Or supposing someone writes a long, chronologically-ordered web page about all the birds, insects, mammals and plants they saw on a wildlife safari, with lots of prose description about the paces where they saw them and the people they were with, but you want to extract a list of species, sorted into alphabetical order within taxonomic class (birds first, then insects then...) or in taxonomic order.&lt;br /&gt;
&lt;br /&gt;
Those are just two of the things a &amp;quot;species&amp;quot; microformat might do for you.&lt;br /&gt;
&lt;br /&gt;
Your software, or  a search engine, would be able to differentiate between a pages discussing HMS Beagle, the ship, and a Beagle dog; or birds that fly as opposed to a slang term for women.&lt;br /&gt;
&lt;br /&gt;
Another benefit would be that user-agents could be instructed to treat text marked up in this way as not being in the base language of the document or element in which they occur - pronunciation should be as for Latin, they should not be translated (e.g. where a component word happens also to be a valid word in that language, such as the genus '''''Colon''''', '''''Circus''' cyaneus'', ''Hesperia '''comma''''', or anything with ''major'' or ''minor'' on an English-language page) and should not be spell-checked, or be spell-checked with a specialised dictionary (a need identified in this [http://www.alvestrand.no/pipermail/ietf-languages/2003-February/000590.html 2003 ietf-languages discussion of language values for taxonomic names]).&lt;br /&gt;
&lt;br /&gt;
A further benefit the species microformat would bring is in the enriching and enhancement of species checklists, which are commonly found on the web. Broadly speaking, a species checklist is a list of taxa, usually for a particular group of similar organisms such as birds or vascular plants, found within a particular geographical region (a country, [http://www.westmidlandbirdclub.com/records/lists.htm a region], a county, or a specific site, large or small). A typical example of a species checklist is the [http://www.coleopterist.org.uk/checklist.htm Checklist of Beetles of the British Isles] which, as the name suggests, lists beetles known to be found within the British Isles. A [http://www.google.com/search?q=species+checklist Google Search for &amp;quot;species checklist&amp;quot;] will reveal many other such examples. Species checklists are presented in a broadly consistent manner but are usually unable to be parsed and utilised by computers due to the lack of a common standard for marking them up in HTML. The species microformat would provide that common standard. A fully microformat enabled checklist would be parsable by computers and thus would provide developers with a means by which to aggregate and otherwise make use of this invaluable content beyond the current, rather limited, use of simple online viewing. &lt;br /&gt;
&lt;br /&gt;
A specific example of checklist use might be in enabling [http://www.aditsite.co.uk/html/choosing_recording_software.html biological recording software] to parse and aggregate checklists in order to include them in their own species dictionaries. Typically there are waits of many months or even years while humans collate checklist changes manually for inclusion in recording software; automated checklist parsing and aggregation would greatly expedite and increase the efficiencies of this process.&lt;br /&gt;
&lt;br /&gt;
==Existing taxonomies==&lt;br /&gt;
The proposal respects all existing biological taxonomies, and is not intended to change or supplant any of them - it is intended merely to provide webmasters (from personal hobby sites to major academic databases; from news outlets to retail organisations) with a method of either:&lt;br /&gt;
&lt;br /&gt;
# marking-up a taxonomical name (or taxon-common name pair) in such a way that its components can be recognised by computers '''or'''&lt;br /&gt;
# marking up a common name, so as to associate with it a taxonomical name, in such a way that the latter's components can be recognised by computers.&lt;br /&gt;
&lt;br /&gt;
==Embedding within other microformats==&lt;br /&gt;
The proposed [[plant]] microformat (with care regime, supplier, etc.), [[hlisting]], [[recipe]] or [[hReview]] (and possibly others) could contain a scientific name microformat, in the same way that an [[hCalendar]] can contain an [[hCard]].&lt;br /&gt;
&lt;br /&gt;
See also: [[species-brainstorming#Future development]]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
====General taxonomy====&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Scientific_classification Wikipedia: Scientific classification]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Binomial_nomenclature Wikipedia: Binomial nomenclature]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Binomen Wikipedia: Binomen]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Trinomial_nomenclature Wikipedia: Trinomial nomenclature]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Trinomen Wikipedia: Trinomen]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Taxon Wikipedia: Taxon]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Rank_%28zoology%29 Wikipedia: Rank (zoology)]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Rank_%28botany%29 Wikipedia: Rank (botany)]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Cultivar Wikipedia: Cultivars]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Variety_%28biology%29 Wikipedia: Varieties]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Subvariety Wikipedia: Sub-varieties]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Form_%28botany%29 Wikipedia: forms]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Synonym_%28taxonomy%29 Wikipedia: Synonyms]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/Wikipedia:How_to_read_a_taxobox How to read a taxobox]&lt;br /&gt;
&lt;br /&gt;
====Taxonomic codes====&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Nomenclature_Codes Wikipedia: Nomenclature Codes]&lt;br /&gt;
* [http://www.iczn.org/ http://www.iczn.org/ International Commission on Zoological Nomenclature] (ICZN)&lt;br /&gt;
** [http://en.wikipedia.org/wiki/International_Code_of_Zoological_Nomenclature Wikipedia: International Code of Zoological Nomenclature]&lt;br /&gt;
**[http://en.wikipedia.org/wiki/International_Commission_on_Zoological_Nomenclature Wikipedia: International Commission on Zoological Nomenclature]&lt;br /&gt;
* [http://ibot.sav.sk/icbn/main.htm International Code of Botanical Nomenclature] (ICBN)&lt;br /&gt;
** [http://en.wikipedia.org/wiki/International_Code_of_Botanical_Nomenclature Wikipedia: International Code of Botanical Nomenclature]&lt;br /&gt;
* [http://www.the-icsp.org/ International Committee on Systematics of Prokaryotes] (ICSP)&lt;br /&gt;
**[http://en.wikipedia.org/wiki/International_Code_of_Nomenclature_of_Bacteria Wikipedia: International Code of Nomenclature of Bacteria] (ICNB)&lt;br /&gt;
* [http://www.ictvonline.org/ International Committee on Taxonomy of Viruses] &lt;br /&gt;
**[http://en.wikipedia.org/wiki/International_Committee_on_Taxonomy_of_Viruses Wikipedia: International Committee on Taxonomy of Viruses]&lt;br /&gt;
&lt;br /&gt;
====Other references====&lt;br /&gt;
&lt;br /&gt;
*[http://www.rhs.org.uk/rhsplantfinder/plantnaming.asp RHS Plant Finder: The naming of plants] &lt;br /&gt;
*[http://www.ishs.org/sci/icracpco.htm International Code of Nomenclature for Cultivated Plants]&lt;br /&gt;
*[http://www.tdwg.org/index.html Taxonomic Databases Working Group]&lt;br /&gt;
*[http://www.hortax.org.uk/ Hortax] - The Names of Garden Plants&lt;br /&gt;
*[http://www.bgbm.fu-berlin.de/iapt/nomenclature/code/SaintLouis/0000St.Luistitle.htm www.bgbm.fu-berlin.de/iapt/nomenclature/code/SaintLouis/0000St.Luistitle.htm]&lt;br /&gt;
*[http://species.wikimedia.org/wiki/Main_Page WikiSpecies]&lt;br /&gt;
*[http://en.wiktionary.org/wiki/taxonomy Wiktionary: Taxonomy]&lt;br /&gt;
*[http://jbi.nhm.ku.edu/index.php/jbi/article/view/25 Biodiversity Informatics: Taxonomic names, metadata, and the Semantic Web]&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Virus_classification  Wikipedia: Virus classification]&lt;br /&gt;
&lt;br /&gt;
==Contributors &amp;amp; Supporters==&lt;br /&gt;
*[[User:AndyMabbett|Andy Mabbett]] (proponent)&lt;br /&gt;
*[[User:RogerHyam|Roger Hyam]] (interested party?)&lt;br /&gt;
*[[User:SXBRC|Charles Roper]], [http://www.sxbrc.org.uk/ Sussex Biodiversity Record Centre] (proponent)&lt;br /&gt;
*[[User:SteveMcBill|Steve McWilliam]], [http://www.rECOrd-LRC.co.uk/ rECOrd - The Biodiversity Information System for the Cheshire region] (supporter)&lt;br /&gt;
*[[User:KierenPitts|Kieren Pitts]], [http://www.ilrt.bris.ac.uk/ ILRT - Institute for Learning and Research Technology] and the [http://www.amentsoc.org/ Amateur Entomologists' Society] (supporter)&lt;br /&gt;
*[[User:CyndyParr|Cyndy Parr]], [http://spire.umbc.edu Spire project] (interested party)&lt;br /&gt;
*[[User:AnimalDiversity|Animal Diversity Web]], [http://animaldiversity.org] (interested party)&lt;br /&gt;
*[[User:Christoph|Christoph Champ]], [http://www.christophchamp.com/] (supporter with a background in biochemistry, biophysics, and bioinformatics)&lt;br /&gt;
*[[User:David Stang|David Stang]], [http://ZipcodeZoo.com] (interested party)&lt;br /&gt;
*[[User:StuartTurner|Stuart Turner, DVM]], [http://leafpath.org Leafpath Informatics] (interested party)&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
Here's some work-in-progress:&lt;br /&gt;
{{species}}&lt;br /&gt;
*[https://addons.mozilla.org/firefox/169/ Biobar] - A customisable Firefox Extension providing a toolbar and content menu options for browsing biological data and databases, which shows what a user-agent could do, with data extracted from a species microformat&lt;br /&gt;
&lt;br /&gt;
==Examples in the wild==&lt;br /&gt;
&lt;br /&gt;
* An example use of the species microformat on the [http://www.amentsoc.org/insects/fact-files/orders/hymenoptera-parasitica.html Amateur Entomologists' Society Web site].&lt;br /&gt;
*Social network for gardeners marking up plant names with microformats [http://www.growsonyou.com/plant/Cosmos_bipinnatus Grows on You].&lt;br /&gt;
*A &amp;quot;proof-of-concept&amp;quot; example, with binomial and sub-family, but no other ranks, has been added to the Wikispecies entry for [http://species.wikimedia.org/wiki/Glaucidium_sanchezi Glaucidium sanchezi]; and to its subfamily, [http://species.wikimedia.org/wiki/Surniinae Surniinae]. See [http://species.wikimedia.org/wiki/Wikispecies:Microformat Wikispecies:Microformat] for related discussion.&lt;br /&gt;
*The current &amp;quot;[[species-brainstorming#Straw man proposal|straw man]]&amp;quot; for the Species microformat has been deployed, in part, on Wikipedia. '''''All''''' Wikipedia articles with &amp;quot;[http://en.wikipedia.org/wiki/Template:Taxobox taxoboxes]&amp;quot; (information panels on living things; and there are '''37,140''' as at the time of posting) now emit a species microformat. For example [http://en.wikipedia.org/wiki/Southern_Tamandua Southern_Tamandua] (a species) and [http://en.wikipedia.org/wiki/Anteater Anteater] (a family of species). &lt;br /&gt;
* A [http://www.westmidlandbirdclub.com/records/lists-2004.htm West Midland Bird Club test page] is available.&lt;br /&gt;
* [http://www.bbc.co.uk/nature/family/Megapode BBC Wildlife Finder]&lt;br /&gt;
&lt;br /&gt;
==Implementations==&lt;br /&gt;
*[https://addons.mozilla.org/firefox/4106/ Operator] has a user-script for parsing ''Species''. &lt;br /&gt;
*[http://buzzword.org.uk/cognition/ Cognition] has an [http://buzzword.org.uk/cognition/uf-plus.html#species experimental implementation].&lt;br /&gt;
&lt;br /&gt;
===Implementations (pending)===&lt;br /&gt;
*[http://www.spacefornature.co.uk/biorec/taxoncheck.htm Taxon Checker] - a software tool which, given a common name, searches for the relevant taxonomic data and outputs the selected species' details as (among other options) an HTML fragment. It is intended to provide templates for outputting such fragments with &amp;quot;species&amp;quot; microformat markup, once this proposal is implemented.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/User:Beastie_Bot Wikpedia's Beastie Bot] can be used to update the &amp;quot;taxoboxes&amp;quot; of articles about living things/&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=Template:inactive&amp;diff=70379</id>
		<title>Template:inactive</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=Template:inactive&amp;diff=70379"/>
		<updated>2021-04-28T17:16:32Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;padding: 1em; border: 5px solid #af0011; background: #fcd2cf; font-size: 1.5em; margin-bottom: 1em;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Warning:&amp;lt;/strong&amp;gt; This page is inactive, outdated, and no longer represents the current approach to developing microformats. See also: [[process]]&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=Template:inactive&amp;diff=70378</id>
		<title>Template:inactive</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=Template:inactive&amp;diff=70378"/>
		<updated>2021-04-28T17:14:19Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: Created, draft of template for old, inactive pages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;padding: 1em; border: 5px solid #af0011; background: #fcd2cf; font-size: 1.5em;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Warning:&amp;lt;/strong&amp;gt; This page is inactive, outdated, and no longer represents the current approach to developing microformats. See also: [[process]]&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65443</id>
		<title>microformats2-parsing-issues</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65443"/>
		<updated>2016-03-13T22:35:59Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: /* exclude style elements before parsing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is for documenting issues with the [[microformats2-parsing]] specification.&lt;br /&gt;
&lt;br /&gt;
== issues ==&lt;br /&gt;
Open issues in various states of partial resolution from none to nearly resolved.&lt;br /&gt;
&lt;br /&gt;
=== ignore u-camelCase properties ===&lt;br /&gt;
Due to Suit CSS (and others? citations?) recent (2015-?) use of &amp;quot;u-*&amp;quot; class names for so-called &amp;quot;[http://davidtheclark.com/on-utility-classes/ utility classes]&amp;quot;, we are seeing some false positives in a few very rare instances, e.g.: http://www.unmung.com/mf2?url=http%3A%2F%2Fwww.kevinmarks.com%2Ftwitterutils.html&amp;amp;html=&amp;amp;pretty=on&lt;br /&gt;
&lt;br /&gt;
(Nearly) all these &amp;quot;utility classes&amp;quot; use camelCase for the class name suffixes, thus we can filter them out by looking for camelCase (since microformats class name conventions are always all lowercase and hyphenated), or even just looking for (and rejecting) *any* capital letters.&lt;br /&gt;
&lt;br /&gt;
Proposal:&lt;br /&gt;
* microformats2 parsers MUST IGNORE u-* classnames where the * has any uppercase letter(s).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] Let's get this fix rolling quickly to avoid further pollution.&lt;br /&gt;
* +1 [[User:Barnabywalters|Barnaby]] php-mf2 already ignores classnames with capitalised prefixes, ignoring any classnames with capital letters seems totally reasonable &lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== exclude style elements before parsing ===&lt;br /&gt;
[http://logs.glob.uno/?c=freenode%23microformats#c85457 2016-01-25 raised in #microformats]&lt;br /&gt;
&lt;br /&gt;
Ran into an issue of a &amp;lt;style&amp;gt; element being parsed as plain text in a p-name. Should [[microformats2-parsing]] be updated to indicate &amp;lt;style&amp;gt; should be excluded when parsing? Appears to implicitly fall under [[microformats2-parsing#note_HTML_parsing_rules]]&lt;br /&gt;
&lt;br /&gt;
Sample link: http://veganstraightedge.com/notes/2016/01/16/tonight-s-dinner-tacocleanse-beverly-hills-c&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;script&amp;gt; tag can be similarly problematic.&lt;br /&gt;
&lt;br /&gt;
Proposal: Drop both &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; elements completely when parsing any property (including e-* HTML values). [[User:Tantek|Tantek]] 01:01, 29 February 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Please discuss and/or give +1/0/-1 feedback&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as proposer&lt;br /&gt;
* +1 [[User:Aaronpk|aaronpk]] as a consumer of HTML from an e-* property, I will always be sanitizing the HTML and removing &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; anyway&lt;br /&gt;
* +1 [[User:Kylewm|kylewm]]&lt;br /&gt;
* 0 [[User:Barnabywalters|Barnaby]] +1 to removing the contents of &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; from all plaintext properties (and 'value' property in HTML dicts), -1 to removing &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; from HTML. That’s a job for a sanitization stage. As aaronpk points out, sanitization will have to be done anyway if the content is to be reposted, so doing so in the parser doesn’t actually save anyone any work, but removes information which could be useful to people (example use cases: publishing posts with embedded per-post styling, publishing interactive HTML documents with embedded javascript)&lt;br /&gt;
** +1 this seems like reasonable feedback to make a new refined proposal. [[User:Tantek|Tantek]] 20:37, 13 March 2016 (UTC)&lt;br /&gt;
** +1 I like the revised proposal and am happy to change my vote to this [[User:Aaronpk|Aaronpk]] 21:16, 13 March 2016 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Proposal 2: Drop both &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; elements completely when parsing any property (except for e-* HTML values, which preserve all markup). [[User:Tantek|Tantek]] 20:37, 13 March 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Please discuss and/or give +1/0/-1 feedback&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as proposer&lt;br /&gt;
* +1 [[User:Barnabywalters|Barnaby]]&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== use poster if no src on video for u props ===&lt;br /&gt;
[https://indiewebcamp.com/irc/2015-12-13#t1450035721661 2015-12-13 raised in #indiewebcamp]&lt;br /&gt;
&lt;br /&gt;
There is a use-case of marking up the &amp;quot;poster&amp;quot; of a video element as the u-featured of an [[h-entry]], to do that, we need to change [[microformats2-parsing#parsing_a_u-_property|u- property parsing]] to look at the poster attribute of the video element, after it's looked for the src attribute.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;quot; else if video.u-x[poster], then get the poster attribute &amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Real-world example of markup in the wild:&lt;br /&gt;
* http://veganstraightedge.com/videos/2013/5/31/1/backyard-squirrel-buddy&lt;br /&gt;
** and likely all other videos posted there.&lt;br /&gt;
&lt;br /&gt;
Background discussion that led to this proposal:&lt;br /&gt;
* https://indiewebcamp.com/irc/2015-12-13#t1450035721661&lt;br /&gt;
&lt;br /&gt;
This seems very straightforward so I've added it as PROPOSED directly in the parsing spec. This issue is for tracking the discussion.&lt;br /&gt;
&lt;br /&gt;
Feedback from parser implementers please!&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Barnabywalters|Barnaby]] easy to implement and based on real-world markup, no objections&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== uf2 children on backcompat properties ===&lt;br /&gt;
[http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=today#c84632 2015-11-24 raised by Calli] in #microformats&lt;br /&gt;
&lt;br /&gt;
Related but different from [[#uf2_children_inside_a_classic_microformats_root_class_name]], when there is a uf2 child directly on a backcompat property, what should happen? E.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;div class=&amp;quot;adr h-adr&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;locality&amp;quot;&amp;gt;MF1&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;p-locality&amp;quot;&amp;gt;MF2&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What is the expected behavior and parser output?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
&amp;quot;items&amp;quot;: [{ &lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;adr&amp;quot;: [{&lt;br /&gt;
      &amp;quot;value&amp;quot;: &amp;quot;MF1MF2&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-adr&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;locality&amp;quot;: [&amp;quot;MF2&amp;quot;],&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;MF1MF2&amp;quot;]&lt;br /&gt;
       }&lt;br /&gt;
     }]&lt;br /&gt;
   }  &lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Proposal: the nested &amp;quot;adr h-adr&amp;quot; child is treated as an mf2 object, not backcompat, and thus the resulting parsed &amp;quot;locality&amp;quot; property has a single value of &amp;quot;MF2&amp;quot;. Proposed by Calli, noting that Glenn Jones's microformatshiv gets that result currently, and it would be easier for him (Calli) to implement this way.&lt;br /&gt;
** +1 Tantek, seems reasonable and the reasoning provided is good (we have one implementation this way already)&lt;br /&gt;
** +1 Kyle, this is consistent with the resolution to the related issue&lt;br /&gt;
** +1 Calli, yes, this is easier for me to implement (than taking both MF1 and MF2 properties) because it is consistent - for me, consistency is the controlling factor in favor rather than ease of parser implementation&lt;br /&gt;
** +1 Barnaby, php-mf2’s mf1 backcompat produces this exact result, and it makes a lot of sense to me&lt;br /&gt;
** ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;adr h-custom&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;locality&amp;quot;&amp;gt;MF1&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;p-locality&amp;quot;&amp;gt;MF2&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
&amp;quot;items&amp;quot;: [{ &lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;adr&amp;quot;: [{&lt;br /&gt;
      &amp;quot;value&amp;quot;: &amp;quot;MF1MF2&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-custom&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;locality&amp;quot;: [&amp;quot;MF2&amp;quot;],&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;MF1MF2&amp;quot;]&lt;br /&gt;
       }&lt;br /&gt;
     }]&lt;br /&gt;
   }  &lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per the [[#any_h-_root_class_name_overrides_and_stops_backcompat_root]] resolution, the class name &amp;quot;h-custom&amp;quot; overrides the use of &amp;quot;adr&amp;quot; as a backcompat root.&lt;br /&gt;
&lt;br /&gt;
=== default generated HTML ===&lt;br /&gt;
2015-09-08 raised by Tantek in #indiewebcamp&lt;br /&gt;
&lt;br /&gt;
Should there be a default (perhaps not quite &amp;quot;canonical&amp;quot;) way to map/generate HTML+microformats2 from a parsed mf2 JSON output?&lt;br /&gt;
&lt;br /&gt;
E.g. straw proposal:&lt;br /&gt;
* JSON/mf2 -&amp;gt; [[XOXO]]+mf2&lt;br /&gt;
&lt;br /&gt;
Existing work / mappings:&lt;br /&gt;
* https://github.com/snarfed/granary/blob/master/granary/microformats2.py#L295&lt;br /&gt;
&lt;br /&gt;
Related to:&lt;br /&gt;
* https://github.com/snarfed/granary/issues/31&lt;br /&gt;
&lt;br /&gt;
Use-cases:&lt;br /&gt;
* default webview / presentation for a site that stores mf2 JSON output&lt;br /&gt;
* possibly a way to implement a distributed HTTP webcache retrieval protocol&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] I think we should have this, but am open to proposals on specifics!&lt;br /&gt;
* +1 [[User:GlennJones|Glenn]] Also think this is worth looking at, but I am not sure it should be part of the parser spec. Feels like it should be built as a separate library and have it own spec on the microformats wiki.&lt;br /&gt;
* +1 [[User:Barnabywalters|Barnaby]] agreed with Glenn, this would be a nice thing to have, but IMO it’s out of scope for the parser and should be specified separately. Personally I would probably implement it separately too, depending on how much work it is.&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Noscript skip/parse ===&lt;br /&gt;
2015-07-28&lt;br /&gt;
&lt;br /&gt;
Should mf parsers skip &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; tag in the HTML, like the &amp;lt;code&amp;gt;&amp;lt;template&amp;gt;&amp;lt;/code&amp;gt; tag mentioned in http://microformats.org/wiki/microformats2-parsing#note_HTML_parsing_rules ?&lt;br /&gt;
&lt;br /&gt;
mf2py skips &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; when using the html5lib DOM parser but no when using lxml parser. Example use of &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; https://kartikprabhu.com/ featured images have a no javascript fallback image inside &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;class='u-featured'&amp;lt;/code&amp;gt; markup.&lt;br /&gt;
* html5lib actually HTML-escapes the contents of &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt;, so to mf2py it just looks like plain text with no tags. In Woodwind, I've resorted to using regex to strip out &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; tags before parsing (very hacky). [[User:Kylewm|Kylewm]] 15:52, 25 August 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] skip noscript (and inside) because in today's typical browsing contexts, nothing in noscript is displayed, thus we should discourage marking up effectively invisible content.&lt;br /&gt;
** Proposed change to [[microformats2-parsing#parse_a_document_for_microformats]]:&lt;br /&gt;
*** from: &amp;quot;follow the HTML parsing rules&amp;quot;&lt;br /&gt;
*** to: &amp;quot;follow the HTML parsing rules (including skipping/omitting &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; elements, e.g. like the html5lib DOM parser)&lt;br /&gt;
* -1 [[User:GlennJones|Glenn]] This subject does need to be address, but differently to proposed change. My personal view is that  e-* html should be passed through raw and then the consumer can process it in a way they feel fit. Its a case for helper libraries. I am about to build a helper library to do this based on the Readability code to post process e-* html. Other people may want to take different approaches, defining this in the spec feels like move into a whole area of new functionally.  &lt;br /&gt;
* 0 [[User:Barnabywalters|Barnaby]] to me this should be treated the same as the script/style contents — removed completely from all plaintext properties, but left unaltered in raw HTML.&lt;br /&gt;
&lt;br /&gt;
As a separate new point we need to consider &amp;quot;exclude tags&amp;quot; lists for parsed text from html.  We should consider &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;noframe&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;template&amp;gt;&amp;lt;/code&amp;gt; there maybe other I have not gone through all the tags in current HTML spec. Also we should consider what to do about the more common pattern of fallback text within media tags &amp;lt;code&amp;gt;&amp;lt;video&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;audio&amp;gt;&amp;lt;/code&amp;gt; etc. This should be explicitly discussed in the parsing rules. At the moment my experimental text normalisation does exclude tags, but the default text parse does not. Currently the fallback content in media tags like &amp;lt;code&amp;gt;&amp;lt;video&amp;gt;&amp;lt;/code&amp;gt; is added to the parse text. 12:56, 25 Septemeber 2015 (UTC)&lt;br /&gt;
* [[User:Barnabywalters|Barnaby]] in theory, as the video and audio data by default can’t be included in plaintext properties, and the fallback content (much like img alt attributes) should be somehow human-readable and useful, I would suggest keeping it in plaintext properties. I’d like to see some real-world examples of what fallback content people are using — if it’s links or plaintext descriptions this approach could work well, if people are writing instructions saying “install flash” or “update your browser” it’s not going to produce very pretty results&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Standard datetime format ===&lt;br /&gt;
2015-07-28&lt;br /&gt;
&lt;br /&gt;
http://microformats.org/wiki/microformats2-parsing#parsing_a_dt-_property does not specify any standard format to use for datetimes. e.g.  &amp;lt;pre&amp;gt;2015-07-28T12:55:33&amp;lt;/pre&amp;gt; vs &amp;lt;pre&amp;gt;2015-07-28 12:55:33&amp;lt;/pre&amp;gt;&lt;br /&gt;
Would be good to standardize this to compare various parser outputs.&lt;br /&gt;
&lt;br /&gt;
2015-07-29: This subject is (somewhat) covered in http://microformats.org/wiki/iso-8601 As it stands the JavaScript parsers support output in the 3 main profiles, 'W3C Note', 'RFC 3339' and 'HTML5' plus 'auto' which keeps authors format. The default date output for the JavaScript parsers is the same format as the date was originally authored in. This can be changes by setting the options.dateFormat switch to any of the other profiles mentioned. It would be good if other parser also had a switch to force output to a common profiles so we could compare various parser outputs, but I think the default should be how a date was authored. All output whatever profile should also keeps the authored level of specificity, i.e. not adding minutes or seconds if they are not in the input date string. This is important if you want to compare parser outputs. &lt;br /&gt;
&lt;br /&gt;
The only exception to this where date and times are combined such as the implied h-event rule for dt-start and dt-end where I output in the HTML5 style 2015-07-29 12:55:33 as there is no predefined author preference and HTML5 profile is more human readable. [[User:GlennJones|Glenn Jones]] 11:02, 29 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] output more human readable &amp;lt;code&amp;gt;2015-07-28 12:55:33&amp;lt;/code&amp;gt; canonically, with authored level of specificity, i.e. not adding minutes or seconds if they are not in the input date string.&lt;br /&gt;
** Let's update any test cases as needed for this. - [[User:Tantek|Tantek]]&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== implied date for dt properties both mf2 and backcompat ===&lt;br /&gt;
The [[value-class-pattern#microformats2_parsers|value class pattern dt-* date proposal]] should apply to both mf2 dt-* properties, and backcompat classic microformats, to preserve the hAtom / hCalendar optimizations noted on that page, but in a generic way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] 16:12, 18 August 2015 (UTC)&lt;br /&gt;
* +1 [[User:Glenn Jones|Glenn Jones]] 20 August 2015&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== implied properties when an explicit class is provided ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Should &amp;quot;u-url&amp;quot; still be implied if another explicit class is already provided, as below. This is a contrived example, but it is taken from Bridgy's unit tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;article class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;a class=&amp;quot;u-like-of&amp;quot; href=&amp;quot;http://orig.domain/baz&amp;quot;&amp;gt;liked this&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/article&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, http://orig.domain/baz is almost certainly not the u-url, so IMO it would be better to leave it out —[[User:Kylewm|Kylewm]] 15:10, 7 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
'''2015-01-20 consensus'''&lt;br /&gt;
* Changed my mind. Simpler to do nothing. Example provided is artificially constructed, does not reflect likely real world confusion of if we make implied properties more complicated. [[User:Tantek|Tantek]] 06:26, 21 January 2015 (UTC)&lt;br /&gt;
* ++ Consensus on do nothing for this case. At [[2015-01-20]]&lt;br /&gt;
&lt;br /&gt;
'''Proposed resolution:'''&lt;br /&gt;
* Changed again. Due to indiewebcamp.com/edit use-case, this now makes sense for all implied properties. That is:&lt;br /&gt;
** If an element has any explicit property class name(s) on it, then it must not be used to imply any properties. [[User:Tantek|Tantek]] 20:50, 27 May 2015 (UTC)&lt;br /&gt;
*** +1 this seems reasonable, if a publisher is going to add an mf2 class, it is unlikely they want other classes automatically implied from the same value [[User:Aaronpk|Aaronpk]] 23:19, 29 November 2015 (UTC)&lt;br /&gt;
*** -1 for now. To my knowledge, this has only been observed in artificially constructed unit tests and examples, and it adds some weird edge cases that are hard to reason about. [[User:Kylewm|Kylewm]] 00:46, 1 December 2015 (UTC)&lt;br /&gt;
*** ... provide input on this proposal here&lt;br /&gt;
** Refined: Or should this be refined by per parsing prefix? [[User:Tantek|Tantek]] 22:59, 18 September 2015 (UTC) &lt;br /&gt;
*** Any explicit &amp;quot;p-*&amp;quot; property means no implied &amp;quot;p-name&amp;quot; from that element&lt;br /&gt;
*** Any explicit &amp;quot;u-*&amp;quot; property means no implied &amp;quot;u-url&amp;quot; nor &amp;quot;u-photo&amp;quot; from that element.&lt;br /&gt;
*** ... provide input on this refined proposal here&lt;br /&gt;
** Suggestion: split this issue up per property. I think it makes sense for u-url and can be easily added to the spec as e.g. &amp;quot;.h-x&amp;gt;a[href]:only-of-type:not[.h-*&amp;lt;strong&amp;gt;,.u-*&amp;lt;/strong&amp;gt;]&amp;quot;. [[User:Kylewm|Kylewm]] 00:46, 1 December 2015 (UTC)&lt;br /&gt;
*** Obviously wrong to assume a link explicitly pointing elsewhere is our &amp;quot;url&amp;quot; &lt;br /&gt;
*** More difficult to make a case for photo and especially for name.&lt;br /&gt;
*** &amp;quot;name&amp;quot; is implied at least by [.h-x textContent], so often the excluded element would end up included anyway.&lt;br /&gt;
*** ... provide input on this refined proposal here&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== whitespace collapsing revisited ===&lt;br /&gt;
2015-05-27: (raised by [[User:Kevin Marks|Kevin Marks]] per Glenn Jones)&lt;br /&gt;
&lt;br /&gt;
Revising the microformats tests to conform to the &amp;quot;don't collapse whitespace&amp;quot; rule below reveals some non-intuitive cases. &lt;br /&gt;
preserving whitespace in addresses is somewhat defensible, but in an implied name it is often unhelpful, as it preserves non-user visible space there for authoring reasons.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
[https://github.com/microformats/tests/commit/a325e0e9bc2089507e69b1883f7065a3316e07c2#diff-d577012c1438978a571c4049179607f0 this test] shows how extraneous whitespace ends up in the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-review-aggregate&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;p-item h-event&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 class=&amp;quot;p-name&amp;quot;&amp;gt;Fullfrontal&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;p class=&amp;quot;p-description&amp;quot;&amp;gt;A one day JavaScript Conference held in Brighton&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;time class=&amp;quot;dt-start&amp;quot; datetime=&amp;quot;2012-11-09&amp;quot;&amp;gt;9th November 2012&amp;lt;/time&amp;gt;&amp;lt;/p&amp;gt;    &lt;br /&gt;
    &amp;lt;/div&amp;gt; &lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;p class=&amp;quot;p-rating&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;p-average value&amp;quot;&amp;gt;9.9&amp;lt;/span&amp;gt; out of &lt;br /&gt;
        &amp;lt;span class=&amp;quot;p-best&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt; &lt;br /&gt;
        based on &amp;lt;span class=&amp;quot;p-count&amp;quot;&amp;gt;62&amp;lt;/span&amp;gt; reviews&lt;br /&gt;
    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
give a parsed result of:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;items&amp;quot;: [{&lt;br /&gt;
        &amp;quot;type&amp;quot;: [&amp;quot;h-review-aggregate&amp;quot;],&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
            &amp;quot;item&amp;quot;: [{&lt;br /&gt;
                &amp;quot;value&amp;quot;: &amp;quot;Fullfrontal\nA one day JavaScript Conference held in Brighton\n9th November 2012&amp;quot;,&lt;br /&gt;
                &amp;quot;type&amp;quot;: [&amp;quot;h-event&amp;quot;],&lt;br /&gt;
                &amp;quot;properties&amp;quot;: {&lt;br /&gt;
                    &amp;quot;name&amp;quot;: [&amp;quot;Fullfrontal&amp;quot;],&lt;br /&gt;
                    &amp;quot;description&amp;quot;: [&amp;quot;A one day JavaScript Conference held in Brighton&amp;quot;],&lt;br /&gt;
                    &amp;quot;start&amp;quot;: [&amp;quot;2012-11-09&amp;quot;]&lt;br /&gt;
                }&lt;br /&gt;
            }],&lt;br /&gt;
            &amp;quot;rating&amp;quot;: [&amp;quot;9.9&amp;quot;],&lt;br /&gt;
            &amp;quot;average&amp;quot;: [&amp;quot;9.9&amp;quot;],&lt;br /&gt;
            &amp;quot;best&amp;quot;: [&amp;quot;10&amp;quot;],&lt;br /&gt;
            &amp;quot;count&amp;quot;: [&amp;quot;62&amp;quot;],&lt;br /&gt;
            &amp;quot;name&amp;quot;: [&amp;quot;Fullfrontal\nA one day JavaScript Conference held in Brighton\n9th November 2012\n\n\n9.9 out of \n        10 \n        based on 62 reviews&amp;quot;]&lt;br /&gt;
        }&lt;br /&gt;
    }],&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is a reasonable textual representation of the event, but the implied &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; is full of spurious whitespace that any consumer would have to strip. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/microformats/tests/commit/4c9690b53b0a2f40440abac8e609c51ac7dd6d56 h-review] has similar issues&lt;br /&gt;
&lt;br /&gt;
2015-05-28: (Addition by [[User:GlennJones|Glenn Jones]])&lt;br /&gt;
&lt;br /&gt;
The example below shows the type of markup most effected by the &amp;quot;implied name&amp;quot; and &amp;quot;don't collapse whitespace&amp;quot; rule working together to produce output that is hard to use without further processing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;h-card&amp;quot; href=&amp;quot;http://glennjones.net&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;p-given-name&amp;quot;&amp;gt;Glenn&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;p-family-name&amp;quot;&amp;gt;Jones&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The output for the name property from the above HTML would be &amp;lt;code&amp;gt;Glenn\r\n     Jones&amp;lt;/code&amp;gt; using the (trim lead/trailing) suggested in the  parsing spec.  I could of course move the spans onto one line, but it feels fragile to consider whitespace sensitivity in HTML like this. Added to the fact that HTML templating environments often take away that level of whitespace control from authors anyway.&lt;br /&gt;
&lt;br /&gt;
There are issues with both: keeping whitespace, returns and tabs from parsed HTML or collapse that whitespace. If we return the whitespace it becomes mal-formatted for humans because it was only added to make the HTML code understandable and in most cases was not meant to be used/read outside of that context. If we collapse the whitespace we can have issues of whitespace sensitive text from &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; etc. being incorrectly formatted. &lt;br /&gt;
&lt;br /&gt;
Providing a CSS aware innerText feature would produce the most useable output, but this is too complex/time consuming to build for most parser developers. In the face of no perfect solution I have taken the 80:20 view,  whereby errant whitespace, causes me considerably more problems than mal-formatted &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; content so I collapse whitespace on all text returned. &lt;br /&gt;
&lt;br /&gt;
This feature is a non-CSS aware version of innerText. It does not cover all rendering edge cases, but enough to produce practical output.&lt;br /&gt;
&lt;br /&gt;
For now, I have started changing the node parser to flag &amp;quot;white-space collapsing&amp;quot; as an experimental feature which is off by default i.e. http://glennjones.net/tools/microformats/ but personally I will parse everything with this on as I find it the most practical solution.  &lt;br /&gt;
&lt;br /&gt;
Not sure where that leaves me on the options below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
Choose from:&lt;br /&gt;
# keep as is and every parser client has to post process for common cases.&lt;br /&gt;
# '''keep as is but have mf2 parser trim leading/trailing whitespace (likely to provide desired result and be reasonably backcompat)'''&lt;br /&gt;
#* +1 my preference of the two options. [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
#* +1 though this doesn't solve any of the problems discussed above, it's still worth doing [[User:Kevin Marks|Kevin Marks]] 16:41, 28 May 2015 (UTC)&lt;br /&gt;
#* +1 will help parsers be more consistent with each other, and I haven't ever encountered a case where preserving leading/trailing whitespace was desirable [[User:Kylewm|Kylewm]] 20:45, 8 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
2015-06-08 option 2 resolved by consensus and implementation in mf2py.&lt;br /&gt;
&lt;br /&gt;
Somewhat orthogonal:&lt;br /&gt;
* make &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; on properties with children normalise whitespace&lt;br /&gt;
** -1 Seems like a bad idea as this &amp;quot;value&amp;quot; is supposed to be the same as if there was no embedded child microformat. [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
* make implied &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; normalise whitespace.&lt;br /&gt;
** +0 This is reasonable and already done somewhat in the parsing spec (trim lead/trailing). [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
** +1 Given the universality of name, this would fix most of the issues we see. [[User:Kevin Marks|Kevin Marks]] 16:41, 28 May 2015 (UTC)&lt;br /&gt;
* Put \n in textual forms if there is a &amp;lt;code&amp;gt;&amp;amp;lt;p&amp;amp;gt;&amp;lt;/code&amp;gt; tag in the original.&lt;br /&gt;
** -1 that's a long path to go down with whitespace equivalents for HTML markup. [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
** would only preserving whitespace if in &amp;amp;lt;pre&amp;amp;gt; be an 80:20 compromise? [[User:Kevin Marks|Kevin Marks]] 16:41, 28 May 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Because there are both code markup and specific vocabulary (label) needs for preserving whitespace, we are compelled to preserve in general, perhaps except for very specific limited generic cases (e.g. trim leading/trailing, &amp;quot;value&amp;quot; parsing, implied name). [[User:Tantek|Tantek]]&lt;br /&gt;
&lt;br /&gt;
=== u- parsing iframe src ===&lt;br /&gt;
Currently if I put u-* on an iframe it gets the value of the fallback text. This seems a shame. Getting the URL seems a sensible answer.&lt;br /&gt;
[[User:Kevin Marks|Kevin Marks]] 09:07, 11 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== i- parsing iframe src ===&lt;br /&gt;
&lt;br /&gt;
More controversially, what about using an iframe for transclusion? A use case here is comments on a static site. Currently, on eg http://www.kevinmarks.com/microformatschema.html the comments are injected via JS, making them opaque to parsers and thus precluding further parsing such as salmentions.&lt;br /&gt;
&lt;br /&gt;
If instead they were an iframe embedding them, a parser could optionally fetch its contents, parse them, and include them in the parsed mf2 output at that point. Overloading u-* for this seems wrong; e-* as below for srcdoc would have a different effect; this implies a new prefix directive would be needed. A strawman i-* (for include) may work.&lt;br /&gt;
[[User:Kevin Marks|Kevin Marks]] 09:07, 11 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== e- parsing iframe srcdoc ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Proposal: addition of a new e-* parsing rule for iframe elements with srcdoc attributes. E.G.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;iframe class=&amp;quot;e-content&amp;quot; srcdoc=&amp;quot;&amp;lt;p&amp;gt;A paragraph of HTML with &amp;amp;quot;quoted quotes&amp;amp;quot; &amp;amp;amp;amp; doubly quoted ampersands&amp;lt;/p&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;items&amp;quot;: [{&lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-entry&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
   &amp;quot;content&amp;quot;: [&amp;quot;&amp;lt;p&amp;gt;A paragraph of HTML with &amp;amp;quot;quoted quotes&amp;amp;quot; &amp;amp;amp; doubly quoted ampersands&amp;lt;/p&amp;gt;&amp;quot;]&lt;br /&gt;
  }&lt;br /&gt;
 }]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would allow, for example, HTML comments to be sandboxed inside iframes but still parsable as microformats.&lt;br /&gt;
&lt;br /&gt;
I believe the correct processing would be to leave &amp;amp;quot; entities as they are but to unescape any doubly-escaped ampersands.&lt;br /&gt;
&lt;br /&gt;
** Is there any use case for that? —[[User:TomMorris|Tom Morris]] 12:32, 14 September 2013 (UTC)&lt;br /&gt;
** +1 we need documentation of use case and existing sites publishing iframe srcdoc like this - [[User:Tantek|Tantek]] 00:47, 15 September 2013 (UTC)&lt;br /&gt;
** Rejected by consensus at [[2015-01-20]] meetup due to lack of real world uses cases / existing sites. [[User:Tantek|Tantek]] 06:26, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to interpret mf2 properties on select ===&lt;br /&gt;
How should select elements with properties be treated any differently?&lt;br /&gt;
&lt;br /&gt;
Awaiting real world examples / stronger use-cases, until then no special treatment of select elements with properties:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Are there any real world examples of select elements with microformats properties?&lt;br /&gt;
* What would the use-case be for putting a microformats property class name on a select element?&lt;br /&gt;
* Nothing special. By consensus at [[2015-01-20]] meetup due to lack of real world uses cases / existing sites. [[User:Tantek|Tantek]] 06:26, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to interpret mf2 root name on form ===&lt;br /&gt;
See what to do about &amp;lt;em&amp;gt;root class names&amp;lt;/em&amp;gt; on &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; elements in particular:&lt;br /&gt;
* [[hcard-input]]&lt;br /&gt;
&lt;br /&gt;
Awaiting real world examples / stronger use-cases, until then, no special treatment of root class names on &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; elements:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Are there any real world examples of a &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; element with a microformats root class name?&lt;br /&gt;
* [[hcard-input]] is one possible use-case, is anyone attempting to use forms for hCard input, e.g. with scripts to help make it work?&lt;br /&gt;
* Are there other use-cases for putting a microformats root class name on a &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; element?&lt;br /&gt;
* As of [[2015-01-20]] - no consensus - need more input as to when/why this is useful to do anything special.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Parsing Literal Values===&lt;br /&gt;
Issue raised by: [[User:BenWard|Ben Ward]]&lt;br /&gt;
&lt;br /&gt;
It is proposed for microformats2 that all microformats be parsable from just their root element, e.g. &amp;lt;code&amp;gt;&amp;amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;Ben Ward&amp;amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; would create an hCard with the following properties after parsing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
  'type': ['h-card'],&lt;br /&gt;
  'properties': {&lt;br /&gt;
     'name': ['Ben Ward']&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a four-fold change from the current [[hCard]]:&lt;br /&gt;
# type is generically identifiable as a microformat root, even in parsed form. The use of the 'h-' prefix persists into the type of the object. This is deliberately so, as a result of re-using the JSON data model of microdata which itself is re-using a common JSON convention, such that microformatted data is clearly distinguishable (as opposed to any other random schema that may be using a similar data model).&lt;br /&gt;
# root-class-only support. Per [[microformats-2-implied-properties]], the ''name'' property is implied by the entirety of the root class name element.&lt;br /&gt;
# 'name' instead of 'fn'. As also documented in [[microformats-2-implied-properties]], the continuous challenges/problems and need to repeatedly re-explain 'fn' over the years combined with the real-world market response of nearly every other party doing a person vocabulary renaming 'fn' to 'name', microformats 2 makes this change as well.&lt;br /&gt;
# There is no automatic parse-time inferring of &amp;lt;code&amp;gt;'given-name': ['Ben']&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;'family-name': ['Ward']&amp;lt;/code&amp;gt;. Any such inferring *might* be made by a vCard converter, but is left up to that specific application (not all applications) built on that vocabulary, though even in that case it may not be necessary, as an empty &amp;quot;N:;;;&amp;quot; [[vCard]] property is sufficient to satisfy the N property requirement of [[vCard]], and also causes no problems when imported into various [[vcard-implementations]].&lt;br /&gt;
&lt;br /&gt;
It is required of the extractor to understand that when a microformats object specifies no explicit child properties, that it must treat &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; as having a &amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;. But, the parser is generic, so it also treats &amp;lt;code&amp;gt;h-review&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-entry&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-recipe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-geo&amp;lt;/code&amp;gt; as having a ‘&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;’.&lt;br /&gt;
&lt;br /&gt;
As a result, specific vocabularies are evolved to drop their specific form of name (e.g. fn, summary, entry-title) and simplified to use a common 'name' property instead.&lt;br /&gt;
&lt;br /&gt;
Note: while the overwhelming majority of real world publishing/consuming uses of microformats do so with proper nouns which have names (and thus this parser-level incorporation of an implied 'name'), there are some formats that do not have a 'name' semantic. For example, [[geo]], [[adr]], and possibly if/when developed, units of measure, length, cost. The current thinking is that the benefits to the far greater proper-noun use-case of microformats outweigh the technical inelegance of having an extra/ignored 'name' property on formats that lack such a semantic.&lt;br /&gt;
&lt;br /&gt;
Some formats also may appear in theory to better imply some other property, e.g. a review might be thought to imply its ''content'', not its name, and an Atom entry its ''content'', not its title, but in practice (actual publishing patterns) this is not the case. Typically, brief unstructured reviews (or mentions thereof) provide a ''summary'' (often hyperlinked to an expanded structured form) of that review, not its content, and similarly, brief unstructured posts (e.g. RSS items) have historically most often been link blog items which include the title of an item and a link. Short status updates as well established by Twitter are newer and would seem to imply purely content with no title, at least semantically, however, even Twitter populates the RSS title and ATOM entry title of their feeds with the content. It's not clear what went into that decision, however, that's likely irrelevant, as the outcome turns out to be emergent consistency among publishing behaviors.&lt;br /&gt;
&lt;br /&gt;
To avoid overloading or undermining the semantics of a vocabulary, I propose that we handle this at the extractor level in a simpler fashion: Define a new property for literal data, that an extractor will provide if no other information was available. All ''interpreters'' may then be instructed that in the event that an object has no properties, it can attempt to interpret the literal value from the page instead.&lt;br /&gt;
&lt;br /&gt;
* This was one of the design iterations I went through which led me to the current implied 'name' design. Another iteration was the ability for a vocabulary to specify a single required property which was implied if there were no properties provided. However, the combination of the fact that in most cases such single required properties were quite name-like, and that a vocabulary-specific rule like that would then bind parsers to specific vocabularies (even so slightly) led me to collapse them into implying a 'name'. It's not perfect, but it's the best alternative so far that balances practical convenience of publishing/consuming, avoids vocabulary-specific knowledge in the parser, and technical (in)elegance. [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
In existing microformats, the closest existing example we have for this is the &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; property in hCard, which is used to represent the literal address label for a place. It is a corresponding piece of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;org&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; in combination, but has no structure in and of itself. Possibly, every microformat could have a &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; form where structured data is unavailable.&lt;br /&gt;
&lt;br /&gt;
However in practice, the hCard &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; property is both little understood and little used. It's not even clear that it ought to be kept for microformats 2 (no known consumers, very few (if any?) real-world non-test publishers). This disuse is likely a good indicator that we should avoid basing anything on its design.&lt;br /&gt;
&lt;br /&gt;
Alternatively, &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is used throughout microformats to target a generic value (e.g. in combination with &amp;lt;code&amp;gt;price&amp;lt;/code&amp;gt; in hListing.) It has been proposed that when parsing properties that are also themselves microformats, we create native objects of the form:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        'value': '1900 12th Street, San Francisco, CA 94'&lt;br /&gt;
      , 'type': ['h-adr']&lt;br /&gt;
      , 'properties': {&lt;br /&gt;
            'street-address': '1900 12th Street'&lt;br /&gt;
          , 'etc': 'etc'&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
We could apply this same pattern to the root level:&lt;br /&gt;
&lt;br /&gt;
    { &lt;br /&gt;
        type: [h-card]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: 'Ben Ward'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
In this case, an interpreter or implementation is responsible for using &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; in place of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, or restructuring the object. It would be the responsibility of each vocabulary to define its root property. The parsing layer of microformats 2.0 would not impose semantics or naming onto that.&lt;br /&gt;
&lt;br /&gt;
For another example, h-geo would end up like this:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        type: [h-geo]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: '1.3232;-0.543'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
* This is an alternative I've been considering as well:  [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
** 'value' is more generic than 'name' (applies to more vocabularies) with the trade-off that it naturally has less (weaker) semantics.&lt;br /&gt;
*** +1 I think that having naturally weaker semantics would be appropriate for this parsing functionality. —[[User:BenWard|BenWard]] 07:24, 5 October 2011 (UTC)&lt;br /&gt;
** The interesting thing that this analysis has revealed is that there appear to be two distinct clusters of microformats, the much more commonly used/understood/useful proper-noun microformats which markup things with names (people, events, reviews, recipes), and the less used compound-data microformats which are often used ''inside'' other microformats and just have some sort of semi-structured value (adr, geo, measure, and perhaps even things like tel). Perhaps this is implying the possibility and some degree of utility for ''two'' microformats root class name prefixes, 'h-' for existing proper-noun microformats, and something else ('m-' for microformat/molecule?, 's-' for structured-value?, 'v-' for value (though historically &amp;quot;v-&amp;quot;/&amp;quot;v.&amp;quot; has meant &amp;quot;vendor-specific&amp;quot;)?) for unnamed structured data microformats.&lt;br /&gt;
*** This more and more feels like a good idea, and I'm leaning toward &amp;quot;s-&amp;quot; for struct / structure / structured value. &amp;quot;s-&amp;quot; works just like &amp;quot;h-&amp;quot; except that it doesn't imply any properties at parse time. We can try it and see what happens. There's also no harm if publishers just use &amp;quot;h-&amp;quot; structures, they just (possibly) get a few extra properties if they happen to omit properties.&lt;br /&gt;
** Parallels the same JSON when a property has both a string value ''and'' is a structure itself.&lt;br /&gt;
*** Changed my mind on this. The parallel is not quite there. 'name'/'url'/'photo' are only implied if there are NO properties, where as the JSON string value + structure convention *always* provides a 'value'. [[User:Tantek|Tantek]] 22:39, 4 October 2011 (UTC)&lt;br /&gt;
*** And due to this difference in behavior ('value' is there when nested properties are present, whereas 'name' is only implied when there are no properties specified), I think it's correct to keep them separate, i.e. stick with implied 'name'. [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
** However, I'm still currently leaning towards the practical convenience of providing a 'name' for the vast majority of microformats uses, rather than diluting this feature for the sake of avoiding implying inapplicable semantics to the few plain structured data microformats, and even then, only when no properties are explicitly specified! I'd rather introduce a new root prefix for those than lose the simplicity and utility of implied 'name'. [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== resolved ==&lt;br /&gt;
=== When to collapse whitespace in properties ===&lt;br /&gt;
&lt;br /&gt;
The spec doesn’t explicitly require whitespace to be collapsed or not. The official mf2 test suite requires it to be collapsed.&lt;br /&gt;
&lt;br /&gt;
Reasons why whitespace ''shouldn’t'' be collapsed:&lt;br /&gt;
* Plaintext property representations of syntax-highlighted code, poetry and song lyrics require whitespace to be present&lt;br /&gt;
* Whether or not whitespace is an important part of the content being parsed is determined by css white-space and CANNOT be inferred from HTML markup alone&lt;br /&gt;
&lt;br /&gt;
Resolution 2013-11-12: Agreed, whitespace should not be collapsed (other than normal HTML5 parsing rules). The spec now refers to &amp;quot;textContent&amp;quot; rather than &amp;quot;innertext&amp;quot; to make this explicit.&lt;br /&gt;
&lt;br /&gt;
=== How to interpret mf2 classnames on form inputs ===&lt;br /&gt;
E.G. how to parse:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;input class=&amp;quot;u-url&amp;quot; value=&amp;quot;https://brennannovak.com/notes/338&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Examples in the wild: https://brennannovak.com/notes/338&lt;br /&gt;
&lt;br /&gt;
See proposal:&lt;br /&gt;
* [[hcard-parsing-brainstorming#input_element_handling]]&lt;br /&gt;
&lt;br /&gt;
Resolution 2013-11-12: Per that proposal, p- u- dt- properties on input[value] elements now use the value attribute.&lt;br /&gt;
&lt;br /&gt;
=== mixture of microformats2 and classic microformats classnames on different elements ===&lt;br /&gt;
Some sites in the wild have mistakenly combined classic mf and mf2 markup in ways which misrepresent the content if parsed in BC mode.&lt;br /&gt;
&lt;br /&gt;
Typically this is caused by putting classic and mf2 classnames for the same vocabulary on different elements, e.g:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;body class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;article class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name&amp;quot;&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
 &amp;lt;/article&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sites where this has been observed:&lt;br /&gt;
* http://acegiak.machinespirit.net/2013/10/17/barnaby-walters-notes-another-thing-i-love-about-the-web-users-have-the-power-to-take-control-of-their-uis-and-improve-their-own-experiences-aside-drm-for-html-would-prevent-this-from-being-possibl/&lt;br /&gt;
* http://shawfactor.com/2013/08/06/thoughts-on-extending-webmentions/ (fixed)&lt;br /&gt;
* http://notizblog.org/2013/06/18/the-rise-of-the-indieweb/ (fixed)&lt;br /&gt;
&lt;br /&gt;
Discussion:&lt;br /&gt;
&lt;br /&gt;
* As far as I can tell, the problems in all of these examples were caused by mf2 markup being injected by a wordpress plugin, but classic mf classnames being present further up the DOM in the themes. When parsed in compatibility mode, the classic mf classnames are transformed into mf2 classnames, making the original mf2 classnames look like children of empty items.&lt;br /&gt;
* Turns out this isn’t theme-specific, WordPress injects hentry via PHP [http://indiewebcamp.com/irc/2013-10-22/line/1382448759]. The bug with the wordpress mf2 plugin is resolved as of [http://indiewebcamp.com/irc/2013-10-22/line/1382449035 2013-10-22] --[[User:Barnabywalters|bw]] 13:38, 22 October 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== e- and p- escaping levels ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* The fact that the parsed value of any element with .e-* is at a different level of escaping to the parsed values of p-*, dt-* etc. without any indication of how the property was parsed in the output is a security problem. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;input&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;output&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
   &amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;p-name&amp;quot;&amp;gt;&amp;amp;lt;tag&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;items&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;type&amp;quot;: [&lt;br /&gt;
                &amp;quot;h-card&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;properties&amp;quot;: {&lt;br /&gt;
                &amp;quot;name&amp;quot;: [&lt;br /&gt;
                    &amp;quot;&amp;lt;tag&amp;gt;&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
   &amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;e-name&amp;quot;&amp;gt;&amp;amp;lt;tag&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;items&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;type&amp;quot;: [&lt;br /&gt;
                &amp;quot;h-card&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;properties&amp;quot;: {&lt;br /&gt;
                &amp;quot;name&amp;quot;: [&lt;br /&gt;
                    &amp;quot;&amp;amp;lt;tag&amp;amp;gt;&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* As a parser developer, the most straightforward way I can think of solving this is to add an option (enabled by default) which encodes HTML special characters on all non e-* properties, so the developer knows that all property values are going to be at the same level of escaping. --[[User:Barnabywalters|bw]] 20:00, 15 June 2013 (UTC)&lt;br /&gt;
** Your suggestion of auto-HTML-encoding p-*/u-*/dt-* property values is the most sensible I think. I would NOT make it an option, as it makes sense write consistent microformats2 consumers. - [[User:Tantek|Tantek]] 07:18, 5 July 2013 (UTC)&lt;br /&gt;
** Can you think of any existing apps/consumers of microformats2 via the parser that would break? What would indieweb comments parsers do? - [[User:Tantek|Tantek]] 07:18, 5 July 2013 (UTC)&lt;br /&gt;
*** The only breakage which might occur would be over-encoding of non e-* properties, but I’ll release this update as v0.2.0 and warn people about the changes. The worst thing which could happen is that some comments look a bit weird, as opposed to the current worst possible scenario of easy XSS attacks --[[User:Barnabywalters|bw]] 12:55, 5 July 2013 (UTC)&lt;br /&gt;
*** We should also decide exactly which characters get encoded — just angle brackets, or quotes/ampersands as well? --[[User:Barnabywalters|bw]] 12:55, 5 July 2013 (UTC)&lt;br /&gt;
*** I am not sure about this, it seems more like a helper function rather than a core feature of the parser. Personally I would like to store data as text and encode only when I am going to use and I known the format it is going to be use in.  --[[User:GlennJones|Glenn Jones]] 9:54, 14 July 2013 (UTC) &lt;br /&gt;
***After the discussion on the indiewebcamp IRC with Barnaby Walters I now understand the XSS issue that this change is trying to address. A rogue author could include HTML with scripts to execute a XSS attack. These could be masked by switch prefixes i.e. p-* to e-* on a well use property. As the consumer does not see the prefix in the JSON output they have no idea if a property will content HTML or text.  I will update my two parsers and the test suite --[[User:GlennJones|Glenn Jones]] 8:02, 17 July 2013 (UTC) &lt;br /&gt;
**So what about an author setting a property to e-* when it would normal be p-*, dt-* or u-* i.e.&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-card&amp;quot;&amp;gt;&amp;lt;p class=&amp;quot;e-name&amp;quot;&amp;gt;&amp;lt;script&amp;gt; alert('xss test') &amp;lt;/script&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** per [[events/2013-09-14-microformats2-parsing|microformats2 parsing discussion 2013-09-14]], parsers should never automatically attempt to HTML-special-characters encode - as that would provide the client of the parser a false sense of security. It's *always* up to client code to escape any text being output to HTML *at the moment it is output to HTML* and never before, because they can never trust that any text from storage/elsewhere has for sure been escaped or not. - [[User:Tantek|Tantek]] 18:07, 17 October 2013 (UTC)&lt;br /&gt;
** Should we not encode e-* as well and the consumer can decode at their own risk --[[User:GlennJones|Glenn Jones]] 18:42, 21 July 2013 (UTC) &lt;br /&gt;
*** No, never, per above point from [[events/2013-09-14-microformats2-parsing|microformats2 parsing discussion 2013-09-14]] - [[User:Tantek|Tantek]] 18:07, 17 October 2013 (UTC)&lt;br /&gt;
** See [[events/2013-09-14-microformats2-parsing|microformats2 parsing discussion 2013-09-14]] etherpad: https://etherpad.mozilla.org/microformats2parsing for more details on the resolution to this issue - and incorporate here (then move to resolved section below). - [[User:Tantek|Tantek]] 18:07, 17 October 2013 (UTC)&lt;br /&gt;
* Resolved by changes to the parsing spec: all properties are plaintext (non-HTML escaped), e-* properties result in a dictionary with &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; = plaintext version, &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; = raw HTML version &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== br hr empty string ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* The parsing rule 'else if br.p-x or hr.p-x, then return &amp;quot;&amp;quot; (empty string)' for p-* can cause any code consuming the API to become quite bloated. It means that you have test every array value to see if its an empty string. It is also unclear to me what the purpose of this mark-up pattern is for  [[User:GlennJones|Glenn Jones]]&lt;br /&gt;
** Upon reconsidering this, I agree with you, this is an unlikely use case. If a publisher wants to explicitly set an empty property &amp;quot;p-foo&amp;quot; they can simply write &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;p-foo&amp;quot;&amp;gt;&amp;amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; which looks explicit. Whereas BR and HR tags are often just presentational, so we should both not encourage usage of them for semantics, and anyone that did use them would be subject to likely loss of semantics upon a redesign (that got rid of those particular BR and HR tags). I'm going to remove them from the parsing spec. - [[User:Tantek|Tantek]] 15:29, 10 February 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== datetime examples without T delimiter ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* The examples in the wiki microformats-2 pages such h-entry and h-entry had datetime without the 'T' delimiter between date and time. ie&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;time class=&amp;quot;dt-published&amp;quot; datetime=&amp;quot;2013-06-13 12:00:00&amp;quot;&amp;gt;13&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; June 2013&amp;lt;/time&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
I have updated the pages. As far as I known this is a new pattern for dates. Was it a mistake in the examples or is it a new datetime pattern.&lt;br /&gt;
** The [[HTML5]] &amp;quot;time&amp;quot; element, and &amp;quot;datetime&amp;quot; attribute allow for space &amp;lt;span style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;&amp;quot; &amp;quot;&amp;lt;/span&amp;gt; as a separator between date and time as well as &amp;quot;T&amp;quot;, thus we allow it for microformats as well. The  &amp;lt;span style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;&amp;quot; &amp;quot;&amp;lt;/span&amp;gt; separator is preferred as the date and time are more readable when separated by a space. The examples noted in those specs deliberately use this. - [[User:Tantek|Tantek]] 18:48, 15 July 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== rel-alternate absent optional attributes ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* What should rel-alternate parsing do when one of the optional attributes specified (&amp;lt;kbd&amp;gt;hreflang&amp;lt;/kbd&amp;gt; or &amp;lt;kbd&amp;gt;media&amp;lt;/kbd&amp;gt; or both) is not there? The options seem to be:&lt;br /&gt;
*# leave the corresponding key out of the alternate JSON object&lt;br /&gt;
*#* This one. Leave the corresponding key out.&lt;br /&gt;
*# include the corresponding key in the alternate JSON object, but set the value to the JSON null object&lt;br /&gt;
*# include the corresponding key in the alternate JSON object, but set the value to a blank string&lt;br /&gt;
*# something I haven't thought of&lt;br /&gt;
&lt;br /&gt;
I haven't checked the existing implementations, but Barnaby said he's not sure what the appropriate way to deal with it is either. —[[User:TomMorris|Tom Morris]] 15:41, 9 August 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== rel-alternate and type attribute ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Should rel-alternate parsing also pick up the &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; attribute? It’s fairly widely used, e.g. for ATOM feeds.&lt;br /&gt;
** Numerous existing sites/pages have various [[rel-alternate]] uses with a type attribute for feeds/APIs so that's good enough to add this for help with discovery in general. Rel parsing updated. - [[User:Tantek|Tantek]] 00:47, 15 September 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Extraction vs Interpretation ===&lt;br /&gt;
Issue raised by: [[User:BenWard|Ben Ward]]&lt;br /&gt;
&lt;br /&gt;
A microformats ‘1.0’ parser performs the following function:&lt;br /&gt;
&lt;br /&gt;
* Given a piece of HTML content, discover a known microformat, extract it, apply various extraction patterns based upon the HTML mark-up used (e.g. include pattern, &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; patterns, date-time patterns, value-title pattern), apply various content optimisations where applicable, and return the result in an object native to the programming language.&lt;br /&gt;
&lt;br /&gt;
This is performing two types of function: Extraction of data from an HTML document or fragment, ''and'' interpretation and optimisation of that content to match the rules set out by a vocabulary specification.&lt;br /&gt;
&lt;br /&gt;
It is only possible to write a generic parser that covers the first half of this task: Extraction, and application of global rules based on HTML elements and patterns common to all formats.&lt;br /&gt;
&lt;br /&gt;
The purpose of a generic parser (as supported by use cases such as search engines, and other crawlers) is: &lt;br /&gt;
&lt;br /&gt;
To provide a way for tools to extract rich data from a page for native storage, such that the data may be interpreted later by applications. This allows microformats to be crawled, and indexed, and removes the need to include complex HTML parsing within every implementation of microformat data.&lt;br /&gt;
&lt;br /&gt;
Microformats will continue to define various vocabulary-specific optimisations. as part of the design to be optimised for authors. For example: The &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; pattern in [[hcard]], or the &amp;lt;code&amp;gt;lat;long&amp;lt;/code&amp;gt; pattern in [[geo]], as well as default values for properties, such as the maximum rating in an [[hreview]].&lt;br /&gt;
* Actually, no, as it is defined currently, microformats 2 ''drops'' vocabulary-specific optimizations. Such optimizations have often been too inapplicable, error prone or i18n-unsafe (e.g. fn to given-name + family-name fails for both numerous cases where middlenames/initials are used, and in general in numerous Asian languages where given/family name order is the reverse of Western English conventions, or languages with multiple family-names, e.g. Spanish - see [[hcard-issues-resolved]] for more). This is a deliberate cutting of a &amp;quot;feature&amp;quot; from microformats 1, it is a deliberate model simplification design decision. [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
==== Extraction resolution ====&lt;br /&gt;
Proposed resolution:&lt;br /&gt;
&lt;br /&gt;
Microformats2 should refer only to ''extraction'' of microformats. Vocabularies should in turn document their appropriate optimisations, which will need to be applied by implementations, or a companion to an extractor, which I'll refer to here as an ‘interpreter’.&lt;br /&gt;
* Vocabularies will no longer have optimizations, this is again deliberately, as they've been shown to be more error prone than helpful. Thus there should be no need for any vocabulary-specific 'interpreters'. However, due to design quirks in various legacy/interchange formats, ''export conversions algorithms'' to those legacy/interchange formats will require some additional legacy-format-specific rules (e.g. odd &amp;quot;required&amp;quot; rules in [[Atom]] or [[vCard]] will require specific synthesis rules, limitations in said formats will require filtering of some values, e.g. [[vcard3]] BDAY disallows vague birthdays like year-month and --month-day - subsequently allowed in [[vcard4]]). [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
A microformats2 ‘extractor’, in combination with the functionality of a domain and format-aware ‘interpreter’ (either another shared component, or part of the implementation itself) would be equivalent to a microformats 1.0 ‘parser.’&lt;br /&gt;
* A microformats2 parser is both generic (no knowledge of specific vocabularies), and lacks any/all such vocabulary-specific rules as compared to a microformats 1.0 [[hcard-parsing|parser]] with the exception of a 1) a limited list of well-established/interoperable backward compat root class names (of current [[microformats]] that are or can be soon shown to be specifications/standards per the [[process]]), 2) flat sets of backward compat property names (some with prefix/name specific conversion) for each of those backward compat root class names.  This is a deliberate design decision that makes microformats 2 more &amp;quot;micro&amp;quot;, and yes this means that even with such backward compat support, this simple form of backward compat may mean that some existing microformats 1 content breaks. We'll assess those and iterate on a documented case-by-case basis rather than attempt to maintain theoretical 100% backward compatibility (since many current microformats format-specific-features are either unused, or may have caused more problems than solutions). [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
N.B. I'll rewrite some of these as [[microformats2-parsing-faq]] to help better clarify. The reasoning that led to most of these design decisions is documented in the [[microformats-2#About_This_Brainstorm|microformats 2: About This Brainstorm]] section and following sections. I'll recheck those sections to see if/where reasoning for some of the above noted design decisions may have been missed, and back-fill accordingly. This is necessary because [[microformats2]] is a evolutionary result of simultaneously addressing both numerous generic [[issues]] as well as various common [[hcard-issues-resolved|format]]-[[hcalendar-issues-resolved|specific]] [[mfo|problems]] in microformats1 syntax and vocabularies. The very number of changes may make it more challenging (from a microformats1 perspective) to see why any particular design change has been made. [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
This issue can be moved from resolved to closed once the above-mentioned write-ups have occurred.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Parsing properties from rel attributes===&lt;br /&gt;
tl;dr resolution: As of 2013, [[microformats2-parsing]] handles parsing all link and a href rel values at document scope level, and producing canonical JSON accordingly. - [[User:Tantek|Tantek]]&lt;br /&gt;
&lt;br /&gt;
Issue raised by [[User:BenWard|BenWard]] 07:24, 5 October 2011 (UTC):&lt;br /&gt;
&lt;br /&gt;
* Currently, hAtom parses `bookmark` as a permalink&lt;br /&gt;
* Various microformats parse `rel=tag` as tags&lt;br /&gt;
* The current proposal for parsing does not allow parsing properties from rel attributes.&lt;br /&gt;
&lt;br /&gt;
Microformats parsers could instead extract ''all'' link relationships from rel attributes within an microformat object, parsing them as if a u- prefixed property.&lt;br /&gt;
* Minor nit: Rather than same as a u- prefixed property, I think such &amp;quot;rel&amp;quot; properties should be parsed purely from the &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; attribute on &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;area&amp;amp;gt;&amp;lt;/code&amp;gt; elements and nothing more. I would strongly disagree to extending rel to apply to other elements with URLs like img src, object data, or to apply to elements in general like div. That's the path that RDFa has taken and caused much confusion as a result. [[User:Tantek|Tantek]] 07:39, 5 October 2011 (UTC)&lt;br /&gt;
** Agree: That seems like a perfectly reasonable restriction. --[[User:BenWard|BenWard]] 08:29, 5 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
This results in:&lt;br /&gt;
&lt;br /&gt;
* Continuing use of the &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attribute in HTML, thereby building on HTML semantics rather than bypassing them or ignoring them in favour of something less meaningful.&lt;br /&gt;
* Parsing hAtom objects contain a property named &amp;lt;code&amp;gt;bookmark&amp;lt;/code&amp;gt;, in place of &amp;lt;code&amp;gt;permalink&amp;lt;/code&amp;gt;.&lt;br /&gt;
* All microformats that use &amp;lt;code&amp;gt;rel-tag&amp;lt;/code&amp;gt; would contain a property named… &amp;lt;code&amp;gt;tag&amp;lt;/code&amp;gt;. Perfect.&lt;br /&gt;
&lt;br /&gt;
Since &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes are not overloaded for other functionality like class is, and other uses of &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; within content are low (and non-semantic uses are nil, to the best of my knowledge) the risk of property pollution would be extremely low.&lt;br /&gt;
&lt;br /&gt;
Note, with regard to this last point, that a generic microformats parser ''will'' parse false-positive properties, and ''will'' parse objects in combined chunks, rather than individually by format. Extracted objects will often not represent a vocabulary without further processing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* This sounds like it might be workable. Let's try it and see how well authors &amp;quot;get it&amp;quot;. - [[User:Tantek|Tantek]]&lt;br /&gt;
* Possible issue: do we have any collisions between class property names and rel names? (I don't think so offhand, but useful to ask the question). - [[User:Tantek|Tantek]]&lt;br /&gt;
** None that I can think of in microformats. There is the case of Google's &amp;lt;code&amp;gt;rel=author&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;p-author&amp;lt;/code&amp;gt; in hAtom. However, the next point, about mfo scoping, would cover it in most situations (rel-author on a hyperlink within an hcard wouldn't be applied to the hentry.) The one situation in a parse tree where it's ambiguous would be this: &lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;p-author h-card&amp;quot; &lt;br /&gt;
   rel=&amp;quot;author&amp;quot; &lt;br /&gt;
   href=&amp;quot;http://benward.me&amp;quot;&amp;gt;&lt;br /&gt;
   Ben Ward&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** I can think of two quite reasonable solutions: &lt;br /&gt;
*** 1. Declare that class properties take precedence over rel properties of the same name, discarding rel values if a class is also found, or &lt;br /&gt;
*** 2. Since all properties are now multi-value anyway, the hAtom object could be parsed as:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from the p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        'http://benward.me'      /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** —[[User:BenWard|BenWard]] 08:29, 5 October 2011 (UTC)&lt;br /&gt;
*** Option 2 makes sense and is consistent with the rest of the multi-value parsing/handling. - [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
*** What about without the 'p-author'?&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;h-card&amp;quot; &lt;br /&gt;
   rel=&amp;quot;author&amp;quot; &lt;br /&gt;
   href=&amp;quot;http://benward.me&amp;quot;&amp;gt;&lt;br /&gt;
   Ben Ward&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Should that be parsed as:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        'http://benward.me'      /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Or&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': 'http://benward.me' /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
          'type': ['h-card'],          /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        &lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*** And if the former, then we're presumably saying that the value parsed due to the presence of a rel is always its own value, and does not combine with any other structures. I am fine with this, but I wanted to make sure we are ok with that explicitly. [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
**** +1 I think that since the rel attribute is specifically concerned with the relation to an href attribute, it should not be combined with other structures that are rightly declared uses classes.&lt;br /&gt;
***** The more I've thought about this and how consuming applications may want to treat rel semantics, the more it seems correct to keep rel semantics distinct from class semantics. Class semantics are quite general/flexible, whereas rel is quite specific, naming something else in terms of a relationship from the current page/microformat's perspective. I think we should consider putting rel values in their own 'rel' collection, separate from the 'properties' collection. E.g. the original rel-author p-author h-card markup example would be parsed into this:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from the p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        }&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
   'rel': {&lt;br /&gt;
     'author': ['http://benward.me'] /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
***** and if a post had multiple authors:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Tantek Çelik'], /* from 2nd p-author     */&lt;br /&gt;
          'type': ['h-card'],        /* from 2nd h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Tantek Çelik'], &lt;br /&gt;
            'url': ['http://tantek.com']&lt;br /&gt;
        },&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
   'rel': {&lt;br /&gt;
     'author': [&lt;br /&gt;
       'http://benward.me',      /* from rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
       'http://tantek.com'       /* from 2nd rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ]&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
***** This preserves the semantic distinction between rel and properties in general, and leaves it up to a higher-level application to implement any logic around showing &amp;quot;more info&amp;quot; about a rel-author, e.g. by correlating the rel-author URL with the 'url' of an hCard it found in the same entry. However, note that even in the earlier JSON data model, the rel-author value just shows up as another property value, and any higher level application would still have to do some correlation logic. At least with this JSON data model, applications that may be looking for a rel value in particular, or a property value in particular can do so without having one unintentionally pollute the other. [[User:Tantek|Tantek]] 17:33, 6 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Presumably we'd apply all the same property scoping rules to rel scoping as well. E.g. a rel hyperlink inside a microformat won't be seen by any containing microformat. - [[User:Tantek|Tantek]]&lt;br /&gt;
** Correct, it should be parsed in the same scope as all other class properties in the object.&lt;br /&gt;
*** Update: all rel microformats are now parsed at page-scope. Per-microformat scoping of rel has been found to be too confusing in practice (and against the general semantic of rel expressed in the HTML/HTML5 specs) [[User:Tantek|Tantek]] 01:00, 10 July 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This issue can be moved from resolved to closed once we've verified that all the above-mentioned and implied needs to write things up have occurred.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== deduping of rels ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-06-02 by [[User:Kevin Marks|Kevin Marks]] &lt;br /&gt;
* 2015-06-05 resolved by consensus and one real world implementation proof of implementability and verification of expected results. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Many sites have multiple duplicate rel links to the same url - a very common case is WordPress home pages eg [http://ma.tt ma.tt] &lt;br /&gt;
&lt;br /&gt;
Each post on the page has a block like&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;entry-meta&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;date&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://ma.tt/2015/05/beethoven-mozart-bach/&amp;quot; &lt;br /&gt;
    title=&amp;quot;Permalink to Beethoven, Mozart,&amp;amp;nbsp;Bach&amp;quot; rel=&amp;quot;bookmark&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;time class=&amp;quot;entry-date&amp;quot; datetime=&amp;quot;2015-05-31T22:42:00+00:00&amp;quot;&amp;gt;May 31, 2015&amp;lt;/time&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;categories-links&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://ma.tt/category/asides/&amp;quot; rel=&amp;quot;category tag&amp;quot;&amp;gt;Asides&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;author vcard&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;url fn n&amp;quot; href=&amp;quot;http://ma.tt/author/saxmatt/&amp;quot; &lt;br /&gt;
    title=&amp;quot;View all posts by Matt&amp;quot; rel=&amp;quot;author&amp;quot;&amp;gt;Matt&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- .entry-meta --&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As currently defined, the parser will create duplicate entries in &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; for each post:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;category&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;author&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;tag&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;home&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and in the &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; we will also see:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;author&amp;quot;, &lt;br /&gt;
                &amp;quot;author&amp;quot;, &lt;br /&gt;
                &amp;quot;author&amp;quot;, &lt;br /&gt;
                &amp;quot;author&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;View all posts by Matt&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;home&amp;quot;, &lt;br /&gt;
                &amp;quot;home&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/category/asides/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;, &lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;, &lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;, &lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Asides&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
These duplicates are unhelpful for parser consumers. We should:&lt;br /&gt;
* make them both sets - only listing distinct values. This will remove ordering information, but order is irrelevant for rel in html.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;category&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;author&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;tag&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;home&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
}&lt;br /&gt;
…&lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;author&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;View all posts by Matt&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;home&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/category/asides/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Asides&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* possibly we could also make &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; sets too. That would solve the information loss issue with the current parsers&lt;br /&gt;
** Resolution: in the case of duplicate other attributes, first one set wins. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 as the proposer. A version of mf2py that does this is running at unmung,com. see [http://www.unmung.com/mf2?url=https%3A%2F%2Fma.tt&amp;amp;html=&amp;amp;pretty=on fro ma.tt] or [http://www.unmung.com/?html=%3Ca+href%3D%22http%3A%2F%2Fma.tt%2Fcategory%2Fasides%2F%22+rel%3D%22category+tag%22%3EAsides%3C%2Fa%3E%0D%0A%3Ca+href%3D%22http%3A%2F%2Fma.tt%2Fcategory%2Fasides%2F%22+rel%3D%22category+tag%22%3EAsides%3C%2Fa%3E%0D%0A%3Ca+href%3D%22http%3A%2F%2Fma.tt%2Fcategory%2Fasides%2F%22+rel%3D%22category+tag%22%3EAsides%3C%2Fa%3E&amp;amp;pretty=on a simple test] [[User:Kevin Marks|Kevin Marks]] 23:49, 2 June 2015 (UTC)&lt;br /&gt;
* +1 makes sense to me, and not having them be sets in the current spec is likely an oversight on my part. Thanks for noting this issue. [[User:Tantek|Tantek]] 05:28, 3 June 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== include alternates in rels ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-06-01 by [[Tantek]], per inconsistency noted by Kevin Marks.&lt;br /&gt;
* 2015-06-05 resolved per consensus and one real world implementation proof of implementability. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
As fallout from the adoption and implementation of 'rel-urls' per [[microformats2-parsing-brainstorming#more_information_for_rel-based_formats]], we should:&lt;br /&gt;
* add &amp;quot;alternate&amp;quot; rels to the &amp;quot;rels&amp;quot; collection to make them easier to look-up in &amp;quot;rel-urls&amp;quot; - that is, all rel values end up in &amp;quot;rels&amp;quot; collections. No exceptions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as the documenter of this issue, and attempting to represent what I think KevinMarks intended with &amp;quot;rels&amp;quot; and &amp;quot;rel-urls&amp;quot;.&lt;br /&gt;
* +1 This makes sense to me, as the &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; should match so you can lookup in rels first, then get details about urls from rel-urls. We can drop &amp;quot;alternates&amp;quot; independently from this change. [[User:Kevin Marks|Kevin Marks]] 00:23, 2 June 2015 (UTC)&lt;br /&gt;
** +1 drop &amp;quot;alternates&amp;quot; independently now made a separate issue. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
* +1 Makes sense. And I agree with Kevin; I think parsers should deprecate &amp;quot;alternates&amp;quot; for now and drop it after a version cycle or two. [[User:Kylewm|Kylewm]] 00:30, 2 June 2015 (UTC)&lt;br /&gt;
* implemented in [https://github.com/kevinmarks/mf2py/commit/4dba45200eef11da811f64817d02044ab9e98b77 my fork of mf2py] and running on [http://www.unmung.com/?html=%3Ca+rel%3D%22author%22+href%3D%22http%3A%2F%2Fexample.com%2Fa%22%3Eauthor+a%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22author%22+href%3D%22http%3A%2F%2Fexample.com%2Fb%22%3Eauthor+b%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22in-reply-to%22+href%3D%22http%3A%2F%2Fexample.com%2F1%22%3Epost+1%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22in-reply-to%22+href%3D%22http%3A%2F%2Fexample.com%2F2%22%3Epost+2%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22alternate+home%22%0D%0A+++href%3D%22http%3A%2F%2Fexample.com%2Ffr%22%0D%0A+++media%3D%22handheld%22%0D%0A+++hreflang%3D%22fr%22%3EFrench+mobile+homepage%3C%2Fa%3E&amp;amp;pretty=on unmung] [[User:Kevin Marks|Kevin Marks]] 01:29, 2 June 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Empty properties overridden by implied rules against user expectation ===&lt;br /&gt;
Status: resolved, existing behavior correct, no changes to parsing spec.&lt;br /&gt;
&lt;br /&gt;
2015-07-03: raised by [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
&lt;br /&gt;
Emma Kuo brought up an issue (https://github.com/glennjones/microformat-node/issues/22) based on following the indieweb note pattern, where the content of a note is given both the e-content and p-name classes. If the element containing the notes only has none text content like image the p-name can have unexpected value. Here is the example she gave:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;a href=&amp;quot;http://this.site/photo&amp;quot; class=&amp;quot;u-url&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;e-content p-name&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;photo.jpg&amp;quot; class=&amp;quot;u-photo&amp;quot;/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        Some extraneous text&lt;br /&gt;
        &amp;lt;div class=&amp;quot;h-cite&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;a href=&amp;quot;http://someother.site/like&amp;quot; class=&amp;quot;u-url&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;a href=&amp;quot;http://this.site/photo&amp;quot; class=&amp;quot;u-like-of&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;e-content p-name&amp;quot;&amp;gt;liked this&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At the moment I parser this as follows: - if a property (p-name) is empty do not add it to the output. In this case &amp;quot;empty&amp;quot; is classed as not containing any non-whitespace text. As far as I known there is no guidance on how to handle &amp;quot;empty&amp;quot; properties in microformats paring rules, so I followed the conventions of JSON API's not to return &amp;quot;empty&amp;quot; properties.&lt;br /&gt;
&lt;br /&gt;
The side effect of the above is that p-name also has a number of &amp;quot;implied rules&amp;quot;. The &amp;quot;implied rules&amp;quot; try to automatically fill properties like p-name if there is no defined value. In the example above it uses the textContent of the parent h-entry, so value of the h-entry&amp;gt;p-name is the text content of the h-cite i.e. &amp;quot;likes this&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
1. We should not allow the &amp;quot;implied name rule&amp;quot; to get textContent from within a child h-* &lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;strike&amp;gt;+1 I believe this is inline with how we parse properties and will meet user/author expectations  [[User:Glenn Jones|Glenn Jones]] 9:22, 3 July 2015 (UTC)&amp;lt;/strike&amp;gt;&lt;br /&gt;
* -1 A nested h-* is still part of the content of the parent h-*, I don't quite understand the rationale for excluding it. For example, I may include lots of h-cards in the body of a post that references people and wouldn't want them to be excluded from the implied name generation. [[User:Kylewm|Kylewm]] 14:40, 3 July 2015 (UTC)&lt;br /&gt;
* -1 I'm not sure this would solve the problem because auto-filled text could come from the parent h-* (&amp;quot;some extraneous text&amp;quot; in the example above) [[User:emmak|Emma Kuo]] 20:50, 4 July 2015 (UTC)&lt;br /&gt;
* -1 I agree with the other -1s. This would break some of the simplicity of the model. [[User:Tantek|Tantek]] 05:12, 14 July 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
2.  We should not execute the &amp;quot;implied rules&amp;quot; where there is an author defined &amp;quot;empty&amp;quot; property.&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;strike&amp;gt;-1 Although the output would meet author expectations it is complex for parsers as they will have to keep state for each property through the whole series of parsing rules.  [[User:Glenn Jones|Glenn Jones]] 9:22, 3 July 2015 (UTC)&amp;lt;/strike&amp;gt;&lt;br /&gt;
* +1 An explicit, empty, p-name property should prevent an implicit p-name from being generated. For example tantek.com includes &amp;amp;lt;span class=&amp;quot;p-name&amp;quot;&amp;gt;&amp;amp;lt;/span&amp;gt; at the start of the h-feed to prevent a giant name from being auto-generated. From my reading of the parsing spec, I don't see any reason that blank strings should be excluded from parsing. (mf2py and php-mf2 will both happily include empty strings in their output) [[User:Kylewm|Kylewm]] 14:40, 3 July 2015 (UTC)&lt;br /&gt;
* +1 We already have interop on this between mf2py and phpmf2, as well as people depending on it to explicitly set empty property values. [[User:Tantek|Tantek]] 05:12, 14 July 2015 (UTC)&lt;br /&gt;
* +1 As we already have interop with two parsers and solid user issue from Emma we should take this approach. [[User:GlennJones|Glenn Jones]] 11:51, 29 July 2015 (UTC)&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html&lt;br /&gt;
&lt;br /&gt;
=== uf2 children inside a classic microformats root class name ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-020: (raised by kylewm) What should microformats2 children inside a classic microformats root class name do?&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
1. Nothing. Any unattached uf2 children inside a classic microformats root are ignored. Problems:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* However then there's a possible surprise if/when the author upgrades the classic microformats root to uf2, then all of a sudden all the new uf2 children show-up.&lt;br /&gt;
* Another downside: author adds uf2 markup, can't figure out why nothing is happening (because somewhere up the tree in code they didn't touch is classic microformats that are hiding these unattached uf2 children.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
2. Show up in the children collection of the classic microformats root&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Feels most predictable. When you add uf2 root class names anywhere, they will show up in the JSON output hierarchy.&lt;br /&gt;
* When you convert ancestor class microformats root class names to uf2 root class names, no surprise in terms of which microformats show up. Same children collection.&lt;br /&gt;
* +1 Thus I'm leaning towards this one, despite the fact that classic microformats never had a concept of generic unattached children. [[User:Tantek|Tantek]] 04:55, 21 January 2015 (UTC)&lt;br /&gt;
* +1 I think this is the best option I will implement it and update the wiki once its in the JavaScript parser. [[User:GlennJones|Glenn Jones]] 11:55, 29 July 2015 (UTC)&lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
3. Show up as peers to the classic microformats root. Issue(s)&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Has ths surprise aspect of if/when you convert the classic root class name to a uf2 root class name, the former peers become unattached children.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html&lt;br /&gt;
&lt;br /&gt;
=== any h- root class name overrides and stops backcompat root ===&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience. &lt;br /&gt;
&lt;br /&gt;
2015-020: The presence of any h-* root class name overrides and stop any backcompat parsing of classic microformats root class names on that same element. [[User:Tantek|Tantek]] 04:55, 21 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Tom &amp;amp; Kyle - implementable with the same backcompat root flag as needed for restricting backcompat root class name to only seeing backcompat property class names&lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
* I don't think I understand this rule. If I was stop all parsing of of classic microformats in the presence of any h-* root in a document then some of the other rules such as &amp;quot;uf2 children inside a classic microformats root class name&amp;quot; do not make sense. Could this item be expanded and explained a bit more? [[User:GlennJones|Glenn Jones]] 12:13, 29 July 2015 (UTC)&lt;br /&gt;
** added &amp;quot;on that same element&amp;quot; as that was what we were discussing/implying in this issue. [[User:Tantek|Tantek]] 22:49, 18 September 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== backcompat classic microformats should only see backcompat properties ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-020: When parsing a microformats vocabulary that indicates a backcompat root class name (and thus an absence of the microformats2 equivalent on the same element), parsers must only look for the backcompat properties that are specified explicitly for that backcompat root class.&lt;br /&gt;
[[User:Tantek|Tantek]] 04:04, 21 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Reasoning: such behaviour was never expected by authors, and crossing a classic microformats root class name with microformats2 property names were never explicitly expected nor specified to work.&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Tom &amp;amp; Kyle - implementable with the same backcompat root flag as needed for&lt;br /&gt;
* +1 I think this will help backcompat parsing, I will implement it and update the wiki once its in the JavaScript parser. The test suite will also need updating. [[User:GlennJones|Glenn Jones]] 11:55, 29 July 2015 (UTC) &lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html Currently you need to switch on the option &amp;quot;Block overlapping properties from different microformat versions&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== microformats2 root class names should only see microformats2 properties ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-020: When parsing a microformats2 root class name, only explicit microformats2 properties should be parsed. Any backcompat property names must be ignored.&lt;br /&gt;
[[User:Tantek|Tantek]] 04:04, 21 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Reasoning: such microformats2 authors should be expected to do all their microformats markup with microformats2 class names - this is a deliberate expectation so that their microformats aren't polluted with other (classic microformats) coincidentally named generic class names.&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 I think this will help backcompat parsing, I will implement it and update the wiki once its in the JavaScript parser. The test suite will also need updating. [[User:GlennJones|Glenn Jones]] 11:55, 29 July 2015 (UTC) &lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html Currently you need to switch on the option &amp;quot;Block overlapping properties from different microformat versions&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== implied properties on backcompat parsing unlikely to be intended ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Since classic microformats had no notion of implied properties, when implied property parsing occurs on backward compat classic microformats root class names, it is unlikely that any implied property (p-name u-url u-photo) was ever intended by the author of the classic microformat. [[User:Tantek|Tantek]] 02:43, 30 December 2014 (UTC)&lt;br /&gt;
Examples:&lt;br /&gt;
* see https://indiewebcamp.com/h-entry#bad_hentry_properties for a growing list&lt;br /&gt;
&lt;br /&gt;
'''Proposed resolution:'''&lt;br /&gt;
&lt;br /&gt;
* Be explicit in implied property parsing that it must only be done for explicit 'h-*' root class name microformats, not for any (back)compat parsing of microformats. Please comment on this proposal with &amp;quot;** comment&amp;quot; on new lines below. [[User:Tantek|Tantek]] 02:43, 30 December 2014 (UTC)&lt;br /&gt;
** +1 This makes a lot of sense to me. We should strive to parse mf1 as it was intended by the author, and I think you're right that implied rules are unlikely to be what was intended [[User:Kylewm|Kylewm]] 03:22, 30 December 2014 (UTC)&lt;br /&gt;
** +1 I think this will help backcompat parsing, but there are two major things to consider. It may well break some consumer code as the output for a microformats currently always has the name property, there may not be the defences code to check this is true when we remove the implied name rule for classic microformats.  The test suite will also need major updating as all the test output for classic microformats will have. I will look into implementing this and report back to the wiki. [[User:GlennJones|Glenn Jones]] 12:13, 29 July 2015 (UTC) &lt;br /&gt;
** Also it should be made clear that we are only removing the implied rules from classic microformats parsing and not the value property? [[User:GlennJones|Glenn Jones]] 12:13, 29 July 2015 (UTC)&lt;br /&gt;
*** The &amp;quot;parsing for implied properties&amp;quot; section only references name, photo, url properties. Where (in the spec) is the confusion about &amp;quot;value&amp;quot; coming from? [[User:Tantek|Tantek]]&lt;br /&gt;
** RESOLVED at [[2015-01-20]] meetup. [[User:Tantek|Tantek]] 04:09, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html Currently you need to switch on the option &amp;quot;Set implied properties by microformat version&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== link elements and u- parsing ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Raised by tantek on 2014-07-08 on [http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=8+Jul+2014&amp;amp;e=9+Jul+2014#c72916 irc]: should the parsing specification for handling u- properties be modified to include the &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; element? The potential downside is that [[invisible-metadata-is-considered-harmful]], however all known real world examples of &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; are &amp;lt;em&amp;gt;semi-&amp;lt;/em&amp;gt;visible data (not fully hidden).&lt;br /&gt;
&lt;br /&gt;
There are potential cases for wanting to use link as an alternative to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; (and &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt;), such as a whole page where the root &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; element is an &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; and the properties are included across the page: some in visible data in the &amp;lt;code&amp;gt;body&amp;lt;/code&amp;gt; while others are in the &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; as &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; elements. Example:&lt;br /&gt;
&lt;br /&gt;
One specific use-case is the semi-visible &amp;lt;code&amp;gt;link rel=&amp;quot;shortcut icon&amp;quot; href=&amp;quot;...&amp;quot;&amp;lt;/code&amp;gt; - which is visible sometimes in browser UI, and also when a user chooses &amp;quot;Add to Home Screen&amp;quot; on a mobile device. Such page level icons may be used as a &amp;lt;code&amp;gt;u-photo&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;u-logo&amp;lt;/code&amp;gt; of the containing &amp;lt;code&amp;gt;h-*&amp;lt;/code&amp;gt; object on the &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; element.&lt;br /&gt;
* http://adactio.com/about/myself/ on 2014-190&lt;br /&gt;
** &amp;lt;em&amp;gt;could&amp;lt;/em&amp;gt; use &amp;lt;code&amp;gt;&amp;amp;lt;html class=h-card&amp;amp;gt;&amp;lt;/code&amp;gt; - page is all about Jeremy Keith the person&lt;br /&gt;
** &amp;lt;em&amp;gt;icon / logo is only&amp;lt;/em&amp;gt; on &amp;lt;code&amp;gt;&amp;amp;lt;link&amp;amp;gt;&amp;lt;/code&amp;gt; tag which &amp;lt;em&amp;gt;could&amp;lt;/em&amp;gt; use &amp;lt;code&amp;gt;class=u-logo&amp;lt;/code&amp;gt;: &amp;lt;br/&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;link rel=&amp;quot;shortcut icon apple-touch-icon&amp;quot; type=&amp;quot;image/png&amp;quot; href=&amp;quot;/icon.png&amp;quot; /&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another specific use-case is a post permalink page, e.g. with &amp;lt;code&amp;gt;&amp;amp;lt;html class=h-entry&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* http://waterpigs.co.uk/notes/4WjHpC/&lt;br /&gt;
** &amp;lt;em&amp;gt;has&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;&amp;amp;lt;html class=&amp;quot;no-js h-entry hentry h-as-note&amp;quot; lang=&amp;quot;en&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another use-case is publishing links to PGP/GPG keys linked from the head which is currently handled by &amp;lt;code&amp;gt;&amp;amp;lt;link rel=pgpkey&amp;amp;gt;&amp;lt;/code&amp;gt; which is already supported in existing [[microformats2-parsing#parse_a_hyperlink_element_for_rel_microformats|microformats2 rel parsing]] of &amp;lt;code&amp;gt;link rel&amp;lt;/code&amp;gt; elements. Thus there is a (admittedly weak) argument for consistently parsing &amp;lt;em&amp;gt;both&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;&amp;amp;lt;link rel&amp;amp;gt;&amp;lt;/code&amp;gt; &amp;lt;em&amp;gt;and&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;&amp;amp;lt;link class=&amp;quot;u-*&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
E.g. inside that aforementioned real world &amp;lt;code&amp;gt;&amp;amp;lt;html class=h-entry&amp;amp;gt;&amp;lt;/code&amp;gt; post permalink page example, &lt;br /&gt;
* why should &amp;lt;code&amp;gt;&amp;amp;lt;link rel=&amp;quot;in-reply-to&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; work &lt;br /&gt;
* but not &amp;lt;code&amp;gt;&amp;amp;lt;link class=&amp;quot;u-in-reply-to&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; ?&lt;br /&gt;
The slightly stronger argument for consistency of link handling is that it &amp;lt;strong&amp;gt;[[simpler|simplifies]]&amp;lt;/strong&amp;gt; the publisher (and parser) model: &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;area&amp;amp;gt;&amp;lt;/code&amp;gt; work for both &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;&lt;br /&gt;
* why does &amp;lt;code&amp;gt;&amp;amp;lt;link&amp;amp;gt;&amp;lt;/code&amp;gt; only work for &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; ?&lt;br /&gt;
* it would be &amp;lt;em&amp;gt;simpler&amp;lt;/em&amp;gt; if all three tags just worked (in the same way) for both &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Should the parsing spec be modified to handle these cases?''' —[[User:TomMorris|Tom Morris]] 09:25, 9 July 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
** I'm generally in favour. It'd be good to see what other parser developers think. —[[User:TomMorris|Tom Morris]] 10:16, 9 July 2014 (UTC)&lt;br /&gt;
** adding this to the parsers won't be an issue. &amp;lt;del datetime=&amp;quot;2014-07-09T18:45&amp;quot;&amp;gt;The question is should the door be opened to hidden mf data?&amp;lt;/del&amp;gt; &amp;lt;ins datetime=&amp;quot;2014-07-09T18:45&amp;quot;&amp;gt;Up on further reflection, there seems to be no need to distinguish between &amp;lt;code&amp;gt;rel=property&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class=u-property&amp;lt;/code&amp;gt; on link elements. So I am in favour for consistency.&amp;lt;/ins&amp;gt; [[User:KP|Kartik]] 18:30, 2014-07-09 (EST)&lt;br /&gt;
** RESOLVED at [[2015-01-20]] meetup. Make link consistent with a.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== drop alternates collection ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-06-01 by [[Tantek]], per inconsistency noted by Kevin Marks.&lt;br /&gt;
* 2015-06-05 split into separate issue from include alternates in rels per implementation feedback from Kevin Marks. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
As fallout from the adoption and implementation of 'rel-urls' per [[microformats2-parsing-brainstorming#more_information_for_rel-based_formats]], we should:&lt;br /&gt;
* drop &amp;quot;alternates&amp;quot; as its no longer needed, and all current consuming code clients like rel-urls better anyway.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as the documenter of this issue, and attempting to represent what I think KevinMarks intended with &amp;quot;rels&amp;quot; and &amp;quot;rel-urls&amp;quot; in original issue now &amp;quot;include alternates in rels&amp;quot;, we no longer need &amp;quot;alternates&amp;quot;, and those with client consuming code have universally indicated that they would rather use rel-urls anyway. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats2-parsing]]&lt;br /&gt;
* [[microformats2]]&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65441</id>
		<title>microformats2-parsing-issues</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65441"/>
		<updated>2016-03-13T21:03:31Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: /* Noscript skip/parse */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is for documenting issues with the [[microformats2-parsing]] specification.&lt;br /&gt;
&lt;br /&gt;
== issues ==&lt;br /&gt;
Open issues in various states of partial resolution from none to nearly resolved.&lt;br /&gt;
&lt;br /&gt;
=== ignore u-camelCase properties ===&lt;br /&gt;
Due to Suit CSS (and others? citations?) recent (2015-?) use of &amp;quot;u-*&amp;quot; class names for so-called &amp;quot;[http://davidtheclark.com/on-utility-classes/ utility classes]&amp;quot;, we are seeing some false positives in a few very rare instances, e.g.: http://www.unmung.com/mf2?url=http%3A%2F%2Fwww.kevinmarks.com%2Ftwitterutils.html&amp;amp;html=&amp;amp;pretty=on&lt;br /&gt;
&lt;br /&gt;
(Nearly) all these &amp;quot;utility classes&amp;quot; use camelCase for the class name suffixes, thus we can filter them out by looking for camelCase (since microformats class name conventions are always all lowercase and hyphenated), or even just looking for (and rejecting) *any* capital letters.&lt;br /&gt;
&lt;br /&gt;
Proposal:&lt;br /&gt;
* microformats2 parsers MUST IGNORE u-* classnames where the * has any uppercase letter(s).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] Let's get this fix rolling quickly to avoid further pollution.&lt;br /&gt;
* +1 [[User:Barnabywalters|Barnaby]] php-mf2 already ignores classnames with capitalised prefixes, ignoring any classnames with capital letters seems totally reasonable &lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== exclude style elements before parsing ===&lt;br /&gt;
[http://logs.glob.uno/?c=freenode%23microformats#c85457 2016-01-25 raised in #microformats]&lt;br /&gt;
&lt;br /&gt;
Ran into an issue of a &amp;lt;style&amp;gt; element being parsed as plain text in a p-name. Should [[microformats2-parsing]] be updated to indicate &amp;lt;style&amp;gt; should be excluded when parsing? Appears to implicitly fall under [[microformats2-parsing#note_HTML_parsing_rules]]&lt;br /&gt;
&lt;br /&gt;
Sample link: http://veganstraightedge.com/notes/2016/01/16/tonight-s-dinner-tacocleanse-beverly-hills-c&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;script&amp;gt; tag can be similarly problematic.&lt;br /&gt;
&lt;br /&gt;
Proposal: Drop both &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; elements completely when parsing any property (including e-* HTML values). [[User:Tantek|Tantek]] 01:01, 29 February 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Please discuss and/or give +1/0/-1 feedback&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as proposer&lt;br /&gt;
* +1 [[User:Aaronpk|aaronpk]] as a consumer of HTML from an e-* property, I will always be sanitizing the HTML and removing &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; anyway&lt;br /&gt;
* +1 [[User:Kylewm|kylewm]]&lt;br /&gt;
* 0 [[User:Barnabywalters|Barnaby]] +1 to removing the contents of &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; from all plaintext properties (and 'value' property in HTML dicts), -1 to removing &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; from HTML. That’s a job for a sanitization stage. As aaronpk points out, sanitization will have to be done anyway if the content is to be reposted, so doing so in the parser doesn’t actually save anyone any work, but removes information which could be useful to people (example use cases: publishing posts with embedded per-post styling, publishing interactive HTML documents with embedded javascript)&lt;br /&gt;
** +1 this seems like reasonable feedback to make a new refined proposal. [[User:Tantek|Tantek]] 20:37, 13 March 2016 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Proposal 2: Drop both &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; elements completely when parsing any property (except for e-* HTML values, which preserve all markup). [[User:Tantek|Tantek]] 20:37, 13 March 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Please discuss and/or give +1/0/-1 feedback&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as proposer&lt;br /&gt;
* +1 [[User:Barnabywalters|Barnaby]&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== use poster if no src on video for u props ===&lt;br /&gt;
[https://indiewebcamp.com/irc/2015-12-13#t1450035721661 2015-12-13 raised in #indiewebcamp]&lt;br /&gt;
&lt;br /&gt;
There is a use-case of marking up the &amp;quot;poster&amp;quot; of a video element as the u-featured of an [[h-entry]], to do that, we need to change [[microformats2-parsing#parsing_a_u-_property|u- property parsing]] to look at the poster attribute of the video element, after it's looked for the src attribute.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;quot; else if video.u-x[poster], then get the poster attribute &amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Real-world example of markup in the wild:&lt;br /&gt;
* http://veganstraightedge.com/videos/2013/5/31/1/backyard-squirrel-buddy&lt;br /&gt;
** and likely all other videos posted there.&lt;br /&gt;
&lt;br /&gt;
Background discussion that led to this proposal:&lt;br /&gt;
* https://indiewebcamp.com/irc/2015-12-13#t1450035721661&lt;br /&gt;
&lt;br /&gt;
This seems very straightforward so I've added it as PROPOSED directly in the parsing spec. This issue is for tracking the discussion.&lt;br /&gt;
&lt;br /&gt;
Feedback from parser implementers please!&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Barnabywalters|Barnaby]] easy to implement and based on real-world markup, no objections&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== uf2 children on backcompat properties ===&lt;br /&gt;
[http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=today#c84632 2015-11-24 raised by Calli] in #microformats&lt;br /&gt;
&lt;br /&gt;
Related but different from [[#uf2_children_inside_a_classic_microformats_root_class_name]], when there is a uf2 child directly on a backcompat property, what should happen? E.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;div class=&amp;quot;adr h-adr&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;locality&amp;quot;&amp;gt;MF1&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;p-locality&amp;quot;&amp;gt;MF2&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What is the expected behavior and parser output?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
&amp;quot;items&amp;quot;: [{ &lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;adr&amp;quot;: [{&lt;br /&gt;
      &amp;quot;value&amp;quot;: &amp;quot;MF1MF2&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-adr&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;locality&amp;quot;: [&amp;quot;MF2&amp;quot;],&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;MF1MF2&amp;quot;]&lt;br /&gt;
       }&lt;br /&gt;
     }]&lt;br /&gt;
   }  &lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Proposal: the nested &amp;quot;adr h-adr&amp;quot; child is treated as an mf2 object, not backcompat, and thus the resulting parsed &amp;quot;locality&amp;quot; property has a single value of &amp;quot;MF2&amp;quot;. Proposed by Calli, noting that Glenn Jones's microformatshiv gets that result currently, and it would be easier for him (Calli) to implement this way.&lt;br /&gt;
** +1 Tantek, seems reasonable and the reasoning provided is good (we have one implementation this way already)&lt;br /&gt;
** +1 Kyle, this is consistent with the resolution to the related issue&lt;br /&gt;
** +1 Calli, yes, this is easier for me to implement (than taking both MF1 and MF2 properties) because it is consistent - for me, consistency is the controlling factor in favor rather than ease of parser implementation&lt;br /&gt;
** +1 Barnaby, php-mf2’s mf1 backcompat produces this exact result, and it makes a lot of sense to me&lt;br /&gt;
** ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;adr h-custom&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;locality&amp;quot;&amp;gt;MF1&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;p-locality&amp;quot;&amp;gt;MF2&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
&amp;quot;items&amp;quot;: [{ &lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;adr&amp;quot;: [{&lt;br /&gt;
      &amp;quot;value&amp;quot;: &amp;quot;MF1MF2&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-custom&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;locality&amp;quot;: [&amp;quot;MF2&amp;quot;],&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;MF1MF2&amp;quot;]&lt;br /&gt;
       }&lt;br /&gt;
     }]&lt;br /&gt;
   }  &lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per the [[#any_h-_root_class_name_overrides_and_stops_backcompat_root]] resolution, the class name &amp;quot;h-custom&amp;quot; overrides the use of &amp;quot;adr&amp;quot; as a backcompat root.&lt;br /&gt;
&lt;br /&gt;
=== default generated HTML ===&lt;br /&gt;
2015-09-08 raised by Tantek in #indiewebcamp&lt;br /&gt;
&lt;br /&gt;
Should there be a default (perhaps not quite &amp;quot;canonical&amp;quot;) way to map/generate HTML+microformats2 from a parsed mf2 JSON output?&lt;br /&gt;
&lt;br /&gt;
E.g. straw proposal:&lt;br /&gt;
* JSON/mf2 -&amp;gt; [[XOXO]]+mf2&lt;br /&gt;
&lt;br /&gt;
Existing work / mappings:&lt;br /&gt;
* https://github.com/snarfed/granary/blob/master/granary/microformats2.py#L295&lt;br /&gt;
&lt;br /&gt;
Related to:&lt;br /&gt;
* https://github.com/snarfed/granary/issues/31&lt;br /&gt;
&lt;br /&gt;
Use-cases:&lt;br /&gt;
* default webview / presentation for a site that stores mf2 JSON output&lt;br /&gt;
* possibly a way to implement a distributed HTTP webcache retrieval protocol&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] I think we should have this, but am open to proposals on specifics!&lt;br /&gt;
* +1 [[User:GlennJones|Glenn]] Also think this is worth looking at, but I am not sure it should be part of the parser spec. Feels like it should be built as a separate library and have it own spec on the microformats wiki.&lt;br /&gt;
* +1 [[User:Barnabywalters|Barnaby]] agreed with Glenn, this would be a nice thing to have, but IMO it’s out of scope for the parser and should be specified separately. Personally I would probably implement it separately too, depending on how much work it is.&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Noscript skip/parse ===&lt;br /&gt;
2015-07-28&lt;br /&gt;
&lt;br /&gt;
Should mf parsers skip &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; tag in the HTML, like the &amp;lt;code&amp;gt;&amp;lt;template&amp;gt;&amp;lt;/code&amp;gt; tag mentioned in http://microformats.org/wiki/microformats2-parsing#note_HTML_parsing_rules ?&lt;br /&gt;
&lt;br /&gt;
mf2py skips &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; when using the html5lib DOM parser but no when using lxml parser. Example use of &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; https://kartikprabhu.com/ featured images have a no javascript fallback image inside &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;class='u-featured'&amp;lt;/code&amp;gt; markup.&lt;br /&gt;
* html5lib actually HTML-escapes the contents of &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt;, so to mf2py it just looks like plain text with no tags. In Woodwind, I've resorted to using regex to strip out &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; tags before parsing (very hacky). [[User:Kylewm|Kylewm]] 15:52, 25 August 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] skip noscript (and inside) because in today's typical browsing contexts, nothing in noscript is displayed, thus we should discourage marking up effectively invisible content.&lt;br /&gt;
** Proposed change to [[microformats2-parsing#parse_a_document_for_microformats]]:&lt;br /&gt;
*** from: &amp;quot;follow the HTML parsing rules&amp;quot;&lt;br /&gt;
*** to: &amp;quot;follow the HTML parsing rules (including skipping/omitting &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; elements, e.g. like the html5lib DOM parser)&lt;br /&gt;
* -1 [[User:GlennJones|Glenn]] This subject does need to be address, but differently to proposed change. My personal view is that  e-* html should be passed through raw and then the consumer can process it in a way they feel fit. Its a case for helper libraries. I am about to build a helper library to do this based on the Readability code to post process e-* html. Other people may want to take different approaches, defining this in the spec feels like move into a whole area of new functionally.  &lt;br /&gt;
* 0 [[User:Barnabywalters|Barnaby]] to me this should be treated the same as the script/style contents — removed completely from all plaintext properties, but left unaltered in raw HTML.&lt;br /&gt;
&lt;br /&gt;
As a separate new point we need to consider &amp;quot;exclude tags&amp;quot; lists for parsed text from html.  We should consider &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;noframe&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;template&amp;gt;&amp;lt;/code&amp;gt; there maybe other I have not gone through all the tags in current HTML spec. Also we should consider what to do about the more common pattern of fallback text within media tags &amp;lt;code&amp;gt;&amp;lt;video&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;audio&amp;gt;&amp;lt;/code&amp;gt; etc. This should be explicitly discussed in the parsing rules. At the moment my experimental text normalisation does exclude tags, but the default text parse does not. Currently the fallback content in media tags like &amp;lt;code&amp;gt;&amp;lt;video&amp;gt;&amp;lt;/code&amp;gt; is added to the parse text. 12:56, 25 Septemeber 2015 (UTC)&lt;br /&gt;
* [[User:Barnabywalters|Barnaby]] in theory, as the video and audio data by default can’t be included in plaintext properties, and the fallback content (much like img alt attributes) should be somehow human-readable and useful, I would suggest keeping it in plaintext properties. I’d like to see some real-world examples of what fallback content people are using — if it’s links or plaintext descriptions this approach could work well, if people are writing instructions saying “install flash” or “update your browser” it’s not going to produce very pretty results&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Standard datetime format ===&lt;br /&gt;
2015-07-28&lt;br /&gt;
&lt;br /&gt;
http://microformats.org/wiki/microformats2-parsing#parsing_a_dt-_property does not specify any standard format to use for datetimes. e.g.  &amp;lt;pre&amp;gt;2015-07-28T12:55:33&amp;lt;/pre&amp;gt; vs &amp;lt;pre&amp;gt;2015-07-28 12:55:33&amp;lt;/pre&amp;gt;&lt;br /&gt;
Would be good to standardize this to compare various parser outputs.&lt;br /&gt;
&lt;br /&gt;
2015-07-29: This subject is (somewhat) covered in http://microformats.org/wiki/iso-8601 As it stands the JavaScript parsers support output in the 3 main profiles, 'W3C Note', 'RFC 3339' and 'HTML5' plus 'auto' which keeps authors format. The default date output for the JavaScript parsers is the same format as the date was originally authored in. This can be changes by setting the options.dateFormat switch to any of the other profiles mentioned. It would be good if other parser also had a switch to force output to a common profiles so we could compare various parser outputs, but I think the default should be how a date was authored. All output whatever profile should also keeps the authored level of specificity, i.e. not adding minutes or seconds if they are not in the input date string. This is important if you want to compare parser outputs. &lt;br /&gt;
&lt;br /&gt;
The only exception to this where date and times are combined such as the implied h-event rule for dt-start and dt-end where I output in the HTML5 style 2015-07-29 12:55:33 as there is no predefined author preference and HTML5 profile is more human readable. [[User:GlennJones|Glenn Jones]] 11:02, 29 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] output more human readable &amp;lt;code&amp;gt;2015-07-28 12:55:33&amp;lt;/code&amp;gt; canonically, with authored level of specificity, i.e. not adding minutes or seconds if they are not in the input date string.&lt;br /&gt;
** Let's update any test cases as needed for this. - [[User:Tantek|Tantek]]&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== implied date for dt properties both mf2 and backcompat ===&lt;br /&gt;
The [[value-class-pattern#microformats2_parsers|value class pattern dt-* date proposal]] should apply to both mf2 dt-* properties, and backcompat classic microformats, to preserve the hAtom / hCalendar optimizations noted on that page, but in a generic way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] 16:12, 18 August 2015 (UTC)&lt;br /&gt;
* +1 [[User:Glenn Jones|Glenn Jones]] 20 August 2015&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== implied properties when an explicit class is provided ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Should &amp;quot;u-url&amp;quot; still be implied if another explicit class is already provided, as below. This is a contrived example, but it is taken from Bridgy's unit tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;article class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;a class=&amp;quot;u-like-of&amp;quot; href=&amp;quot;http://orig.domain/baz&amp;quot;&amp;gt;liked this&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/article&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, http://orig.domain/baz is almost certainly not the u-url, so IMO it would be better to leave it out —[[User:Kylewm|Kylewm]] 15:10, 7 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
'''2015-01-20 consensus'''&lt;br /&gt;
* Changed my mind. Simpler to do nothing. Example provided is artificially constructed, does not reflect likely real world confusion of if we make implied properties more complicated. [[User:Tantek|Tantek]] 06:26, 21 January 2015 (UTC)&lt;br /&gt;
* ++ Consensus on do nothing for this case. At [[2015-01-20]]&lt;br /&gt;
&lt;br /&gt;
'''Proposed resolution:'''&lt;br /&gt;
* Changed again. Due to indiewebcamp.com/edit use-case, this now makes sense for all implied properties. That is:&lt;br /&gt;
** If an element has any explicit property class name(s) on it, then it must not be used to imply any properties. [[User:Tantek|Tantek]] 20:50, 27 May 2015 (UTC)&lt;br /&gt;
*** +1 this seems reasonable, if a publisher is going to add an mf2 class, it is unlikely they want other classes automatically implied from the same value [[User:Aaronpk|Aaronpk]] 23:19, 29 November 2015 (UTC)&lt;br /&gt;
*** -1 for now. To my knowledge, this has only been observed in artificially constructed unit tests and examples, and it adds some weird edge cases that are hard to reason about. [[User:Kylewm|Kylewm]] 00:46, 1 December 2015 (UTC)&lt;br /&gt;
*** ... provide input on this proposal here&lt;br /&gt;
** Refined: Or should this be refined by per parsing prefix? [[User:Tantek|Tantek]] 22:59, 18 September 2015 (UTC) &lt;br /&gt;
*** Any explicit &amp;quot;p-*&amp;quot; property means no implied &amp;quot;p-name&amp;quot; from that element&lt;br /&gt;
*** Any explicit &amp;quot;u-*&amp;quot; property means no implied &amp;quot;u-url&amp;quot; nor &amp;quot;u-photo&amp;quot; from that element.&lt;br /&gt;
*** ... provide input on this refined proposal here&lt;br /&gt;
** Suggestion: split this issue up per property. I think it makes sense for u-url and can be easily added to the spec as e.g. &amp;quot;.h-x&amp;gt;a[href]:only-of-type:not[.h-*&amp;lt;strong&amp;gt;,.u-*&amp;lt;/strong&amp;gt;]&amp;quot;. [[User:Kylewm|Kylewm]] 00:46, 1 December 2015 (UTC)&lt;br /&gt;
*** Obviously wrong to assume a link explicitly pointing elsewhere is our &amp;quot;url&amp;quot; &lt;br /&gt;
*** More difficult to make a case for photo and especially for name.&lt;br /&gt;
*** &amp;quot;name&amp;quot; is implied at least by [.h-x textContent], so often the excluded element would end up included anyway.&lt;br /&gt;
*** ... provide input on this refined proposal here&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== whitespace collapsing revisited ===&lt;br /&gt;
2015-05-27: (raised by [[User:Kevin Marks|Kevin Marks]] per Glenn Jones)&lt;br /&gt;
&lt;br /&gt;
Revising the microformats tests to conform to the &amp;quot;don't collapse whitespace&amp;quot; rule below reveals some non-intuitive cases. &lt;br /&gt;
preserving whitespace in addresses is somewhat defensible, but in an implied name it is often unhelpful, as it preserves non-user visible space there for authoring reasons.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
[https://github.com/microformats/tests/commit/a325e0e9bc2089507e69b1883f7065a3316e07c2#diff-d577012c1438978a571c4049179607f0 this test] shows how extraneous whitespace ends up in the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-review-aggregate&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;p-item h-event&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 class=&amp;quot;p-name&amp;quot;&amp;gt;Fullfrontal&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;p class=&amp;quot;p-description&amp;quot;&amp;gt;A one day JavaScript Conference held in Brighton&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;time class=&amp;quot;dt-start&amp;quot; datetime=&amp;quot;2012-11-09&amp;quot;&amp;gt;9th November 2012&amp;lt;/time&amp;gt;&amp;lt;/p&amp;gt;    &lt;br /&gt;
    &amp;lt;/div&amp;gt; &lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;p class=&amp;quot;p-rating&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;p-average value&amp;quot;&amp;gt;9.9&amp;lt;/span&amp;gt; out of &lt;br /&gt;
        &amp;lt;span class=&amp;quot;p-best&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt; &lt;br /&gt;
        based on &amp;lt;span class=&amp;quot;p-count&amp;quot;&amp;gt;62&amp;lt;/span&amp;gt; reviews&lt;br /&gt;
    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
give a parsed result of:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;items&amp;quot;: [{&lt;br /&gt;
        &amp;quot;type&amp;quot;: [&amp;quot;h-review-aggregate&amp;quot;],&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
            &amp;quot;item&amp;quot;: [{&lt;br /&gt;
                &amp;quot;value&amp;quot;: &amp;quot;Fullfrontal\nA one day JavaScript Conference held in Brighton\n9th November 2012&amp;quot;,&lt;br /&gt;
                &amp;quot;type&amp;quot;: [&amp;quot;h-event&amp;quot;],&lt;br /&gt;
                &amp;quot;properties&amp;quot;: {&lt;br /&gt;
                    &amp;quot;name&amp;quot;: [&amp;quot;Fullfrontal&amp;quot;],&lt;br /&gt;
                    &amp;quot;description&amp;quot;: [&amp;quot;A one day JavaScript Conference held in Brighton&amp;quot;],&lt;br /&gt;
                    &amp;quot;start&amp;quot;: [&amp;quot;2012-11-09&amp;quot;]&lt;br /&gt;
                }&lt;br /&gt;
            }],&lt;br /&gt;
            &amp;quot;rating&amp;quot;: [&amp;quot;9.9&amp;quot;],&lt;br /&gt;
            &amp;quot;average&amp;quot;: [&amp;quot;9.9&amp;quot;],&lt;br /&gt;
            &amp;quot;best&amp;quot;: [&amp;quot;10&amp;quot;],&lt;br /&gt;
            &amp;quot;count&amp;quot;: [&amp;quot;62&amp;quot;],&lt;br /&gt;
            &amp;quot;name&amp;quot;: [&amp;quot;Fullfrontal\nA one day JavaScript Conference held in Brighton\n9th November 2012\n\n\n9.9 out of \n        10 \n        based on 62 reviews&amp;quot;]&lt;br /&gt;
        }&lt;br /&gt;
    }],&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is a reasonable textual representation of the event, but the implied &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; is full of spurious whitespace that any consumer would have to strip. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/microformats/tests/commit/4c9690b53b0a2f40440abac8e609c51ac7dd6d56 h-review] has similar issues&lt;br /&gt;
&lt;br /&gt;
2015-05-28: (Addition by [[User:GlennJones|Glenn Jones]])&lt;br /&gt;
&lt;br /&gt;
The example below shows the type of markup most effected by the &amp;quot;implied name&amp;quot; and &amp;quot;don't collapse whitespace&amp;quot; rule working together to produce output that is hard to use without further processing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;h-card&amp;quot; href=&amp;quot;http://glennjones.net&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;p-given-name&amp;quot;&amp;gt;Glenn&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;p-family-name&amp;quot;&amp;gt;Jones&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The output for the name property from the above HTML would be &amp;lt;code&amp;gt;Glenn\r\n     Jones&amp;lt;/code&amp;gt; using the (trim lead/trailing) suggested in the  parsing spec.  I could of course move the spans onto one line, but it feels fragile to consider whitespace sensitivity in HTML like this. Added to the fact that HTML templating environments often take away that level of whitespace control from authors anyway.&lt;br /&gt;
&lt;br /&gt;
There are issues with both: keeping whitespace, returns and tabs from parsed HTML or collapse that whitespace. If we return the whitespace it becomes mal-formatted for humans because it was only added to make the HTML code understandable and in most cases was not meant to be used/read outside of that context. If we collapse the whitespace we can have issues of whitespace sensitive text from &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; etc. being incorrectly formatted. &lt;br /&gt;
&lt;br /&gt;
Providing a CSS aware innerText feature would produce the most useable output, but this is too complex/time consuming to build for most parser developers. In the face of no perfect solution I have taken the 80:20 view,  whereby errant whitespace, causes me considerably more problems than mal-formatted &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; content so I collapse whitespace on all text returned. &lt;br /&gt;
&lt;br /&gt;
This feature is a non-CSS aware version of innerText. It does not cover all rendering edge cases, but enough to produce practical output.&lt;br /&gt;
&lt;br /&gt;
For now, I have started changing the node parser to flag &amp;quot;white-space collapsing&amp;quot; as an experimental feature which is off by default i.e. http://glennjones.net/tools/microformats/ but personally I will parse everything with this on as I find it the most practical solution.  &lt;br /&gt;
&lt;br /&gt;
Not sure where that leaves me on the options below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
Choose from:&lt;br /&gt;
# keep as is and every parser client has to post process for common cases.&lt;br /&gt;
# '''keep as is but have mf2 parser trim leading/trailing whitespace (likely to provide desired result and be reasonably backcompat)'''&lt;br /&gt;
#* +1 my preference of the two options. [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
#* +1 though this doesn't solve any of the problems discussed above, it's still worth doing [[User:Kevin Marks|Kevin Marks]] 16:41, 28 May 2015 (UTC)&lt;br /&gt;
#* +1 will help parsers be more consistent with each other, and I haven't ever encountered a case where preserving leading/trailing whitespace was desirable [[User:Kylewm|Kylewm]] 20:45, 8 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
2015-06-08 option 2 resolved by consensus and implementation in mf2py.&lt;br /&gt;
&lt;br /&gt;
Somewhat orthogonal:&lt;br /&gt;
* make &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; on properties with children normalise whitespace&lt;br /&gt;
** -1 Seems like a bad idea as this &amp;quot;value&amp;quot; is supposed to be the same as if there was no embedded child microformat. [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
* make implied &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; normalise whitespace.&lt;br /&gt;
** +0 This is reasonable and already done somewhat in the parsing spec (trim lead/trailing). [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
** +1 Given the universality of name, this would fix most of the issues we see. [[User:Kevin Marks|Kevin Marks]] 16:41, 28 May 2015 (UTC)&lt;br /&gt;
* Put \n in textual forms if there is a &amp;lt;code&amp;gt;&amp;amp;lt;p&amp;amp;gt;&amp;lt;/code&amp;gt; tag in the original.&lt;br /&gt;
** -1 that's a long path to go down with whitespace equivalents for HTML markup. [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
** would only preserving whitespace if in &amp;amp;lt;pre&amp;amp;gt; be an 80:20 compromise? [[User:Kevin Marks|Kevin Marks]] 16:41, 28 May 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Because there are both code markup and specific vocabulary (label) needs for preserving whitespace, we are compelled to preserve in general, perhaps except for very specific limited generic cases (e.g. trim leading/trailing, &amp;quot;value&amp;quot; parsing, implied name). [[User:Tantek|Tantek]]&lt;br /&gt;
&lt;br /&gt;
=== u- parsing iframe src ===&lt;br /&gt;
Currently if I put u-* on an iframe it gets the value of the fallback text. This seems a shame. Getting the URL seems a sensible answer.&lt;br /&gt;
[[User:Kevin Marks|Kevin Marks]] 09:07, 11 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== i- parsing iframe src ===&lt;br /&gt;
&lt;br /&gt;
More controversially, what about using an iframe for transclusion? A use case here is comments on a static site. Currently, on eg http://www.kevinmarks.com/microformatschema.html the comments are injected via JS, making them opaque to parsers and thus precluding further parsing such as salmentions.&lt;br /&gt;
&lt;br /&gt;
If instead they were an iframe embedding them, a parser could optionally fetch its contents, parse them, and include them in the parsed mf2 output at that point. Overloading u-* for this seems wrong; e-* as below for srcdoc would have a different effect; this implies a new prefix directive would be needed. A strawman i-* (for include) may work.&lt;br /&gt;
[[User:Kevin Marks|Kevin Marks]] 09:07, 11 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== e- parsing iframe srcdoc ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Proposal: addition of a new e-* parsing rule for iframe elements with srcdoc attributes. E.G.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;iframe class=&amp;quot;e-content&amp;quot; srcdoc=&amp;quot;&amp;lt;p&amp;gt;A paragraph of HTML with &amp;amp;quot;quoted quotes&amp;amp;quot; &amp;amp;amp;amp; doubly quoted ampersands&amp;lt;/p&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;items&amp;quot;: [{&lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-entry&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
   &amp;quot;content&amp;quot;: [&amp;quot;&amp;lt;p&amp;gt;A paragraph of HTML with &amp;amp;quot;quoted quotes&amp;amp;quot; &amp;amp;amp; doubly quoted ampersands&amp;lt;/p&amp;gt;&amp;quot;]&lt;br /&gt;
  }&lt;br /&gt;
 }]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would allow, for example, HTML comments to be sandboxed inside iframes but still parsable as microformats.&lt;br /&gt;
&lt;br /&gt;
I believe the correct processing would be to leave &amp;amp;quot; entities as they are but to unescape any doubly-escaped ampersands.&lt;br /&gt;
&lt;br /&gt;
** Is there any use case for that? —[[User:TomMorris|Tom Morris]] 12:32, 14 September 2013 (UTC)&lt;br /&gt;
** +1 we need documentation of use case and existing sites publishing iframe srcdoc like this - [[User:Tantek|Tantek]] 00:47, 15 September 2013 (UTC)&lt;br /&gt;
** Rejected by consensus at [[2015-01-20]] meetup due to lack of real world uses cases / existing sites. [[User:Tantek|Tantek]] 06:26, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to interpret mf2 properties on select ===&lt;br /&gt;
How should select elements with properties be treated any differently?&lt;br /&gt;
&lt;br /&gt;
Awaiting real world examples / stronger use-cases, until then no special treatment of select elements with properties:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Are there any real world examples of select elements with microformats properties?&lt;br /&gt;
* What would the use-case be for putting a microformats property class name on a select element?&lt;br /&gt;
* Nothing special. By consensus at [[2015-01-20]] meetup due to lack of real world uses cases / existing sites. [[User:Tantek|Tantek]] 06:26, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to interpret mf2 root name on form ===&lt;br /&gt;
See what to do about &amp;lt;em&amp;gt;root class names&amp;lt;/em&amp;gt; on &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; elements in particular:&lt;br /&gt;
* [[hcard-input]]&lt;br /&gt;
&lt;br /&gt;
Awaiting real world examples / stronger use-cases, until then, no special treatment of root class names on &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; elements:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Are there any real world examples of a &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; element with a microformats root class name?&lt;br /&gt;
* [[hcard-input]] is one possible use-case, is anyone attempting to use forms for hCard input, e.g. with scripts to help make it work?&lt;br /&gt;
* Are there other use-cases for putting a microformats root class name on a &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; element?&lt;br /&gt;
* As of [[2015-01-20]] - no consensus - need more input as to when/why this is useful to do anything special.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Parsing Literal Values===&lt;br /&gt;
Issue raised by: [[User:BenWard|Ben Ward]]&lt;br /&gt;
&lt;br /&gt;
It is proposed for microformats2 that all microformats be parsable from just their root element, e.g. &amp;lt;code&amp;gt;&amp;amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;Ben Ward&amp;amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; would create an hCard with the following properties after parsing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
  'type': ['h-card'],&lt;br /&gt;
  'properties': {&lt;br /&gt;
     'name': ['Ben Ward']&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a four-fold change from the current [[hCard]]:&lt;br /&gt;
# type is generically identifiable as a microformat root, even in parsed form. The use of the 'h-' prefix persists into the type of the object. This is deliberately so, as a result of re-using the JSON data model of microdata which itself is re-using a common JSON convention, such that microformatted data is clearly distinguishable (as opposed to any other random schema that may be using a similar data model).&lt;br /&gt;
# root-class-only support. Per [[microformats-2-implied-properties]], the ''name'' property is implied by the entirety of the root class name element.&lt;br /&gt;
# 'name' instead of 'fn'. As also documented in [[microformats-2-implied-properties]], the continuous challenges/problems and need to repeatedly re-explain 'fn' over the years combined with the real-world market response of nearly every other party doing a person vocabulary renaming 'fn' to 'name', microformats 2 makes this change as well.&lt;br /&gt;
# There is no automatic parse-time inferring of &amp;lt;code&amp;gt;'given-name': ['Ben']&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;'family-name': ['Ward']&amp;lt;/code&amp;gt;. Any such inferring *might* be made by a vCard converter, but is left up to that specific application (not all applications) built on that vocabulary, though even in that case it may not be necessary, as an empty &amp;quot;N:;;;&amp;quot; [[vCard]] property is sufficient to satisfy the N property requirement of [[vCard]], and also causes no problems when imported into various [[vcard-implementations]].&lt;br /&gt;
&lt;br /&gt;
It is required of the extractor to understand that when a microformats object specifies no explicit child properties, that it must treat &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; as having a &amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;. But, the parser is generic, so it also treats &amp;lt;code&amp;gt;h-review&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-entry&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-recipe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-geo&amp;lt;/code&amp;gt; as having a ‘&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;’.&lt;br /&gt;
&lt;br /&gt;
As a result, specific vocabularies are evolved to drop their specific form of name (e.g. fn, summary, entry-title) and simplified to use a common 'name' property instead.&lt;br /&gt;
&lt;br /&gt;
Note: while the overwhelming majority of real world publishing/consuming uses of microformats do so with proper nouns which have names (and thus this parser-level incorporation of an implied 'name'), there are some formats that do not have a 'name' semantic. For example, [[geo]], [[adr]], and possibly if/when developed, units of measure, length, cost. The current thinking is that the benefits to the far greater proper-noun use-case of microformats outweigh the technical inelegance of having an extra/ignored 'name' property on formats that lack such a semantic.&lt;br /&gt;
&lt;br /&gt;
Some formats also may appear in theory to better imply some other property, e.g. a review might be thought to imply its ''content'', not its name, and an Atom entry its ''content'', not its title, but in practice (actual publishing patterns) this is not the case. Typically, brief unstructured reviews (or mentions thereof) provide a ''summary'' (often hyperlinked to an expanded structured form) of that review, not its content, and similarly, brief unstructured posts (e.g. RSS items) have historically most often been link blog items which include the title of an item and a link. Short status updates as well established by Twitter are newer and would seem to imply purely content with no title, at least semantically, however, even Twitter populates the RSS title and ATOM entry title of their feeds with the content. It's not clear what went into that decision, however, that's likely irrelevant, as the outcome turns out to be emergent consistency among publishing behaviors.&lt;br /&gt;
&lt;br /&gt;
To avoid overloading or undermining the semantics of a vocabulary, I propose that we handle this at the extractor level in a simpler fashion: Define a new property for literal data, that an extractor will provide if no other information was available. All ''interpreters'' may then be instructed that in the event that an object has no properties, it can attempt to interpret the literal value from the page instead.&lt;br /&gt;
&lt;br /&gt;
* This was one of the design iterations I went through which led me to the current implied 'name' design. Another iteration was the ability for a vocabulary to specify a single required property which was implied if there were no properties provided. However, the combination of the fact that in most cases such single required properties were quite name-like, and that a vocabulary-specific rule like that would then bind parsers to specific vocabularies (even so slightly) led me to collapse them into implying a 'name'. It's not perfect, but it's the best alternative so far that balances practical convenience of publishing/consuming, avoids vocabulary-specific knowledge in the parser, and technical (in)elegance. [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
In existing microformats, the closest existing example we have for this is the &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; property in hCard, which is used to represent the literal address label for a place. It is a corresponding piece of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;org&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; in combination, but has no structure in and of itself. Possibly, every microformat could have a &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; form where structured data is unavailable.&lt;br /&gt;
&lt;br /&gt;
However in practice, the hCard &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; property is both little understood and little used. It's not even clear that it ought to be kept for microformats 2 (no known consumers, very few (if any?) real-world non-test publishers). This disuse is likely a good indicator that we should avoid basing anything on its design.&lt;br /&gt;
&lt;br /&gt;
Alternatively, &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is used throughout microformats to target a generic value (e.g. in combination with &amp;lt;code&amp;gt;price&amp;lt;/code&amp;gt; in hListing.) It has been proposed that when parsing properties that are also themselves microformats, we create native objects of the form:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        'value': '1900 12th Street, San Francisco, CA 94'&lt;br /&gt;
      , 'type': ['h-adr']&lt;br /&gt;
      , 'properties': {&lt;br /&gt;
            'street-address': '1900 12th Street'&lt;br /&gt;
          , 'etc': 'etc'&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
We could apply this same pattern to the root level:&lt;br /&gt;
&lt;br /&gt;
    { &lt;br /&gt;
        type: [h-card]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: 'Ben Ward'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
In this case, an interpreter or implementation is responsible for using &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; in place of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, or restructuring the object. It would be the responsibility of each vocabulary to define its root property. The parsing layer of microformats 2.0 would not impose semantics or naming onto that.&lt;br /&gt;
&lt;br /&gt;
For another example, h-geo would end up like this:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        type: [h-geo]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: '1.3232;-0.543'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
* This is an alternative I've been considering as well:  [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
** 'value' is more generic than 'name' (applies to more vocabularies) with the trade-off that it naturally has less (weaker) semantics.&lt;br /&gt;
*** +1 I think that having naturally weaker semantics would be appropriate for this parsing functionality. —[[User:BenWard|BenWard]] 07:24, 5 October 2011 (UTC)&lt;br /&gt;
** The interesting thing that this analysis has revealed is that there appear to be two distinct clusters of microformats, the much more commonly used/understood/useful proper-noun microformats which markup things with names (people, events, reviews, recipes), and the less used compound-data microformats which are often used ''inside'' other microformats and just have some sort of semi-structured value (adr, geo, measure, and perhaps even things like tel). Perhaps this is implying the possibility and some degree of utility for ''two'' microformats root class name prefixes, 'h-' for existing proper-noun microformats, and something else ('m-' for microformat/molecule?, 's-' for structured-value?, 'v-' for value (though historically &amp;quot;v-&amp;quot;/&amp;quot;v.&amp;quot; has meant &amp;quot;vendor-specific&amp;quot;)?) for unnamed structured data microformats.&lt;br /&gt;
*** This more and more feels like a good idea, and I'm leaning toward &amp;quot;s-&amp;quot; for struct / structure / structured value. &amp;quot;s-&amp;quot; works just like &amp;quot;h-&amp;quot; except that it doesn't imply any properties at parse time. We can try it and see what happens. There's also no harm if publishers just use &amp;quot;h-&amp;quot; structures, they just (possibly) get a few extra properties if they happen to omit properties.&lt;br /&gt;
** Parallels the same JSON when a property has both a string value ''and'' is a structure itself.&lt;br /&gt;
*** Changed my mind on this. The parallel is not quite there. 'name'/'url'/'photo' are only implied if there are NO properties, where as the JSON string value + structure convention *always* provides a 'value'. [[User:Tantek|Tantek]] 22:39, 4 October 2011 (UTC)&lt;br /&gt;
*** And due to this difference in behavior ('value' is there when nested properties are present, whereas 'name' is only implied when there are no properties specified), I think it's correct to keep them separate, i.e. stick with implied 'name'. [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
** However, I'm still currently leaning towards the practical convenience of providing a 'name' for the vast majority of microformats uses, rather than diluting this feature for the sake of avoiding implying inapplicable semantics to the few plain structured data microformats, and even then, only when no properties are explicitly specified! I'd rather introduce a new root prefix for those than lose the simplicity and utility of implied 'name'. [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== resolved ==&lt;br /&gt;
=== When to collapse whitespace in properties ===&lt;br /&gt;
&lt;br /&gt;
The spec doesn’t explicitly require whitespace to be collapsed or not. The official mf2 test suite requires it to be collapsed.&lt;br /&gt;
&lt;br /&gt;
Reasons why whitespace ''shouldn’t'' be collapsed:&lt;br /&gt;
* Plaintext property representations of syntax-highlighted code, poetry and song lyrics require whitespace to be present&lt;br /&gt;
* Whether or not whitespace is an important part of the content being parsed is determined by css white-space and CANNOT be inferred from HTML markup alone&lt;br /&gt;
&lt;br /&gt;
Resolution 2013-11-12: Agreed, whitespace should not be collapsed (other than normal HTML5 parsing rules). The spec now refers to &amp;quot;textContent&amp;quot; rather than &amp;quot;innertext&amp;quot; to make this explicit.&lt;br /&gt;
&lt;br /&gt;
=== How to interpret mf2 classnames on form inputs ===&lt;br /&gt;
E.G. how to parse:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;input class=&amp;quot;u-url&amp;quot; value=&amp;quot;https://brennannovak.com/notes/338&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Examples in the wild: https://brennannovak.com/notes/338&lt;br /&gt;
&lt;br /&gt;
See proposal:&lt;br /&gt;
* [[hcard-parsing-brainstorming#input_element_handling]]&lt;br /&gt;
&lt;br /&gt;
Resolution 2013-11-12: Per that proposal, p- u- dt- properties on input[value] elements now use the value attribute.&lt;br /&gt;
&lt;br /&gt;
=== mixture of microformats2 and classic microformats classnames on different elements ===&lt;br /&gt;
Some sites in the wild have mistakenly combined classic mf and mf2 markup in ways which misrepresent the content if parsed in BC mode.&lt;br /&gt;
&lt;br /&gt;
Typically this is caused by putting classic and mf2 classnames for the same vocabulary on different elements, e.g:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;body class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;article class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name&amp;quot;&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
 &amp;lt;/article&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sites where this has been observed:&lt;br /&gt;
* http://acegiak.machinespirit.net/2013/10/17/barnaby-walters-notes-another-thing-i-love-about-the-web-users-have-the-power-to-take-control-of-their-uis-and-improve-their-own-experiences-aside-drm-for-html-would-prevent-this-from-being-possibl/&lt;br /&gt;
* http://shawfactor.com/2013/08/06/thoughts-on-extending-webmentions/ (fixed)&lt;br /&gt;
* http://notizblog.org/2013/06/18/the-rise-of-the-indieweb/ (fixed)&lt;br /&gt;
&lt;br /&gt;
Discussion:&lt;br /&gt;
&lt;br /&gt;
* As far as I can tell, the problems in all of these examples were caused by mf2 markup being injected by a wordpress plugin, but classic mf classnames being present further up the DOM in the themes. When parsed in compatibility mode, the classic mf classnames are transformed into mf2 classnames, making the original mf2 classnames look like children of empty items.&lt;br /&gt;
* Turns out this isn’t theme-specific, WordPress injects hentry via PHP [http://indiewebcamp.com/irc/2013-10-22/line/1382448759]. The bug with the wordpress mf2 plugin is resolved as of [http://indiewebcamp.com/irc/2013-10-22/line/1382449035 2013-10-22] --[[User:Barnabywalters|bw]] 13:38, 22 October 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== e- and p- escaping levels ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* The fact that the parsed value of any element with .e-* is at a different level of escaping to the parsed values of p-*, dt-* etc. without any indication of how the property was parsed in the output is a security problem. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;input&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;output&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
   &amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;p-name&amp;quot;&amp;gt;&amp;amp;lt;tag&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;items&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;type&amp;quot;: [&lt;br /&gt;
                &amp;quot;h-card&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;properties&amp;quot;: {&lt;br /&gt;
                &amp;quot;name&amp;quot;: [&lt;br /&gt;
                    &amp;quot;&amp;lt;tag&amp;gt;&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
   &amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;e-name&amp;quot;&amp;gt;&amp;amp;lt;tag&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;items&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;type&amp;quot;: [&lt;br /&gt;
                &amp;quot;h-card&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;properties&amp;quot;: {&lt;br /&gt;
                &amp;quot;name&amp;quot;: [&lt;br /&gt;
                    &amp;quot;&amp;amp;lt;tag&amp;amp;gt;&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* As a parser developer, the most straightforward way I can think of solving this is to add an option (enabled by default) which encodes HTML special characters on all non e-* properties, so the developer knows that all property values are going to be at the same level of escaping. --[[User:Barnabywalters|bw]] 20:00, 15 June 2013 (UTC)&lt;br /&gt;
** Your suggestion of auto-HTML-encoding p-*/u-*/dt-* property values is the most sensible I think. I would NOT make it an option, as it makes sense write consistent microformats2 consumers. - [[User:Tantek|Tantek]] 07:18, 5 July 2013 (UTC)&lt;br /&gt;
** Can you think of any existing apps/consumers of microformats2 via the parser that would break? What would indieweb comments parsers do? - [[User:Tantek|Tantek]] 07:18, 5 July 2013 (UTC)&lt;br /&gt;
*** The only breakage which might occur would be over-encoding of non e-* properties, but I’ll release this update as v0.2.0 and warn people about the changes. The worst thing which could happen is that some comments look a bit weird, as opposed to the current worst possible scenario of easy XSS attacks --[[User:Barnabywalters|bw]] 12:55, 5 July 2013 (UTC)&lt;br /&gt;
*** We should also decide exactly which characters get encoded — just angle brackets, or quotes/ampersands as well? --[[User:Barnabywalters|bw]] 12:55, 5 July 2013 (UTC)&lt;br /&gt;
*** I am not sure about this, it seems more like a helper function rather than a core feature of the parser. Personally I would like to store data as text and encode only when I am going to use and I known the format it is going to be use in.  --[[User:GlennJones|Glenn Jones]] 9:54, 14 July 2013 (UTC) &lt;br /&gt;
***After the discussion on the indiewebcamp IRC with Barnaby Walters I now understand the XSS issue that this change is trying to address. A rogue author could include HTML with scripts to execute a XSS attack. These could be masked by switch prefixes i.e. p-* to e-* on a well use property. As the consumer does not see the prefix in the JSON output they have no idea if a property will content HTML or text.  I will update my two parsers and the test suite --[[User:GlennJones|Glenn Jones]] 8:02, 17 July 2013 (UTC) &lt;br /&gt;
**So what about an author setting a property to e-* when it would normal be p-*, dt-* or u-* i.e.&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-card&amp;quot;&amp;gt;&amp;lt;p class=&amp;quot;e-name&amp;quot;&amp;gt;&amp;lt;script&amp;gt; alert('xss test') &amp;lt;/script&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** per [[events/2013-09-14-microformats2-parsing|microformats2 parsing discussion 2013-09-14]], parsers should never automatically attempt to HTML-special-characters encode - as that would provide the client of the parser a false sense of security. It's *always* up to client code to escape any text being output to HTML *at the moment it is output to HTML* and never before, because they can never trust that any text from storage/elsewhere has for sure been escaped or not. - [[User:Tantek|Tantek]] 18:07, 17 October 2013 (UTC)&lt;br /&gt;
** Should we not encode e-* as well and the consumer can decode at their own risk --[[User:GlennJones|Glenn Jones]] 18:42, 21 July 2013 (UTC) &lt;br /&gt;
*** No, never, per above point from [[events/2013-09-14-microformats2-parsing|microformats2 parsing discussion 2013-09-14]] - [[User:Tantek|Tantek]] 18:07, 17 October 2013 (UTC)&lt;br /&gt;
** See [[events/2013-09-14-microformats2-parsing|microformats2 parsing discussion 2013-09-14]] etherpad: https://etherpad.mozilla.org/microformats2parsing for more details on the resolution to this issue - and incorporate here (then move to resolved section below). - [[User:Tantek|Tantek]] 18:07, 17 October 2013 (UTC)&lt;br /&gt;
* Resolved by changes to the parsing spec: all properties are plaintext (non-HTML escaped), e-* properties result in a dictionary with &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; = plaintext version, &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; = raw HTML version &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== br hr empty string ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* The parsing rule 'else if br.p-x or hr.p-x, then return &amp;quot;&amp;quot; (empty string)' for p-* can cause any code consuming the API to become quite bloated. It means that you have test every array value to see if its an empty string. It is also unclear to me what the purpose of this mark-up pattern is for  [[User:GlennJones|Glenn Jones]]&lt;br /&gt;
** Upon reconsidering this, I agree with you, this is an unlikely use case. If a publisher wants to explicitly set an empty property &amp;quot;p-foo&amp;quot; they can simply write &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;p-foo&amp;quot;&amp;gt;&amp;amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; which looks explicit. Whereas BR and HR tags are often just presentational, so we should both not encourage usage of them for semantics, and anyone that did use them would be subject to likely loss of semantics upon a redesign (that got rid of those particular BR and HR tags). I'm going to remove them from the parsing spec. - [[User:Tantek|Tantek]] 15:29, 10 February 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== datetime examples without T delimiter ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* The examples in the wiki microformats-2 pages such h-entry and h-entry had datetime without the 'T' delimiter between date and time. ie&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;time class=&amp;quot;dt-published&amp;quot; datetime=&amp;quot;2013-06-13 12:00:00&amp;quot;&amp;gt;13&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; June 2013&amp;lt;/time&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
I have updated the pages. As far as I known this is a new pattern for dates. Was it a mistake in the examples or is it a new datetime pattern.&lt;br /&gt;
** The [[HTML5]] &amp;quot;time&amp;quot; element, and &amp;quot;datetime&amp;quot; attribute allow for space &amp;lt;span style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;&amp;quot; &amp;quot;&amp;lt;/span&amp;gt; as a separator between date and time as well as &amp;quot;T&amp;quot;, thus we allow it for microformats as well. The  &amp;lt;span style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;&amp;quot; &amp;quot;&amp;lt;/span&amp;gt; separator is preferred as the date and time are more readable when separated by a space. The examples noted in those specs deliberately use this. - [[User:Tantek|Tantek]] 18:48, 15 July 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== rel-alternate absent optional attributes ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* What should rel-alternate parsing do when one of the optional attributes specified (&amp;lt;kbd&amp;gt;hreflang&amp;lt;/kbd&amp;gt; or &amp;lt;kbd&amp;gt;media&amp;lt;/kbd&amp;gt; or both) is not there? The options seem to be:&lt;br /&gt;
*# leave the corresponding key out of the alternate JSON object&lt;br /&gt;
*#* This one. Leave the corresponding key out.&lt;br /&gt;
*# include the corresponding key in the alternate JSON object, but set the value to the JSON null object&lt;br /&gt;
*# include the corresponding key in the alternate JSON object, but set the value to a blank string&lt;br /&gt;
*# something I haven't thought of&lt;br /&gt;
&lt;br /&gt;
I haven't checked the existing implementations, but Barnaby said he's not sure what the appropriate way to deal with it is either. —[[User:TomMorris|Tom Morris]] 15:41, 9 August 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== rel-alternate and type attribute ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Should rel-alternate parsing also pick up the &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; attribute? It’s fairly widely used, e.g. for ATOM feeds.&lt;br /&gt;
** Numerous existing sites/pages have various [[rel-alternate]] uses with a type attribute for feeds/APIs so that's good enough to add this for help with discovery in general. Rel parsing updated. - [[User:Tantek|Tantek]] 00:47, 15 September 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Extraction vs Interpretation ===&lt;br /&gt;
Issue raised by: [[User:BenWard|Ben Ward]]&lt;br /&gt;
&lt;br /&gt;
A microformats ‘1.0’ parser performs the following function:&lt;br /&gt;
&lt;br /&gt;
* Given a piece of HTML content, discover a known microformat, extract it, apply various extraction patterns based upon the HTML mark-up used (e.g. include pattern, &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; patterns, date-time patterns, value-title pattern), apply various content optimisations where applicable, and return the result in an object native to the programming language.&lt;br /&gt;
&lt;br /&gt;
This is performing two types of function: Extraction of data from an HTML document or fragment, ''and'' interpretation and optimisation of that content to match the rules set out by a vocabulary specification.&lt;br /&gt;
&lt;br /&gt;
It is only possible to write a generic parser that covers the first half of this task: Extraction, and application of global rules based on HTML elements and patterns common to all formats.&lt;br /&gt;
&lt;br /&gt;
The purpose of a generic parser (as supported by use cases such as search engines, and other crawlers) is: &lt;br /&gt;
&lt;br /&gt;
To provide a way for tools to extract rich data from a page for native storage, such that the data may be interpreted later by applications. This allows microformats to be crawled, and indexed, and removes the need to include complex HTML parsing within every implementation of microformat data.&lt;br /&gt;
&lt;br /&gt;
Microformats will continue to define various vocabulary-specific optimisations. as part of the design to be optimised for authors. For example: The &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; pattern in [[hcard]], or the &amp;lt;code&amp;gt;lat;long&amp;lt;/code&amp;gt; pattern in [[geo]], as well as default values for properties, such as the maximum rating in an [[hreview]].&lt;br /&gt;
* Actually, no, as it is defined currently, microformats 2 ''drops'' vocabulary-specific optimizations. Such optimizations have often been too inapplicable, error prone or i18n-unsafe (e.g. fn to given-name + family-name fails for both numerous cases where middlenames/initials are used, and in general in numerous Asian languages where given/family name order is the reverse of Western English conventions, or languages with multiple family-names, e.g. Spanish - see [[hcard-issues-resolved]] for more). This is a deliberate cutting of a &amp;quot;feature&amp;quot; from microformats 1, it is a deliberate model simplification design decision. [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
==== Extraction resolution ====&lt;br /&gt;
Proposed resolution:&lt;br /&gt;
&lt;br /&gt;
Microformats2 should refer only to ''extraction'' of microformats. Vocabularies should in turn document their appropriate optimisations, which will need to be applied by implementations, or a companion to an extractor, which I'll refer to here as an ‘interpreter’.&lt;br /&gt;
* Vocabularies will no longer have optimizations, this is again deliberately, as they've been shown to be more error prone than helpful. Thus there should be no need for any vocabulary-specific 'interpreters'. However, due to design quirks in various legacy/interchange formats, ''export conversions algorithms'' to those legacy/interchange formats will require some additional legacy-format-specific rules (e.g. odd &amp;quot;required&amp;quot; rules in [[Atom]] or [[vCard]] will require specific synthesis rules, limitations in said formats will require filtering of some values, e.g. [[vcard3]] BDAY disallows vague birthdays like year-month and --month-day - subsequently allowed in [[vcard4]]). [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
A microformats2 ‘extractor’, in combination with the functionality of a domain and format-aware ‘interpreter’ (either another shared component, or part of the implementation itself) would be equivalent to a microformats 1.0 ‘parser.’&lt;br /&gt;
* A microformats2 parser is both generic (no knowledge of specific vocabularies), and lacks any/all such vocabulary-specific rules as compared to a microformats 1.0 [[hcard-parsing|parser]] with the exception of a 1) a limited list of well-established/interoperable backward compat root class names (of current [[microformats]] that are or can be soon shown to be specifications/standards per the [[process]]), 2) flat sets of backward compat property names (some with prefix/name specific conversion) for each of those backward compat root class names.  This is a deliberate design decision that makes microformats 2 more &amp;quot;micro&amp;quot;, and yes this means that even with such backward compat support, this simple form of backward compat may mean that some existing microformats 1 content breaks. We'll assess those and iterate on a documented case-by-case basis rather than attempt to maintain theoretical 100% backward compatibility (since many current microformats format-specific-features are either unused, or may have caused more problems than solutions). [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
N.B. I'll rewrite some of these as [[microformats2-parsing-faq]] to help better clarify. The reasoning that led to most of these design decisions is documented in the [[microformats-2#About_This_Brainstorm|microformats 2: About This Brainstorm]] section and following sections. I'll recheck those sections to see if/where reasoning for some of the above noted design decisions may have been missed, and back-fill accordingly. This is necessary because [[microformats2]] is a evolutionary result of simultaneously addressing both numerous generic [[issues]] as well as various common [[hcard-issues-resolved|format]]-[[hcalendar-issues-resolved|specific]] [[mfo|problems]] in microformats1 syntax and vocabularies. The very number of changes may make it more challenging (from a microformats1 perspective) to see why any particular design change has been made. [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
This issue can be moved from resolved to closed once the above-mentioned write-ups have occurred.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Parsing properties from rel attributes===&lt;br /&gt;
tl;dr resolution: As of 2013, [[microformats2-parsing]] handles parsing all link and a href rel values at document scope level, and producing canonical JSON accordingly. - [[User:Tantek|Tantek]]&lt;br /&gt;
&lt;br /&gt;
Issue raised by [[User:BenWard|BenWard]] 07:24, 5 October 2011 (UTC):&lt;br /&gt;
&lt;br /&gt;
* Currently, hAtom parses `bookmark` as a permalink&lt;br /&gt;
* Various microformats parse `rel=tag` as tags&lt;br /&gt;
* The current proposal for parsing does not allow parsing properties from rel attributes.&lt;br /&gt;
&lt;br /&gt;
Microformats parsers could instead extract ''all'' link relationships from rel attributes within an microformat object, parsing them as if a u- prefixed property.&lt;br /&gt;
* Minor nit: Rather than same as a u- prefixed property, I think such &amp;quot;rel&amp;quot; properties should be parsed purely from the &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; attribute on &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;area&amp;amp;gt;&amp;lt;/code&amp;gt; elements and nothing more. I would strongly disagree to extending rel to apply to other elements with URLs like img src, object data, or to apply to elements in general like div. That's the path that RDFa has taken and caused much confusion as a result. [[User:Tantek|Tantek]] 07:39, 5 October 2011 (UTC)&lt;br /&gt;
** Agree: That seems like a perfectly reasonable restriction. --[[User:BenWard|BenWard]] 08:29, 5 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
This results in:&lt;br /&gt;
&lt;br /&gt;
* Continuing use of the &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attribute in HTML, thereby building on HTML semantics rather than bypassing them or ignoring them in favour of something less meaningful.&lt;br /&gt;
* Parsing hAtom objects contain a property named &amp;lt;code&amp;gt;bookmark&amp;lt;/code&amp;gt;, in place of &amp;lt;code&amp;gt;permalink&amp;lt;/code&amp;gt;.&lt;br /&gt;
* All microformats that use &amp;lt;code&amp;gt;rel-tag&amp;lt;/code&amp;gt; would contain a property named… &amp;lt;code&amp;gt;tag&amp;lt;/code&amp;gt;. Perfect.&lt;br /&gt;
&lt;br /&gt;
Since &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes are not overloaded for other functionality like class is, and other uses of &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; within content are low (and non-semantic uses are nil, to the best of my knowledge) the risk of property pollution would be extremely low.&lt;br /&gt;
&lt;br /&gt;
Note, with regard to this last point, that a generic microformats parser ''will'' parse false-positive properties, and ''will'' parse objects in combined chunks, rather than individually by format. Extracted objects will often not represent a vocabulary without further processing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* This sounds like it might be workable. Let's try it and see how well authors &amp;quot;get it&amp;quot;. - [[User:Tantek|Tantek]]&lt;br /&gt;
* Possible issue: do we have any collisions between class property names and rel names? (I don't think so offhand, but useful to ask the question). - [[User:Tantek|Tantek]]&lt;br /&gt;
** None that I can think of in microformats. There is the case of Google's &amp;lt;code&amp;gt;rel=author&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;p-author&amp;lt;/code&amp;gt; in hAtom. However, the next point, about mfo scoping, would cover it in most situations (rel-author on a hyperlink within an hcard wouldn't be applied to the hentry.) The one situation in a parse tree where it's ambiguous would be this: &lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;p-author h-card&amp;quot; &lt;br /&gt;
   rel=&amp;quot;author&amp;quot; &lt;br /&gt;
   href=&amp;quot;http://benward.me&amp;quot;&amp;gt;&lt;br /&gt;
   Ben Ward&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** I can think of two quite reasonable solutions: &lt;br /&gt;
*** 1. Declare that class properties take precedence over rel properties of the same name, discarding rel values if a class is also found, or &lt;br /&gt;
*** 2. Since all properties are now multi-value anyway, the hAtom object could be parsed as:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from the p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        'http://benward.me'      /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** —[[User:BenWard|BenWard]] 08:29, 5 October 2011 (UTC)&lt;br /&gt;
*** Option 2 makes sense and is consistent with the rest of the multi-value parsing/handling. - [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
*** What about without the 'p-author'?&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;h-card&amp;quot; &lt;br /&gt;
   rel=&amp;quot;author&amp;quot; &lt;br /&gt;
   href=&amp;quot;http://benward.me&amp;quot;&amp;gt;&lt;br /&gt;
   Ben Ward&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Should that be parsed as:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        'http://benward.me'      /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Or&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': 'http://benward.me' /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
          'type': ['h-card'],          /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        &lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*** And if the former, then we're presumably saying that the value parsed due to the presence of a rel is always its own value, and does not combine with any other structures. I am fine with this, but I wanted to make sure we are ok with that explicitly. [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
**** +1 I think that since the rel attribute is specifically concerned with the relation to an href attribute, it should not be combined with other structures that are rightly declared uses classes.&lt;br /&gt;
***** The more I've thought about this and how consuming applications may want to treat rel semantics, the more it seems correct to keep rel semantics distinct from class semantics. Class semantics are quite general/flexible, whereas rel is quite specific, naming something else in terms of a relationship from the current page/microformat's perspective. I think we should consider putting rel values in their own 'rel' collection, separate from the 'properties' collection. E.g. the original rel-author p-author h-card markup example would be parsed into this:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from the p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        }&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
   'rel': {&lt;br /&gt;
     'author': ['http://benward.me'] /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
***** and if a post had multiple authors:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Tantek Çelik'], /* from 2nd p-author     */&lt;br /&gt;
          'type': ['h-card'],        /* from 2nd h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Tantek Çelik'], &lt;br /&gt;
            'url': ['http://tantek.com']&lt;br /&gt;
        },&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
   'rel': {&lt;br /&gt;
     'author': [&lt;br /&gt;
       'http://benward.me',      /* from rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
       'http://tantek.com'       /* from 2nd rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ]&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
***** This preserves the semantic distinction between rel and properties in general, and leaves it up to a higher-level application to implement any logic around showing &amp;quot;more info&amp;quot; about a rel-author, e.g. by correlating the rel-author URL with the 'url' of an hCard it found in the same entry. However, note that even in the earlier JSON data model, the rel-author value just shows up as another property value, and any higher level application would still have to do some correlation logic. At least with this JSON data model, applications that may be looking for a rel value in particular, or a property value in particular can do so without having one unintentionally pollute the other. [[User:Tantek|Tantek]] 17:33, 6 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Presumably we'd apply all the same property scoping rules to rel scoping as well. E.g. a rel hyperlink inside a microformat won't be seen by any containing microformat. - [[User:Tantek|Tantek]]&lt;br /&gt;
** Correct, it should be parsed in the same scope as all other class properties in the object.&lt;br /&gt;
*** Update: all rel microformats are now parsed at page-scope. Per-microformat scoping of rel has been found to be too confusing in practice (and against the general semantic of rel expressed in the HTML/HTML5 specs) [[User:Tantek|Tantek]] 01:00, 10 July 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This issue can be moved from resolved to closed once we've verified that all the above-mentioned and implied needs to write things up have occurred.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== deduping of rels ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-06-02 by [[User:Kevin Marks|Kevin Marks]] &lt;br /&gt;
* 2015-06-05 resolved by consensus and one real world implementation proof of implementability and verification of expected results. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Many sites have multiple duplicate rel links to the same url - a very common case is WordPress home pages eg [http://ma.tt ma.tt] &lt;br /&gt;
&lt;br /&gt;
Each post on the page has a block like&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;entry-meta&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;date&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://ma.tt/2015/05/beethoven-mozart-bach/&amp;quot; &lt;br /&gt;
    title=&amp;quot;Permalink to Beethoven, Mozart,&amp;amp;nbsp;Bach&amp;quot; rel=&amp;quot;bookmark&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;time class=&amp;quot;entry-date&amp;quot; datetime=&amp;quot;2015-05-31T22:42:00+00:00&amp;quot;&amp;gt;May 31, 2015&amp;lt;/time&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;categories-links&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://ma.tt/category/asides/&amp;quot; rel=&amp;quot;category tag&amp;quot;&amp;gt;Asides&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;author vcard&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;url fn n&amp;quot; href=&amp;quot;http://ma.tt/author/saxmatt/&amp;quot; &lt;br /&gt;
    title=&amp;quot;View all posts by Matt&amp;quot; rel=&amp;quot;author&amp;quot;&amp;gt;Matt&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- .entry-meta --&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As currently defined, the parser will create duplicate entries in &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; for each post:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;category&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;author&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;tag&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;home&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and in the &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; we will also see:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;author&amp;quot;, &lt;br /&gt;
                &amp;quot;author&amp;quot;, &lt;br /&gt;
                &amp;quot;author&amp;quot;, &lt;br /&gt;
                &amp;quot;author&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;View all posts by Matt&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;home&amp;quot;, &lt;br /&gt;
                &amp;quot;home&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/category/asides/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;, &lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;, &lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;, &lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Asides&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
These duplicates are unhelpful for parser consumers. We should:&lt;br /&gt;
* make them both sets - only listing distinct values. This will remove ordering information, but order is irrelevant for rel in html.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;category&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;author&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;tag&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;home&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
}&lt;br /&gt;
…&lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;author&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;View all posts by Matt&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;home&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/category/asides/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Asides&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* possibly we could also make &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; sets too. That would solve the information loss issue with the current parsers&lt;br /&gt;
** Resolution: in the case of duplicate other attributes, first one set wins. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 as the proposer. A version of mf2py that does this is running at unmung,com. see [http://www.unmung.com/mf2?url=https%3A%2F%2Fma.tt&amp;amp;html=&amp;amp;pretty=on fro ma.tt] or [http://www.unmung.com/?html=%3Ca+href%3D%22http%3A%2F%2Fma.tt%2Fcategory%2Fasides%2F%22+rel%3D%22category+tag%22%3EAsides%3C%2Fa%3E%0D%0A%3Ca+href%3D%22http%3A%2F%2Fma.tt%2Fcategory%2Fasides%2F%22+rel%3D%22category+tag%22%3EAsides%3C%2Fa%3E%0D%0A%3Ca+href%3D%22http%3A%2F%2Fma.tt%2Fcategory%2Fasides%2F%22+rel%3D%22category+tag%22%3EAsides%3C%2Fa%3E&amp;amp;pretty=on a simple test] [[User:Kevin Marks|Kevin Marks]] 23:49, 2 June 2015 (UTC)&lt;br /&gt;
* +1 makes sense to me, and not having them be sets in the current spec is likely an oversight on my part. Thanks for noting this issue. [[User:Tantek|Tantek]] 05:28, 3 June 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== include alternates in rels ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-06-01 by [[Tantek]], per inconsistency noted by Kevin Marks.&lt;br /&gt;
* 2015-06-05 resolved per consensus and one real world implementation proof of implementability. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
As fallout from the adoption and implementation of 'rel-urls' per [[microformats2-parsing-brainstorming#more_information_for_rel-based_formats]], we should:&lt;br /&gt;
* add &amp;quot;alternate&amp;quot; rels to the &amp;quot;rels&amp;quot; collection to make them easier to look-up in &amp;quot;rel-urls&amp;quot; - that is, all rel values end up in &amp;quot;rels&amp;quot; collections. No exceptions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as the documenter of this issue, and attempting to represent what I think KevinMarks intended with &amp;quot;rels&amp;quot; and &amp;quot;rel-urls&amp;quot;.&lt;br /&gt;
* +1 This makes sense to me, as the &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; should match so you can lookup in rels first, then get details about urls from rel-urls. We can drop &amp;quot;alternates&amp;quot; independently from this change. [[User:Kevin Marks|Kevin Marks]] 00:23, 2 June 2015 (UTC)&lt;br /&gt;
** +1 drop &amp;quot;alternates&amp;quot; independently now made a separate issue. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
* +1 Makes sense. And I agree with Kevin; I think parsers should deprecate &amp;quot;alternates&amp;quot; for now and drop it after a version cycle or two. [[User:Kylewm|Kylewm]] 00:30, 2 June 2015 (UTC)&lt;br /&gt;
* implemented in [https://github.com/kevinmarks/mf2py/commit/4dba45200eef11da811f64817d02044ab9e98b77 my fork of mf2py] and running on [http://www.unmung.com/?html=%3Ca+rel%3D%22author%22+href%3D%22http%3A%2F%2Fexample.com%2Fa%22%3Eauthor+a%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22author%22+href%3D%22http%3A%2F%2Fexample.com%2Fb%22%3Eauthor+b%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22in-reply-to%22+href%3D%22http%3A%2F%2Fexample.com%2F1%22%3Epost+1%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22in-reply-to%22+href%3D%22http%3A%2F%2Fexample.com%2F2%22%3Epost+2%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22alternate+home%22%0D%0A+++href%3D%22http%3A%2F%2Fexample.com%2Ffr%22%0D%0A+++media%3D%22handheld%22%0D%0A+++hreflang%3D%22fr%22%3EFrench+mobile+homepage%3C%2Fa%3E&amp;amp;pretty=on unmung] [[User:Kevin Marks|Kevin Marks]] 01:29, 2 June 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Empty properties overridden by implied rules against user expectation ===&lt;br /&gt;
Status: resolved, existing behavior correct, no changes to parsing spec.&lt;br /&gt;
&lt;br /&gt;
2015-07-03: raised by [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
&lt;br /&gt;
Emma Kuo brought up an issue (https://github.com/glennjones/microformat-node/issues/22) based on following the indieweb note pattern, where the content of a note is given both the e-content and p-name classes. If the element containing the notes only has none text content like image the p-name can have unexpected value. Here is the example she gave:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;a href=&amp;quot;http://this.site/photo&amp;quot; class=&amp;quot;u-url&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;e-content p-name&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;photo.jpg&amp;quot; class=&amp;quot;u-photo&amp;quot;/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        Some extraneous text&lt;br /&gt;
        &amp;lt;div class=&amp;quot;h-cite&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;a href=&amp;quot;http://someother.site/like&amp;quot; class=&amp;quot;u-url&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;a href=&amp;quot;http://this.site/photo&amp;quot; class=&amp;quot;u-like-of&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;e-content p-name&amp;quot;&amp;gt;liked this&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At the moment I parser this as follows: - if a property (p-name) is empty do not add it to the output. In this case &amp;quot;empty&amp;quot; is classed as not containing any non-whitespace text. As far as I known there is no guidance on how to handle &amp;quot;empty&amp;quot; properties in microformats paring rules, so I followed the conventions of JSON API's not to return &amp;quot;empty&amp;quot; properties.&lt;br /&gt;
&lt;br /&gt;
The side effect of the above is that p-name also has a number of &amp;quot;implied rules&amp;quot;. The &amp;quot;implied rules&amp;quot; try to automatically fill properties like p-name if there is no defined value. In the example above it uses the textContent of the parent h-entry, so value of the h-entry&amp;gt;p-name is the text content of the h-cite i.e. &amp;quot;likes this&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
1. We should not allow the &amp;quot;implied name rule&amp;quot; to get textContent from within a child h-* &lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;strike&amp;gt;+1 I believe this is inline with how we parse properties and will meet user/author expectations  [[User:Glenn Jones|Glenn Jones]] 9:22, 3 July 2015 (UTC)&amp;lt;/strike&amp;gt;&lt;br /&gt;
* -1 A nested h-* is still part of the content of the parent h-*, I don't quite understand the rationale for excluding it. For example, I may include lots of h-cards in the body of a post that references people and wouldn't want them to be excluded from the implied name generation. [[User:Kylewm|Kylewm]] 14:40, 3 July 2015 (UTC)&lt;br /&gt;
* -1 I'm not sure this would solve the problem because auto-filled text could come from the parent h-* (&amp;quot;some extraneous text&amp;quot; in the example above) [[User:emmak|Emma Kuo]] 20:50, 4 July 2015 (UTC)&lt;br /&gt;
* -1 I agree with the other -1s. This would break some of the simplicity of the model. [[User:Tantek|Tantek]] 05:12, 14 July 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
2.  We should not execute the &amp;quot;implied rules&amp;quot; where there is an author defined &amp;quot;empty&amp;quot; property.&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;strike&amp;gt;-1 Although the output would meet author expectations it is complex for parsers as they will have to keep state for each property through the whole series of parsing rules.  [[User:Glenn Jones|Glenn Jones]] 9:22, 3 July 2015 (UTC)&amp;lt;/strike&amp;gt;&lt;br /&gt;
* +1 An explicit, empty, p-name property should prevent an implicit p-name from being generated. For example tantek.com includes &amp;amp;lt;span class=&amp;quot;p-name&amp;quot;&amp;gt;&amp;amp;lt;/span&amp;gt; at the start of the h-feed to prevent a giant name from being auto-generated. From my reading of the parsing spec, I don't see any reason that blank strings should be excluded from parsing. (mf2py and php-mf2 will both happily include empty strings in their output) [[User:Kylewm|Kylewm]] 14:40, 3 July 2015 (UTC)&lt;br /&gt;
* +1 We already have interop on this between mf2py and phpmf2, as well as people depending on it to explicitly set empty property values. [[User:Tantek|Tantek]] 05:12, 14 July 2015 (UTC)&lt;br /&gt;
* +1 As we already have interop with two parsers and solid user issue from Emma we should take this approach. [[User:GlennJones|Glenn Jones]] 11:51, 29 July 2015 (UTC)&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html&lt;br /&gt;
&lt;br /&gt;
=== uf2 children inside a classic microformats root class name ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-020: (raised by kylewm) What should microformats2 children inside a classic microformats root class name do?&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
1. Nothing. Any unattached uf2 children inside a classic microformats root are ignored. Problems:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* However then there's a possible surprise if/when the author upgrades the classic microformats root to uf2, then all of a sudden all the new uf2 children show-up.&lt;br /&gt;
* Another downside: author adds uf2 markup, can't figure out why nothing is happening (because somewhere up the tree in code they didn't touch is classic microformats that are hiding these unattached uf2 children.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
2. Show up in the children collection of the classic microformats root&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Feels most predictable. When you add uf2 root class names anywhere, they will show up in the JSON output hierarchy.&lt;br /&gt;
* When you convert ancestor class microformats root class names to uf2 root class names, no surprise in terms of which microformats show up. Same children collection.&lt;br /&gt;
* +1 Thus I'm leaning towards this one, despite the fact that classic microformats never had a concept of generic unattached children. [[User:Tantek|Tantek]] 04:55, 21 January 2015 (UTC)&lt;br /&gt;
* +1 I think this is the best option I will implement it and update the wiki once its in the JavaScript parser. [[User:GlennJones|Glenn Jones]] 11:55, 29 July 2015 (UTC)&lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
3. Show up as peers to the classic microformats root. Issue(s)&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Has ths surprise aspect of if/when you convert the classic root class name to a uf2 root class name, the former peers become unattached children.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html&lt;br /&gt;
&lt;br /&gt;
=== any h- root class name overrides and stops backcompat root ===&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience. &lt;br /&gt;
&lt;br /&gt;
2015-020: The presence of any h-* root class name overrides and stop any backcompat parsing of classic microformats root class names on that same element. [[User:Tantek|Tantek]] 04:55, 21 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Tom &amp;amp; Kyle - implementable with the same backcompat root flag as needed for restricting backcompat root class name to only seeing backcompat property class names&lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
* I don't think I understand this rule. If I was stop all parsing of of classic microformats in the presence of any h-* root in a document then some of the other rules such as &amp;quot;uf2 children inside a classic microformats root class name&amp;quot; do not make sense. Could this item be expanded and explained a bit more? [[User:GlennJones|Glenn Jones]] 12:13, 29 July 2015 (UTC)&lt;br /&gt;
** added &amp;quot;on that same element&amp;quot; as that was what we were discussing/implying in this issue. [[User:Tantek|Tantek]] 22:49, 18 September 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== backcompat classic microformats should only see backcompat properties ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-020: When parsing a microformats vocabulary that indicates a backcompat root class name (and thus an absence of the microformats2 equivalent on the same element), parsers must only look for the backcompat properties that are specified explicitly for that backcompat root class.&lt;br /&gt;
[[User:Tantek|Tantek]] 04:04, 21 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Reasoning: such behaviour was never expected by authors, and crossing a classic microformats root class name with microformats2 property names were never explicitly expected nor specified to work.&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Tom &amp;amp; Kyle - implementable with the same backcompat root flag as needed for&lt;br /&gt;
* +1 I think this will help backcompat parsing, I will implement it and update the wiki once its in the JavaScript parser. The test suite will also need updating. [[User:GlennJones|Glenn Jones]] 11:55, 29 July 2015 (UTC) &lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html Currently you need to switch on the option &amp;quot;Block overlapping properties from different microformat versions&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== microformats2 root class names should only see microformats2 properties ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-020: When parsing a microformats2 root class name, only explicit microformats2 properties should be parsed. Any backcompat property names must be ignored.&lt;br /&gt;
[[User:Tantek|Tantek]] 04:04, 21 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Reasoning: such microformats2 authors should be expected to do all their microformats markup with microformats2 class names - this is a deliberate expectation so that their microformats aren't polluted with other (classic microformats) coincidentally named generic class names.&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 I think this will help backcompat parsing, I will implement it and update the wiki once its in the JavaScript parser. The test suite will also need updating. [[User:GlennJones|Glenn Jones]] 11:55, 29 July 2015 (UTC) &lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html Currently you need to switch on the option &amp;quot;Block overlapping properties from different microformat versions&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== implied properties on backcompat parsing unlikely to be intended ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Since classic microformats had no notion of implied properties, when implied property parsing occurs on backward compat classic microformats root class names, it is unlikely that any implied property (p-name u-url u-photo) was ever intended by the author of the classic microformat. [[User:Tantek|Tantek]] 02:43, 30 December 2014 (UTC)&lt;br /&gt;
Examples:&lt;br /&gt;
* see https://indiewebcamp.com/h-entry#bad_hentry_properties for a growing list&lt;br /&gt;
&lt;br /&gt;
'''Proposed resolution:'''&lt;br /&gt;
&lt;br /&gt;
* Be explicit in implied property parsing that it must only be done for explicit 'h-*' root class name microformats, not for any (back)compat parsing of microformats. Please comment on this proposal with &amp;quot;** comment&amp;quot; on new lines below. [[User:Tantek|Tantek]] 02:43, 30 December 2014 (UTC)&lt;br /&gt;
** +1 This makes a lot of sense to me. We should strive to parse mf1 as it was intended by the author, and I think you're right that implied rules are unlikely to be what was intended [[User:Kylewm|Kylewm]] 03:22, 30 December 2014 (UTC)&lt;br /&gt;
** +1 I think this will help backcompat parsing, but there are two major things to consider. It may well break some consumer code as the output for a microformats currently always has the name property, there may not be the defences code to check this is true when we remove the implied name rule for classic microformats.  The test suite will also need major updating as all the test output for classic microformats will have. I will look into implementing this and report back to the wiki. [[User:GlennJones|Glenn Jones]] 12:13, 29 July 2015 (UTC) &lt;br /&gt;
** Also it should be made clear that we are only removing the implied rules from classic microformats parsing and not the value property? [[User:GlennJones|Glenn Jones]] 12:13, 29 July 2015 (UTC)&lt;br /&gt;
*** The &amp;quot;parsing for implied properties&amp;quot; section only references name, photo, url properties. Where (in the spec) is the confusion about &amp;quot;value&amp;quot; coming from? [[User:Tantek|Tantek]]&lt;br /&gt;
** RESOLVED at [[2015-01-20]] meetup. [[User:Tantek|Tantek]] 04:09, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html Currently you need to switch on the option &amp;quot;Set implied properties by microformat version&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== link elements and u- parsing ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Raised by tantek on 2014-07-08 on [http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=8+Jul+2014&amp;amp;e=9+Jul+2014#c72916 irc]: should the parsing specification for handling u- properties be modified to include the &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; element? The potential downside is that [[invisible-metadata-is-considered-harmful]], however all known real world examples of &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; are &amp;lt;em&amp;gt;semi-&amp;lt;/em&amp;gt;visible data (not fully hidden).&lt;br /&gt;
&lt;br /&gt;
There are potential cases for wanting to use link as an alternative to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; (and &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt;), such as a whole page where the root &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; element is an &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; and the properties are included across the page: some in visible data in the &amp;lt;code&amp;gt;body&amp;lt;/code&amp;gt; while others are in the &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; as &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; elements. Example:&lt;br /&gt;
&lt;br /&gt;
One specific use-case is the semi-visible &amp;lt;code&amp;gt;link rel=&amp;quot;shortcut icon&amp;quot; href=&amp;quot;...&amp;quot;&amp;lt;/code&amp;gt; - which is visible sometimes in browser UI, and also when a user chooses &amp;quot;Add to Home Screen&amp;quot; on a mobile device. Such page level icons may be used as a &amp;lt;code&amp;gt;u-photo&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;u-logo&amp;lt;/code&amp;gt; of the containing &amp;lt;code&amp;gt;h-*&amp;lt;/code&amp;gt; object on the &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; element.&lt;br /&gt;
* http://adactio.com/about/myself/ on 2014-190&lt;br /&gt;
** &amp;lt;em&amp;gt;could&amp;lt;/em&amp;gt; use &amp;lt;code&amp;gt;&amp;amp;lt;html class=h-card&amp;amp;gt;&amp;lt;/code&amp;gt; - page is all about Jeremy Keith the person&lt;br /&gt;
** &amp;lt;em&amp;gt;icon / logo is only&amp;lt;/em&amp;gt; on &amp;lt;code&amp;gt;&amp;amp;lt;link&amp;amp;gt;&amp;lt;/code&amp;gt; tag which &amp;lt;em&amp;gt;could&amp;lt;/em&amp;gt; use &amp;lt;code&amp;gt;class=u-logo&amp;lt;/code&amp;gt;: &amp;lt;br/&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;link rel=&amp;quot;shortcut icon apple-touch-icon&amp;quot; type=&amp;quot;image/png&amp;quot; href=&amp;quot;/icon.png&amp;quot; /&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another specific use-case is a post permalink page, e.g. with &amp;lt;code&amp;gt;&amp;amp;lt;html class=h-entry&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* http://waterpigs.co.uk/notes/4WjHpC/&lt;br /&gt;
** &amp;lt;em&amp;gt;has&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;&amp;amp;lt;html class=&amp;quot;no-js h-entry hentry h-as-note&amp;quot; lang=&amp;quot;en&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another use-case is publishing links to PGP/GPG keys linked from the head which is currently handled by &amp;lt;code&amp;gt;&amp;amp;lt;link rel=pgpkey&amp;amp;gt;&amp;lt;/code&amp;gt; which is already supported in existing [[microformats2-parsing#parse_a_hyperlink_element_for_rel_microformats|microformats2 rel parsing]] of &amp;lt;code&amp;gt;link rel&amp;lt;/code&amp;gt; elements. Thus there is a (admittedly weak) argument for consistently parsing &amp;lt;em&amp;gt;both&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;&amp;amp;lt;link rel&amp;amp;gt;&amp;lt;/code&amp;gt; &amp;lt;em&amp;gt;and&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;&amp;amp;lt;link class=&amp;quot;u-*&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
E.g. inside that aforementioned real world &amp;lt;code&amp;gt;&amp;amp;lt;html class=h-entry&amp;amp;gt;&amp;lt;/code&amp;gt; post permalink page example, &lt;br /&gt;
* why should &amp;lt;code&amp;gt;&amp;amp;lt;link rel=&amp;quot;in-reply-to&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; work &lt;br /&gt;
* but not &amp;lt;code&amp;gt;&amp;amp;lt;link class=&amp;quot;u-in-reply-to&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; ?&lt;br /&gt;
The slightly stronger argument for consistency of link handling is that it &amp;lt;strong&amp;gt;[[simpler|simplifies]]&amp;lt;/strong&amp;gt; the publisher (and parser) model: &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;area&amp;amp;gt;&amp;lt;/code&amp;gt; work for both &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;&lt;br /&gt;
* why does &amp;lt;code&amp;gt;&amp;amp;lt;link&amp;amp;gt;&amp;lt;/code&amp;gt; only work for &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; ?&lt;br /&gt;
* it would be &amp;lt;em&amp;gt;simpler&amp;lt;/em&amp;gt; if all three tags just worked (in the same way) for both &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Should the parsing spec be modified to handle these cases?''' —[[User:TomMorris|Tom Morris]] 09:25, 9 July 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
** I'm generally in favour. It'd be good to see what other parser developers think. —[[User:TomMorris|Tom Morris]] 10:16, 9 July 2014 (UTC)&lt;br /&gt;
** adding this to the parsers won't be an issue. &amp;lt;del datetime=&amp;quot;2014-07-09T18:45&amp;quot;&amp;gt;The question is should the door be opened to hidden mf data?&amp;lt;/del&amp;gt; &amp;lt;ins datetime=&amp;quot;2014-07-09T18:45&amp;quot;&amp;gt;Up on further reflection, there seems to be no need to distinguish between &amp;lt;code&amp;gt;rel=property&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class=u-property&amp;lt;/code&amp;gt; on link elements. So I am in favour for consistency.&amp;lt;/ins&amp;gt; [[User:KP|Kartik]] 18:30, 2014-07-09 (EST)&lt;br /&gt;
** RESOLVED at [[2015-01-20]] meetup. Make link consistent with a.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== drop alternates collection ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-06-01 by [[Tantek]], per inconsistency noted by Kevin Marks.&lt;br /&gt;
* 2015-06-05 split into separate issue from include alternates in rels per implementation feedback from Kevin Marks. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
As fallout from the adoption and implementation of 'rel-urls' per [[microformats2-parsing-brainstorming#more_information_for_rel-based_formats]], we should:&lt;br /&gt;
* drop &amp;quot;alternates&amp;quot; as its no longer needed, and all current consuming code clients like rel-urls better anyway.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as the documenter of this issue, and attempting to represent what I think KevinMarks intended with &amp;quot;rels&amp;quot; and &amp;quot;rel-urls&amp;quot; in original issue now &amp;quot;include alternates in rels&amp;quot;, we no longer need &amp;quot;alternates&amp;quot;, and those with client consuming code have universally indicated that they would rather use rel-urls anyway. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats2-parsing]]&lt;br /&gt;
* [[microformats2]]&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65440</id>
		<title>microformats2-parsing-issues</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65440"/>
		<updated>2016-03-13T20:58:21Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: /* default generated HTML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is for documenting issues with the [[microformats2-parsing]] specification.&lt;br /&gt;
&lt;br /&gt;
== issues ==&lt;br /&gt;
Open issues in various states of partial resolution from none to nearly resolved.&lt;br /&gt;
&lt;br /&gt;
=== ignore u-camelCase properties ===&lt;br /&gt;
Due to Suit CSS (and others? citations?) recent (2015-?) use of &amp;quot;u-*&amp;quot; class names for so-called &amp;quot;[http://davidtheclark.com/on-utility-classes/ utility classes]&amp;quot;, we are seeing some false positives in a few very rare instances, e.g.: http://www.unmung.com/mf2?url=http%3A%2F%2Fwww.kevinmarks.com%2Ftwitterutils.html&amp;amp;html=&amp;amp;pretty=on&lt;br /&gt;
&lt;br /&gt;
(Nearly) all these &amp;quot;utility classes&amp;quot; use camelCase for the class name suffixes, thus we can filter them out by looking for camelCase (since microformats class name conventions are always all lowercase and hyphenated), or even just looking for (and rejecting) *any* capital letters.&lt;br /&gt;
&lt;br /&gt;
Proposal:&lt;br /&gt;
* microformats2 parsers MUST IGNORE u-* classnames where the * has any uppercase letter(s).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] Let's get this fix rolling quickly to avoid further pollution.&lt;br /&gt;
* +1 [[User:Barnabywalters|Barnaby]] php-mf2 already ignores classnames with capitalised prefixes, ignoring any classnames with capital letters seems totally reasonable &lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== exclude style elements before parsing ===&lt;br /&gt;
[http://logs.glob.uno/?c=freenode%23microformats#c85457 2016-01-25 raised in #microformats]&lt;br /&gt;
&lt;br /&gt;
Ran into an issue of a &amp;lt;style&amp;gt; element being parsed as plain text in a p-name. Should [[microformats2-parsing]] be updated to indicate &amp;lt;style&amp;gt; should be excluded when parsing? Appears to implicitly fall under [[microformats2-parsing#note_HTML_parsing_rules]]&lt;br /&gt;
&lt;br /&gt;
Sample link: http://veganstraightedge.com/notes/2016/01/16/tonight-s-dinner-tacocleanse-beverly-hills-c&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;script&amp;gt; tag can be similarly problematic.&lt;br /&gt;
&lt;br /&gt;
Proposal: Drop both &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; elements completely when parsing any property (including e-* HTML values). [[User:Tantek|Tantek]] 01:01, 29 February 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Please discuss and/or give +1/0/-1 feedback&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as proposer&lt;br /&gt;
* +1 [[User:Aaronpk|aaronpk]] as a consumer of HTML from an e-* property, I will always be sanitizing the HTML and removing &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; anyway&lt;br /&gt;
* +1 [[User:Kylewm|kylewm]]&lt;br /&gt;
* 0 [[User:Barnabywalters|Barnaby]] +1 to removing the contents of &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; from all plaintext properties (and 'value' property in HTML dicts), -1 to removing &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; from HTML. That’s a job for a sanitization stage. As aaronpk points out, sanitization will have to be done anyway if the content is to be reposted, so doing so in the parser doesn’t actually save anyone any work, but removes information which could be useful to people (example use cases: publishing posts with embedded per-post styling, publishing interactive HTML documents with embedded javascript)&lt;br /&gt;
** +1 this seems like reasonable feedback to make a new refined proposal. [[User:Tantek|Tantek]] 20:37, 13 March 2016 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Proposal 2: Drop both &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; elements completely when parsing any property (except for e-* HTML values, which preserve all markup). [[User:Tantek|Tantek]] 20:37, 13 March 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Please discuss and/or give +1/0/-1 feedback&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as proposer&lt;br /&gt;
* +1 [[User:Barnabywalters|Barnaby]&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== use poster if no src on video for u props ===&lt;br /&gt;
[https://indiewebcamp.com/irc/2015-12-13#t1450035721661 2015-12-13 raised in #indiewebcamp]&lt;br /&gt;
&lt;br /&gt;
There is a use-case of marking up the &amp;quot;poster&amp;quot; of a video element as the u-featured of an [[h-entry]], to do that, we need to change [[microformats2-parsing#parsing_a_u-_property|u- property parsing]] to look at the poster attribute of the video element, after it's looked for the src attribute.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;quot; else if video.u-x[poster], then get the poster attribute &amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Real-world example of markup in the wild:&lt;br /&gt;
* http://veganstraightedge.com/videos/2013/5/31/1/backyard-squirrel-buddy&lt;br /&gt;
** and likely all other videos posted there.&lt;br /&gt;
&lt;br /&gt;
Background discussion that led to this proposal:&lt;br /&gt;
* https://indiewebcamp.com/irc/2015-12-13#t1450035721661&lt;br /&gt;
&lt;br /&gt;
This seems very straightforward so I've added it as PROPOSED directly in the parsing spec. This issue is for tracking the discussion.&lt;br /&gt;
&lt;br /&gt;
Feedback from parser implementers please!&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Barnabywalters|Barnaby]] easy to implement and based on real-world markup, no objections&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== uf2 children on backcompat properties ===&lt;br /&gt;
[http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=today#c84632 2015-11-24 raised by Calli] in #microformats&lt;br /&gt;
&lt;br /&gt;
Related but different from [[#uf2_children_inside_a_classic_microformats_root_class_name]], when there is a uf2 child directly on a backcompat property, what should happen? E.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;div class=&amp;quot;adr h-adr&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;locality&amp;quot;&amp;gt;MF1&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;p-locality&amp;quot;&amp;gt;MF2&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What is the expected behavior and parser output?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
&amp;quot;items&amp;quot;: [{ &lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;adr&amp;quot;: [{&lt;br /&gt;
      &amp;quot;value&amp;quot;: &amp;quot;MF1MF2&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-adr&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;locality&amp;quot;: [&amp;quot;MF2&amp;quot;],&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;MF1MF2&amp;quot;]&lt;br /&gt;
       }&lt;br /&gt;
     }]&lt;br /&gt;
   }  &lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Proposal: the nested &amp;quot;adr h-adr&amp;quot; child is treated as an mf2 object, not backcompat, and thus the resulting parsed &amp;quot;locality&amp;quot; property has a single value of &amp;quot;MF2&amp;quot;. Proposed by Calli, noting that Glenn Jones's microformatshiv gets that result currently, and it would be easier for him (Calli) to implement this way.&lt;br /&gt;
** +1 Tantek, seems reasonable and the reasoning provided is good (we have one implementation this way already)&lt;br /&gt;
** +1 Kyle, this is consistent with the resolution to the related issue&lt;br /&gt;
** +1 Calli, yes, this is easier for me to implement (than taking both MF1 and MF2 properties) because it is consistent - for me, consistency is the controlling factor in favor rather than ease of parser implementation&lt;br /&gt;
** +1 Barnaby, php-mf2’s mf1 backcompat produces this exact result, and it makes a lot of sense to me&lt;br /&gt;
** ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;adr h-custom&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;locality&amp;quot;&amp;gt;MF1&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;p-locality&amp;quot;&amp;gt;MF2&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
&amp;quot;items&amp;quot;: [{ &lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;adr&amp;quot;: [{&lt;br /&gt;
      &amp;quot;value&amp;quot;: &amp;quot;MF1MF2&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-custom&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;locality&amp;quot;: [&amp;quot;MF2&amp;quot;],&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;MF1MF2&amp;quot;]&lt;br /&gt;
       }&lt;br /&gt;
     }]&lt;br /&gt;
   }  &lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per the [[#any_h-_root_class_name_overrides_and_stops_backcompat_root]] resolution, the class name &amp;quot;h-custom&amp;quot; overrides the use of &amp;quot;adr&amp;quot; as a backcompat root.&lt;br /&gt;
&lt;br /&gt;
=== default generated HTML ===&lt;br /&gt;
2015-09-08 raised by Tantek in #indiewebcamp&lt;br /&gt;
&lt;br /&gt;
Should there be a default (perhaps not quite &amp;quot;canonical&amp;quot;) way to map/generate HTML+microformats2 from a parsed mf2 JSON output?&lt;br /&gt;
&lt;br /&gt;
E.g. straw proposal:&lt;br /&gt;
* JSON/mf2 -&amp;gt; [[XOXO]]+mf2&lt;br /&gt;
&lt;br /&gt;
Existing work / mappings:&lt;br /&gt;
* https://github.com/snarfed/granary/blob/master/granary/microformats2.py#L295&lt;br /&gt;
&lt;br /&gt;
Related to:&lt;br /&gt;
* https://github.com/snarfed/granary/issues/31&lt;br /&gt;
&lt;br /&gt;
Use-cases:&lt;br /&gt;
* default webview / presentation for a site that stores mf2 JSON output&lt;br /&gt;
* possibly a way to implement a distributed HTTP webcache retrieval protocol&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] I think we should have this, but am open to proposals on specifics!&lt;br /&gt;
* +1 [[User:GlennJones|Glenn]] Also think this is worth looking at, but I am not sure it should be part of the parser spec. Feels like it should be built as a separate library and have it own spec on the microformats wiki.&lt;br /&gt;
* +1 [[User:Barnabywalters|Barnaby]] agreed with Glenn, this would be a nice thing to have, but IMO it’s out of scope for the parser and should be specified separately. Personally I would probably implement it separately too, depending on how much work it is.&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Noscript skip/parse ===&lt;br /&gt;
2015-07-28&lt;br /&gt;
&lt;br /&gt;
Should mf parsers skip &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; tag in the HTML, like the &amp;lt;code&amp;gt;&amp;lt;template&amp;gt;&amp;lt;/code&amp;gt; tag mentioned in http://microformats.org/wiki/microformats2-parsing#note_HTML_parsing_rules ?&lt;br /&gt;
&lt;br /&gt;
mf2py skips &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; when using the html5lib DOM parser but no when using lxml parser. Example use of &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; https://kartikprabhu.com/ featured images have a no javascript fallback image inside &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;class='u-featured'&amp;lt;/code&amp;gt; markup.&lt;br /&gt;
* html5lib actually HTML-escapes the contents of &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt;, so to mf2py it just looks like plain text with no tags. In Woodwind, I've resorted to using regex to strip out &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; tags before parsing (very hacky). [[User:Kylewm|Kylewm]] 15:52, 25 August 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] skip noscript (and inside) because in today's typical browsing contexts, nothing in noscript is displayed, thus we should discourage marking up effectively invisible content.&lt;br /&gt;
** Proposed change to [[microformats2-parsing#parse_a_document_for_microformats]]:&lt;br /&gt;
*** from: &amp;quot;follow the HTML parsing rules&amp;quot;&lt;br /&gt;
*** to: &amp;quot;follow the HTML parsing rules (including skipping/omitting &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; elements, e.g. like the html5lib DOM parser)&lt;br /&gt;
* -1 [[User:GlennJones|Glenn]] This subject does need to be address, but differently to proposed change. My personal view is that  e-* html should be passed through raw and then the consumer can process it in a way they feel fit. Its a case for helper libraries. I am about to build a helper library to do this based on the Readability code to post process e-* html. Other people may want to take different approaches, defining this in the spec feels like move into a whole area of new functionally.  &lt;br /&gt;
&lt;br /&gt;
As a separate new point we need to consider &amp;quot;exclude tags&amp;quot; lists for parsed text from html.  We should consider &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;noframe&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;template&amp;gt;&amp;lt;/code&amp;gt; there maybe other I have not gone through all the tags in current HTML spec. Also we should consider what to do about the more common pattern of fallback text within media tags &amp;lt;code&amp;gt;&amp;lt;video&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;audio&amp;gt;&amp;lt;/code&amp;gt; etc. This should be explicitly discussed in the parsing rules. At the moment my experimental text normalisation does exclude tags, but the default text parse does not. Currently the fallback content in media tags like &amp;lt;code&amp;gt;&amp;lt;video&amp;gt;&amp;lt;/code&amp;gt; is added to the parse text. 12:56, 25 Septemeber 2015 (UTC)&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Standard datetime format ===&lt;br /&gt;
2015-07-28&lt;br /&gt;
&lt;br /&gt;
http://microformats.org/wiki/microformats2-parsing#parsing_a_dt-_property does not specify any standard format to use for datetimes. e.g.  &amp;lt;pre&amp;gt;2015-07-28T12:55:33&amp;lt;/pre&amp;gt; vs &amp;lt;pre&amp;gt;2015-07-28 12:55:33&amp;lt;/pre&amp;gt;&lt;br /&gt;
Would be good to standardize this to compare various parser outputs.&lt;br /&gt;
&lt;br /&gt;
2015-07-29: This subject is (somewhat) covered in http://microformats.org/wiki/iso-8601 As it stands the JavaScript parsers support output in the 3 main profiles, 'W3C Note', 'RFC 3339' and 'HTML5' plus 'auto' which keeps authors format. The default date output for the JavaScript parsers is the same format as the date was originally authored in. This can be changes by setting the options.dateFormat switch to any of the other profiles mentioned. It would be good if other parser also had a switch to force output to a common profiles so we could compare various parser outputs, but I think the default should be how a date was authored. All output whatever profile should also keeps the authored level of specificity, i.e. not adding minutes or seconds if they are not in the input date string. This is important if you want to compare parser outputs. &lt;br /&gt;
&lt;br /&gt;
The only exception to this where date and times are combined such as the implied h-event rule for dt-start and dt-end where I output in the HTML5 style 2015-07-29 12:55:33 as there is no predefined author preference and HTML5 profile is more human readable. [[User:GlennJones|Glenn Jones]] 11:02, 29 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] output more human readable &amp;lt;code&amp;gt;2015-07-28 12:55:33&amp;lt;/code&amp;gt; canonically, with authored level of specificity, i.e. not adding minutes or seconds if they are not in the input date string.&lt;br /&gt;
** Let's update any test cases as needed for this. - [[User:Tantek|Tantek]]&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== implied date for dt properties both mf2 and backcompat ===&lt;br /&gt;
The [[value-class-pattern#microformats2_parsers|value class pattern dt-* date proposal]] should apply to both mf2 dt-* properties, and backcompat classic microformats, to preserve the hAtom / hCalendar optimizations noted on that page, but in a generic way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] 16:12, 18 August 2015 (UTC)&lt;br /&gt;
* +1 [[User:Glenn Jones|Glenn Jones]] 20 August 2015&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== implied properties when an explicit class is provided ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Should &amp;quot;u-url&amp;quot; still be implied if another explicit class is already provided, as below. This is a contrived example, but it is taken from Bridgy's unit tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;article class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;a class=&amp;quot;u-like-of&amp;quot; href=&amp;quot;http://orig.domain/baz&amp;quot;&amp;gt;liked this&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/article&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, http://orig.domain/baz is almost certainly not the u-url, so IMO it would be better to leave it out —[[User:Kylewm|Kylewm]] 15:10, 7 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
'''2015-01-20 consensus'''&lt;br /&gt;
* Changed my mind. Simpler to do nothing. Example provided is artificially constructed, does not reflect likely real world confusion of if we make implied properties more complicated. [[User:Tantek|Tantek]] 06:26, 21 January 2015 (UTC)&lt;br /&gt;
* ++ Consensus on do nothing for this case. At [[2015-01-20]]&lt;br /&gt;
&lt;br /&gt;
'''Proposed resolution:'''&lt;br /&gt;
* Changed again. Due to indiewebcamp.com/edit use-case, this now makes sense for all implied properties. That is:&lt;br /&gt;
** If an element has any explicit property class name(s) on it, then it must not be used to imply any properties. [[User:Tantek|Tantek]] 20:50, 27 May 2015 (UTC)&lt;br /&gt;
*** +1 this seems reasonable, if a publisher is going to add an mf2 class, it is unlikely they want other classes automatically implied from the same value [[User:Aaronpk|Aaronpk]] 23:19, 29 November 2015 (UTC)&lt;br /&gt;
*** -1 for now. To my knowledge, this has only been observed in artificially constructed unit tests and examples, and it adds some weird edge cases that are hard to reason about. [[User:Kylewm|Kylewm]] 00:46, 1 December 2015 (UTC)&lt;br /&gt;
*** ... provide input on this proposal here&lt;br /&gt;
** Refined: Or should this be refined by per parsing prefix? [[User:Tantek|Tantek]] 22:59, 18 September 2015 (UTC) &lt;br /&gt;
*** Any explicit &amp;quot;p-*&amp;quot; property means no implied &amp;quot;p-name&amp;quot; from that element&lt;br /&gt;
*** Any explicit &amp;quot;u-*&amp;quot; property means no implied &amp;quot;u-url&amp;quot; nor &amp;quot;u-photo&amp;quot; from that element.&lt;br /&gt;
*** ... provide input on this refined proposal here&lt;br /&gt;
** Suggestion: split this issue up per property. I think it makes sense for u-url and can be easily added to the spec as e.g. &amp;quot;.h-x&amp;gt;a[href]:only-of-type:not[.h-*&amp;lt;strong&amp;gt;,.u-*&amp;lt;/strong&amp;gt;]&amp;quot;. [[User:Kylewm|Kylewm]] 00:46, 1 December 2015 (UTC)&lt;br /&gt;
*** Obviously wrong to assume a link explicitly pointing elsewhere is our &amp;quot;url&amp;quot; &lt;br /&gt;
*** More difficult to make a case for photo and especially for name.&lt;br /&gt;
*** &amp;quot;name&amp;quot; is implied at least by [.h-x textContent], so often the excluded element would end up included anyway.&lt;br /&gt;
*** ... provide input on this refined proposal here&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== whitespace collapsing revisited ===&lt;br /&gt;
2015-05-27: (raised by [[User:Kevin Marks|Kevin Marks]] per Glenn Jones)&lt;br /&gt;
&lt;br /&gt;
Revising the microformats tests to conform to the &amp;quot;don't collapse whitespace&amp;quot; rule below reveals some non-intuitive cases. &lt;br /&gt;
preserving whitespace in addresses is somewhat defensible, but in an implied name it is often unhelpful, as it preserves non-user visible space there for authoring reasons.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
[https://github.com/microformats/tests/commit/a325e0e9bc2089507e69b1883f7065a3316e07c2#diff-d577012c1438978a571c4049179607f0 this test] shows how extraneous whitespace ends up in the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-review-aggregate&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;p-item h-event&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 class=&amp;quot;p-name&amp;quot;&amp;gt;Fullfrontal&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;p class=&amp;quot;p-description&amp;quot;&amp;gt;A one day JavaScript Conference held in Brighton&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;time class=&amp;quot;dt-start&amp;quot; datetime=&amp;quot;2012-11-09&amp;quot;&amp;gt;9th November 2012&amp;lt;/time&amp;gt;&amp;lt;/p&amp;gt;    &lt;br /&gt;
    &amp;lt;/div&amp;gt; &lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;p class=&amp;quot;p-rating&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;p-average value&amp;quot;&amp;gt;9.9&amp;lt;/span&amp;gt; out of &lt;br /&gt;
        &amp;lt;span class=&amp;quot;p-best&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt; &lt;br /&gt;
        based on &amp;lt;span class=&amp;quot;p-count&amp;quot;&amp;gt;62&amp;lt;/span&amp;gt; reviews&lt;br /&gt;
    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
give a parsed result of:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;items&amp;quot;: [{&lt;br /&gt;
        &amp;quot;type&amp;quot;: [&amp;quot;h-review-aggregate&amp;quot;],&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
            &amp;quot;item&amp;quot;: [{&lt;br /&gt;
                &amp;quot;value&amp;quot;: &amp;quot;Fullfrontal\nA one day JavaScript Conference held in Brighton\n9th November 2012&amp;quot;,&lt;br /&gt;
                &amp;quot;type&amp;quot;: [&amp;quot;h-event&amp;quot;],&lt;br /&gt;
                &amp;quot;properties&amp;quot;: {&lt;br /&gt;
                    &amp;quot;name&amp;quot;: [&amp;quot;Fullfrontal&amp;quot;],&lt;br /&gt;
                    &amp;quot;description&amp;quot;: [&amp;quot;A one day JavaScript Conference held in Brighton&amp;quot;],&lt;br /&gt;
                    &amp;quot;start&amp;quot;: [&amp;quot;2012-11-09&amp;quot;]&lt;br /&gt;
                }&lt;br /&gt;
            }],&lt;br /&gt;
            &amp;quot;rating&amp;quot;: [&amp;quot;9.9&amp;quot;],&lt;br /&gt;
            &amp;quot;average&amp;quot;: [&amp;quot;9.9&amp;quot;],&lt;br /&gt;
            &amp;quot;best&amp;quot;: [&amp;quot;10&amp;quot;],&lt;br /&gt;
            &amp;quot;count&amp;quot;: [&amp;quot;62&amp;quot;],&lt;br /&gt;
            &amp;quot;name&amp;quot;: [&amp;quot;Fullfrontal\nA one day JavaScript Conference held in Brighton\n9th November 2012\n\n\n9.9 out of \n        10 \n        based on 62 reviews&amp;quot;]&lt;br /&gt;
        }&lt;br /&gt;
    }],&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is a reasonable textual representation of the event, but the implied &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; is full of spurious whitespace that any consumer would have to strip. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/microformats/tests/commit/4c9690b53b0a2f40440abac8e609c51ac7dd6d56 h-review] has similar issues&lt;br /&gt;
&lt;br /&gt;
2015-05-28: (Addition by [[User:GlennJones|Glenn Jones]])&lt;br /&gt;
&lt;br /&gt;
The example below shows the type of markup most effected by the &amp;quot;implied name&amp;quot; and &amp;quot;don't collapse whitespace&amp;quot; rule working together to produce output that is hard to use without further processing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;h-card&amp;quot; href=&amp;quot;http://glennjones.net&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;p-given-name&amp;quot;&amp;gt;Glenn&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;p-family-name&amp;quot;&amp;gt;Jones&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The output for the name property from the above HTML would be &amp;lt;code&amp;gt;Glenn\r\n     Jones&amp;lt;/code&amp;gt; using the (trim lead/trailing) suggested in the  parsing spec.  I could of course move the spans onto one line, but it feels fragile to consider whitespace sensitivity in HTML like this. Added to the fact that HTML templating environments often take away that level of whitespace control from authors anyway.&lt;br /&gt;
&lt;br /&gt;
There are issues with both: keeping whitespace, returns and tabs from parsed HTML or collapse that whitespace. If we return the whitespace it becomes mal-formatted for humans because it was only added to make the HTML code understandable and in most cases was not meant to be used/read outside of that context. If we collapse the whitespace we can have issues of whitespace sensitive text from &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; etc. being incorrectly formatted. &lt;br /&gt;
&lt;br /&gt;
Providing a CSS aware innerText feature would produce the most useable output, but this is too complex/time consuming to build for most parser developers. In the face of no perfect solution I have taken the 80:20 view,  whereby errant whitespace, causes me considerably more problems than mal-formatted &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; content so I collapse whitespace on all text returned. &lt;br /&gt;
&lt;br /&gt;
This feature is a non-CSS aware version of innerText. It does not cover all rendering edge cases, but enough to produce practical output.&lt;br /&gt;
&lt;br /&gt;
For now, I have started changing the node parser to flag &amp;quot;white-space collapsing&amp;quot; as an experimental feature which is off by default i.e. http://glennjones.net/tools/microformats/ but personally I will parse everything with this on as I find it the most practical solution.  &lt;br /&gt;
&lt;br /&gt;
Not sure where that leaves me on the options below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
Choose from:&lt;br /&gt;
# keep as is and every parser client has to post process for common cases.&lt;br /&gt;
# '''keep as is but have mf2 parser trim leading/trailing whitespace (likely to provide desired result and be reasonably backcompat)'''&lt;br /&gt;
#* +1 my preference of the two options. [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
#* +1 though this doesn't solve any of the problems discussed above, it's still worth doing [[User:Kevin Marks|Kevin Marks]] 16:41, 28 May 2015 (UTC)&lt;br /&gt;
#* +1 will help parsers be more consistent with each other, and I haven't ever encountered a case where preserving leading/trailing whitespace was desirable [[User:Kylewm|Kylewm]] 20:45, 8 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
2015-06-08 option 2 resolved by consensus and implementation in mf2py.&lt;br /&gt;
&lt;br /&gt;
Somewhat orthogonal:&lt;br /&gt;
* make &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; on properties with children normalise whitespace&lt;br /&gt;
** -1 Seems like a bad idea as this &amp;quot;value&amp;quot; is supposed to be the same as if there was no embedded child microformat. [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
* make implied &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; normalise whitespace.&lt;br /&gt;
** +0 This is reasonable and already done somewhat in the parsing spec (trim lead/trailing). [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
** +1 Given the universality of name, this would fix most of the issues we see. [[User:Kevin Marks|Kevin Marks]] 16:41, 28 May 2015 (UTC)&lt;br /&gt;
* Put \n in textual forms if there is a &amp;lt;code&amp;gt;&amp;amp;lt;p&amp;amp;gt;&amp;lt;/code&amp;gt; tag in the original.&lt;br /&gt;
** -1 that's a long path to go down with whitespace equivalents for HTML markup. [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
** would only preserving whitespace if in &amp;amp;lt;pre&amp;amp;gt; be an 80:20 compromise? [[User:Kevin Marks|Kevin Marks]] 16:41, 28 May 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Because there are both code markup and specific vocabulary (label) needs for preserving whitespace, we are compelled to preserve in general, perhaps except for very specific limited generic cases (e.g. trim leading/trailing, &amp;quot;value&amp;quot; parsing, implied name). [[User:Tantek|Tantek]]&lt;br /&gt;
&lt;br /&gt;
=== u- parsing iframe src ===&lt;br /&gt;
Currently if I put u-* on an iframe it gets the value of the fallback text. This seems a shame. Getting the URL seems a sensible answer.&lt;br /&gt;
[[User:Kevin Marks|Kevin Marks]] 09:07, 11 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== i- parsing iframe src ===&lt;br /&gt;
&lt;br /&gt;
More controversially, what about using an iframe for transclusion? A use case here is comments on a static site. Currently, on eg http://www.kevinmarks.com/microformatschema.html the comments are injected via JS, making them opaque to parsers and thus precluding further parsing such as salmentions.&lt;br /&gt;
&lt;br /&gt;
If instead they were an iframe embedding them, a parser could optionally fetch its contents, parse them, and include them in the parsed mf2 output at that point. Overloading u-* for this seems wrong; e-* as below for srcdoc would have a different effect; this implies a new prefix directive would be needed. A strawman i-* (for include) may work.&lt;br /&gt;
[[User:Kevin Marks|Kevin Marks]] 09:07, 11 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== e- parsing iframe srcdoc ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Proposal: addition of a new e-* parsing rule for iframe elements with srcdoc attributes. E.G.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;iframe class=&amp;quot;e-content&amp;quot; srcdoc=&amp;quot;&amp;lt;p&amp;gt;A paragraph of HTML with &amp;amp;quot;quoted quotes&amp;amp;quot; &amp;amp;amp;amp; doubly quoted ampersands&amp;lt;/p&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;items&amp;quot;: [{&lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-entry&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
   &amp;quot;content&amp;quot;: [&amp;quot;&amp;lt;p&amp;gt;A paragraph of HTML with &amp;amp;quot;quoted quotes&amp;amp;quot; &amp;amp;amp; doubly quoted ampersands&amp;lt;/p&amp;gt;&amp;quot;]&lt;br /&gt;
  }&lt;br /&gt;
 }]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would allow, for example, HTML comments to be sandboxed inside iframes but still parsable as microformats.&lt;br /&gt;
&lt;br /&gt;
I believe the correct processing would be to leave &amp;amp;quot; entities as they are but to unescape any doubly-escaped ampersands.&lt;br /&gt;
&lt;br /&gt;
** Is there any use case for that? —[[User:TomMorris|Tom Morris]] 12:32, 14 September 2013 (UTC)&lt;br /&gt;
** +1 we need documentation of use case and existing sites publishing iframe srcdoc like this - [[User:Tantek|Tantek]] 00:47, 15 September 2013 (UTC)&lt;br /&gt;
** Rejected by consensus at [[2015-01-20]] meetup due to lack of real world uses cases / existing sites. [[User:Tantek|Tantek]] 06:26, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to interpret mf2 properties on select ===&lt;br /&gt;
How should select elements with properties be treated any differently?&lt;br /&gt;
&lt;br /&gt;
Awaiting real world examples / stronger use-cases, until then no special treatment of select elements with properties:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Are there any real world examples of select elements with microformats properties?&lt;br /&gt;
* What would the use-case be for putting a microformats property class name on a select element?&lt;br /&gt;
* Nothing special. By consensus at [[2015-01-20]] meetup due to lack of real world uses cases / existing sites. [[User:Tantek|Tantek]] 06:26, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to interpret mf2 root name on form ===&lt;br /&gt;
See what to do about &amp;lt;em&amp;gt;root class names&amp;lt;/em&amp;gt; on &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; elements in particular:&lt;br /&gt;
* [[hcard-input]]&lt;br /&gt;
&lt;br /&gt;
Awaiting real world examples / stronger use-cases, until then, no special treatment of root class names on &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; elements:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Are there any real world examples of a &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; element with a microformats root class name?&lt;br /&gt;
* [[hcard-input]] is one possible use-case, is anyone attempting to use forms for hCard input, e.g. with scripts to help make it work?&lt;br /&gt;
* Are there other use-cases for putting a microformats root class name on a &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; element?&lt;br /&gt;
* As of [[2015-01-20]] - no consensus - need more input as to when/why this is useful to do anything special.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Parsing Literal Values===&lt;br /&gt;
Issue raised by: [[User:BenWard|Ben Ward]]&lt;br /&gt;
&lt;br /&gt;
It is proposed for microformats2 that all microformats be parsable from just their root element, e.g. &amp;lt;code&amp;gt;&amp;amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;Ben Ward&amp;amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; would create an hCard with the following properties after parsing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
  'type': ['h-card'],&lt;br /&gt;
  'properties': {&lt;br /&gt;
     'name': ['Ben Ward']&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a four-fold change from the current [[hCard]]:&lt;br /&gt;
# type is generically identifiable as a microformat root, even in parsed form. The use of the 'h-' prefix persists into the type of the object. This is deliberately so, as a result of re-using the JSON data model of microdata which itself is re-using a common JSON convention, such that microformatted data is clearly distinguishable (as opposed to any other random schema that may be using a similar data model).&lt;br /&gt;
# root-class-only support. Per [[microformats-2-implied-properties]], the ''name'' property is implied by the entirety of the root class name element.&lt;br /&gt;
# 'name' instead of 'fn'. As also documented in [[microformats-2-implied-properties]], the continuous challenges/problems and need to repeatedly re-explain 'fn' over the years combined with the real-world market response of nearly every other party doing a person vocabulary renaming 'fn' to 'name', microformats 2 makes this change as well.&lt;br /&gt;
# There is no automatic parse-time inferring of &amp;lt;code&amp;gt;'given-name': ['Ben']&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;'family-name': ['Ward']&amp;lt;/code&amp;gt;. Any such inferring *might* be made by a vCard converter, but is left up to that specific application (not all applications) built on that vocabulary, though even in that case it may not be necessary, as an empty &amp;quot;N:;;;&amp;quot; [[vCard]] property is sufficient to satisfy the N property requirement of [[vCard]], and also causes no problems when imported into various [[vcard-implementations]].&lt;br /&gt;
&lt;br /&gt;
It is required of the extractor to understand that when a microformats object specifies no explicit child properties, that it must treat &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; as having a &amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;. But, the parser is generic, so it also treats &amp;lt;code&amp;gt;h-review&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-entry&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-recipe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-geo&amp;lt;/code&amp;gt; as having a ‘&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;’.&lt;br /&gt;
&lt;br /&gt;
As a result, specific vocabularies are evolved to drop their specific form of name (e.g. fn, summary, entry-title) and simplified to use a common 'name' property instead.&lt;br /&gt;
&lt;br /&gt;
Note: while the overwhelming majority of real world publishing/consuming uses of microformats do so with proper nouns which have names (and thus this parser-level incorporation of an implied 'name'), there are some formats that do not have a 'name' semantic. For example, [[geo]], [[adr]], and possibly if/when developed, units of measure, length, cost. The current thinking is that the benefits to the far greater proper-noun use-case of microformats outweigh the technical inelegance of having an extra/ignored 'name' property on formats that lack such a semantic.&lt;br /&gt;
&lt;br /&gt;
Some formats also may appear in theory to better imply some other property, e.g. a review might be thought to imply its ''content'', not its name, and an Atom entry its ''content'', not its title, but in practice (actual publishing patterns) this is not the case. Typically, brief unstructured reviews (or mentions thereof) provide a ''summary'' (often hyperlinked to an expanded structured form) of that review, not its content, and similarly, brief unstructured posts (e.g. RSS items) have historically most often been link blog items which include the title of an item and a link. Short status updates as well established by Twitter are newer and would seem to imply purely content with no title, at least semantically, however, even Twitter populates the RSS title and ATOM entry title of their feeds with the content. It's not clear what went into that decision, however, that's likely irrelevant, as the outcome turns out to be emergent consistency among publishing behaviors.&lt;br /&gt;
&lt;br /&gt;
To avoid overloading or undermining the semantics of a vocabulary, I propose that we handle this at the extractor level in a simpler fashion: Define a new property for literal data, that an extractor will provide if no other information was available. All ''interpreters'' may then be instructed that in the event that an object has no properties, it can attempt to interpret the literal value from the page instead.&lt;br /&gt;
&lt;br /&gt;
* This was one of the design iterations I went through which led me to the current implied 'name' design. Another iteration was the ability for a vocabulary to specify a single required property which was implied if there were no properties provided. However, the combination of the fact that in most cases such single required properties were quite name-like, and that a vocabulary-specific rule like that would then bind parsers to specific vocabularies (even so slightly) led me to collapse them into implying a 'name'. It's not perfect, but it's the best alternative so far that balances practical convenience of publishing/consuming, avoids vocabulary-specific knowledge in the parser, and technical (in)elegance. [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
In existing microformats, the closest existing example we have for this is the &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; property in hCard, which is used to represent the literal address label for a place. It is a corresponding piece of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;org&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; in combination, but has no structure in and of itself. Possibly, every microformat could have a &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; form where structured data is unavailable.&lt;br /&gt;
&lt;br /&gt;
However in practice, the hCard &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; property is both little understood and little used. It's not even clear that it ought to be kept for microformats 2 (no known consumers, very few (if any?) real-world non-test publishers). This disuse is likely a good indicator that we should avoid basing anything on its design.&lt;br /&gt;
&lt;br /&gt;
Alternatively, &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is used throughout microformats to target a generic value (e.g. in combination with &amp;lt;code&amp;gt;price&amp;lt;/code&amp;gt; in hListing.) It has been proposed that when parsing properties that are also themselves microformats, we create native objects of the form:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        'value': '1900 12th Street, San Francisco, CA 94'&lt;br /&gt;
      , 'type': ['h-adr']&lt;br /&gt;
      , 'properties': {&lt;br /&gt;
            'street-address': '1900 12th Street'&lt;br /&gt;
          , 'etc': 'etc'&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
We could apply this same pattern to the root level:&lt;br /&gt;
&lt;br /&gt;
    { &lt;br /&gt;
        type: [h-card]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: 'Ben Ward'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
In this case, an interpreter or implementation is responsible for using &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; in place of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, or restructuring the object. It would be the responsibility of each vocabulary to define its root property. The parsing layer of microformats 2.0 would not impose semantics or naming onto that.&lt;br /&gt;
&lt;br /&gt;
For another example, h-geo would end up like this:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        type: [h-geo]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: '1.3232;-0.543'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
* This is an alternative I've been considering as well:  [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
** 'value' is more generic than 'name' (applies to more vocabularies) with the trade-off that it naturally has less (weaker) semantics.&lt;br /&gt;
*** +1 I think that having naturally weaker semantics would be appropriate for this parsing functionality. —[[User:BenWard|BenWard]] 07:24, 5 October 2011 (UTC)&lt;br /&gt;
** The interesting thing that this analysis has revealed is that there appear to be two distinct clusters of microformats, the much more commonly used/understood/useful proper-noun microformats which markup things with names (people, events, reviews, recipes), and the less used compound-data microformats which are often used ''inside'' other microformats and just have some sort of semi-structured value (adr, geo, measure, and perhaps even things like tel). Perhaps this is implying the possibility and some degree of utility for ''two'' microformats root class name prefixes, 'h-' for existing proper-noun microformats, and something else ('m-' for microformat/molecule?, 's-' for structured-value?, 'v-' for value (though historically &amp;quot;v-&amp;quot;/&amp;quot;v.&amp;quot; has meant &amp;quot;vendor-specific&amp;quot;)?) for unnamed structured data microformats.&lt;br /&gt;
*** This more and more feels like a good idea, and I'm leaning toward &amp;quot;s-&amp;quot; for struct / structure / structured value. &amp;quot;s-&amp;quot; works just like &amp;quot;h-&amp;quot; except that it doesn't imply any properties at parse time. We can try it and see what happens. There's also no harm if publishers just use &amp;quot;h-&amp;quot; structures, they just (possibly) get a few extra properties if they happen to omit properties.&lt;br /&gt;
** Parallels the same JSON when a property has both a string value ''and'' is a structure itself.&lt;br /&gt;
*** Changed my mind on this. The parallel is not quite there. 'name'/'url'/'photo' are only implied if there are NO properties, where as the JSON string value + structure convention *always* provides a 'value'. [[User:Tantek|Tantek]] 22:39, 4 October 2011 (UTC)&lt;br /&gt;
*** And due to this difference in behavior ('value' is there when nested properties are present, whereas 'name' is only implied when there are no properties specified), I think it's correct to keep them separate, i.e. stick with implied 'name'. [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
** However, I'm still currently leaning towards the practical convenience of providing a 'name' for the vast majority of microformats uses, rather than diluting this feature for the sake of avoiding implying inapplicable semantics to the few plain structured data microformats, and even then, only when no properties are explicitly specified! I'd rather introduce a new root prefix for those than lose the simplicity and utility of implied 'name'. [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== resolved ==&lt;br /&gt;
=== When to collapse whitespace in properties ===&lt;br /&gt;
&lt;br /&gt;
The spec doesn’t explicitly require whitespace to be collapsed or not. The official mf2 test suite requires it to be collapsed.&lt;br /&gt;
&lt;br /&gt;
Reasons why whitespace ''shouldn’t'' be collapsed:&lt;br /&gt;
* Plaintext property representations of syntax-highlighted code, poetry and song lyrics require whitespace to be present&lt;br /&gt;
* Whether or not whitespace is an important part of the content being parsed is determined by css white-space and CANNOT be inferred from HTML markup alone&lt;br /&gt;
&lt;br /&gt;
Resolution 2013-11-12: Agreed, whitespace should not be collapsed (other than normal HTML5 parsing rules). The spec now refers to &amp;quot;textContent&amp;quot; rather than &amp;quot;innertext&amp;quot; to make this explicit.&lt;br /&gt;
&lt;br /&gt;
=== How to interpret mf2 classnames on form inputs ===&lt;br /&gt;
E.G. how to parse:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;input class=&amp;quot;u-url&amp;quot; value=&amp;quot;https://brennannovak.com/notes/338&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Examples in the wild: https://brennannovak.com/notes/338&lt;br /&gt;
&lt;br /&gt;
See proposal:&lt;br /&gt;
* [[hcard-parsing-brainstorming#input_element_handling]]&lt;br /&gt;
&lt;br /&gt;
Resolution 2013-11-12: Per that proposal, p- u- dt- properties on input[value] elements now use the value attribute.&lt;br /&gt;
&lt;br /&gt;
=== mixture of microformats2 and classic microformats classnames on different elements ===&lt;br /&gt;
Some sites in the wild have mistakenly combined classic mf and mf2 markup in ways which misrepresent the content if parsed in BC mode.&lt;br /&gt;
&lt;br /&gt;
Typically this is caused by putting classic and mf2 classnames for the same vocabulary on different elements, e.g:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;body class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;article class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name&amp;quot;&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
 &amp;lt;/article&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sites where this has been observed:&lt;br /&gt;
* http://acegiak.machinespirit.net/2013/10/17/barnaby-walters-notes-another-thing-i-love-about-the-web-users-have-the-power-to-take-control-of-their-uis-and-improve-their-own-experiences-aside-drm-for-html-would-prevent-this-from-being-possibl/&lt;br /&gt;
* http://shawfactor.com/2013/08/06/thoughts-on-extending-webmentions/ (fixed)&lt;br /&gt;
* http://notizblog.org/2013/06/18/the-rise-of-the-indieweb/ (fixed)&lt;br /&gt;
&lt;br /&gt;
Discussion:&lt;br /&gt;
&lt;br /&gt;
* As far as I can tell, the problems in all of these examples were caused by mf2 markup being injected by a wordpress plugin, but classic mf classnames being present further up the DOM in the themes. When parsed in compatibility mode, the classic mf classnames are transformed into mf2 classnames, making the original mf2 classnames look like children of empty items.&lt;br /&gt;
* Turns out this isn’t theme-specific, WordPress injects hentry via PHP [http://indiewebcamp.com/irc/2013-10-22/line/1382448759]. The bug with the wordpress mf2 plugin is resolved as of [http://indiewebcamp.com/irc/2013-10-22/line/1382449035 2013-10-22] --[[User:Barnabywalters|bw]] 13:38, 22 October 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== e- and p- escaping levels ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* The fact that the parsed value of any element with .e-* is at a different level of escaping to the parsed values of p-*, dt-* etc. without any indication of how the property was parsed in the output is a security problem. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;input&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;output&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
   &amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;p-name&amp;quot;&amp;gt;&amp;amp;lt;tag&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;items&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;type&amp;quot;: [&lt;br /&gt;
                &amp;quot;h-card&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;properties&amp;quot;: {&lt;br /&gt;
                &amp;quot;name&amp;quot;: [&lt;br /&gt;
                    &amp;quot;&amp;lt;tag&amp;gt;&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
   &amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;e-name&amp;quot;&amp;gt;&amp;amp;lt;tag&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;items&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;type&amp;quot;: [&lt;br /&gt;
                &amp;quot;h-card&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;properties&amp;quot;: {&lt;br /&gt;
                &amp;quot;name&amp;quot;: [&lt;br /&gt;
                    &amp;quot;&amp;amp;lt;tag&amp;amp;gt;&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* As a parser developer, the most straightforward way I can think of solving this is to add an option (enabled by default) which encodes HTML special characters on all non e-* properties, so the developer knows that all property values are going to be at the same level of escaping. --[[User:Barnabywalters|bw]] 20:00, 15 June 2013 (UTC)&lt;br /&gt;
** Your suggestion of auto-HTML-encoding p-*/u-*/dt-* property values is the most sensible I think. I would NOT make it an option, as it makes sense write consistent microformats2 consumers. - [[User:Tantek|Tantek]] 07:18, 5 July 2013 (UTC)&lt;br /&gt;
** Can you think of any existing apps/consumers of microformats2 via the parser that would break? What would indieweb comments parsers do? - [[User:Tantek|Tantek]] 07:18, 5 July 2013 (UTC)&lt;br /&gt;
*** The only breakage which might occur would be over-encoding of non e-* properties, but I’ll release this update as v0.2.0 and warn people about the changes. The worst thing which could happen is that some comments look a bit weird, as opposed to the current worst possible scenario of easy XSS attacks --[[User:Barnabywalters|bw]] 12:55, 5 July 2013 (UTC)&lt;br /&gt;
*** We should also decide exactly which characters get encoded — just angle brackets, or quotes/ampersands as well? --[[User:Barnabywalters|bw]] 12:55, 5 July 2013 (UTC)&lt;br /&gt;
*** I am not sure about this, it seems more like a helper function rather than a core feature of the parser. Personally I would like to store data as text and encode only when I am going to use and I known the format it is going to be use in.  --[[User:GlennJones|Glenn Jones]] 9:54, 14 July 2013 (UTC) &lt;br /&gt;
***After the discussion on the indiewebcamp IRC with Barnaby Walters I now understand the XSS issue that this change is trying to address. A rogue author could include HTML with scripts to execute a XSS attack. These could be masked by switch prefixes i.e. p-* to e-* on a well use property. As the consumer does not see the prefix in the JSON output they have no idea if a property will content HTML or text.  I will update my two parsers and the test suite --[[User:GlennJones|Glenn Jones]] 8:02, 17 July 2013 (UTC) &lt;br /&gt;
**So what about an author setting a property to e-* when it would normal be p-*, dt-* or u-* i.e.&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-card&amp;quot;&amp;gt;&amp;lt;p class=&amp;quot;e-name&amp;quot;&amp;gt;&amp;lt;script&amp;gt; alert('xss test') &amp;lt;/script&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** per [[events/2013-09-14-microformats2-parsing|microformats2 parsing discussion 2013-09-14]], parsers should never automatically attempt to HTML-special-characters encode - as that would provide the client of the parser a false sense of security. It's *always* up to client code to escape any text being output to HTML *at the moment it is output to HTML* and never before, because they can never trust that any text from storage/elsewhere has for sure been escaped or not. - [[User:Tantek|Tantek]] 18:07, 17 October 2013 (UTC)&lt;br /&gt;
** Should we not encode e-* as well and the consumer can decode at their own risk --[[User:GlennJones|Glenn Jones]] 18:42, 21 July 2013 (UTC) &lt;br /&gt;
*** No, never, per above point from [[events/2013-09-14-microformats2-parsing|microformats2 parsing discussion 2013-09-14]] - [[User:Tantek|Tantek]] 18:07, 17 October 2013 (UTC)&lt;br /&gt;
** See [[events/2013-09-14-microformats2-parsing|microformats2 parsing discussion 2013-09-14]] etherpad: https://etherpad.mozilla.org/microformats2parsing for more details on the resolution to this issue - and incorporate here (then move to resolved section below). - [[User:Tantek|Tantek]] 18:07, 17 October 2013 (UTC)&lt;br /&gt;
* Resolved by changes to the parsing spec: all properties are plaintext (non-HTML escaped), e-* properties result in a dictionary with &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; = plaintext version, &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; = raw HTML version &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== br hr empty string ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* The parsing rule 'else if br.p-x or hr.p-x, then return &amp;quot;&amp;quot; (empty string)' for p-* can cause any code consuming the API to become quite bloated. It means that you have test every array value to see if its an empty string. It is also unclear to me what the purpose of this mark-up pattern is for  [[User:GlennJones|Glenn Jones]]&lt;br /&gt;
** Upon reconsidering this, I agree with you, this is an unlikely use case. If a publisher wants to explicitly set an empty property &amp;quot;p-foo&amp;quot; they can simply write &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;p-foo&amp;quot;&amp;gt;&amp;amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; which looks explicit. Whereas BR and HR tags are often just presentational, so we should both not encourage usage of them for semantics, and anyone that did use them would be subject to likely loss of semantics upon a redesign (that got rid of those particular BR and HR tags). I'm going to remove them from the parsing spec. - [[User:Tantek|Tantek]] 15:29, 10 February 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== datetime examples without T delimiter ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* The examples in the wiki microformats-2 pages such h-entry and h-entry had datetime without the 'T' delimiter between date and time. ie&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;time class=&amp;quot;dt-published&amp;quot; datetime=&amp;quot;2013-06-13 12:00:00&amp;quot;&amp;gt;13&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; June 2013&amp;lt;/time&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
I have updated the pages. As far as I known this is a new pattern for dates. Was it a mistake in the examples or is it a new datetime pattern.&lt;br /&gt;
** The [[HTML5]] &amp;quot;time&amp;quot; element, and &amp;quot;datetime&amp;quot; attribute allow for space &amp;lt;span style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;&amp;quot; &amp;quot;&amp;lt;/span&amp;gt; as a separator between date and time as well as &amp;quot;T&amp;quot;, thus we allow it for microformats as well. The  &amp;lt;span style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;&amp;quot; &amp;quot;&amp;lt;/span&amp;gt; separator is preferred as the date and time are more readable when separated by a space. The examples noted in those specs deliberately use this. - [[User:Tantek|Tantek]] 18:48, 15 July 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== rel-alternate absent optional attributes ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* What should rel-alternate parsing do when one of the optional attributes specified (&amp;lt;kbd&amp;gt;hreflang&amp;lt;/kbd&amp;gt; or &amp;lt;kbd&amp;gt;media&amp;lt;/kbd&amp;gt; or both) is not there? The options seem to be:&lt;br /&gt;
*# leave the corresponding key out of the alternate JSON object&lt;br /&gt;
*#* This one. Leave the corresponding key out.&lt;br /&gt;
*# include the corresponding key in the alternate JSON object, but set the value to the JSON null object&lt;br /&gt;
*# include the corresponding key in the alternate JSON object, but set the value to a blank string&lt;br /&gt;
*# something I haven't thought of&lt;br /&gt;
&lt;br /&gt;
I haven't checked the existing implementations, but Barnaby said he's not sure what the appropriate way to deal with it is either. —[[User:TomMorris|Tom Morris]] 15:41, 9 August 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== rel-alternate and type attribute ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Should rel-alternate parsing also pick up the &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; attribute? It’s fairly widely used, e.g. for ATOM feeds.&lt;br /&gt;
** Numerous existing sites/pages have various [[rel-alternate]] uses with a type attribute for feeds/APIs so that's good enough to add this for help with discovery in general. Rel parsing updated. - [[User:Tantek|Tantek]] 00:47, 15 September 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Extraction vs Interpretation ===&lt;br /&gt;
Issue raised by: [[User:BenWard|Ben Ward]]&lt;br /&gt;
&lt;br /&gt;
A microformats ‘1.0’ parser performs the following function:&lt;br /&gt;
&lt;br /&gt;
* Given a piece of HTML content, discover a known microformat, extract it, apply various extraction patterns based upon the HTML mark-up used (e.g. include pattern, &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; patterns, date-time patterns, value-title pattern), apply various content optimisations where applicable, and return the result in an object native to the programming language.&lt;br /&gt;
&lt;br /&gt;
This is performing two types of function: Extraction of data from an HTML document or fragment, ''and'' interpretation and optimisation of that content to match the rules set out by a vocabulary specification.&lt;br /&gt;
&lt;br /&gt;
It is only possible to write a generic parser that covers the first half of this task: Extraction, and application of global rules based on HTML elements and patterns common to all formats.&lt;br /&gt;
&lt;br /&gt;
The purpose of a generic parser (as supported by use cases such as search engines, and other crawlers) is: &lt;br /&gt;
&lt;br /&gt;
To provide a way for tools to extract rich data from a page for native storage, such that the data may be interpreted later by applications. This allows microformats to be crawled, and indexed, and removes the need to include complex HTML parsing within every implementation of microformat data.&lt;br /&gt;
&lt;br /&gt;
Microformats will continue to define various vocabulary-specific optimisations. as part of the design to be optimised for authors. For example: The &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; pattern in [[hcard]], or the &amp;lt;code&amp;gt;lat;long&amp;lt;/code&amp;gt; pattern in [[geo]], as well as default values for properties, such as the maximum rating in an [[hreview]].&lt;br /&gt;
* Actually, no, as it is defined currently, microformats 2 ''drops'' vocabulary-specific optimizations. Such optimizations have often been too inapplicable, error prone or i18n-unsafe (e.g. fn to given-name + family-name fails for both numerous cases where middlenames/initials are used, and in general in numerous Asian languages where given/family name order is the reverse of Western English conventions, or languages with multiple family-names, e.g. Spanish - see [[hcard-issues-resolved]] for more). This is a deliberate cutting of a &amp;quot;feature&amp;quot; from microformats 1, it is a deliberate model simplification design decision. [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
==== Extraction resolution ====&lt;br /&gt;
Proposed resolution:&lt;br /&gt;
&lt;br /&gt;
Microformats2 should refer only to ''extraction'' of microformats. Vocabularies should in turn document their appropriate optimisations, which will need to be applied by implementations, or a companion to an extractor, which I'll refer to here as an ‘interpreter’.&lt;br /&gt;
* Vocabularies will no longer have optimizations, this is again deliberately, as they've been shown to be more error prone than helpful. Thus there should be no need for any vocabulary-specific 'interpreters'. However, due to design quirks in various legacy/interchange formats, ''export conversions algorithms'' to those legacy/interchange formats will require some additional legacy-format-specific rules (e.g. odd &amp;quot;required&amp;quot; rules in [[Atom]] or [[vCard]] will require specific synthesis rules, limitations in said formats will require filtering of some values, e.g. [[vcard3]] BDAY disallows vague birthdays like year-month and --month-day - subsequently allowed in [[vcard4]]). [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
A microformats2 ‘extractor’, in combination with the functionality of a domain and format-aware ‘interpreter’ (either another shared component, or part of the implementation itself) would be equivalent to a microformats 1.0 ‘parser.’&lt;br /&gt;
* A microformats2 parser is both generic (no knowledge of specific vocabularies), and lacks any/all such vocabulary-specific rules as compared to a microformats 1.0 [[hcard-parsing|parser]] with the exception of a 1) a limited list of well-established/interoperable backward compat root class names (of current [[microformats]] that are or can be soon shown to be specifications/standards per the [[process]]), 2) flat sets of backward compat property names (some with prefix/name specific conversion) for each of those backward compat root class names.  This is a deliberate design decision that makes microformats 2 more &amp;quot;micro&amp;quot;, and yes this means that even with such backward compat support, this simple form of backward compat may mean that some existing microformats 1 content breaks. We'll assess those and iterate on a documented case-by-case basis rather than attempt to maintain theoretical 100% backward compatibility (since many current microformats format-specific-features are either unused, or may have caused more problems than solutions). [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
N.B. I'll rewrite some of these as [[microformats2-parsing-faq]] to help better clarify. The reasoning that led to most of these design decisions is documented in the [[microformats-2#About_This_Brainstorm|microformats 2: About This Brainstorm]] section and following sections. I'll recheck those sections to see if/where reasoning for some of the above noted design decisions may have been missed, and back-fill accordingly. This is necessary because [[microformats2]] is a evolutionary result of simultaneously addressing both numerous generic [[issues]] as well as various common [[hcard-issues-resolved|format]]-[[hcalendar-issues-resolved|specific]] [[mfo|problems]] in microformats1 syntax and vocabularies. The very number of changes may make it more challenging (from a microformats1 perspective) to see why any particular design change has been made. [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
This issue can be moved from resolved to closed once the above-mentioned write-ups have occurred.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Parsing properties from rel attributes===&lt;br /&gt;
tl;dr resolution: As of 2013, [[microformats2-parsing]] handles parsing all link and a href rel values at document scope level, and producing canonical JSON accordingly. - [[User:Tantek|Tantek]]&lt;br /&gt;
&lt;br /&gt;
Issue raised by [[User:BenWard|BenWard]] 07:24, 5 October 2011 (UTC):&lt;br /&gt;
&lt;br /&gt;
* Currently, hAtom parses `bookmark` as a permalink&lt;br /&gt;
* Various microformats parse `rel=tag` as tags&lt;br /&gt;
* The current proposal for parsing does not allow parsing properties from rel attributes.&lt;br /&gt;
&lt;br /&gt;
Microformats parsers could instead extract ''all'' link relationships from rel attributes within an microformat object, parsing them as if a u- prefixed property.&lt;br /&gt;
* Minor nit: Rather than same as a u- prefixed property, I think such &amp;quot;rel&amp;quot; properties should be parsed purely from the &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; attribute on &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;area&amp;amp;gt;&amp;lt;/code&amp;gt; elements and nothing more. I would strongly disagree to extending rel to apply to other elements with URLs like img src, object data, or to apply to elements in general like div. That's the path that RDFa has taken and caused much confusion as a result. [[User:Tantek|Tantek]] 07:39, 5 October 2011 (UTC)&lt;br /&gt;
** Agree: That seems like a perfectly reasonable restriction. --[[User:BenWard|BenWard]] 08:29, 5 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
This results in:&lt;br /&gt;
&lt;br /&gt;
* Continuing use of the &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attribute in HTML, thereby building on HTML semantics rather than bypassing them or ignoring them in favour of something less meaningful.&lt;br /&gt;
* Parsing hAtom objects contain a property named &amp;lt;code&amp;gt;bookmark&amp;lt;/code&amp;gt;, in place of &amp;lt;code&amp;gt;permalink&amp;lt;/code&amp;gt;.&lt;br /&gt;
* All microformats that use &amp;lt;code&amp;gt;rel-tag&amp;lt;/code&amp;gt; would contain a property named… &amp;lt;code&amp;gt;tag&amp;lt;/code&amp;gt;. Perfect.&lt;br /&gt;
&lt;br /&gt;
Since &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes are not overloaded for other functionality like class is, and other uses of &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; within content are low (and non-semantic uses are nil, to the best of my knowledge) the risk of property pollution would be extremely low.&lt;br /&gt;
&lt;br /&gt;
Note, with regard to this last point, that a generic microformats parser ''will'' parse false-positive properties, and ''will'' parse objects in combined chunks, rather than individually by format. Extracted objects will often not represent a vocabulary without further processing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* This sounds like it might be workable. Let's try it and see how well authors &amp;quot;get it&amp;quot;. - [[User:Tantek|Tantek]]&lt;br /&gt;
* Possible issue: do we have any collisions between class property names and rel names? (I don't think so offhand, but useful to ask the question). - [[User:Tantek|Tantek]]&lt;br /&gt;
** None that I can think of in microformats. There is the case of Google's &amp;lt;code&amp;gt;rel=author&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;p-author&amp;lt;/code&amp;gt; in hAtom. However, the next point, about mfo scoping, would cover it in most situations (rel-author on a hyperlink within an hcard wouldn't be applied to the hentry.) The one situation in a parse tree where it's ambiguous would be this: &lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;p-author h-card&amp;quot; &lt;br /&gt;
   rel=&amp;quot;author&amp;quot; &lt;br /&gt;
   href=&amp;quot;http://benward.me&amp;quot;&amp;gt;&lt;br /&gt;
   Ben Ward&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** I can think of two quite reasonable solutions: &lt;br /&gt;
*** 1. Declare that class properties take precedence over rel properties of the same name, discarding rel values if a class is also found, or &lt;br /&gt;
*** 2. Since all properties are now multi-value anyway, the hAtom object could be parsed as:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from the p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        'http://benward.me'      /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** —[[User:BenWard|BenWard]] 08:29, 5 October 2011 (UTC)&lt;br /&gt;
*** Option 2 makes sense and is consistent with the rest of the multi-value parsing/handling. - [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
*** What about without the 'p-author'?&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;h-card&amp;quot; &lt;br /&gt;
   rel=&amp;quot;author&amp;quot; &lt;br /&gt;
   href=&amp;quot;http://benward.me&amp;quot;&amp;gt;&lt;br /&gt;
   Ben Ward&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Should that be parsed as:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        'http://benward.me'      /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Or&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': 'http://benward.me' /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
          'type': ['h-card'],          /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        &lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*** And if the former, then we're presumably saying that the value parsed due to the presence of a rel is always its own value, and does not combine with any other structures. I am fine with this, but I wanted to make sure we are ok with that explicitly. [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
**** +1 I think that since the rel attribute is specifically concerned with the relation to an href attribute, it should not be combined with other structures that are rightly declared uses classes.&lt;br /&gt;
***** The more I've thought about this and how consuming applications may want to treat rel semantics, the more it seems correct to keep rel semantics distinct from class semantics. Class semantics are quite general/flexible, whereas rel is quite specific, naming something else in terms of a relationship from the current page/microformat's perspective. I think we should consider putting rel values in their own 'rel' collection, separate from the 'properties' collection. E.g. the original rel-author p-author h-card markup example would be parsed into this:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from the p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        }&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
   'rel': {&lt;br /&gt;
     'author': ['http://benward.me'] /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
***** and if a post had multiple authors:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Tantek Çelik'], /* from 2nd p-author     */&lt;br /&gt;
          'type': ['h-card'],        /* from 2nd h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Tantek Çelik'], &lt;br /&gt;
            'url': ['http://tantek.com']&lt;br /&gt;
        },&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
   'rel': {&lt;br /&gt;
     'author': [&lt;br /&gt;
       'http://benward.me',      /* from rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
       'http://tantek.com'       /* from 2nd rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ]&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
***** This preserves the semantic distinction between rel and properties in general, and leaves it up to a higher-level application to implement any logic around showing &amp;quot;more info&amp;quot; about a rel-author, e.g. by correlating the rel-author URL with the 'url' of an hCard it found in the same entry. However, note that even in the earlier JSON data model, the rel-author value just shows up as another property value, and any higher level application would still have to do some correlation logic. At least with this JSON data model, applications that may be looking for a rel value in particular, or a property value in particular can do so without having one unintentionally pollute the other. [[User:Tantek|Tantek]] 17:33, 6 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Presumably we'd apply all the same property scoping rules to rel scoping as well. E.g. a rel hyperlink inside a microformat won't be seen by any containing microformat. - [[User:Tantek|Tantek]]&lt;br /&gt;
** Correct, it should be parsed in the same scope as all other class properties in the object.&lt;br /&gt;
*** Update: all rel microformats are now parsed at page-scope. Per-microformat scoping of rel has been found to be too confusing in practice (and against the general semantic of rel expressed in the HTML/HTML5 specs) [[User:Tantek|Tantek]] 01:00, 10 July 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This issue can be moved from resolved to closed once we've verified that all the above-mentioned and implied needs to write things up have occurred.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== deduping of rels ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-06-02 by [[User:Kevin Marks|Kevin Marks]] &lt;br /&gt;
* 2015-06-05 resolved by consensus and one real world implementation proof of implementability and verification of expected results. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Many sites have multiple duplicate rel links to the same url - a very common case is WordPress home pages eg [http://ma.tt ma.tt] &lt;br /&gt;
&lt;br /&gt;
Each post on the page has a block like&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;entry-meta&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;date&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://ma.tt/2015/05/beethoven-mozart-bach/&amp;quot; &lt;br /&gt;
    title=&amp;quot;Permalink to Beethoven, Mozart,&amp;amp;nbsp;Bach&amp;quot; rel=&amp;quot;bookmark&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;time class=&amp;quot;entry-date&amp;quot; datetime=&amp;quot;2015-05-31T22:42:00+00:00&amp;quot;&amp;gt;May 31, 2015&amp;lt;/time&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;categories-links&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://ma.tt/category/asides/&amp;quot; rel=&amp;quot;category tag&amp;quot;&amp;gt;Asides&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;author vcard&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;url fn n&amp;quot; href=&amp;quot;http://ma.tt/author/saxmatt/&amp;quot; &lt;br /&gt;
    title=&amp;quot;View all posts by Matt&amp;quot; rel=&amp;quot;author&amp;quot;&amp;gt;Matt&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- .entry-meta --&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As currently defined, the parser will create duplicate entries in &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; for each post:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;category&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;author&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;tag&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;home&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and in the &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; we will also see:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;author&amp;quot;, &lt;br /&gt;
                &amp;quot;author&amp;quot;, &lt;br /&gt;
                &amp;quot;author&amp;quot;, &lt;br /&gt;
                &amp;quot;author&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;View all posts by Matt&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;home&amp;quot;, &lt;br /&gt;
                &amp;quot;home&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/category/asides/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;, &lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;, &lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;, &lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Asides&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
These duplicates are unhelpful for parser consumers. We should:&lt;br /&gt;
* make them both sets - only listing distinct values. This will remove ordering information, but order is irrelevant for rel in html.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;category&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;author&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;tag&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;home&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
}&lt;br /&gt;
…&lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;author&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;View all posts by Matt&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;home&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/category/asides/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Asides&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* possibly we could also make &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; sets too. That would solve the information loss issue with the current parsers&lt;br /&gt;
** Resolution: in the case of duplicate other attributes, first one set wins. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 as the proposer. A version of mf2py that does this is running at unmung,com. see [http://www.unmung.com/mf2?url=https%3A%2F%2Fma.tt&amp;amp;html=&amp;amp;pretty=on fro ma.tt] or [http://www.unmung.com/?html=%3Ca+href%3D%22http%3A%2F%2Fma.tt%2Fcategory%2Fasides%2F%22+rel%3D%22category+tag%22%3EAsides%3C%2Fa%3E%0D%0A%3Ca+href%3D%22http%3A%2F%2Fma.tt%2Fcategory%2Fasides%2F%22+rel%3D%22category+tag%22%3EAsides%3C%2Fa%3E%0D%0A%3Ca+href%3D%22http%3A%2F%2Fma.tt%2Fcategory%2Fasides%2F%22+rel%3D%22category+tag%22%3EAsides%3C%2Fa%3E&amp;amp;pretty=on a simple test] [[User:Kevin Marks|Kevin Marks]] 23:49, 2 June 2015 (UTC)&lt;br /&gt;
* +1 makes sense to me, and not having them be sets in the current spec is likely an oversight on my part. Thanks for noting this issue. [[User:Tantek|Tantek]] 05:28, 3 June 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== include alternates in rels ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-06-01 by [[Tantek]], per inconsistency noted by Kevin Marks.&lt;br /&gt;
* 2015-06-05 resolved per consensus and one real world implementation proof of implementability. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
As fallout from the adoption and implementation of 'rel-urls' per [[microformats2-parsing-brainstorming#more_information_for_rel-based_formats]], we should:&lt;br /&gt;
* add &amp;quot;alternate&amp;quot; rels to the &amp;quot;rels&amp;quot; collection to make them easier to look-up in &amp;quot;rel-urls&amp;quot; - that is, all rel values end up in &amp;quot;rels&amp;quot; collections. No exceptions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as the documenter of this issue, and attempting to represent what I think KevinMarks intended with &amp;quot;rels&amp;quot; and &amp;quot;rel-urls&amp;quot;.&lt;br /&gt;
* +1 This makes sense to me, as the &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; should match so you can lookup in rels first, then get details about urls from rel-urls. We can drop &amp;quot;alternates&amp;quot; independently from this change. [[User:Kevin Marks|Kevin Marks]] 00:23, 2 June 2015 (UTC)&lt;br /&gt;
** +1 drop &amp;quot;alternates&amp;quot; independently now made a separate issue. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
* +1 Makes sense. And I agree with Kevin; I think parsers should deprecate &amp;quot;alternates&amp;quot; for now and drop it after a version cycle or two. [[User:Kylewm|Kylewm]] 00:30, 2 June 2015 (UTC)&lt;br /&gt;
* implemented in [https://github.com/kevinmarks/mf2py/commit/4dba45200eef11da811f64817d02044ab9e98b77 my fork of mf2py] and running on [http://www.unmung.com/?html=%3Ca+rel%3D%22author%22+href%3D%22http%3A%2F%2Fexample.com%2Fa%22%3Eauthor+a%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22author%22+href%3D%22http%3A%2F%2Fexample.com%2Fb%22%3Eauthor+b%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22in-reply-to%22+href%3D%22http%3A%2F%2Fexample.com%2F1%22%3Epost+1%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22in-reply-to%22+href%3D%22http%3A%2F%2Fexample.com%2F2%22%3Epost+2%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22alternate+home%22%0D%0A+++href%3D%22http%3A%2F%2Fexample.com%2Ffr%22%0D%0A+++media%3D%22handheld%22%0D%0A+++hreflang%3D%22fr%22%3EFrench+mobile+homepage%3C%2Fa%3E&amp;amp;pretty=on unmung] [[User:Kevin Marks|Kevin Marks]] 01:29, 2 June 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Empty properties overridden by implied rules against user expectation ===&lt;br /&gt;
Status: resolved, existing behavior correct, no changes to parsing spec.&lt;br /&gt;
&lt;br /&gt;
2015-07-03: raised by [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
&lt;br /&gt;
Emma Kuo brought up an issue (https://github.com/glennjones/microformat-node/issues/22) based on following the indieweb note pattern, where the content of a note is given both the e-content and p-name classes. If the element containing the notes only has none text content like image the p-name can have unexpected value. Here is the example she gave:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;a href=&amp;quot;http://this.site/photo&amp;quot; class=&amp;quot;u-url&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;e-content p-name&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;photo.jpg&amp;quot; class=&amp;quot;u-photo&amp;quot;/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        Some extraneous text&lt;br /&gt;
        &amp;lt;div class=&amp;quot;h-cite&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;a href=&amp;quot;http://someother.site/like&amp;quot; class=&amp;quot;u-url&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;a href=&amp;quot;http://this.site/photo&amp;quot; class=&amp;quot;u-like-of&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;e-content p-name&amp;quot;&amp;gt;liked this&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At the moment I parser this as follows: - if a property (p-name) is empty do not add it to the output. In this case &amp;quot;empty&amp;quot; is classed as not containing any non-whitespace text. As far as I known there is no guidance on how to handle &amp;quot;empty&amp;quot; properties in microformats paring rules, so I followed the conventions of JSON API's not to return &amp;quot;empty&amp;quot; properties.&lt;br /&gt;
&lt;br /&gt;
The side effect of the above is that p-name also has a number of &amp;quot;implied rules&amp;quot;. The &amp;quot;implied rules&amp;quot; try to automatically fill properties like p-name if there is no defined value. In the example above it uses the textContent of the parent h-entry, so value of the h-entry&amp;gt;p-name is the text content of the h-cite i.e. &amp;quot;likes this&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
1. We should not allow the &amp;quot;implied name rule&amp;quot; to get textContent from within a child h-* &lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;strike&amp;gt;+1 I believe this is inline with how we parse properties and will meet user/author expectations  [[User:Glenn Jones|Glenn Jones]] 9:22, 3 July 2015 (UTC)&amp;lt;/strike&amp;gt;&lt;br /&gt;
* -1 A nested h-* is still part of the content of the parent h-*, I don't quite understand the rationale for excluding it. For example, I may include lots of h-cards in the body of a post that references people and wouldn't want them to be excluded from the implied name generation. [[User:Kylewm|Kylewm]] 14:40, 3 July 2015 (UTC)&lt;br /&gt;
* -1 I'm not sure this would solve the problem because auto-filled text could come from the parent h-* (&amp;quot;some extraneous text&amp;quot; in the example above) [[User:emmak|Emma Kuo]] 20:50, 4 July 2015 (UTC)&lt;br /&gt;
* -1 I agree with the other -1s. This would break some of the simplicity of the model. [[User:Tantek|Tantek]] 05:12, 14 July 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
2.  We should not execute the &amp;quot;implied rules&amp;quot; where there is an author defined &amp;quot;empty&amp;quot; property.&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;strike&amp;gt;-1 Although the output would meet author expectations it is complex for parsers as they will have to keep state for each property through the whole series of parsing rules.  [[User:Glenn Jones|Glenn Jones]] 9:22, 3 July 2015 (UTC)&amp;lt;/strike&amp;gt;&lt;br /&gt;
* +1 An explicit, empty, p-name property should prevent an implicit p-name from being generated. For example tantek.com includes &amp;amp;lt;span class=&amp;quot;p-name&amp;quot;&amp;gt;&amp;amp;lt;/span&amp;gt; at the start of the h-feed to prevent a giant name from being auto-generated. From my reading of the parsing spec, I don't see any reason that blank strings should be excluded from parsing. (mf2py and php-mf2 will both happily include empty strings in their output) [[User:Kylewm|Kylewm]] 14:40, 3 July 2015 (UTC)&lt;br /&gt;
* +1 We already have interop on this between mf2py and phpmf2, as well as people depending on it to explicitly set empty property values. [[User:Tantek|Tantek]] 05:12, 14 July 2015 (UTC)&lt;br /&gt;
* +1 As we already have interop with two parsers and solid user issue from Emma we should take this approach. [[User:GlennJones|Glenn Jones]] 11:51, 29 July 2015 (UTC)&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html&lt;br /&gt;
&lt;br /&gt;
=== uf2 children inside a classic microformats root class name ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-020: (raised by kylewm) What should microformats2 children inside a classic microformats root class name do?&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
1. Nothing. Any unattached uf2 children inside a classic microformats root are ignored. Problems:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* However then there's a possible surprise if/when the author upgrades the classic microformats root to uf2, then all of a sudden all the new uf2 children show-up.&lt;br /&gt;
* Another downside: author adds uf2 markup, can't figure out why nothing is happening (because somewhere up the tree in code they didn't touch is classic microformats that are hiding these unattached uf2 children.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
2. Show up in the children collection of the classic microformats root&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Feels most predictable. When you add uf2 root class names anywhere, they will show up in the JSON output hierarchy.&lt;br /&gt;
* When you convert ancestor class microformats root class names to uf2 root class names, no surprise in terms of which microformats show up. Same children collection.&lt;br /&gt;
* +1 Thus I'm leaning towards this one, despite the fact that classic microformats never had a concept of generic unattached children. [[User:Tantek|Tantek]] 04:55, 21 January 2015 (UTC)&lt;br /&gt;
* +1 I think this is the best option I will implement it and update the wiki once its in the JavaScript parser. [[User:GlennJones|Glenn Jones]] 11:55, 29 July 2015 (UTC)&lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
3. Show up as peers to the classic microformats root. Issue(s)&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Has ths surprise aspect of if/when you convert the classic root class name to a uf2 root class name, the former peers become unattached children.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html&lt;br /&gt;
&lt;br /&gt;
=== any h- root class name overrides and stops backcompat root ===&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience. &lt;br /&gt;
&lt;br /&gt;
2015-020: The presence of any h-* root class name overrides and stop any backcompat parsing of classic microformats root class names on that same element. [[User:Tantek|Tantek]] 04:55, 21 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Tom &amp;amp; Kyle - implementable with the same backcompat root flag as needed for restricting backcompat root class name to only seeing backcompat property class names&lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
* I don't think I understand this rule. If I was stop all parsing of of classic microformats in the presence of any h-* root in a document then some of the other rules such as &amp;quot;uf2 children inside a classic microformats root class name&amp;quot; do not make sense. Could this item be expanded and explained a bit more? [[User:GlennJones|Glenn Jones]] 12:13, 29 July 2015 (UTC)&lt;br /&gt;
** added &amp;quot;on that same element&amp;quot; as that was what we were discussing/implying in this issue. [[User:Tantek|Tantek]] 22:49, 18 September 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== backcompat classic microformats should only see backcompat properties ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-020: When parsing a microformats vocabulary that indicates a backcompat root class name (and thus an absence of the microformats2 equivalent on the same element), parsers must only look for the backcompat properties that are specified explicitly for that backcompat root class.&lt;br /&gt;
[[User:Tantek|Tantek]] 04:04, 21 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Reasoning: such behaviour was never expected by authors, and crossing a classic microformats root class name with microformats2 property names were never explicitly expected nor specified to work.&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Tom &amp;amp; Kyle - implementable with the same backcompat root flag as needed for&lt;br /&gt;
* +1 I think this will help backcompat parsing, I will implement it and update the wiki once its in the JavaScript parser. The test suite will also need updating. [[User:GlennJones|Glenn Jones]] 11:55, 29 July 2015 (UTC) &lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html Currently you need to switch on the option &amp;quot;Block overlapping properties from different microformat versions&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== microformats2 root class names should only see microformats2 properties ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-020: When parsing a microformats2 root class name, only explicit microformats2 properties should be parsed. Any backcompat property names must be ignored.&lt;br /&gt;
[[User:Tantek|Tantek]] 04:04, 21 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Reasoning: such microformats2 authors should be expected to do all their microformats markup with microformats2 class names - this is a deliberate expectation so that their microformats aren't polluted with other (classic microformats) coincidentally named generic class names.&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 I think this will help backcompat parsing, I will implement it and update the wiki once its in the JavaScript parser. The test suite will also need updating. [[User:GlennJones|Glenn Jones]] 11:55, 29 July 2015 (UTC) &lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html Currently you need to switch on the option &amp;quot;Block overlapping properties from different microformat versions&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== implied properties on backcompat parsing unlikely to be intended ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Since classic microformats had no notion of implied properties, when implied property parsing occurs on backward compat classic microformats root class names, it is unlikely that any implied property (p-name u-url u-photo) was ever intended by the author of the classic microformat. [[User:Tantek|Tantek]] 02:43, 30 December 2014 (UTC)&lt;br /&gt;
Examples:&lt;br /&gt;
* see https://indiewebcamp.com/h-entry#bad_hentry_properties for a growing list&lt;br /&gt;
&lt;br /&gt;
'''Proposed resolution:'''&lt;br /&gt;
&lt;br /&gt;
* Be explicit in implied property parsing that it must only be done for explicit 'h-*' root class name microformats, not for any (back)compat parsing of microformats. Please comment on this proposal with &amp;quot;** comment&amp;quot; on new lines below. [[User:Tantek|Tantek]] 02:43, 30 December 2014 (UTC)&lt;br /&gt;
** +1 This makes a lot of sense to me. We should strive to parse mf1 as it was intended by the author, and I think you're right that implied rules are unlikely to be what was intended [[User:Kylewm|Kylewm]] 03:22, 30 December 2014 (UTC)&lt;br /&gt;
** +1 I think this will help backcompat parsing, but there are two major things to consider. It may well break some consumer code as the output for a microformats currently always has the name property, there may not be the defences code to check this is true when we remove the implied name rule for classic microformats.  The test suite will also need major updating as all the test output for classic microformats will have. I will look into implementing this and report back to the wiki. [[User:GlennJones|Glenn Jones]] 12:13, 29 July 2015 (UTC) &lt;br /&gt;
** Also it should be made clear that we are only removing the implied rules from classic microformats parsing and not the value property? [[User:GlennJones|Glenn Jones]] 12:13, 29 July 2015 (UTC)&lt;br /&gt;
*** The &amp;quot;parsing for implied properties&amp;quot; section only references name, photo, url properties. Where (in the spec) is the confusion about &amp;quot;value&amp;quot; coming from? [[User:Tantek|Tantek]]&lt;br /&gt;
** RESOLVED at [[2015-01-20]] meetup. [[User:Tantek|Tantek]] 04:09, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html Currently you need to switch on the option &amp;quot;Set implied properties by microformat version&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== link elements and u- parsing ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Raised by tantek on 2014-07-08 on [http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=8+Jul+2014&amp;amp;e=9+Jul+2014#c72916 irc]: should the parsing specification for handling u- properties be modified to include the &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; element? The potential downside is that [[invisible-metadata-is-considered-harmful]], however all known real world examples of &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; are &amp;lt;em&amp;gt;semi-&amp;lt;/em&amp;gt;visible data (not fully hidden).&lt;br /&gt;
&lt;br /&gt;
There are potential cases for wanting to use link as an alternative to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; (and &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt;), such as a whole page where the root &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; element is an &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; and the properties are included across the page: some in visible data in the &amp;lt;code&amp;gt;body&amp;lt;/code&amp;gt; while others are in the &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; as &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; elements. Example:&lt;br /&gt;
&lt;br /&gt;
One specific use-case is the semi-visible &amp;lt;code&amp;gt;link rel=&amp;quot;shortcut icon&amp;quot; href=&amp;quot;...&amp;quot;&amp;lt;/code&amp;gt; - which is visible sometimes in browser UI, and also when a user chooses &amp;quot;Add to Home Screen&amp;quot; on a mobile device. Such page level icons may be used as a &amp;lt;code&amp;gt;u-photo&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;u-logo&amp;lt;/code&amp;gt; of the containing &amp;lt;code&amp;gt;h-*&amp;lt;/code&amp;gt; object on the &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; element.&lt;br /&gt;
* http://adactio.com/about/myself/ on 2014-190&lt;br /&gt;
** &amp;lt;em&amp;gt;could&amp;lt;/em&amp;gt; use &amp;lt;code&amp;gt;&amp;amp;lt;html class=h-card&amp;amp;gt;&amp;lt;/code&amp;gt; - page is all about Jeremy Keith the person&lt;br /&gt;
** &amp;lt;em&amp;gt;icon / logo is only&amp;lt;/em&amp;gt; on &amp;lt;code&amp;gt;&amp;amp;lt;link&amp;amp;gt;&amp;lt;/code&amp;gt; tag which &amp;lt;em&amp;gt;could&amp;lt;/em&amp;gt; use &amp;lt;code&amp;gt;class=u-logo&amp;lt;/code&amp;gt;: &amp;lt;br/&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;link rel=&amp;quot;shortcut icon apple-touch-icon&amp;quot; type=&amp;quot;image/png&amp;quot; href=&amp;quot;/icon.png&amp;quot; /&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another specific use-case is a post permalink page, e.g. with &amp;lt;code&amp;gt;&amp;amp;lt;html class=h-entry&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* http://waterpigs.co.uk/notes/4WjHpC/&lt;br /&gt;
** &amp;lt;em&amp;gt;has&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;&amp;amp;lt;html class=&amp;quot;no-js h-entry hentry h-as-note&amp;quot; lang=&amp;quot;en&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another use-case is publishing links to PGP/GPG keys linked from the head which is currently handled by &amp;lt;code&amp;gt;&amp;amp;lt;link rel=pgpkey&amp;amp;gt;&amp;lt;/code&amp;gt; which is already supported in existing [[microformats2-parsing#parse_a_hyperlink_element_for_rel_microformats|microformats2 rel parsing]] of &amp;lt;code&amp;gt;link rel&amp;lt;/code&amp;gt; elements. Thus there is a (admittedly weak) argument for consistently parsing &amp;lt;em&amp;gt;both&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;&amp;amp;lt;link rel&amp;amp;gt;&amp;lt;/code&amp;gt; &amp;lt;em&amp;gt;and&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;&amp;amp;lt;link class=&amp;quot;u-*&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
E.g. inside that aforementioned real world &amp;lt;code&amp;gt;&amp;amp;lt;html class=h-entry&amp;amp;gt;&amp;lt;/code&amp;gt; post permalink page example, &lt;br /&gt;
* why should &amp;lt;code&amp;gt;&amp;amp;lt;link rel=&amp;quot;in-reply-to&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; work &lt;br /&gt;
* but not &amp;lt;code&amp;gt;&amp;amp;lt;link class=&amp;quot;u-in-reply-to&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; ?&lt;br /&gt;
The slightly stronger argument for consistency of link handling is that it &amp;lt;strong&amp;gt;[[simpler|simplifies]]&amp;lt;/strong&amp;gt; the publisher (and parser) model: &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;area&amp;amp;gt;&amp;lt;/code&amp;gt; work for both &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;&lt;br /&gt;
* why does &amp;lt;code&amp;gt;&amp;amp;lt;link&amp;amp;gt;&amp;lt;/code&amp;gt; only work for &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; ?&lt;br /&gt;
* it would be &amp;lt;em&amp;gt;simpler&amp;lt;/em&amp;gt; if all three tags just worked (in the same way) for both &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Should the parsing spec be modified to handle these cases?''' —[[User:TomMorris|Tom Morris]] 09:25, 9 July 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
** I'm generally in favour. It'd be good to see what other parser developers think. —[[User:TomMorris|Tom Morris]] 10:16, 9 July 2014 (UTC)&lt;br /&gt;
** adding this to the parsers won't be an issue. &amp;lt;del datetime=&amp;quot;2014-07-09T18:45&amp;quot;&amp;gt;The question is should the door be opened to hidden mf data?&amp;lt;/del&amp;gt; &amp;lt;ins datetime=&amp;quot;2014-07-09T18:45&amp;quot;&amp;gt;Up on further reflection, there seems to be no need to distinguish between &amp;lt;code&amp;gt;rel=property&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class=u-property&amp;lt;/code&amp;gt; on link elements. So I am in favour for consistency.&amp;lt;/ins&amp;gt; [[User:KP|Kartik]] 18:30, 2014-07-09 (EST)&lt;br /&gt;
** RESOLVED at [[2015-01-20]] meetup. Make link consistent with a.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== drop alternates collection ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-06-01 by [[Tantek]], per inconsistency noted by Kevin Marks.&lt;br /&gt;
* 2015-06-05 split into separate issue from include alternates in rels per implementation feedback from Kevin Marks. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
As fallout from the adoption and implementation of 'rel-urls' per [[microformats2-parsing-brainstorming#more_information_for_rel-based_formats]], we should:&lt;br /&gt;
* drop &amp;quot;alternates&amp;quot; as its no longer needed, and all current consuming code clients like rel-urls better anyway.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as the documenter of this issue, and attempting to represent what I think KevinMarks intended with &amp;quot;rels&amp;quot; and &amp;quot;rel-urls&amp;quot; in original issue now &amp;quot;include alternates in rels&amp;quot;, we no longer need &amp;quot;alternates&amp;quot;, and those with client consuming code have universally indicated that they would rather use rel-urls anyway. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats2-parsing]]&lt;br /&gt;
* [[microformats2]]&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65439</id>
		<title>microformats2-parsing-issues</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65439"/>
		<updated>2016-03-13T20:56:11Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: /* uf2 children on backcompat properties */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is for documenting issues with the [[microformats2-parsing]] specification.&lt;br /&gt;
&lt;br /&gt;
== issues ==&lt;br /&gt;
Open issues in various states of partial resolution from none to nearly resolved.&lt;br /&gt;
&lt;br /&gt;
=== ignore u-camelCase properties ===&lt;br /&gt;
Due to Suit CSS (and others? citations?) recent (2015-?) use of &amp;quot;u-*&amp;quot; class names for so-called &amp;quot;[http://davidtheclark.com/on-utility-classes/ utility classes]&amp;quot;, we are seeing some false positives in a few very rare instances, e.g.: http://www.unmung.com/mf2?url=http%3A%2F%2Fwww.kevinmarks.com%2Ftwitterutils.html&amp;amp;html=&amp;amp;pretty=on&lt;br /&gt;
&lt;br /&gt;
(Nearly) all these &amp;quot;utility classes&amp;quot; use camelCase for the class name suffixes, thus we can filter them out by looking for camelCase (since microformats class name conventions are always all lowercase and hyphenated), or even just looking for (and rejecting) *any* capital letters.&lt;br /&gt;
&lt;br /&gt;
Proposal:&lt;br /&gt;
* microformats2 parsers MUST IGNORE u-* classnames where the * has any uppercase letter(s).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] Let's get this fix rolling quickly to avoid further pollution.&lt;br /&gt;
* +1 [[User:Barnabywalters|Barnaby]] php-mf2 already ignores classnames with capitalised prefixes, ignoring any classnames with capital letters seems totally reasonable &lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== exclude style elements before parsing ===&lt;br /&gt;
[http://logs.glob.uno/?c=freenode%23microformats#c85457 2016-01-25 raised in #microformats]&lt;br /&gt;
&lt;br /&gt;
Ran into an issue of a &amp;lt;style&amp;gt; element being parsed as plain text in a p-name. Should [[microformats2-parsing]] be updated to indicate &amp;lt;style&amp;gt; should be excluded when parsing? Appears to implicitly fall under [[microformats2-parsing#note_HTML_parsing_rules]]&lt;br /&gt;
&lt;br /&gt;
Sample link: http://veganstraightedge.com/notes/2016/01/16/tonight-s-dinner-tacocleanse-beverly-hills-c&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;script&amp;gt; tag can be similarly problematic.&lt;br /&gt;
&lt;br /&gt;
Proposal: Drop both &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; elements completely when parsing any property (including e-* HTML values). [[User:Tantek|Tantek]] 01:01, 29 February 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Please discuss and/or give +1/0/-1 feedback&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as proposer&lt;br /&gt;
* +1 [[User:Aaronpk|aaronpk]] as a consumer of HTML from an e-* property, I will always be sanitizing the HTML and removing &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; anyway&lt;br /&gt;
* +1 [[User:Kylewm|kylewm]]&lt;br /&gt;
* 0 [[User:Barnabywalters|Barnaby]] +1 to removing the contents of &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; from all plaintext properties (and 'value' property in HTML dicts), -1 to removing &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; from HTML. That’s a job for a sanitization stage. As aaronpk points out, sanitization will have to be done anyway if the content is to be reposted, so doing so in the parser doesn’t actually save anyone any work, but removes information which could be useful to people (example use cases: publishing posts with embedded per-post styling, publishing interactive HTML documents with embedded javascript)&lt;br /&gt;
** +1 this seems like reasonable feedback to make a new refined proposal. [[User:Tantek|Tantek]] 20:37, 13 March 2016 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Proposal 2: Drop both &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; elements completely when parsing any property (except for e-* HTML values, which preserve all markup). [[User:Tantek|Tantek]] 20:37, 13 March 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Please discuss and/or give +1/0/-1 feedback&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as proposer&lt;br /&gt;
* +1 [[User:Barnabywalters|Barnaby]&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== use poster if no src on video for u props ===&lt;br /&gt;
[https://indiewebcamp.com/irc/2015-12-13#t1450035721661 2015-12-13 raised in #indiewebcamp]&lt;br /&gt;
&lt;br /&gt;
There is a use-case of marking up the &amp;quot;poster&amp;quot; of a video element as the u-featured of an [[h-entry]], to do that, we need to change [[microformats2-parsing#parsing_a_u-_property|u- property parsing]] to look at the poster attribute of the video element, after it's looked for the src attribute.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;quot; else if video.u-x[poster], then get the poster attribute &amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Real-world example of markup in the wild:&lt;br /&gt;
* http://veganstraightedge.com/videos/2013/5/31/1/backyard-squirrel-buddy&lt;br /&gt;
** and likely all other videos posted there.&lt;br /&gt;
&lt;br /&gt;
Background discussion that led to this proposal:&lt;br /&gt;
* https://indiewebcamp.com/irc/2015-12-13#t1450035721661&lt;br /&gt;
&lt;br /&gt;
This seems very straightforward so I've added it as PROPOSED directly in the parsing spec. This issue is for tracking the discussion.&lt;br /&gt;
&lt;br /&gt;
Feedback from parser implementers please!&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Barnabywalters|Barnaby]] easy to implement and based on real-world markup, no objections&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== uf2 children on backcompat properties ===&lt;br /&gt;
[http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=today#c84632 2015-11-24 raised by Calli] in #microformats&lt;br /&gt;
&lt;br /&gt;
Related but different from [[#uf2_children_inside_a_classic_microformats_root_class_name]], when there is a uf2 child directly on a backcompat property, what should happen? E.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;div class=&amp;quot;adr h-adr&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;locality&amp;quot;&amp;gt;MF1&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;p-locality&amp;quot;&amp;gt;MF2&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What is the expected behavior and parser output?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
&amp;quot;items&amp;quot;: [{ &lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;adr&amp;quot;: [{&lt;br /&gt;
      &amp;quot;value&amp;quot;: &amp;quot;MF1MF2&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-adr&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;locality&amp;quot;: [&amp;quot;MF2&amp;quot;],&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;MF1MF2&amp;quot;]&lt;br /&gt;
       }&lt;br /&gt;
     }]&lt;br /&gt;
   }  &lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Proposal: the nested &amp;quot;adr h-adr&amp;quot; child is treated as an mf2 object, not backcompat, and thus the resulting parsed &amp;quot;locality&amp;quot; property has a single value of &amp;quot;MF2&amp;quot;. Proposed by Calli, noting that Glenn Jones's microformatshiv gets that result currently, and it would be easier for him (Calli) to implement this way.&lt;br /&gt;
** +1 Tantek, seems reasonable and the reasoning provided is good (we have one implementation this way already)&lt;br /&gt;
** +1 Kyle, this is consistent with the resolution to the related issue&lt;br /&gt;
** +1 Calli, yes, this is easier for me to implement (than taking both MF1 and MF2 properties) because it is consistent - for me, consistency is the controlling factor in favor rather than ease of parser implementation&lt;br /&gt;
** +1 Barnaby, php-mf2’s mf1 backcompat produces this exact result, and it makes a lot of sense to me&lt;br /&gt;
** ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;adr h-custom&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;locality&amp;quot;&amp;gt;MF1&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;p-locality&amp;quot;&amp;gt;MF2&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
&amp;quot;items&amp;quot;: [{ &lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;adr&amp;quot;: [{&lt;br /&gt;
      &amp;quot;value&amp;quot;: &amp;quot;MF1MF2&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-custom&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;locality&amp;quot;: [&amp;quot;MF2&amp;quot;],&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;MF1MF2&amp;quot;]&lt;br /&gt;
       }&lt;br /&gt;
     }]&lt;br /&gt;
   }  &lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per the [[#any_h-_root_class_name_overrides_and_stops_backcompat_root]] resolution, the class name &amp;quot;h-custom&amp;quot; overrides the use of &amp;quot;adr&amp;quot; as a backcompat root.&lt;br /&gt;
&lt;br /&gt;
=== default generated HTML ===&lt;br /&gt;
2015-09-08 raised by Tantek in #indiewebcamp&lt;br /&gt;
&lt;br /&gt;
Should there be a default (perhaps not quite &amp;quot;canonical&amp;quot;) way to map/generate HTML+microformats2 from a parsed mf2 JSON output?&lt;br /&gt;
&lt;br /&gt;
E.g. straw proposal:&lt;br /&gt;
* JSON/mf2 -&amp;gt; [[XOXO]]+mf2&lt;br /&gt;
&lt;br /&gt;
Existing work / mappings:&lt;br /&gt;
* https://github.com/snarfed/granary/blob/master/granary/microformats2.py#L295&lt;br /&gt;
&lt;br /&gt;
Related to:&lt;br /&gt;
* https://github.com/snarfed/granary/issues/31&lt;br /&gt;
&lt;br /&gt;
Use-cases:&lt;br /&gt;
* default webview / presentation for a site that stores mf2 JSON output&lt;br /&gt;
* possibly a way to implement a distributed HTTP webcache retrieval protocol&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] I think we should have this, but am open to proposals on specifics!&lt;br /&gt;
* +1 [[User:GlennJones|Glenn]] Also think this is worth looking at, but I am not sure it should be part of the parser spec. Feels like it should be built as a separate library and have it own spec on the microformats wiki.&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Noscript skip/parse ===&lt;br /&gt;
2015-07-28&lt;br /&gt;
&lt;br /&gt;
Should mf parsers skip &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; tag in the HTML, like the &amp;lt;code&amp;gt;&amp;lt;template&amp;gt;&amp;lt;/code&amp;gt; tag mentioned in http://microformats.org/wiki/microformats2-parsing#note_HTML_parsing_rules ?&lt;br /&gt;
&lt;br /&gt;
mf2py skips &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; when using the html5lib DOM parser but no when using lxml parser. Example use of &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; https://kartikprabhu.com/ featured images have a no javascript fallback image inside &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;class='u-featured'&amp;lt;/code&amp;gt; markup.&lt;br /&gt;
* html5lib actually HTML-escapes the contents of &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt;, so to mf2py it just looks like plain text with no tags. In Woodwind, I've resorted to using regex to strip out &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; tags before parsing (very hacky). [[User:Kylewm|Kylewm]] 15:52, 25 August 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] skip noscript (and inside) because in today's typical browsing contexts, nothing in noscript is displayed, thus we should discourage marking up effectively invisible content.&lt;br /&gt;
** Proposed change to [[microformats2-parsing#parse_a_document_for_microformats]]:&lt;br /&gt;
*** from: &amp;quot;follow the HTML parsing rules&amp;quot;&lt;br /&gt;
*** to: &amp;quot;follow the HTML parsing rules (including skipping/omitting &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; elements, e.g. like the html5lib DOM parser)&lt;br /&gt;
* -1 [[User:GlennJones|Glenn]] This subject does need to be address, but differently to proposed change. My personal view is that  e-* html should be passed through raw and then the consumer can process it in a way they feel fit. Its a case for helper libraries. I am about to build a helper library to do this based on the Readability code to post process e-* html. Other people may want to take different approaches, defining this in the spec feels like move into a whole area of new functionally.  &lt;br /&gt;
&lt;br /&gt;
As a separate new point we need to consider &amp;quot;exclude tags&amp;quot; lists for parsed text from html.  We should consider &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;noframe&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;template&amp;gt;&amp;lt;/code&amp;gt; there maybe other I have not gone through all the tags in current HTML spec. Also we should consider what to do about the more common pattern of fallback text within media tags &amp;lt;code&amp;gt;&amp;lt;video&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;audio&amp;gt;&amp;lt;/code&amp;gt; etc. This should be explicitly discussed in the parsing rules. At the moment my experimental text normalisation does exclude tags, but the default text parse does not. Currently the fallback content in media tags like &amp;lt;code&amp;gt;&amp;lt;video&amp;gt;&amp;lt;/code&amp;gt; is added to the parse text. 12:56, 25 Septemeber 2015 (UTC)&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Standard datetime format ===&lt;br /&gt;
2015-07-28&lt;br /&gt;
&lt;br /&gt;
http://microformats.org/wiki/microformats2-parsing#parsing_a_dt-_property does not specify any standard format to use for datetimes. e.g.  &amp;lt;pre&amp;gt;2015-07-28T12:55:33&amp;lt;/pre&amp;gt; vs &amp;lt;pre&amp;gt;2015-07-28 12:55:33&amp;lt;/pre&amp;gt;&lt;br /&gt;
Would be good to standardize this to compare various parser outputs.&lt;br /&gt;
&lt;br /&gt;
2015-07-29: This subject is (somewhat) covered in http://microformats.org/wiki/iso-8601 As it stands the JavaScript parsers support output in the 3 main profiles, 'W3C Note', 'RFC 3339' and 'HTML5' plus 'auto' which keeps authors format. The default date output for the JavaScript parsers is the same format as the date was originally authored in. This can be changes by setting the options.dateFormat switch to any of the other profiles mentioned. It would be good if other parser also had a switch to force output to a common profiles so we could compare various parser outputs, but I think the default should be how a date was authored. All output whatever profile should also keeps the authored level of specificity, i.e. not adding minutes or seconds if they are not in the input date string. This is important if you want to compare parser outputs. &lt;br /&gt;
&lt;br /&gt;
The only exception to this where date and times are combined such as the implied h-event rule for dt-start and dt-end where I output in the HTML5 style 2015-07-29 12:55:33 as there is no predefined author preference and HTML5 profile is more human readable. [[User:GlennJones|Glenn Jones]] 11:02, 29 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] output more human readable &amp;lt;code&amp;gt;2015-07-28 12:55:33&amp;lt;/code&amp;gt; canonically, with authored level of specificity, i.e. not adding minutes or seconds if they are not in the input date string.&lt;br /&gt;
** Let's update any test cases as needed for this. - [[User:Tantek|Tantek]]&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== implied date for dt properties both mf2 and backcompat ===&lt;br /&gt;
The [[value-class-pattern#microformats2_parsers|value class pattern dt-* date proposal]] should apply to both mf2 dt-* properties, and backcompat classic microformats, to preserve the hAtom / hCalendar optimizations noted on that page, but in a generic way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] 16:12, 18 August 2015 (UTC)&lt;br /&gt;
* +1 [[User:Glenn Jones|Glenn Jones]] 20 August 2015&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== implied properties when an explicit class is provided ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Should &amp;quot;u-url&amp;quot; still be implied if another explicit class is already provided, as below. This is a contrived example, but it is taken from Bridgy's unit tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;article class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;a class=&amp;quot;u-like-of&amp;quot; href=&amp;quot;http://orig.domain/baz&amp;quot;&amp;gt;liked this&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/article&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, http://orig.domain/baz is almost certainly not the u-url, so IMO it would be better to leave it out —[[User:Kylewm|Kylewm]] 15:10, 7 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
'''2015-01-20 consensus'''&lt;br /&gt;
* Changed my mind. Simpler to do nothing. Example provided is artificially constructed, does not reflect likely real world confusion of if we make implied properties more complicated. [[User:Tantek|Tantek]] 06:26, 21 January 2015 (UTC)&lt;br /&gt;
* ++ Consensus on do nothing for this case. At [[2015-01-20]]&lt;br /&gt;
&lt;br /&gt;
'''Proposed resolution:'''&lt;br /&gt;
* Changed again. Due to indiewebcamp.com/edit use-case, this now makes sense for all implied properties. That is:&lt;br /&gt;
** If an element has any explicit property class name(s) on it, then it must not be used to imply any properties. [[User:Tantek|Tantek]] 20:50, 27 May 2015 (UTC)&lt;br /&gt;
*** +1 this seems reasonable, if a publisher is going to add an mf2 class, it is unlikely they want other classes automatically implied from the same value [[User:Aaronpk|Aaronpk]] 23:19, 29 November 2015 (UTC)&lt;br /&gt;
*** -1 for now. To my knowledge, this has only been observed in artificially constructed unit tests and examples, and it adds some weird edge cases that are hard to reason about. [[User:Kylewm|Kylewm]] 00:46, 1 December 2015 (UTC)&lt;br /&gt;
*** ... provide input on this proposal here&lt;br /&gt;
** Refined: Or should this be refined by per parsing prefix? [[User:Tantek|Tantek]] 22:59, 18 September 2015 (UTC) &lt;br /&gt;
*** Any explicit &amp;quot;p-*&amp;quot; property means no implied &amp;quot;p-name&amp;quot; from that element&lt;br /&gt;
*** Any explicit &amp;quot;u-*&amp;quot; property means no implied &amp;quot;u-url&amp;quot; nor &amp;quot;u-photo&amp;quot; from that element.&lt;br /&gt;
*** ... provide input on this refined proposal here&lt;br /&gt;
** Suggestion: split this issue up per property. I think it makes sense for u-url and can be easily added to the spec as e.g. &amp;quot;.h-x&amp;gt;a[href]:only-of-type:not[.h-*&amp;lt;strong&amp;gt;,.u-*&amp;lt;/strong&amp;gt;]&amp;quot;. [[User:Kylewm|Kylewm]] 00:46, 1 December 2015 (UTC)&lt;br /&gt;
*** Obviously wrong to assume a link explicitly pointing elsewhere is our &amp;quot;url&amp;quot; &lt;br /&gt;
*** More difficult to make a case for photo and especially for name.&lt;br /&gt;
*** &amp;quot;name&amp;quot; is implied at least by [.h-x textContent], so often the excluded element would end up included anyway.&lt;br /&gt;
*** ... provide input on this refined proposal here&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== whitespace collapsing revisited ===&lt;br /&gt;
2015-05-27: (raised by [[User:Kevin Marks|Kevin Marks]] per Glenn Jones)&lt;br /&gt;
&lt;br /&gt;
Revising the microformats tests to conform to the &amp;quot;don't collapse whitespace&amp;quot; rule below reveals some non-intuitive cases. &lt;br /&gt;
preserving whitespace in addresses is somewhat defensible, but in an implied name it is often unhelpful, as it preserves non-user visible space there for authoring reasons.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
[https://github.com/microformats/tests/commit/a325e0e9bc2089507e69b1883f7065a3316e07c2#diff-d577012c1438978a571c4049179607f0 this test] shows how extraneous whitespace ends up in the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-review-aggregate&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;p-item h-event&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 class=&amp;quot;p-name&amp;quot;&amp;gt;Fullfrontal&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;p class=&amp;quot;p-description&amp;quot;&amp;gt;A one day JavaScript Conference held in Brighton&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;time class=&amp;quot;dt-start&amp;quot; datetime=&amp;quot;2012-11-09&amp;quot;&amp;gt;9th November 2012&amp;lt;/time&amp;gt;&amp;lt;/p&amp;gt;    &lt;br /&gt;
    &amp;lt;/div&amp;gt; &lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;p class=&amp;quot;p-rating&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;p-average value&amp;quot;&amp;gt;9.9&amp;lt;/span&amp;gt; out of &lt;br /&gt;
        &amp;lt;span class=&amp;quot;p-best&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt; &lt;br /&gt;
        based on &amp;lt;span class=&amp;quot;p-count&amp;quot;&amp;gt;62&amp;lt;/span&amp;gt; reviews&lt;br /&gt;
    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
give a parsed result of:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;items&amp;quot;: [{&lt;br /&gt;
        &amp;quot;type&amp;quot;: [&amp;quot;h-review-aggregate&amp;quot;],&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
            &amp;quot;item&amp;quot;: [{&lt;br /&gt;
                &amp;quot;value&amp;quot;: &amp;quot;Fullfrontal\nA one day JavaScript Conference held in Brighton\n9th November 2012&amp;quot;,&lt;br /&gt;
                &amp;quot;type&amp;quot;: [&amp;quot;h-event&amp;quot;],&lt;br /&gt;
                &amp;quot;properties&amp;quot;: {&lt;br /&gt;
                    &amp;quot;name&amp;quot;: [&amp;quot;Fullfrontal&amp;quot;],&lt;br /&gt;
                    &amp;quot;description&amp;quot;: [&amp;quot;A one day JavaScript Conference held in Brighton&amp;quot;],&lt;br /&gt;
                    &amp;quot;start&amp;quot;: [&amp;quot;2012-11-09&amp;quot;]&lt;br /&gt;
                }&lt;br /&gt;
            }],&lt;br /&gt;
            &amp;quot;rating&amp;quot;: [&amp;quot;9.9&amp;quot;],&lt;br /&gt;
            &amp;quot;average&amp;quot;: [&amp;quot;9.9&amp;quot;],&lt;br /&gt;
            &amp;quot;best&amp;quot;: [&amp;quot;10&amp;quot;],&lt;br /&gt;
            &amp;quot;count&amp;quot;: [&amp;quot;62&amp;quot;],&lt;br /&gt;
            &amp;quot;name&amp;quot;: [&amp;quot;Fullfrontal\nA one day JavaScript Conference held in Brighton\n9th November 2012\n\n\n9.9 out of \n        10 \n        based on 62 reviews&amp;quot;]&lt;br /&gt;
        }&lt;br /&gt;
    }],&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is a reasonable textual representation of the event, but the implied &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; is full of spurious whitespace that any consumer would have to strip. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/microformats/tests/commit/4c9690b53b0a2f40440abac8e609c51ac7dd6d56 h-review] has similar issues&lt;br /&gt;
&lt;br /&gt;
2015-05-28: (Addition by [[User:GlennJones|Glenn Jones]])&lt;br /&gt;
&lt;br /&gt;
The example below shows the type of markup most effected by the &amp;quot;implied name&amp;quot; and &amp;quot;don't collapse whitespace&amp;quot; rule working together to produce output that is hard to use without further processing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;h-card&amp;quot; href=&amp;quot;http://glennjones.net&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;p-given-name&amp;quot;&amp;gt;Glenn&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;p-family-name&amp;quot;&amp;gt;Jones&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The output for the name property from the above HTML would be &amp;lt;code&amp;gt;Glenn\r\n     Jones&amp;lt;/code&amp;gt; using the (trim lead/trailing) suggested in the  parsing spec.  I could of course move the spans onto one line, but it feels fragile to consider whitespace sensitivity in HTML like this. Added to the fact that HTML templating environments often take away that level of whitespace control from authors anyway.&lt;br /&gt;
&lt;br /&gt;
There are issues with both: keeping whitespace, returns and tabs from parsed HTML or collapse that whitespace. If we return the whitespace it becomes mal-formatted for humans because it was only added to make the HTML code understandable and in most cases was not meant to be used/read outside of that context. If we collapse the whitespace we can have issues of whitespace sensitive text from &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; etc. being incorrectly formatted. &lt;br /&gt;
&lt;br /&gt;
Providing a CSS aware innerText feature would produce the most useable output, but this is too complex/time consuming to build for most parser developers. In the face of no perfect solution I have taken the 80:20 view,  whereby errant whitespace, causes me considerably more problems than mal-formatted &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; content so I collapse whitespace on all text returned. &lt;br /&gt;
&lt;br /&gt;
This feature is a non-CSS aware version of innerText. It does not cover all rendering edge cases, but enough to produce practical output.&lt;br /&gt;
&lt;br /&gt;
For now, I have started changing the node parser to flag &amp;quot;white-space collapsing&amp;quot; as an experimental feature which is off by default i.e. http://glennjones.net/tools/microformats/ but personally I will parse everything with this on as I find it the most practical solution.  &lt;br /&gt;
&lt;br /&gt;
Not sure where that leaves me on the options below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
Choose from:&lt;br /&gt;
# keep as is and every parser client has to post process for common cases.&lt;br /&gt;
# '''keep as is but have mf2 parser trim leading/trailing whitespace (likely to provide desired result and be reasonably backcompat)'''&lt;br /&gt;
#* +1 my preference of the two options. [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
#* +1 though this doesn't solve any of the problems discussed above, it's still worth doing [[User:Kevin Marks|Kevin Marks]] 16:41, 28 May 2015 (UTC)&lt;br /&gt;
#* +1 will help parsers be more consistent with each other, and I haven't ever encountered a case where preserving leading/trailing whitespace was desirable [[User:Kylewm|Kylewm]] 20:45, 8 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
2015-06-08 option 2 resolved by consensus and implementation in mf2py.&lt;br /&gt;
&lt;br /&gt;
Somewhat orthogonal:&lt;br /&gt;
* make &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; on properties with children normalise whitespace&lt;br /&gt;
** -1 Seems like a bad idea as this &amp;quot;value&amp;quot; is supposed to be the same as if there was no embedded child microformat. [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
* make implied &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; normalise whitespace.&lt;br /&gt;
** +0 This is reasonable and already done somewhat in the parsing spec (trim lead/trailing). [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
** +1 Given the universality of name, this would fix most of the issues we see. [[User:Kevin Marks|Kevin Marks]] 16:41, 28 May 2015 (UTC)&lt;br /&gt;
* Put \n in textual forms if there is a &amp;lt;code&amp;gt;&amp;amp;lt;p&amp;amp;gt;&amp;lt;/code&amp;gt; tag in the original.&lt;br /&gt;
** -1 that's a long path to go down with whitespace equivalents for HTML markup. [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
** would only preserving whitespace if in &amp;amp;lt;pre&amp;amp;gt; be an 80:20 compromise? [[User:Kevin Marks|Kevin Marks]] 16:41, 28 May 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Because there are both code markup and specific vocabulary (label) needs for preserving whitespace, we are compelled to preserve in general, perhaps except for very specific limited generic cases (e.g. trim leading/trailing, &amp;quot;value&amp;quot; parsing, implied name). [[User:Tantek|Tantek]]&lt;br /&gt;
&lt;br /&gt;
=== u- parsing iframe src ===&lt;br /&gt;
Currently if I put u-* on an iframe it gets the value of the fallback text. This seems a shame. Getting the URL seems a sensible answer.&lt;br /&gt;
[[User:Kevin Marks|Kevin Marks]] 09:07, 11 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== i- parsing iframe src ===&lt;br /&gt;
&lt;br /&gt;
More controversially, what about using an iframe for transclusion? A use case here is comments on a static site. Currently, on eg http://www.kevinmarks.com/microformatschema.html the comments are injected via JS, making them opaque to parsers and thus precluding further parsing such as salmentions.&lt;br /&gt;
&lt;br /&gt;
If instead they were an iframe embedding them, a parser could optionally fetch its contents, parse them, and include them in the parsed mf2 output at that point. Overloading u-* for this seems wrong; e-* as below for srcdoc would have a different effect; this implies a new prefix directive would be needed. A strawman i-* (for include) may work.&lt;br /&gt;
[[User:Kevin Marks|Kevin Marks]] 09:07, 11 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== e- parsing iframe srcdoc ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Proposal: addition of a new e-* parsing rule for iframe elements with srcdoc attributes. E.G.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;iframe class=&amp;quot;e-content&amp;quot; srcdoc=&amp;quot;&amp;lt;p&amp;gt;A paragraph of HTML with &amp;amp;quot;quoted quotes&amp;amp;quot; &amp;amp;amp;amp; doubly quoted ampersands&amp;lt;/p&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;items&amp;quot;: [{&lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-entry&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
   &amp;quot;content&amp;quot;: [&amp;quot;&amp;lt;p&amp;gt;A paragraph of HTML with &amp;amp;quot;quoted quotes&amp;amp;quot; &amp;amp;amp; doubly quoted ampersands&amp;lt;/p&amp;gt;&amp;quot;]&lt;br /&gt;
  }&lt;br /&gt;
 }]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would allow, for example, HTML comments to be sandboxed inside iframes but still parsable as microformats.&lt;br /&gt;
&lt;br /&gt;
I believe the correct processing would be to leave &amp;amp;quot; entities as they are but to unescape any doubly-escaped ampersands.&lt;br /&gt;
&lt;br /&gt;
** Is there any use case for that? —[[User:TomMorris|Tom Morris]] 12:32, 14 September 2013 (UTC)&lt;br /&gt;
** +1 we need documentation of use case and existing sites publishing iframe srcdoc like this - [[User:Tantek|Tantek]] 00:47, 15 September 2013 (UTC)&lt;br /&gt;
** Rejected by consensus at [[2015-01-20]] meetup due to lack of real world uses cases / existing sites. [[User:Tantek|Tantek]] 06:26, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to interpret mf2 properties on select ===&lt;br /&gt;
How should select elements with properties be treated any differently?&lt;br /&gt;
&lt;br /&gt;
Awaiting real world examples / stronger use-cases, until then no special treatment of select elements with properties:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Are there any real world examples of select elements with microformats properties?&lt;br /&gt;
* What would the use-case be for putting a microformats property class name on a select element?&lt;br /&gt;
* Nothing special. By consensus at [[2015-01-20]] meetup due to lack of real world uses cases / existing sites. [[User:Tantek|Tantek]] 06:26, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to interpret mf2 root name on form ===&lt;br /&gt;
See what to do about &amp;lt;em&amp;gt;root class names&amp;lt;/em&amp;gt; on &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; elements in particular:&lt;br /&gt;
* [[hcard-input]]&lt;br /&gt;
&lt;br /&gt;
Awaiting real world examples / stronger use-cases, until then, no special treatment of root class names on &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; elements:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Are there any real world examples of a &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; element with a microformats root class name?&lt;br /&gt;
* [[hcard-input]] is one possible use-case, is anyone attempting to use forms for hCard input, e.g. with scripts to help make it work?&lt;br /&gt;
* Are there other use-cases for putting a microformats root class name on a &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; element?&lt;br /&gt;
* As of [[2015-01-20]] - no consensus - need more input as to when/why this is useful to do anything special.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Parsing Literal Values===&lt;br /&gt;
Issue raised by: [[User:BenWard|Ben Ward]]&lt;br /&gt;
&lt;br /&gt;
It is proposed for microformats2 that all microformats be parsable from just their root element, e.g. &amp;lt;code&amp;gt;&amp;amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;Ben Ward&amp;amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; would create an hCard with the following properties after parsing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
  'type': ['h-card'],&lt;br /&gt;
  'properties': {&lt;br /&gt;
     'name': ['Ben Ward']&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a four-fold change from the current [[hCard]]:&lt;br /&gt;
# type is generically identifiable as a microformat root, even in parsed form. The use of the 'h-' prefix persists into the type of the object. This is deliberately so, as a result of re-using the JSON data model of microdata which itself is re-using a common JSON convention, such that microformatted data is clearly distinguishable (as opposed to any other random schema that may be using a similar data model).&lt;br /&gt;
# root-class-only support. Per [[microformats-2-implied-properties]], the ''name'' property is implied by the entirety of the root class name element.&lt;br /&gt;
# 'name' instead of 'fn'. As also documented in [[microformats-2-implied-properties]], the continuous challenges/problems and need to repeatedly re-explain 'fn' over the years combined with the real-world market response of nearly every other party doing a person vocabulary renaming 'fn' to 'name', microformats 2 makes this change as well.&lt;br /&gt;
# There is no automatic parse-time inferring of &amp;lt;code&amp;gt;'given-name': ['Ben']&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;'family-name': ['Ward']&amp;lt;/code&amp;gt;. Any such inferring *might* be made by a vCard converter, but is left up to that specific application (not all applications) built on that vocabulary, though even in that case it may not be necessary, as an empty &amp;quot;N:;;;&amp;quot; [[vCard]] property is sufficient to satisfy the N property requirement of [[vCard]], and also causes no problems when imported into various [[vcard-implementations]].&lt;br /&gt;
&lt;br /&gt;
It is required of the extractor to understand that when a microformats object specifies no explicit child properties, that it must treat &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; as having a &amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;. But, the parser is generic, so it also treats &amp;lt;code&amp;gt;h-review&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-entry&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-recipe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-geo&amp;lt;/code&amp;gt; as having a ‘&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;’.&lt;br /&gt;
&lt;br /&gt;
As a result, specific vocabularies are evolved to drop their specific form of name (e.g. fn, summary, entry-title) and simplified to use a common 'name' property instead.&lt;br /&gt;
&lt;br /&gt;
Note: while the overwhelming majority of real world publishing/consuming uses of microformats do so with proper nouns which have names (and thus this parser-level incorporation of an implied 'name'), there are some formats that do not have a 'name' semantic. For example, [[geo]], [[adr]], and possibly if/when developed, units of measure, length, cost. The current thinking is that the benefits to the far greater proper-noun use-case of microformats outweigh the technical inelegance of having an extra/ignored 'name' property on formats that lack such a semantic.&lt;br /&gt;
&lt;br /&gt;
Some formats also may appear in theory to better imply some other property, e.g. a review might be thought to imply its ''content'', not its name, and an Atom entry its ''content'', not its title, but in practice (actual publishing patterns) this is not the case. Typically, brief unstructured reviews (or mentions thereof) provide a ''summary'' (often hyperlinked to an expanded structured form) of that review, not its content, and similarly, brief unstructured posts (e.g. RSS items) have historically most often been link blog items which include the title of an item and a link. Short status updates as well established by Twitter are newer and would seem to imply purely content with no title, at least semantically, however, even Twitter populates the RSS title and ATOM entry title of their feeds with the content. It's not clear what went into that decision, however, that's likely irrelevant, as the outcome turns out to be emergent consistency among publishing behaviors.&lt;br /&gt;
&lt;br /&gt;
To avoid overloading or undermining the semantics of a vocabulary, I propose that we handle this at the extractor level in a simpler fashion: Define a new property for literal data, that an extractor will provide if no other information was available. All ''interpreters'' may then be instructed that in the event that an object has no properties, it can attempt to interpret the literal value from the page instead.&lt;br /&gt;
&lt;br /&gt;
* This was one of the design iterations I went through which led me to the current implied 'name' design. Another iteration was the ability for a vocabulary to specify a single required property which was implied if there were no properties provided. However, the combination of the fact that in most cases such single required properties were quite name-like, and that a vocabulary-specific rule like that would then bind parsers to specific vocabularies (even so slightly) led me to collapse them into implying a 'name'. It's not perfect, but it's the best alternative so far that balances practical convenience of publishing/consuming, avoids vocabulary-specific knowledge in the parser, and technical (in)elegance. [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
In existing microformats, the closest existing example we have for this is the &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; property in hCard, which is used to represent the literal address label for a place. It is a corresponding piece of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;org&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; in combination, but has no structure in and of itself. Possibly, every microformat could have a &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; form where structured data is unavailable.&lt;br /&gt;
&lt;br /&gt;
However in practice, the hCard &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; property is both little understood and little used. It's not even clear that it ought to be kept for microformats 2 (no known consumers, very few (if any?) real-world non-test publishers). This disuse is likely a good indicator that we should avoid basing anything on its design.&lt;br /&gt;
&lt;br /&gt;
Alternatively, &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is used throughout microformats to target a generic value (e.g. in combination with &amp;lt;code&amp;gt;price&amp;lt;/code&amp;gt; in hListing.) It has been proposed that when parsing properties that are also themselves microformats, we create native objects of the form:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        'value': '1900 12th Street, San Francisco, CA 94'&lt;br /&gt;
      , 'type': ['h-adr']&lt;br /&gt;
      , 'properties': {&lt;br /&gt;
            'street-address': '1900 12th Street'&lt;br /&gt;
          , 'etc': 'etc'&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
We could apply this same pattern to the root level:&lt;br /&gt;
&lt;br /&gt;
    { &lt;br /&gt;
        type: [h-card]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: 'Ben Ward'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
In this case, an interpreter or implementation is responsible for using &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; in place of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, or restructuring the object. It would be the responsibility of each vocabulary to define its root property. The parsing layer of microformats 2.0 would not impose semantics or naming onto that.&lt;br /&gt;
&lt;br /&gt;
For another example, h-geo would end up like this:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        type: [h-geo]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: '1.3232;-0.543'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
* This is an alternative I've been considering as well:  [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
** 'value' is more generic than 'name' (applies to more vocabularies) with the trade-off that it naturally has less (weaker) semantics.&lt;br /&gt;
*** +1 I think that having naturally weaker semantics would be appropriate for this parsing functionality. —[[User:BenWard|BenWard]] 07:24, 5 October 2011 (UTC)&lt;br /&gt;
** The interesting thing that this analysis has revealed is that there appear to be two distinct clusters of microformats, the much more commonly used/understood/useful proper-noun microformats which markup things with names (people, events, reviews, recipes), and the less used compound-data microformats which are often used ''inside'' other microformats and just have some sort of semi-structured value (adr, geo, measure, and perhaps even things like tel). Perhaps this is implying the possibility and some degree of utility for ''two'' microformats root class name prefixes, 'h-' for existing proper-noun microformats, and something else ('m-' for microformat/molecule?, 's-' for structured-value?, 'v-' for value (though historically &amp;quot;v-&amp;quot;/&amp;quot;v.&amp;quot; has meant &amp;quot;vendor-specific&amp;quot;)?) for unnamed structured data microformats.&lt;br /&gt;
*** This more and more feels like a good idea, and I'm leaning toward &amp;quot;s-&amp;quot; for struct / structure / structured value. &amp;quot;s-&amp;quot; works just like &amp;quot;h-&amp;quot; except that it doesn't imply any properties at parse time. We can try it and see what happens. There's also no harm if publishers just use &amp;quot;h-&amp;quot; structures, they just (possibly) get a few extra properties if they happen to omit properties.&lt;br /&gt;
** Parallels the same JSON when a property has both a string value ''and'' is a structure itself.&lt;br /&gt;
*** Changed my mind on this. The parallel is not quite there. 'name'/'url'/'photo' are only implied if there are NO properties, where as the JSON string value + structure convention *always* provides a 'value'. [[User:Tantek|Tantek]] 22:39, 4 October 2011 (UTC)&lt;br /&gt;
*** And due to this difference in behavior ('value' is there when nested properties are present, whereas 'name' is only implied when there are no properties specified), I think it's correct to keep them separate, i.e. stick with implied 'name'. [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
** However, I'm still currently leaning towards the practical convenience of providing a 'name' for the vast majority of microformats uses, rather than diluting this feature for the sake of avoiding implying inapplicable semantics to the few plain structured data microformats, and even then, only when no properties are explicitly specified! I'd rather introduce a new root prefix for those than lose the simplicity and utility of implied 'name'. [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== resolved ==&lt;br /&gt;
=== When to collapse whitespace in properties ===&lt;br /&gt;
&lt;br /&gt;
The spec doesn’t explicitly require whitespace to be collapsed or not. The official mf2 test suite requires it to be collapsed.&lt;br /&gt;
&lt;br /&gt;
Reasons why whitespace ''shouldn’t'' be collapsed:&lt;br /&gt;
* Plaintext property representations of syntax-highlighted code, poetry and song lyrics require whitespace to be present&lt;br /&gt;
* Whether or not whitespace is an important part of the content being parsed is determined by css white-space and CANNOT be inferred from HTML markup alone&lt;br /&gt;
&lt;br /&gt;
Resolution 2013-11-12: Agreed, whitespace should not be collapsed (other than normal HTML5 parsing rules). The spec now refers to &amp;quot;textContent&amp;quot; rather than &amp;quot;innertext&amp;quot; to make this explicit.&lt;br /&gt;
&lt;br /&gt;
=== How to interpret mf2 classnames on form inputs ===&lt;br /&gt;
E.G. how to parse:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;input class=&amp;quot;u-url&amp;quot; value=&amp;quot;https://brennannovak.com/notes/338&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Examples in the wild: https://brennannovak.com/notes/338&lt;br /&gt;
&lt;br /&gt;
See proposal:&lt;br /&gt;
* [[hcard-parsing-brainstorming#input_element_handling]]&lt;br /&gt;
&lt;br /&gt;
Resolution 2013-11-12: Per that proposal, p- u- dt- properties on input[value] elements now use the value attribute.&lt;br /&gt;
&lt;br /&gt;
=== mixture of microformats2 and classic microformats classnames on different elements ===&lt;br /&gt;
Some sites in the wild have mistakenly combined classic mf and mf2 markup in ways which misrepresent the content if parsed in BC mode.&lt;br /&gt;
&lt;br /&gt;
Typically this is caused by putting classic and mf2 classnames for the same vocabulary on different elements, e.g:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;body class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;article class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name&amp;quot;&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
 &amp;lt;/article&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sites where this has been observed:&lt;br /&gt;
* http://acegiak.machinespirit.net/2013/10/17/barnaby-walters-notes-another-thing-i-love-about-the-web-users-have-the-power-to-take-control-of-their-uis-and-improve-their-own-experiences-aside-drm-for-html-would-prevent-this-from-being-possibl/&lt;br /&gt;
* http://shawfactor.com/2013/08/06/thoughts-on-extending-webmentions/ (fixed)&lt;br /&gt;
* http://notizblog.org/2013/06/18/the-rise-of-the-indieweb/ (fixed)&lt;br /&gt;
&lt;br /&gt;
Discussion:&lt;br /&gt;
&lt;br /&gt;
* As far as I can tell, the problems in all of these examples were caused by mf2 markup being injected by a wordpress plugin, but classic mf classnames being present further up the DOM in the themes. When parsed in compatibility mode, the classic mf classnames are transformed into mf2 classnames, making the original mf2 classnames look like children of empty items.&lt;br /&gt;
* Turns out this isn’t theme-specific, WordPress injects hentry via PHP [http://indiewebcamp.com/irc/2013-10-22/line/1382448759]. The bug with the wordpress mf2 plugin is resolved as of [http://indiewebcamp.com/irc/2013-10-22/line/1382449035 2013-10-22] --[[User:Barnabywalters|bw]] 13:38, 22 October 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== e- and p- escaping levels ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* The fact that the parsed value of any element with .e-* is at a different level of escaping to the parsed values of p-*, dt-* etc. without any indication of how the property was parsed in the output is a security problem. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;input&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;output&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
   &amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;p-name&amp;quot;&amp;gt;&amp;amp;lt;tag&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;items&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;type&amp;quot;: [&lt;br /&gt;
                &amp;quot;h-card&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;properties&amp;quot;: {&lt;br /&gt;
                &amp;quot;name&amp;quot;: [&lt;br /&gt;
                    &amp;quot;&amp;lt;tag&amp;gt;&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
   &amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;e-name&amp;quot;&amp;gt;&amp;amp;lt;tag&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;items&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;type&amp;quot;: [&lt;br /&gt;
                &amp;quot;h-card&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;properties&amp;quot;: {&lt;br /&gt;
                &amp;quot;name&amp;quot;: [&lt;br /&gt;
                    &amp;quot;&amp;amp;lt;tag&amp;amp;gt;&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* As a parser developer, the most straightforward way I can think of solving this is to add an option (enabled by default) which encodes HTML special characters on all non e-* properties, so the developer knows that all property values are going to be at the same level of escaping. --[[User:Barnabywalters|bw]] 20:00, 15 June 2013 (UTC)&lt;br /&gt;
** Your suggestion of auto-HTML-encoding p-*/u-*/dt-* property values is the most sensible I think. I would NOT make it an option, as it makes sense write consistent microformats2 consumers. - [[User:Tantek|Tantek]] 07:18, 5 July 2013 (UTC)&lt;br /&gt;
** Can you think of any existing apps/consumers of microformats2 via the parser that would break? What would indieweb comments parsers do? - [[User:Tantek|Tantek]] 07:18, 5 July 2013 (UTC)&lt;br /&gt;
*** The only breakage which might occur would be over-encoding of non e-* properties, but I’ll release this update as v0.2.0 and warn people about the changes. The worst thing which could happen is that some comments look a bit weird, as opposed to the current worst possible scenario of easy XSS attacks --[[User:Barnabywalters|bw]] 12:55, 5 July 2013 (UTC)&lt;br /&gt;
*** We should also decide exactly which characters get encoded — just angle brackets, or quotes/ampersands as well? --[[User:Barnabywalters|bw]] 12:55, 5 July 2013 (UTC)&lt;br /&gt;
*** I am not sure about this, it seems more like a helper function rather than a core feature of the parser. Personally I would like to store data as text and encode only when I am going to use and I known the format it is going to be use in.  --[[User:GlennJones|Glenn Jones]] 9:54, 14 July 2013 (UTC) &lt;br /&gt;
***After the discussion on the indiewebcamp IRC with Barnaby Walters I now understand the XSS issue that this change is trying to address. A rogue author could include HTML with scripts to execute a XSS attack. These could be masked by switch prefixes i.e. p-* to e-* on a well use property. As the consumer does not see the prefix in the JSON output they have no idea if a property will content HTML or text.  I will update my two parsers and the test suite --[[User:GlennJones|Glenn Jones]] 8:02, 17 July 2013 (UTC) &lt;br /&gt;
**So what about an author setting a property to e-* when it would normal be p-*, dt-* or u-* i.e.&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-card&amp;quot;&amp;gt;&amp;lt;p class=&amp;quot;e-name&amp;quot;&amp;gt;&amp;lt;script&amp;gt; alert('xss test') &amp;lt;/script&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** per [[events/2013-09-14-microformats2-parsing|microformats2 parsing discussion 2013-09-14]], parsers should never automatically attempt to HTML-special-characters encode - as that would provide the client of the parser a false sense of security. It's *always* up to client code to escape any text being output to HTML *at the moment it is output to HTML* and never before, because they can never trust that any text from storage/elsewhere has for sure been escaped or not. - [[User:Tantek|Tantek]] 18:07, 17 October 2013 (UTC)&lt;br /&gt;
** Should we not encode e-* as well and the consumer can decode at their own risk --[[User:GlennJones|Glenn Jones]] 18:42, 21 July 2013 (UTC) &lt;br /&gt;
*** No, never, per above point from [[events/2013-09-14-microformats2-parsing|microformats2 parsing discussion 2013-09-14]] - [[User:Tantek|Tantek]] 18:07, 17 October 2013 (UTC)&lt;br /&gt;
** See [[events/2013-09-14-microformats2-parsing|microformats2 parsing discussion 2013-09-14]] etherpad: https://etherpad.mozilla.org/microformats2parsing for more details on the resolution to this issue - and incorporate here (then move to resolved section below). - [[User:Tantek|Tantek]] 18:07, 17 October 2013 (UTC)&lt;br /&gt;
* Resolved by changes to the parsing spec: all properties are plaintext (non-HTML escaped), e-* properties result in a dictionary with &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; = plaintext version, &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; = raw HTML version &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== br hr empty string ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* The parsing rule 'else if br.p-x or hr.p-x, then return &amp;quot;&amp;quot; (empty string)' for p-* can cause any code consuming the API to become quite bloated. It means that you have test every array value to see if its an empty string. It is also unclear to me what the purpose of this mark-up pattern is for  [[User:GlennJones|Glenn Jones]]&lt;br /&gt;
** Upon reconsidering this, I agree with you, this is an unlikely use case. If a publisher wants to explicitly set an empty property &amp;quot;p-foo&amp;quot; they can simply write &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;p-foo&amp;quot;&amp;gt;&amp;amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; which looks explicit. Whereas BR and HR tags are often just presentational, so we should both not encourage usage of them for semantics, and anyone that did use them would be subject to likely loss of semantics upon a redesign (that got rid of those particular BR and HR tags). I'm going to remove them from the parsing spec. - [[User:Tantek|Tantek]] 15:29, 10 February 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== datetime examples without T delimiter ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* The examples in the wiki microformats-2 pages such h-entry and h-entry had datetime without the 'T' delimiter between date and time. ie&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;time class=&amp;quot;dt-published&amp;quot; datetime=&amp;quot;2013-06-13 12:00:00&amp;quot;&amp;gt;13&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; June 2013&amp;lt;/time&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
I have updated the pages. As far as I known this is a new pattern for dates. Was it a mistake in the examples or is it a new datetime pattern.&lt;br /&gt;
** The [[HTML5]] &amp;quot;time&amp;quot; element, and &amp;quot;datetime&amp;quot; attribute allow for space &amp;lt;span style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;&amp;quot; &amp;quot;&amp;lt;/span&amp;gt; as a separator between date and time as well as &amp;quot;T&amp;quot;, thus we allow it for microformats as well. The  &amp;lt;span style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;&amp;quot; &amp;quot;&amp;lt;/span&amp;gt; separator is preferred as the date and time are more readable when separated by a space. The examples noted in those specs deliberately use this. - [[User:Tantek|Tantek]] 18:48, 15 July 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== rel-alternate absent optional attributes ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* What should rel-alternate parsing do when one of the optional attributes specified (&amp;lt;kbd&amp;gt;hreflang&amp;lt;/kbd&amp;gt; or &amp;lt;kbd&amp;gt;media&amp;lt;/kbd&amp;gt; or both) is not there? The options seem to be:&lt;br /&gt;
*# leave the corresponding key out of the alternate JSON object&lt;br /&gt;
*#* This one. Leave the corresponding key out.&lt;br /&gt;
*# include the corresponding key in the alternate JSON object, but set the value to the JSON null object&lt;br /&gt;
*# include the corresponding key in the alternate JSON object, but set the value to a blank string&lt;br /&gt;
*# something I haven't thought of&lt;br /&gt;
&lt;br /&gt;
I haven't checked the existing implementations, but Barnaby said he's not sure what the appropriate way to deal with it is either. —[[User:TomMorris|Tom Morris]] 15:41, 9 August 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== rel-alternate and type attribute ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Should rel-alternate parsing also pick up the &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; attribute? It’s fairly widely used, e.g. for ATOM feeds.&lt;br /&gt;
** Numerous existing sites/pages have various [[rel-alternate]] uses with a type attribute for feeds/APIs so that's good enough to add this for help with discovery in general. Rel parsing updated. - [[User:Tantek|Tantek]] 00:47, 15 September 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Extraction vs Interpretation ===&lt;br /&gt;
Issue raised by: [[User:BenWard|Ben Ward]]&lt;br /&gt;
&lt;br /&gt;
A microformats ‘1.0’ parser performs the following function:&lt;br /&gt;
&lt;br /&gt;
* Given a piece of HTML content, discover a known microformat, extract it, apply various extraction patterns based upon the HTML mark-up used (e.g. include pattern, &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; patterns, date-time patterns, value-title pattern), apply various content optimisations where applicable, and return the result in an object native to the programming language.&lt;br /&gt;
&lt;br /&gt;
This is performing two types of function: Extraction of data from an HTML document or fragment, ''and'' interpretation and optimisation of that content to match the rules set out by a vocabulary specification.&lt;br /&gt;
&lt;br /&gt;
It is only possible to write a generic parser that covers the first half of this task: Extraction, and application of global rules based on HTML elements and patterns common to all formats.&lt;br /&gt;
&lt;br /&gt;
The purpose of a generic parser (as supported by use cases such as search engines, and other crawlers) is: &lt;br /&gt;
&lt;br /&gt;
To provide a way for tools to extract rich data from a page for native storage, such that the data may be interpreted later by applications. This allows microformats to be crawled, and indexed, and removes the need to include complex HTML parsing within every implementation of microformat data.&lt;br /&gt;
&lt;br /&gt;
Microformats will continue to define various vocabulary-specific optimisations. as part of the design to be optimised for authors. For example: The &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; pattern in [[hcard]], or the &amp;lt;code&amp;gt;lat;long&amp;lt;/code&amp;gt; pattern in [[geo]], as well as default values for properties, such as the maximum rating in an [[hreview]].&lt;br /&gt;
* Actually, no, as it is defined currently, microformats 2 ''drops'' vocabulary-specific optimizations. Such optimizations have often been too inapplicable, error prone or i18n-unsafe (e.g. fn to given-name + family-name fails for both numerous cases where middlenames/initials are used, and in general in numerous Asian languages where given/family name order is the reverse of Western English conventions, or languages with multiple family-names, e.g. Spanish - see [[hcard-issues-resolved]] for more). This is a deliberate cutting of a &amp;quot;feature&amp;quot; from microformats 1, it is a deliberate model simplification design decision. [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
==== Extraction resolution ====&lt;br /&gt;
Proposed resolution:&lt;br /&gt;
&lt;br /&gt;
Microformats2 should refer only to ''extraction'' of microformats. Vocabularies should in turn document their appropriate optimisations, which will need to be applied by implementations, or a companion to an extractor, which I'll refer to here as an ‘interpreter’.&lt;br /&gt;
* Vocabularies will no longer have optimizations, this is again deliberately, as they've been shown to be more error prone than helpful. Thus there should be no need for any vocabulary-specific 'interpreters'. However, due to design quirks in various legacy/interchange formats, ''export conversions algorithms'' to those legacy/interchange formats will require some additional legacy-format-specific rules (e.g. odd &amp;quot;required&amp;quot; rules in [[Atom]] or [[vCard]] will require specific synthesis rules, limitations in said formats will require filtering of some values, e.g. [[vcard3]] BDAY disallows vague birthdays like year-month and --month-day - subsequently allowed in [[vcard4]]). [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
A microformats2 ‘extractor’, in combination with the functionality of a domain and format-aware ‘interpreter’ (either another shared component, or part of the implementation itself) would be equivalent to a microformats 1.0 ‘parser.’&lt;br /&gt;
* A microformats2 parser is both generic (no knowledge of specific vocabularies), and lacks any/all such vocabulary-specific rules as compared to a microformats 1.0 [[hcard-parsing|parser]] with the exception of a 1) a limited list of well-established/interoperable backward compat root class names (of current [[microformats]] that are or can be soon shown to be specifications/standards per the [[process]]), 2) flat sets of backward compat property names (some with prefix/name specific conversion) for each of those backward compat root class names.  This is a deliberate design decision that makes microformats 2 more &amp;quot;micro&amp;quot;, and yes this means that even with such backward compat support, this simple form of backward compat may mean that some existing microformats 1 content breaks. We'll assess those and iterate on a documented case-by-case basis rather than attempt to maintain theoretical 100% backward compatibility (since many current microformats format-specific-features are either unused, or may have caused more problems than solutions). [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
N.B. I'll rewrite some of these as [[microformats2-parsing-faq]] to help better clarify. The reasoning that led to most of these design decisions is documented in the [[microformats-2#About_This_Brainstorm|microformats 2: About This Brainstorm]] section and following sections. I'll recheck those sections to see if/where reasoning for some of the above noted design decisions may have been missed, and back-fill accordingly. This is necessary because [[microformats2]] is a evolutionary result of simultaneously addressing both numerous generic [[issues]] as well as various common [[hcard-issues-resolved|format]]-[[hcalendar-issues-resolved|specific]] [[mfo|problems]] in microformats1 syntax and vocabularies. The very number of changes may make it more challenging (from a microformats1 perspective) to see why any particular design change has been made. [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
This issue can be moved from resolved to closed once the above-mentioned write-ups have occurred.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Parsing properties from rel attributes===&lt;br /&gt;
tl;dr resolution: As of 2013, [[microformats2-parsing]] handles parsing all link and a href rel values at document scope level, and producing canonical JSON accordingly. - [[User:Tantek|Tantek]]&lt;br /&gt;
&lt;br /&gt;
Issue raised by [[User:BenWard|BenWard]] 07:24, 5 October 2011 (UTC):&lt;br /&gt;
&lt;br /&gt;
* Currently, hAtom parses `bookmark` as a permalink&lt;br /&gt;
* Various microformats parse `rel=tag` as tags&lt;br /&gt;
* The current proposal for parsing does not allow parsing properties from rel attributes.&lt;br /&gt;
&lt;br /&gt;
Microformats parsers could instead extract ''all'' link relationships from rel attributes within an microformat object, parsing them as if a u- prefixed property.&lt;br /&gt;
* Minor nit: Rather than same as a u- prefixed property, I think such &amp;quot;rel&amp;quot; properties should be parsed purely from the &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; attribute on &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;area&amp;amp;gt;&amp;lt;/code&amp;gt; elements and nothing more. I would strongly disagree to extending rel to apply to other elements with URLs like img src, object data, or to apply to elements in general like div. That's the path that RDFa has taken and caused much confusion as a result. [[User:Tantek|Tantek]] 07:39, 5 October 2011 (UTC)&lt;br /&gt;
** Agree: That seems like a perfectly reasonable restriction. --[[User:BenWard|BenWard]] 08:29, 5 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
This results in:&lt;br /&gt;
&lt;br /&gt;
* Continuing use of the &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attribute in HTML, thereby building on HTML semantics rather than bypassing them or ignoring them in favour of something less meaningful.&lt;br /&gt;
* Parsing hAtom objects contain a property named &amp;lt;code&amp;gt;bookmark&amp;lt;/code&amp;gt;, in place of &amp;lt;code&amp;gt;permalink&amp;lt;/code&amp;gt;.&lt;br /&gt;
* All microformats that use &amp;lt;code&amp;gt;rel-tag&amp;lt;/code&amp;gt; would contain a property named… &amp;lt;code&amp;gt;tag&amp;lt;/code&amp;gt;. Perfect.&lt;br /&gt;
&lt;br /&gt;
Since &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes are not overloaded for other functionality like class is, and other uses of &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; within content are low (and non-semantic uses are nil, to the best of my knowledge) the risk of property pollution would be extremely low.&lt;br /&gt;
&lt;br /&gt;
Note, with regard to this last point, that a generic microformats parser ''will'' parse false-positive properties, and ''will'' parse objects in combined chunks, rather than individually by format. Extracted objects will often not represent a vocabulary without further processing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* This sounds like it might be workable. Let's try it and see how well authors &amp;quot;get it&amp;quot;. - [[User:Tantek|Tantek]]&lt;br /&gt;
* Possible issue: do we have any collisions between class property names and rel names? (I don't think so offhand, but useful to ask the question). - [[User:Tantek|Tantek]]&lt;br /&gt;
** None that I can think of in microformats. There is the case of Google's &amp;lt;code&amp;gt;rel=author&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;p-author&amp;lt;/code&amp;gt; in hAtom. However, the next point, about mfo scoping, would cover it in most situations (rel-author on a hyperlink within an hcard wouldn't be applied to the hentry.) The one situation in a parse tree where it's ambiguous would be this: &lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;p-author h-card&amp;quot; &lt;br /&gt;
   rel=&amp;quot;author&amp;quot; &lt;br /&gt;
   href=&amp;quot;http://benward.me&amp;quot;&amp;gt;&lt;br /&gt;
   Ben Ward&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** I can think of two quite reasonable solutions: &lt;br /&gt;
*** 1. Declare that class properties take precedence over rel properties of the same name, discarding rel values if a class is also found, or &lt;br /&gt;
*** 2. Since all properties are now multi-value anyway, the hAtom object could be parsed as:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from the p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        'http://benward.me'      /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** —[[User:BenWard|BenWard]] 08:29, 5 October 2011 (UTC)&lt;br /&gt;
*** Option 2 makes sense and is consistent with the rest of the multi-value parsing/handling. - [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
*** What about without the 'p-author'?&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;h-card&amp;quot; &lt;br /&gt;
   rel=&amp;quot;author&amp;quot; &lt;br /&gt;
   href=&amp;quot;http://benward.me&amp;quot;&amp;gt;&lt;br /&gt;
   Ben Ward&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Should that be parsed as:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        'http://benward.me'      /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Or&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': 'http://benward.me' /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
          'type': ['h-card'],          /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        &lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*** And if the former, then we're presumably saying that the value parsed due to the presence of a rel is always its own value, and does not combine with any other structures. I am fine with this, but I wanted to make sure we are ok with that explicitly. [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
**** +1 I think that since the rel attribute is specifically concerned with the relation to an href attribute, it should not be combined with other structures that are rightly declared uses classes.&lt;br /&gt;
***** The more I've thought about this and how consuming applications may want to treat rel semantics, the more it seems correct to keep rel semantics distinct from class semantics. Class semantics are quite general/flexible, whereas rel is quite specific, naming something else in terms of a relationship from the current page/microformat's perspective. I think we should consider putting rel values in their own 'rel' collection, separate from the 'properties' collection. E.g. the original rel-author p-author h-card markup example would be parsed into this:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from the p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        }&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
   'rel': {&lt;br /&gt;
     'author': ['http://benward.me'] /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
***** and if a post had multiple authors:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Tantek Çelik'], /* from 2nd p-author     */&lt;br /&gt;
          'type': ['h-card'],        /* from 2nd h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Tantek Çelik'], &lt;br /&gt;
            'url': ['http://tantek.com']&lt;br /&gt;
        },&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
   'rel': {&lt;br /&gt;
     'author': [&lt;br /&gt;
       'http://benward.me',      /* from rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
       'http://tantek.com'       /* from 2nd rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ]&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
***** This preserves the semantic distinction between rel and properties in general, and leaves it up to a higher-level application to implement any logic around showing &amp;quot;more info&amp;quot; about a rel-author, e.g. by correlating the rel-author URL with the 'url' of an hCard it found in the same entry. However, note that even in the earlier JSON data model, the rel-author value just shows up as another property value, and any higher level application would still have to do some correlation logic. At least with this JSON data model, applications that may be looking for a rel value in particular, or a property value in particular can do so without having one unintentionally pollute the other. [[User:Tantek|Tantek]] 17:33, 6 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Presumably we'd apply all the same property scoping rules to rel scoping as well. E.g. a rel hyperlink inside a microformat won't be seen by any containing microformat. - [[User:Tantek|Tantek]]&lt;br /&gt;
** Correct, it should be parsed in the same scope as all other class properties in the object.&lt;br /&gt;
*** Update: all rel microformats are now parsed at page-scope. Per-microformat scoping of rel has been found to be too confusing in practice (and against the general semantic of rel expressed in the HTML/HTML5 specs) [[User:Tantek|Tantek]] 01:00, 10 July 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This issue can be moved from resolved to closed once we've verified that all the above-mentioned and implied needs to write things up have occurred.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== deduping of rels ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-06-02 by [[User:Kevin Marks|Kevin Marks]] &lt;br /&gt;
* 2015-06-05 resolved by consensus and one real world implementation proof of implementability and verification of expected results. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Many sites have multiple duplicate rel links to the same url - a very common case is WordPress home pages eg [http://ma.tt ma.tt] &lt;br /&gt;
&lt;br /&gt;
Each post on the page has a block like&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;entry-meta&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;date&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://ma.tt/2015/05/beethoven-mozart-bach/&amp;quot; &lt;br /&gt;
    title=&amp;quot;Permalink to Beethoven, Mozart,&amp;amp;nbsp;Bach&amp;quot; rel=&amp;quot;bookmark&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;time class=&amp;quot;entry-date&amp;quot; datetime=&amp;quot;2015-05-31T22:42:00+00:00&amp;quot;&amp;gt;May 31, 2015&amp;lt;/time&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;categories-links&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://ma.tt/category/asides/&amp;quot; rel=&amp;quot;category tag&amp;quot;&amp;gt;Asides&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;author vcard&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;url fn n&amp;quot; href=&amp;quot;http://ma.tt/author/saxmatt/&amp;quot; &lt;br /&gt;
    title=&amp;quot;View all posts by Matt&amp;quot; rel=&amp;quot;author&amp;quot;&amp;gt;Matt&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- .entry-meta --&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As currently defined, the parser will create duplicate entries in &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; for each post:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;category&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;author&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;tag&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;home&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and in the &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; we will also see:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;author&amp;quot;, &lt;br /&gt;
                &amp;quot;author&amp;quot;, &lt;br /&gt;
                &amp;quot;author&amp;quot;, &lt;br /&gt;
                &amp;quot;author&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;View all posts by Matt&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;home&amp;quot;, &lt;br /&gt;
                &amp;quot;home&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/category/asides/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;, &lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;, &lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;, &lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Asides&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
These duplicates are unhelpful for parser consumers. We should:&lt;br /&gt;
* make them both sets - only listing distinct values. This will remove ordering information, but order is irrelevant for rel in html.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;category&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;author&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;tag&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;home&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
}&lt;br /&gt;
…&lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;author&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;View all posts by Matt&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;home&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/category/asides/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Asides&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* possibly we could also make &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; sets too. That would solve the information loss issue with the current parsers&lt;br /&gt;
** Resolution: in the case of duplicate other attributes, first one set wins. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 as the proposer. A version of mf2py that does this is running at unmung,com. see [http://www.unmung.com/mf2?url=https%3A%2F%2Fma.tt&amp;amp;html=&amp;amp;pretty=on fro ma.tt] or [http://www.unmung.com/?html=%3Ca+href%3D%22http%3A%2F%2Fma.tt%2Fcategory%2Fasides%2F%22+rel%3D%22category+tag%22%3EAsides%3C%2Fa%3E%0D%0A%3Ca+href%3D%22http%3A%2F%2Fma.tt%2Fcategory%2Fasides%2F%22+rel%3D%22category+tag%22%3EAsides%3C%2Fa%3E%0D%0A%3Ca+href%3D%22http%3A%2F%2Fma.tt%2Fcategory%2Fasides%2F%22+rel%3D%22category+tag%22%3EAsides%3C%2Fa%3E&amp;amp;pretty=on a simple test] [[User:Kevin Marks|Kevin Marks]] 23:49, 2 June 2015 (UTC)&lt;br /&gt;
* +1 makes sense to me, and not having them be sets in the current spec is likely an oversight on my part. Thanks for noting this issue. [[User:Tantek|Tantek]] 05:28, 3 June 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== include alternates in rels ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-06-01 by [[Tantek]], per inconsistency noted by Kevin Marks.&lt;br /&gt;
* 2015-06-05 resolved per consensus and one real world implementation proof of implementability. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
As fallout from the adoption and implementation of 'rel-urls' per [[microformats2-parsing-brainstorming#more_information_for_rel-based_formats]], we should:&lt;br /&gt;
* add &amp;quot;alternate&amp;quot; rels to the &amp;quot;rels&amp;quot; collection to make them easier to look-up in &amp;quot;rel-urls&amp;quot; - that is, all rel values end up in &amp;quot;rels&amp;quot; collections. No exceptions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as the documenter of this issue, and attempting to represent what I think KevinMarks intended with &amp;quot;rels&amp;quot; and &amp;quot;rel-urls&amp;quot;.&lt;br /&gt;
* +1 This makes sense to me, as the &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; should match so you can lookup in rels first, then get details about urls from rel-urls. We can drop &amp;quot;alternates&amp;quot; independently from this change. [[User:Kevin Marks|Kevin Marks]] 00:23, 2 June 2015 (UTC)&lt;br /&gt;
** +1 drop &amp;quot;alternates&amp;quot; independently now made a separate issue. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
* +1 Makes sense. And I agree with Kevin; I think parsers should deprecate &amp;quot;alternates&amp;quot; for now and drop it after a version cycle or two. [[User:Kylewm|Kylewm]] 00:30, 2 June 2015 (UTC)&lt;br /&gt;
* implemented in [https://github.com/kevinmarks/mf2py/commit/4dba45200eef11da811f64817d02044ab9e98b77 my fork of mf2py] and running on [http://www.unmung.com/?html=%3Ca+rel%3D%22author%22+href%3D%22http%3A%2F%2Fexample.com%2Fa%22%3Eauthor+a%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22author%22+href%3D%22http%3A%2F%2Fexample.com%2Fb%22%3Eauthor+b%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22in-reply-to%22+href%3D%22http%3A%2F%2Fexample.com%2F1%22%3Epost+1%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22in-reply-to%22+href%3D%22http%3A%2F%2Fexample.com%2F2%22%3Epost+2%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22alternate+home%22%0D%0A+++href%3D%22http%3A%2F%2Fexample.com%2Ffr%22%0D%0A+++media%3D%22handheld%22%0D%0A+++hreflang%3D%22fr%22%3EFrench+mobile+homepage%3C%2Fa%3E&amp;amp;pretty=on unmung] [[User:Kevin Marks|Kevin Marks]] 01:29, 2 June 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Empty properties overridden by implied rules against user expectation ===&lt;br /&gt;
Status: resolved, existing behavior correct, no changes to parsing spec.&lt;br /&gt;
&lt;br /&gt;
2015-07-03: raised by [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
&lt;br /&gt;
Emma Kuo brought up an issue (https://github.com/glennjones/microformat-node/issues/22) based on following the indieweb note pattern, where the content of a note is given both the e-content and p-name classes. If the element containing the notes only has none text content like image the p-name can have unexpected value. Here is the example she gave:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;a href=&amp;quot;http://this.site/photo&amp;quot; class=&amp;quot;u-url&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;e-content p-name&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;photo.jpg&amp;quot; class=&amp;quot;u-photo&amp;quot;/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        Some extraneous text&lt;br /&gt;
        &amp;lt;div class=&amp;quot;h-cite&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;a href=&amp;quot;http://someother.site/like&amp;quot; class=&amp;quot;u-url&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;a href=&amp;quot;http://this.site/photo&amp;quot; class=&amp;quot;u-like-of&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;e-content p-name&amp;quot;&amp;gt;liked this&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At the moment I parser this as follows: - if a property (p-name) is empty do not add it to the output. In this case &amp;quot;empty&amp;quot; is classed as not containing any non-whitespace text. As far as I known there is no guidance on how to handle &amp;quot;empty&amp;quot; properties in microformats paring rules, so I followed the conventions of JSON API's not to return &amp;quot;empty&amp;quot; properties.&lt;br /&gt;
&lt;br /&gt;
The side effect of the above is that p-name also has a number of &amp;quot;implied rules&amp;quot;. The &amp;quot;implied rules&amp;quot; try to automatically fill properties like p-name if there is no defined value. In the example above it uses the textContent of the parent h-entry, so value of the h-entry&amp;gt;p-name is the text content of the h-cite i.e. &amp;quot;likes this&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
1. We should not allow the &amp;quot;implied name rule&amp;quot; to get textContent from within a child h-* &lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;strike&amp;gt;+1 I believe this is inline with how we parse properties and will meet user/author expectations  [[User:Glenn Jones|Glenn Jones]] 9:22, 3 July 2015 (UTC)&amp;lt;/strike&amp;gt;&lt;br /&gt;
* -1 A nested h-* is still part of the content of the parent h-*, I don't quite understand the rationale for excluding it. For example, I may include lots of h-cards in the body of a post that references people and wouldn't want them to be excluded from the implied name generation. [[User:Kylewm|Kylewm]] 14:40, 3 July 2015 (UTC)&lt;br /&gt;
* -1 I'm not sure this would solve the problem because auto-filled text could come from the parent h-* (&amp;quot;some extraneous text&amp;quot; in the example above) [[User:emmak|Emma Kuo]] 20:50, 4 July 2015 (UTC)&lt;br /&gt;
* -1 I agree with the other -1s. This would break some of the simplicity of the model. [[User:Tantek|Tantek]] 05:12, 14 July 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
2.  We should not execute the &amp;quot;implied rules&amp;quot; where there is an author defined &amp;quot;empty&amp;quot; property.&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;strike&amp;gt;-1 Although the output would meet author expectations it is complex for parsers as they will have to keep state for each property through the whole series of parsing rules.  [[User:Glenn Jones|Glenn Jones]] 9:22, 3 July 2015 (UTC)&amp;lt;/strike&amp;gt;&lt;br /&gt;
* +1 An explicit, empty, p-name property should prevent an implicit p-name from being generated. For example tantek.com includes &amp;amp;lt;span class=&amp;quot;p-name&amp;quot;&amp;gt;&amp;amp;lt;/span&amp;gt; at the start of the h-feed to prevent a giant name from being auto-generated. From my reading of the parsing spec, I don't see any reason that blank strings should be excluded from parsing. (mf2py and php-mf2 will both happily include empty strings in their output) [[User:Kylewm|Kylewm]] 14:40, 3 July 2015 (UTC)&lt;br /&gt;
* +1 We already have interop on this between mf2py and phpmf2, as well as people depending on it to explicitly set empty property values. [[User:Tantek|Tantek]] 05:12, 14 July 2015 (UTC)&lt;br /&gt;
* +1 As we already have interop with two parsers and solid user issue from Emma we should take this approach. [[User:GlennJones|Glenn Jones]] 11:51, 29 July 2015 (UTC)&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html&lt;br /&gt;
&lt;br /&gt;
=== uf2 children inside a classic microformats root class name ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-020: (raised by kylewm) What should microformats2 children inside a classic microformats root class name do?&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
1. Nothing. Any unattached uf2 children inside a classic microformats root are ignored. Problems:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* However then there's a possible surprise if/when the author upgrades the classic microformats root to uf2, then all of a sudden all the new uf2 children show-up.&lt;br /&gt;
* Another downside: author adds uf2 markup, can't figure out why nothing is happening (because somewhere up the tree in code they didn't touch is classic microformats that are hiding these unattached uf2 children.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
2. Show up in the children collection of the classic microformats root&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Feels most predictable. When you add uf2 root class names anywhere, they will show up in the JSON output hierarchy.&lt;br /&gt;
* When you convert ancestor class microformats root class names to uf2 root class names, no surprise in terms of which microformats show up. Same children collection.&lt;br /&gt;
* +1 Thus I'm leaning towards this one, despite the fact that classic microformats never had a concept of generic unattached children. [[User:Tantek|Tantek]] 04:55, 21 January 2015 (UTC)&lt;br /&gt;
* +1 I think this is the best option I will implement it and update the wiki once its in the JavaScript parser. [[User:GlennJones|Glenn Jones]] 11:55, 29 July 2015 (UTC)&lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
3. Show up as peers to the classic microformats root. Issue(s)&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Has ths surprise aspect of if/when you convert the classic root class name to a uf2 root class name, the former peers become unattached children.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html&lt;br /&gt;
&lt;br /&gt;
=== any h- root class name overrides and stops backcompat root ===&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience. &lt;br /&gt;
&lt;br /&gt;
2015-020: The presence of any h-* root class name overrides and stop any backcompat parsing of classic microformats root class names on that same element. [[User:Tantek|Tantek]] 04:55, 21 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Tom &amp;amp; Kyle - implementable with the same backcompat root flag as needed for restricting backcompat root class name to only seeing backcompat property class names&lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
* I don't think I understand this rule. If I was stop all parsing of of classic microformats in the presence of any h-* root in a document then some of the other rules such as &amp;quot;uf2 children inside a classic microformats root class name&amp;quot; do not make sense. Could this item be expanded and explained a bit more? [[User:GlennJones|Glenn Jones]] 12:13, 29 July 2015 (UTC)&lt;br /&gt;
** added &amp;quot;on that same element&amp;quot; as that was what we were discussing/implying in this issue. [[User:Tantek|Tantek]] 22:49, 18 September 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== backcompat classic microformats should only see backcompat properties ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-020: When parsing a microformats vocabulary that indicates a backcompat root class name (and thus an absence of the microformats2 equivalent on the same element), parsers must only look for the backcompat properties that are specified explicitly for that backcompat root class.&lt;br /&gt;
[[User:Tantek|Tantek]] 04:04, 21 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Reasoning: such behaviour was never expected by authors, and crossing a classic microformats root class name with microformats2 property names were never explicitly expected nor specified to work.&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Tom &amp;amp; Kyle - implementable with the same backcompat root flag as needed for&lt;br /&gt;
* +1 I think this will help backcompat parsing, I will implement it and update the wiki once its in the JavaScript parser. The test suite will also need updating. [[User:GlennJones|Glenn Jones]] 11:55, 29 July 2015 (UTC) &lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html Currently you need to switch on the option &amp;quot;Block overlapping properties from different microformat versions&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== microformats2 root class names should only see microformats2 properties ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-020: When parsing a microformats2 root class name, only explicit microformats2 properties should be parsed. Any backcompat property names must be ignored.&lt;br /&gt;
[[User:Tantek|Tantek]] 04:04, 21 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Reasoning: such microformats2 authors should be expected to do all their microformats markup with microformats2 class names - this is a deliberate expectation so that their microformats aren't polluted with other (classic microformats) coincidentally named generic class names.&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 I think this will help backcompat parsing, I will implement it and update the wiki once its in the JavaScript parser. The test suite will also need updating. [[User:GlennJones|Glenn Jones]] 11:55, 29 July 2015 (UTC) &lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html Currently you need to switch on the option &amp;quot;Block overlapping properties from different microformat versions&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== implied properties on backcompat parsing unlikely to be intended ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Since classic microformats had no notion of implied properties, when implied property parsing occurs on backward compat classic microformats root class names, it is unlikely that any implied property (p-name u-url u-photo) was ever intended by the author of the classic microformat. [[User:Tantek|Tantek]] 02:43, 30 December 2014 (UTC)&lt;br /&gt;
Examples:&lt;br /&gt;
* see https://indiewebcamp.com/h-entry#bad_hentry_properties for a growing list&lt;br /&gt;
&lt;br /&gt;
'''Proposed resolution:'''&lt;br /&gt;
&lt;br /&gt;
* Be explicit in implied property parsing that it must only be done for explicit 'h-*' root class name microformats, not for any (back)compat parsing of microformats. Please comment on this proposal with &amp;quot;** comment&amp;quot; on new lines below. [[User:Tantek|Tantek]] 02:43, 30 December 2014 (UTC)&lt;br /&gt;
** +1 This makes a lot of sense to me. We should strive to parse mf1 as it was intended by the author, and I think you're right that implied rules are unlikely to be what was intended [[User:Kylewm|Kylewm]] 03:22, 30 December 2014 (UTC)&lt;br /&gt;
** +1 I think this will help backcompat parsing, but there are two major things to consider. It may well break some consumer code as the output for a microformats currently always has the name property, there may not be the defences code to check this is true when we remove the implied name rule for classic microformats.  The test suite will also need major updating as all the test output for classic microformats will have. I will look into implementing this and report back to the wiki. [[User:GlennJones|Glenn Jones]] 12:13, 29 July 2015 (UTC) &lt;br /&gt;
** Also it should be made clear that we are only removing the implied rules from classic microformats parsing and not the value property? [[User:GlennJones|Glenn Jones]] 12:13, 29 July 2015 (UTC)&lt;br /&gt;
*** The &amp;quot;parsing for implied properties&amp;quot; section only references name, photo, url properties. Where (in the spec) is the confusion about &amp;quot;value&amp;quot; coming from? [[User:Tantek|Tantek]]&lt;br /&gt;
** RESOLVED at [[2015-01-20]] meetup. [[User:Tantek|Tantek]] 04:09, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html Currently you need to switch on the option &amp;quot;Set implied properties by microformat version&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== link elements and u- parsing ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Raised by tantek on 2014-07-08 on [http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=8+Jul+2014&amp;amp;e=9+Jul+2014#c72916 irc]: should the parsing specification for handling u- properties be modified to include the &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; element? The potential downside is that [[invisible-metadata-is-considered-harmful]], however all known real world examples of &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; are &amp;lt;em&amp;gt;semi-&amp;lt;/em&amp;gt;visible data (not fully hidden).&lt;br /&gt;
&lt;br /&gt;
There are potential cases for wanting to use link as an alternative to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; (and &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt;), such as a whole page where the root &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; element is an &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; and the properties are included across the page: some in visible data in the &amp;lt;code&amp;gt;body&amp;lt;/code&amp;gt; while others are in the &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; as &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; elements. Example:&lt;br /&gt;
&lt;br /&gt;
One specific use-case is the semi-visible &amp;lt;code&amp;gt;link rel=&amp;quot;shortcut icon&amp;quot; href=&amp;quot;...&amp;quot;&amp;lt;/code&amp;gt; - which is visible sometimes in browser UI, and also when a user chooses &amp;quot;Add to Home Screen&amp;quot; on a mobile device. Such page level icons may be used as a &amp;lt;code&amp;gt;u-photo&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;u-logo&amp;lt;/code&amp;gt; of the containing &amp;lt;code&amp;gt;h-*&amp;lt;/code&amp;gt; object on the &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; element.&lt;br /&gt;
* http://adactio.com/about/myself/ on 2014-190&lt;br /&gt;
** &amp;lt;em&amp;gt;could&amp;lt;/em&amp;gt; use &amp;lt;code&amp;gt;&amp;amp;lt;html class=h-card&amp;amp;gt;&amp;lt;/code&amp;gt; - page is all about Jeremy Keith the person&lt;br /&gt;
** &amp;lt;em&amp;gt;icon / logo is only&amp;lt;/em&amp;gt; on &amp;lt;code&amp;gt;&amp;amp;lt;link&amp;amp;gt;&amp;lt;/code&amp;gt; tag which &amp;lt;em&amp;gt;could&amp;lt;/em&amp;gt; use &amp;lt;code&amp;gt;class=u-logo&amp;lt;/code&amp;gt;: &amp;lt;br/&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;link rel=&amp;quot;shortcut icon apple-touch-icon&amp;quot; type=&amp;quot;image/png&amp;quot; href=&amp;quot;/icon.png&amp;quot; /&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another specific use-case is a post permalink page, e.g. with &amp;lt;code&amp;gt;&amp;amp;lt;html class=h-entry&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* http://waterpigs.co.uk/notes/4WjHpC/&lt;br /&gt;
** &amp;lt;em&amp;gt;has&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;&amp;amp;lt;html class=&amp;quot;no-js h-entry hentry h-as-note&amp;quot; lang=&amp;quot;en&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another use-case is publishing links to PGP/GPG keys linked from the head which is currently handled by &amp;lt;code&amp;gt;&amp;amp;lt;link rel=pgpkey&amp;amp;gt;&amp;lt;/code&amp;gt; which is already supported in existing [[microformats2-parsing#parse_a_hyperlink_element_for_rel_microformats|microformats2 rel parsing]] of &amp;lt;code&amp;gt;link rel&amp;lt;/code&amp;gt; elements. Thus there is a (admittedly weak) argument for consistently parsing &amp;lt;em&amp;gt;both&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;&amp;amp;lt;link rel&amp;amp;gt;&amp;lt;/code&amp;gt; &amp;lt;em&amp;gt;and&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;&amp;amp;lt;link class=&amp;quot;u-*&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
E.g. inside that aforementioned real world &amp;lt;code&amp;gt;&amp;amp;lt;html class=h-entry&amp;amp;gt;&amp;lt;/code&amp;gt; post permalink page example, &lt;br /&gt;
* why should &amp;lt;code&amp;gt;&amp;amp;lt;link rel=&amp;quot;in-reply-to&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; work &lt;br /&gt;
* but not &amp;lt;code&amp;gt;&amp;amp;lt;link class=&amp;quot;u-in-reply-to&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; ?&lt;br /&gt;
The slightly stronger argument for consistency of link handling is that it &amp;lt;strong&amp;gt;[[simpler|simplifies]]&amp;lt;/strong&amp;gt; the publisher (and parser) model: &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;area&amp;amp;gt;&amp;lt;/code&amp;gt; work for both &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;&lt;br /&gt;
* why does &amp;lt;code&amp;gt;&amp;amp;lt;link&amp;amp;gt;&amp;lt;/code&amp;gt; only work for &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; ?&lt;br /&gt;
* it would be &amp;lt;em&amp;gt;simpler&amp;lt;/em&amp;gt; if all three tags just worked (in the same way) for both &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Should the parsing spec be modified to handle these cases?''' —[[User:TomMorris|Tom Morris]] 09:25, 9 July 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
** I'm generally in favour. It'd be good to see what other parser developers think. —[[User:TomMorris|Tom Morris]] 10:16, 9 July 2014 (UTC)&lt;br /&gt;
** adding this to the parsers won't be an issue. &amp;lt;del datetime=&amp;quot;2014-07-09T18:45&amp;quot;&amp;gt;The question is should the door be opened to hidden mf data?&amp;lt;/del&amp;gt; &amp;lt;ins datetime=&amp;quot;2014-07-09T18:45&amp;quot;&amp;gt;Up on further reflection, there seems to be no need to distinguish between &amp;lt;code&amp;gt;rel=property&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class=u-property&amp;lt;/code&amp;gt; on link elements. So I am in favour for consistency.&amp;lt;/ins&amp;gt; [[User:KP|Kartik]] 18:30, 2014-07-09 (EST)&lt;br /&gt;
** RESOLVED at [[2015-01-20]] meetup. Make link consistent with a.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== drop alternates collection ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-06-01 by [[Tantek]], per inconsistency noted by Kevin Marks.&lt;br /&gt;
* 2015-06-05 split into separate issue from include alternates in rels per implementation feedback from Kevin Marks. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
As fallout from the adoption and implementation of 'rel-urls' per [[microformats2-parsing-brainstorming#more_information_for_rel-based_formats]], we should:&lt;br /&gt;
* drop &amp;quot;alternates&amp;quot; as its no longer needed, and all current consuming code clients like rel-urls better anyway.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as the documenter of this issue, and attempting to represent what I think KevinMarks intended with &amp;quot;rels&amp;quot; and &amp;quot;rel-urls&amp;quot; in original issue now &amp;quot;include alternates in rels&amp;quot;, we no longer need &amp;quot;alternates&amp;quot;, and those with client consuming code have universally indicated that they would rather use rel-urls anyway. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats2-parsing]]&lt;br /&gt;
* [[microformats2]]&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65438</id>
		<title>microformats2-parsing-issues</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65438"/>
		<updated>2016-03-13T20:44:33Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: /* use poster if no src on video for u props */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is for documenting issues with the [[microformats2-parsing]] specification.&lt;br /&gt;
&lt;br /&gt;
== issues ==&lt;br /&gt;
Open issues in various states of partial resolution from none to nearly resolved.&lt;br /&gt;
&lt;br /&gt;
=== ignore u-camelCase properties ===&lt;br /&gt;
Due to Suit CSS (and others? citations?) recent (2015-?) use of &amp;quot;u-*&amp;quot; class names for so-called &amp;quot;[http://davidtheclark.com/on-utility-classes/ utility classes]&amp;quot;, we are seeing some false positives in a few very rare instances, e.g.: http://www.unmung.com/mf2?url=http%3A%2F%2Fwww.kevinmarks.com%2Ftwitterutils.html&amp;amp;html=&amp;amp;pretty=on&lt;br /&gt;
&lt;br /&gt;
(Nearly) all these &amp;quot;utility classes&amp;quot; use camelCase for the class name suffixes, thus we can filter them out by looking for camelCase (since microformats class name conventions are always all lowercase and hyphenated), or even just looking for (and rejecting) *any* capital letters.&lt;br /&gt;
&lt;br /&gt;
Proposal:&lt;br /&gt;
* microformats2 parsers MUST IGNORE u-* classnames where the * has any uppercase letter(s).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] Let's get this fix rolling quickly to avoid further pollution.&lt;br /&gt;
* +1 [[User:Barnabywalters|Barnaby]] php-mf2 already ignores classnames with capitalised prefixes, ignoring any classnames with capital letters seems totally reasonable &lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== exclude style elements before parsing ===&lt;br /&gt;
[http://logs.glob.uno/?c=freenode%23microformats#c85457 2016-01-25 raised in #microformats]&lt;br /&gt;
&lt;br /&gt;
Ran into an issue of a &amp;lt;style&amp;gt; element being parsed as plain text in a p-name. Should [[microformats2-parsing]] be updated to indicate &amp;lt;style&amp;gt; should be excluded when parsing? Appears to implicitly fall under [[microformats2-parsing#note_HTML_parsing_rules]]&lt;br /&gt;
&lt;br /&gt;
Sample link: http://veganstraightedge.com/notes/2016/01/16/tonight-s-dinner-tacocleanse-beverly-hills-c&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;script&amp;gt; tag can be similarly problematic.&lt;br /&gt;
&lt;br /&gt;
Proposal: Drop both &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; elements completely when parsing any property (including e-* HTML values). [[User:Tantek|Tantek]] 01:01, 29 February 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Please discuss and/or give +1/0/-1 feedback&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as proposer&lt;br /&gt;
* +1 [[User:Aaronpk|aaronpk]] as a consumer of HTML from an e-* property, I will always be sanitizing the HTML and removing &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; anyway&lt;br /&gt;
* +1 [[User:Kylewm|kylewm]]&lt;br /&gt;
* 0 [[User:Barnabywalters|Barnaby]] +1 to removing the contents of &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; from all plaintext properties (and 'value' property in HTML dicts), -1 to removing &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; from HTML. That’s a job for a sanitization stage. As aaronpk points out, sanitization will have to be done anyway if the content is to be reposted, so doing so in the parser doesn’t actually save anyone any work, but removes information which could be useful to people (example use cases: publishing posts with embedded per-post styling, publishing interactive HTML documents with embedded javascript)&lt;br /&gt;
** +1 this seems like reasonable feedback to make a new refined proposal. [[User:Tantek|Tantek]] 20:37, 13 March 2016 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Proposal 2: Drop both &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; elements completely when parsing any property (except for e-* HTML values, which preserve all markup). [[User:Tantek|Tantek]] 20:37, 13 March 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Please discuss and/or give +1/0/-1 feedback&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as proposer&lt;br /&gt;
* +1 [[User:Barnabywalters|Barnaby]&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== use poster if no src on video for u props ===&lt;br /&gt;
[https://indiewebcamp.com/irc/2015-12-13#t1450035721661 2015-12-13 raised in #indiewebcamp]&lt;br /&gt;
&lt;br /&gt;
There is a use-case of marking up the &amp;quot;poster&amp;quot; of a video element as the u-featured of an [[h-entry]], to do that, we need to change [[microformats2-parsing#parsing_a_u-_property|u- property parsing]] to look at the poster attribute of the video element, after it's looked for the src attribute.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;quot; else if video.u-x[poster], then get the poster attribute &amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Real-world example of markup in the wild:&lt;br /&gt;
* http://veganstraightedge.com/videos/2013/5/31/1/backyard-squirrel-buddy&lt;br /&gt;
** and likely all other videos posted there.&lt;br /&gt;
&lt;br /&gt;
Background discussion that led to this proposal:&lt;br /&gt;
* https://indiewebcamp.com/irc/2015-12-13#t1450035721661&lt;br /&gt;
&lt;br /&gt;
This seems very straightforward so I've added it as PROPOSED directly in the parsing spec. This issue is for tracking the discussion.&lt;br /&gt;
&lt;br /&gt;
Feedback from parser implementers please!&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Barnabywalters|Barnaby]] easy to implement and based on real-world markup, no objections&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== uf2 children on backcompat properties ===&lt;br /&gt;
[http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=today#c84632 2015-11-24 raised by Calli] in #microformats&lt;br /&gt;
&lt;br /&gt;
Related but different from [[#uf2_children_inside_a_classic_microformats_root_class_name]], when there is a uf2 child directly on a backcompat property, what should happen? E.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;div class=&amp;quot;adr h-adr&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;locality&amp;quot;&amp;gt;MF1&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;p-locality&amp;quot;&amp;gt;MF2&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What is the expected behavior and parser output?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
&amp;quot;items&amp;quot;: [{ &lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;adr&amp;quot;: [{&lt;br /&gt;
      &amp;quot;value&amp;quot;: &amp;quot;MF1MF2&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-adr&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;locality&amp;quot;: [&amp;quot;MF2&amp;quot;],&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;MF1MF2&amp;quot;]&lt;br /&gt;
       }&lt;br /&gt;
     }]&lt;br /&gt;
   }  &lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Proposal: the nested &amp;quot;adr h-adr&amp;quot; child is treated as an mf2 object, not backcompat, and thus the resulting parsed &amp;quot;locality&amp;quot; property has a single value of &amp;quot;MF2&amp;quot;. Proposed by Calli, noting that Glenn Jones's microformatshiv gets that result currently, and it would be easier for him (Calli) to implement this way.&lt;br /&gt;
** +1 Tantek, seems reasonable and the reasoning provided is good (we have one implementation this way already)&lt;br /&gt;
** +1 Kyle, this is consistent with the resolution to the related issue&lt;br /&gt;
** +1 Calli, yes, this is easier for me to implement (than taking both MF1 and MF2 properties) because it is consistent - for me, consistency is the controlling factor in favor rather than ease of parser implementation&lt;br /&gt;
** ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;adr h-custom&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;locality&amp;quot;&amp;gt;MF1&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;p-locality&amp;quot;&amp;gt;MF2&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
&amp;quot;items&amp;quot;: [{ &lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;adr&amp;quot;: [{&lt;br /&gt;
      &amp;quot;value&amp;quot;: &amp;quot;MF1MF2&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-custom&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;locality&amp;quot;: [&amp;quot;MF2&amp;quot;],&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;MF1MF2&amp;quot;]&lt;br /&gt;
       }&lt;br /&gt;
     }]&lt;br /&gt;
   }  &lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per the [[#any_h-_root_class_name_overrides_and_stops_backcompat_root]] resolution, the class name &amp;quot;h-custom&amp;quot; overrides the use of &amp;quot;adr&amp;quot; as a backcompat root.&lt;br /&gt;
&lt;br /&gt;
=== default generated HTML ===&lt;br /&gt;
2015-09-08 raised by Tantek in #indiewebcamp&lt;br /&gt;
&lt;br /&gt;
Should there be a default (perhaps not quite &amp;quot;canonical&amp;quot;) way to map/generate HTML+microformats2 from a parsed mf2 JSON output?&lt;br /&gt;
&lt;br /&gt;
E.g. straw proposal:&lt;br /&gt;
* JSON/mf2 -&amp;gt; [[XOXO]]+mf2&lt;br /&gt;
&lt;br /&gt;
Existing work / mappings:&lt;br /&gt;
* https://github.com/snarfed/granary/blob/master/granary/microformats2.py#L295&lt;br /&gt;
&lt;br /&gt;
Related to:&lt;br /&gt;
* https://github.com/snarfed/granary/issues/31&lt;br /&gt;
&lt;br /&gt;
Use-cases:&lt;br /&gt;
* default webview / presentation for a site that stores mf2 JSON output&lt;br /&gt;
* possibly a way to implement a distributed HTTP webcache retrieval protocol&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] I think we should have this, but am open to proposals on specifics!&lt;br /&gt;
* +1 [[User:GlennJones|Glenn]] Also think this is worth looking at, but I am not sure it should be part of the parser spec. Feels like it should be built as a separate library and have it own spec on the microformats wiki.&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Noscript skip/parse ===&lt;br /&gt;
2015-07-28&lt;br /&gt;
&lt;br /&gt;
Should mf parsers skip &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; tag in the HTML, like the &amp;lt;code&amp;gt;&amp;lt;template&amp;gt;&amp;lt;/code&amp;gt; tag mentioned in http://microformats.org/wiki/microformats2-parsing#note_HTML_parsing_rules ?&lt;br /&gt;
&lt;br /&gt;
mf2py skips &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; when using the html5lib DOM parser but no when using lxml parser. Example use of &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; https://kartikprabhu.com/ featured images have a no javascript fallback image inside &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;class='u-featured'&amp;lt;/code&amp;gt; markup.&lt;br /&gt;
* html5lib actually HTML-escapes the contents of &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt;, so to mf2py it just looks like plain text with no tags. In Woodwind, I've resorted to using regex to strip out &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; tags before parsing (very hacky). [[User:Kylewm|Kylewm]] 15:52, 25 August 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] skip noscript (and inside) because in today's typical browsing contexts, nothing in noscript is displayed, thus we should discourage marking up effectively invisible content.&lt;br /&gt;
** Proposed change to [[microformats2-parsing#parse_a_document_for_microformats]]:&lt;br /&gt;
*** from: &amp;quot;follow the HTML parsing rules&amp;quot;&lt;br /&gt;
*** to: &amp;quot;follow the HTML parsing rules (including skipping/omitting &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; elements, e.g. like the html5lib DOM parser)&lt;br /&gt;
* -1 [[User:GlennJones|Glenn]] This subject does need to be address, but differently to proposed change. My personal view is that  e-* html should be passed through raw and then the consumer can process it in a way they feel fit. Its a case for helper libraries. I am about to build a helper library to do this based on the Readability code to post process e-* html. Other people may want to take different approaches, defining this in the spec feels like move into a whole area of new functionally.  &lt;br /&gt;
&lt;br /&gt;
As a separate new point we need to consider &amp;quot;exclude tags&amp;quot; lists for parsed text from html.  We should consider &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;noframe&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;template&amp;gt;&amp;lt;/code&amp;gt; there maybe other I have not gone through all the tags in current HTML spec. Also we should consider what to do about the more common pattern of fallback text within media tags &amp;lt;code&amp;gt;&amp;lt;video&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;audio&amp;gt;&amp;lt;/code&amp;gt; etc. This should be explicitly discussed in the parsing rules. At the moment my experimental text normalisation does exclude tags, but the default text parse does not. Currently the fallback content in media tags like &amp;lt;code&amp;gt;&amp;lt;video&amp;gt;&amp;lt;/code&amp;gt; is added to the parse text. 12:56, 25 Septemeber 2015 (UTC)&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Standard datetime format ===&lt;br /&gt;
2015-07-28&lt;br /&gt;
&lt;br /&gt;
http://microformats.org/wiki/microformats2-parsing#parsing_a_dt-_property does not specify any standard format to use for datetimes. e.g.  &amp;lt;pre&amp;gt;2015-07-28T12:55:33&amp;lt;/pre&amp;gt; vs &amp;lt;pre&amp;gt;2015-07-28 12:55:33&amp;lt;/pre&amp;gt;&lt;br /&gt;
Would be good to standardize this to compare various parser outputs.&lt;br /&gt;
&lt;br /&gt;
2015-07-29: This subject is (somewhat) covered in http://microformats.org/wiki/iso-8601 As it stands the JavaScript parsers support output in the 3 main profiles, 'W3C Note', 'RFC 3339' and 'HTML5' plus 'auto' which keeps authors format. The default date output for the JavaScript parsers is the same format as the date was originally authored in. This can be changes by setting the options.dateFormat switch to any of the other profiles mentioned. It would be good if other parser also had a switch to force output to a common profiles so we could compare various parser outputs, but I think the default should be how a date was authored. All output whatever profile should also keeps the authored level of specificity, i.e. not adding minutes or seconds if they are not in the input date string. This is important if you want to compare parser outputs. &lt;br /&gt;
&lt;br /&gt;
The only exception to this where date and times are combined such as the implied h-event rule for dt-start and dt-end where I output in the HTML5 style 2015-07-29 12:55:33 as there is no predefined author preference and HTML5 profile is more human readable. [[User:GlennJones|Glenn Jones]] 11:02, 29 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] output more human readable &amp;lt;code&amp;gt;2015-07-28 12:55:33&amp;lt;/code&amp;gt; canonically, with authored level of specificity, i.e. not adding minutes or seconds if they are not in the input date string.&lt;br /&gt;
** Let's update any test cases as needed for this. - [[User:Tantek|Tantek]]&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== implied date for dt properties both mf2 and backcompat ===&lt;br /&gt;
The [[value-class-pattern#microformats2_parsers|value class pattern dt-* date proposal]] should apply to both mf2 dt-* properties, and backcompat classic microformats, to preserve the hAtom / hCalendar optimizations noted on that page, but in a generic way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] 16:12, 18 August 2015 (UTC)&lt;br /&gt;
* +1 [[User:Glenn Jones|Glenn Jones]] 20 August 2015&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== implied properties when an explicit class is provided ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Should &amp;quot;u-url&amp;quot; still be implied if another explicit class is already provided, as below. This is a contrived example, but it is taken from Bridgy's unit tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;article class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;a class=&amp;quot;u-like-of&amp;quot; href=&amp;quot;http://orig.domain/baz&amp;quot;&amp;gt;liked this&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/article&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, http://orig.domain/baz is almost certainly not the u-url, so IMO it would be better to leave it out —[[User:Kylewm|Kylewm]] 15:10, 7 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
'''2015-01-20 consensus'''&lt;br /&gt;
* Changed my mind. Simpler to do nothing. Example provided is artificially constructed, does not reflect likely real world confusion of if we make implied properties more complicated. [[User:Tantek|Tantek]] 06:26, 21 January 2015 (UTC)&lt;br /&gt;
* ++ Consensus on do nothing for this case. At [[2015-01-20]]&lt;br /&gt;
&lt;br /&gt;
'''Proposed resolution:'''&lt;br /&gt;
* Changed again. Due to indiewebcamp.com/edit use-case, this now makes sense for all implied properties. That is:&lt;br /&gt;
** If an element has any explicit property class name(s) on it, then it must not be used to imply any properties. [[User:Tantek|Tantek]] 20:50, 27 May 2015 (UTC)&lt;br /&gt;
*** +1 this seems reasonable, if a publisher is going to add an mf2 class, it is unlikely they want other classes automatically implied from the same value [[User:Aaronpk|Aaronpk]] 23:19, 29 November 2015 (UTC)&lt;br /&gt;
*** -1 for now. To my knowledge, this has only been observed in artificially constructed unit tests and examples, and it adds some weird edge cases that are hard to reason about. [[User:Kylewm|Kylewm]] 00:46, 1 December 2015 (UTC)&lt;br /&gt;
*** ... provide input on this proposal here&lt;br /&gt;
** Refined: Or should this be refined by per parsing prefix? [[User:Tantek|Tantek]] 22:59, 18 September 2015 (UTC) &lt;br /&gt;
*** Any explicit &amp;quot;p-*&amp;quot; property means no implied &amp;quot;p-name&amp;quot; from that element&lt;br /&gt;
*** Any explicit &amp;quot;u-*&amp;quot; property means no implied &amp;quot;u-url&amp;quot; nor &amp;quot;u-photo&amp;quot; from that element.&lt;br /&gt;
*** ... provide input on this refined proposal here&lt;br /&gt;
** Suggestion: split this issue up per property. I think it makes sense for u-url and can be easily added to the spec as e.g. &amp;quot;.h-x&amp;gt;a[href]:only-of-type:not[.h-*&amp;lt;strong&amp;gt;,.u-*&amp;lt;/strong&amp;gt;]&amp;quot;. [[User:Kylewm|Kylewm]] 00:46, 1 December 2015 (UTC)&lt;br /&gt;
*** Obviously wrong to assume a link explicitly pointing elsewhere is our &amp;quot;url&amp;quot; &lt;br /&gt;
*** More difficult to make a case for photo and especially for name.&lt;br /&gt;
*** &amp;quot;name&amp;quot; is implied at least by [.h-x textContent], so often the excluded element would end up included anyway.&lt;br /&gt;
*** ... provide input on this refined proposal here&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== whitespace collapsing revisited ===&lt;br /&gt;
2015-05-27: (raised by [[User:Kevin Marks|Kevin Marks]] per Glenn Jones)&lt;br /&gt;
&lt;br /&gt;
Revising the microformats tests to conform to the &amp;quot;don't collapse whitespace&amp;quot; rule below reveals some non-intuitive cases. &lt;br /&gt;
preserving whitespace in addresses is somewhat defensible, but in an implied name it is often unhelpful, as it preserves non-user visible space there for authoring reasons.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
[https://github.com/microformats/tests/commit/a325e0e9bc2089507e69b1883f7065a3316e07c2#diff-d577012c1438978a571c4049179607f0 this test] shows how extraneous whitespace ends up in the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-review-aggregate&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;p-item h-event&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 class=&amp;quot;p-name&amp;quot;&amp;gt;Fullfrontal&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;p class=&amp;quot;p-description&amp;quot;&amp;gt;A one day JavaScript Conference held in Brighton&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;time class=&amp;quot;dt-start&amp;quot; datetime=&amp;quot;2012-11-09&amp;quot;&amp;gt;9th November 2012&amp;lt;/time&amp;gt;&amp;lt;/p&amp;gt;    &lt;br /&gt;
    &amp;lt;/div&amp;gt; &lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;p class=&amp;quot;p-rating&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;p-average value&amp;quot;&amp;gt;9.9&amp;lt;/span&amp;gt; out of &lt;br /&gt;
        &amp;lt;span class=&amp;quot;p-best&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt; &lt;br /&gt;
        based on &amp;lt;span class=&amp;quot;p-count&amp;quot;&amp;gt;62&amp;lt;/span&amp;gt; reviews&lt;br /&gt;
    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
give a parsed result of:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;items&amp;quot;: [{&lt;br /&gt;
        &amp;quot;type&amp;quot;: [&amp;quot;h-review-aggregate&amp;quot;],&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
            &amp;quot;item&amp;quot;: [{&lt;br /&gt;
                &amp;quot;value&amp;quot;: &amp;quot;Fullfrontal\nA one day JavaScript Conference held in Brighton\n9th November 2012&amp;quot;,&lt;br /&gt;
                &amp;quot;type&amp;quot;: [&amp;quot;h-event&amp;quot;],&lt;br /&gt;
                &amp;quot;properties&amp;quot;: {&lt;br /&gt;
                    &amp;quot;name&amp;quot;: [&amp;quot;Fullfrontal&amp;quot;],&lt;br /&gt;
                    &amp;quot;description&amp;quot;: [&amp;quot;A one day JavaScript Conference held in Brighton&amp;quot;],&lt;br /&gt;
                    &amp;quot;start&amp;quot;: [&amp;quot;2012-11-09&amp;quot;]&lt;br /&gt;
                }&lt;br /&gt;
            }],&lt;br /&gt;
            &amp;quot;rating&amp;quot;: [&amp;quot;9.9&amp;quot;],&lt;br /&gt;
            &amp;quot;average&amp;quot;: [&amp;quot;9.9&amp;quot;],&lt;br /&gt;
            &amp;quot;best&amp;quot;: [&amp;quot;10&amp;quot;],&lt;br /&gt;
            &amp;quot;count&amp;quot;: [&amp;quot;62&amp;quot;],&lt;br /&gt;
            &amp;quot;name&amp;quot;: [&amp;quot;Fullfrontal\nA one day JavaScript Conference held in Brighton\n9th November 2012\n\n\n9.9 out of \n        10 \n        based on 62 reviews&amp;quot;]&lt;br /&gt;
        }&lt;br /&gt;
    }],&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is a reasonable textual representation of the event, but the implied &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; is full of spurious whitespace that any consumer would have to strip. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/microformats/tests/commit/4c9690b53b0a2f40440abac8e609c51ac7dd6d56 h-review] has similar issues&lt;br /&gt;
&lt;br /&gt;
2015-05-28: (Addition by [[User:GlennJones|Glenn Jones]])&lt;br /&gt;
&lt;br /&gt;
The example below shows the type of markup most effected by the &amp;quot;implied name&amp;quot; and &amp;quot;don't collapse whitespace&amp;quot; rule working together to produce output that is hard to use without further processing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;h-card&amp;quot; href=&amp;quot;http://glennjones.net&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;p-given-name&amp;quot;&amp;gt;Glenn&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;p-family-name&amp;quot;&amp;gt;Jones&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The output for the name property from the above HTML would be &amp;lt;code&amp;gt;Glenn\r\n     Jones&amp;lt;/code&amp;gt; using the (trim lead/trailing) suggested in the  parsing spec.  I could of course move the spans onto one line, but it feels fragile to consider whitespace sensitivity in HTML like this. Added to the fact that HTML templating environments often take away that level of whitespace control from authors anyway.&lt;br /&gt;
&lt;br /&gt;
There are issues with both: keeping whitespace, returns and tabs from parsed HTML or collapse that whitespace. If we return the whitespace it becomes mal-formatted for humans because it was only added to make the HTML code understandable and in most cases was not meant to be used/read outside of that context. If we collapse the whitespace we can have issues of whitespace sensitive text from &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; etc. being incorrectly formatted. &lt;br /&gt;
&lt;br /&gt;
Providing a CSS aware innerText feature would produce the most useable output, but this is too complex/time consuming to build for most parser developers. In the face of no perfect solution I have taken the 80:20 view,  whereby errant whitespace, causes me considerably more problems than mal-formatted &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; content so I collapse whitespace on all text returned. &lt;br /&gt;
&lt;br /&gt;
This feature is a non-CSS aware version of innerText. It does not cover all rendering edge cases, but enough to produce practical output.&lt;br /&gt;
&lt;br /&gt;
For now, I have started changing the node parser to flag &amp;quot;white-space collapsing&amp;quot; as an experimental feature which is off by default i.e. http://glennjones.net/tools/microformats/ but personally I will parse everything with this on as I find it the most practical solution.  &lt;br /&gt;
&lt;br /&gt;
Not sure where that leaves me on the options below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
Choose from:&lt;br /&gt;
# keep as is and every parser client has to post process for common cases.&lt;br /&gt;
# '''keep as is but have mf2 parser trim leading/trailing whitespace (likely to provide desired result and be reasonably backcompat)'''&lt;br /&gt;
#* +1 my preference of the two options. [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
#* +1 though this doesn't solve any of the problems discussed above, it's still worth doing [[User:Kevin Marks|Kevin Marks]] 16:41, 28 May 2015 (UTC)&lt;br /&gt;
#* +1 will help parsers be more consistent with each other, and I haven't ever encountered a case where preserving leading/trailing whitespace was desirable [[User:Kylewm|Kylewm]] 20:45, 8 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
2015-06-08 option 2 resolved by consensus and implementation in mf2py.&lt;br /&gt;
&lt;br /&gt;
Somewhat orthogonal:&lt;br /&gt;
* make &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; on properties with children normalise whitespace&lt;br /&gt;
** -1 Seems like a bad idea as this &amp;quot;value&amp;quot; is supposed to be the same as if there was no embedded child microformat. [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
* make implied &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; normalise whitespace.&lt;br /&gt;
** +0 This is reasonable and already done somewhat in the parsing spec (trim lead/trailing). [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
** +1 Given the universality of name, this would fix most of the issues we see. [[User:Kevin Marks|Kevin Marks]] 16:41, 28 May 2015 (UTC)&lt;br /&gt;
* Put \n in textual forms if there is a &amp;lt;code&amp;gt;&amp;amp;lt;p&amp;amp;gt;&amp;lt;/code&amp;gt; tag in the original.&lt;br /&gt;
** -1 that's a long path to go down with whitespace equivalents for HTML markup. [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
** would only preserving whitespace if in &amp;amp;lt;pre&amp;amp;gt; be an 80:20 compromise? [[User:Kevin Marks|Kevin Marks]] 16:41, 28 May 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Because there are both code markup and specific vocabulary (label) needs for preserving whitespace, we are compelled to preserve in general, perhaps except for very specific limited generic cases (e.g. trim leading/trailing, &amp;quot;value&amp;quot; parsing, implied name). [[User:Tantek|Tantek]]&lt;br /&gt;
&lt;br /&gt;
=== u- parsing iframe src ===&lt;br /&gt;
Currently if I put u-* on an iframe it gets the value of the fallback text. This seems a shame. Getting the URL seems a sensible answer.&lt;br /&gt;
[[User:Kevin Marks|Kevin Marks]] 09:07, 11 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== i- parsing iframe src ===&lt;br /&gt;
&lt;br /&gt;
More controversially, what about using an iframe for transclusion? A use case here is comments on a static site. Currently, on eg http://www.kevinmarks.com/microformatschema.html the comments are injected via JS, making them opaque to parsers and thus precluding further parsing such as salmentions.&lt;br /&gt;
&lt;br /&gt;
If instead they were an iframe embedding them, a parser could optionally fetch its contents, parse them, and include them in the parsed mf2 output at that point. Overloading u-* for this seems wrong; e-* as below for srcdoc would have a different effect; this implies a new prefix directive would be needed. A strawman i-* (for include) may work.&lt;br /&gt;
[[User:Kevin Marks|Kevin Marks]] 09:07, 11 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== e- parsing iframe srcdoc ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Proposal: addition of a new e-* parsing rule for iframe elements with srcdoc attributes. E.G.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;iframe class=&amp;quot;e-content&amp;quot; srcdoc=&amp;quot;&amp;lt;p&amp;gt;A paragraph of HTML with &amp;amp;quot;quoted quotes&amp;amp;quot; &amp;amp;amp;amp; doubly quoted ampersands&amp;lt;/p&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;items&amp;quot;: [{&lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-entry&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
   &amp;quot;content&amp;quot;: [&amp;quot;&amp;lt;p&amp;gt;A paragraph of HTML with &amp;amp;quot;quoted quotes&amp;amp;quot; &amp;amp;amp; doubly quoted ampersands&amp;lt;/p&amp;gt;&amp;quot;]&lt;br /&gt;
  }&lt;br /&gt;
 }]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would allow, for example, HTML comments to be sandboxed inside iframes but still parsable as microformats.&lt;br /&gt;
&lt;br /&gt;
I believe the correct processing would be to leave &amp;amp;quot; entities as they are but to unescape any doubly-escaped ampersands.&lt;br /&gt;
&lt;br /&gt;
** Is there any use case for that? —[[User:TomMorris|Tom Morris]] 12:32, 14 September 2013 (UTC)&lt;br /&gt;
** +1 we need documentation of use case and existing sites publishing iframe srcdoc like this - [[User:Tantek|Tantek]] 00:47, 15 September 2013 (UTC)&lt;br /&gt;
** Rejected by consensus at [[2015-01-20]] meetup due to lack of real world uses cases / existing sites. [[User:Tantek|Tantek]] 06:26, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to interpret mf2 properties on select ===&lt;br /&gt;
How should select elements with properties be treated any differently?&lt;br /&gt;
&lt;br /&gt;
Awaiting real world examples / stronger use-cases, until then no special treatment of select elements with properties:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Are there any real world examples of select elements with microformats properties?&lt;br /&gt;
* What would the use-case be for putting a microformats property class name on a select element?&lt;br /&gt;
* Nothing special. By consensus at [[2015-01-20]] meetup due to lack of real world uses cases / existing sites. [[User:Tantek|Tantek]] 06:26, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to interpret mf2 root name on form ===&lt;br /&gt;
See what to do about &amp;lt;em&amp;gt;root class names&amp;lt;/em&amp;gt; on &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; elements in particular:&lt;br /&gt;
* [[hcard-input]]&lt;br /&gt;
&lt;br /&gt;
Awaiting real world examples / stronger use-cases, until then, no special treatment of root class names on &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; elements:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Are there any real world examples of a &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; element with a microformats root class name?&lt;br /&gt;
* [[hcard-input]] is one possible use-case, is anyone attempting to use forms for hCard input, e.g. with scripts to help make it work?&lt;br /&gt;
* Are there other use-cases for putting a microformats root class name on a &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; element?&lt;br /&gt;
* As of [[2015-01-20]] - no consensus - need more input as to when/why this is useful to do anything special.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Parsing Literal Values===&lt;br /&gt;
Issue raised by: [[User:BenWard|Ben Ward]]&lt;br /&gt;
&lt;br /&gt;
It is proposed for microformats2 that all microformats be parsable from just their root element, e.g. &amp;lt;code&amp;gt;&amp;amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;Ben Ward&amp;amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; would create an hCard with the following properties after parsing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
  'type': ['h-card'],&lt;br /&gt;
  'properties': {&lt;br /&gt;
     'name': ['Ben Ward']&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a four-fold change from the current [[hCard]]:&lt;br /&gt;
# type is generically identifiable as a microformat root, even in parsed form. The use of the 'h-' prefix persists into the type of the object. This is deliberately so, as a result of re-using the JSON data model of microdata which itself is re-using a common JSON convention, such that microformatted data is clearly distinguishable (as opposed to any other random schema that may be using a similar data model).&lt;br /&gt;
# root-class-only support. Per [[microformats-2-implied-properties]], the ''name'' property is implied by the entirety of the root class name element.&lt;br /&gt;
# 'name' instead of 'fn'. As also documented in [[microformats-2-implied-properties]], the continuous challenges/problems and need to repeatedly re-explain 'fn' over the years combined with the real-world market response of nearly every other party doing a person vocabulary renaming 'fn' to 'name', microformats 2 makes this change as well.&lt;br /&gt;
# There is no automatic parse-time inferring of &amp;lt;code&amp;gt;'given-name': ['Ben']&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;'family-name': ['Ward']&amp;lt;/code&amp;gt;. Any such inferring *might* be made by a vCard converter, but is left up to that specific application (not all applications) built on that vocabulary, though even in that case it may not be necessary, as an empty &amp;quot;N:;;;&amp;quot; [[vCard]] property is sufficient to satisfy the N property requirement of [[vCard]], and also causes no problems when imported into various [[vcard-implementations]].&lt;br /&gt;
&lt;br /&gt;
It is required of the extractor to understand that when a microformats object specifies no explicit child properties, that it must treat &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; as having a &amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;. But, the parser is generic, so it also treats &amp;lt;code&amp;gt;h-review&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-entry&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-recipe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-geo&amp;lt;/code&amp;gt; as having a ‘&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;’.&lt;br /&gt;
&lt;br /&gt;
As a result, specific vocabularies are evolved to drop their specific form of name (e.g. fn, summary, entry-title) and simplified to use a common 'name' property instead.&lt;br /&gt;
&lt;br /&gt;
Note: while the overwhelming majority of real world publishing/consuming uses of microformats do so with proper nouns which have names (and thus this parser-level incorporation of an implied 'name'), there are some formats that do not have a 'name' semantic. For example, [[geo]], [[adr]], and possibly if/when developed, units of measure, length, cost. The current thinking is that the benefits to the far greater proper-noun use-case of microformats outweigh the technical inelegance of having an extra/ignored 'name' property on formats that lack such a semantic.&lt;br /&gt;
&lt;br /&gt;
Some formats also may appear in theory to better imply some other property, e.g. a review might be thought to imply its ''content'', not its name, and an Atom entry its ''content'', not its title, but in practice (actual publishing patterns) this is not the case. Typically, brief unstructured reviews (or mentions thereof) provide a ''summary'' (often hyperlinked to an expanded structured form) of that review, not its content, and similarly, brief unstructured posts (e.g. RSS items) have historically most often been link blog items which include the title of an item and a link. Short status updates as well established by Twitter are newer and would seem to imply purely content with no title, at least semantically, however, even Twitter populates the RSS title and ATOM entry title of their feeds with the content. It's not clear what went into that decision, however, that's likely irrelevant, as the outcome turns out to be emergent consistency among publishing behaviors.&lt;br /&gt;
&lt;br /&gt;
To avoid overloading or undermining the semantics of a vocabulary, I propose that we handle this at the extractor level in a simpler fashion: Define a new property for literal data, that an extractor will provide if no other information was available. All ''interpreters'' may then be instructed that in the event that an object has no properties, it can attempt to interpret the literal value from the page instead.&lt;br /&gt;
&lt;br /&gt;
* This was one of the design iterations I went through which led me to the current implied 'name' design. Another iteration was the ability for a vocabulary to specify a single required property which was implied if there were no properties provided. However, the combination of the fact that in most cases such single required properties were quite name-like, and that a vocabulary-specific rule like that would then bind parsers to specific vocabularies (even so slightly) led me to collapse them into implying a 'name'. It's not perfect, but it's the best alternative so far that balances practical convenience of publishing/consuming, avoids vocabulary-specific knowledge in the parser, and technical (in)elegance. [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
In existing microformats, the closest existing example we have for this is the &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; property in hCard, which is used to represent the literal address label for a place. It is a corresponding piece of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;org&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; in combination, but has no structure in and of itself. Possibly, every microformat could have a &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; form where structured data is unavailable.&lt;br /&gt;
&lt;br /&gt;
However in practice, the hCard &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; property is both little understood and little used. It's not even clear that it ought to be kept for microformats 2 (no known consumers, very few (if any?) real-world non-test publishers). This disuse is likely a good indicator that we should avoid basing anything on its design.&lt;br /&gt;
&lt;br /&gt;
Alternatively, &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is used throughout microformats to target a generic value (e.g. in combination with &amp;lt;code&amp;gt;price&amp;lt;/code&amp;gt; in hListing.) It has been proposed that when parsing properties that are also themselves microformats, we create native objects of the form:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        'value': '1900 12th Street, San Francisco, CA 94'&lt;br /&gt;
      , 'type': ['h-adr']&lt;br /&gt;
      , 'properties': {&lt;br /&gt;
            'street-address': '1900 12th Street'&lt;br /&gt;
          , 'etc': 'etc'&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
We could apply this same pattern to the root level:&lt;br /&gt;
&lt;br /&gt;
    { &lt;br /&gt;
        type: [h-card]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: 'Ben Ward'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
In this case, an interpreter or implementation is responsible for using &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; in place of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, or restructuring the object. It would be the responsibility of each vocabulary to define its root property. The parsing layer of microformats 2.0 would not impose semantics or naming onto that.&lt;br /&gt;
&lt;br /&gt;
For another example, h-geo would end up like this:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        type: [h-geo]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: '1.3232;-0.543'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
* This is an alternative I've been considering as well:  [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
** 'value' is more generic than 'name' (applies to more vocabularies) with the trade-off that it naturally has less (weaker) semantics.&lt;br /&gt;
*** +1 I think that having naturally weaker semantics would be appropriate for this parsing functionality. —[[User:BenWard|BenWard]] 07:24, 5 October 2011 (UTC)&lt;br /&gt;
** The interesting thing that this analysis has revealed is that there appear to be two distinct clusters of microformats, the much more commonly used/understood/useful proper-noun microformats which markup things with names (people, events, reviews, recipes), and the less used compound-data microformats which are often used ''inside'' other microformats and just have some sort of semi-structured value (adr, geo, measure, and perhaps even things like tel). Perhaps this is implying the possibility and some degree of utility for ''two'' microformats root class name prefixes, 'h-' for existing proper-noun microformats, and something else ('m-' for microformat/molecule?, 's-' for structured-value?, 'v-' for value (though historically &amp;quot;v-&amp;quot;/&amp;quot;v.&amp;quot; has meant &amp;quot;vendor-specific&amp;quot;)?) for unnamed structured data microformats.&lt;br /&gt;
*** This more and more feels like a good idea, and I'm leaning toward &amp;quot;s-&amp;quot; for struct / structure / structured value. &amp;quot;s-&amp;quot; works just like &amp;quot;h-&amp;quot; except that it doesn't imply any properties at parse time. We can try it and see what happens. There's also no harm if publishers just use &amp;quot;h-&amp;quot; structures, they just (possibly) get a few extra properties if they happen to omit properties.&lt;br /&gt;
** Parallels the same JSON when a property has both a string value ''and'' is a structure itself.&lt;br /&gt;
*** Changed my mind on this. The parallel is not quite there. 'name'/'url'/'photo' are only implied if there are NO properties, where as the JSON string value + structure convention *always* provides a 'value'. [[User:Tantek|Tantek]] 22:39, 4 October 2011 (UTC)&lt;br /&gt;
*** And due to this difference in behavior ('value' is there when nested properties are present, whereas 'name' is only implied when there are no properties specified), I think it's correct to keep them separate, i.e. stick with implied 'name'. [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
** However, I'm still currently leaning towards the practical convenience of providing a 'name' for the vast majority of microformats uses, rather than diluting this feature for the sake of avoiding implying inapplicable semantics to the few plain structured data microformats, and even then, only when no properties are explicitly specified! I'd rather introduce a new root prefix for those than lose the simplicity and utility of implied 'name'. [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== resolved ==&lt;br /&gt;
=== When to collapse whitespace in properties ===&lt;br /&gt;
&lt;br /&gt;
The spec doesn’t explicitly require whitespace to be collapsed or not. The official mf2 test suite requires it to be collapsed.&lt;br /&gt;
&lt;br /&gt;
Reasons why whitespace ''shouldn’t'' be collapsed:&lt;br /&gt;
* Plaintext property representations of syntax-highlighted code, poetry and song lyrics require whitespace to be present&lt;br /&gt;
* Whether or not whitespace is an important part of the content being parsed is determined by css white-space and CANNOT be inferred from HTML markup alone&lt;br /&gt;
&lt;br /&gt;
Resolution 2013-11-12: Agreed, whitespace should not be collapsed (other than normal HTML5 parsing rules). The spec now refers to &amp;quot;textContent&amp;quot; rather than &amp;quot;innertext&amp;quot; to make this explicit.&lt;br /&gt;
&lt;br /&gt;
=== How to interpret mf2 classnames on form inputs ===&lt;br /&gt;
E.G. how to parse:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;input class=&amp;quot;u-url&amp;quot; value=&amp;quot;https://brennannovak.com/notes/338&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Examples in the wild: https://brennannovak.com/notes/338&lt;br /&gt;
&lt;br /&gt;
See proposal:&lt;br /&gt;
* [[hcard-parsing-brainstorming#input_element_handling]]&lt;br /&gt;
&lt;br /&gt;
Resolution 2013-11-12: Per that proposal, p- u- dt- properties on input[value] elements now use the value attribute.&lt;br /&gt;
&lt;br /&gt;
=== mixture of microformats2 and classic microformats classnames on different elements ===&lt;br /&gt;
Some sites in the wild have mistakenly combined classic mf and mf2 markup in ways which misrepresent the content if parsed in BC mode.&lt;br /&gt;
&lt;br /&gt;
Typically this is caused by putting classic and mf2 classnames for the same vocabulary on different elements, e.g:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;body class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;article class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name&amp;quot;&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
 &amp;lt;/article&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sites where this has been observed:&lt;br /&gt;
* http://acegiak.machinespirit.net/2013/10/17/barnaby-walters-notes-another-thing-i-love-about-the-web-users-have-the-power-to-take-control-of-their-uis-and-improve-their-own-experiences-aside-drm-for-html-would-prevent-this-from-being-possibl/&lt;br /&gt;
* http://shawfactor.com/2013/08/06/thoughts-on-extending-webmentions/ (fixed)&lt;br /&gt;
* http://notizblog.org/2013/06/18/the-rise-of-the-indieweb/ (fixed)&lt;br /&gt;
&lt;br /&gt;
Discussion:&lt;br /&gt;
&lt;br /&gt;
* As far as I can tell, the problems in all of these examples were caused by mf2 markup being injected by a wordpress plugin, but classic mf classnames being present further up the DOM in the themes. When parsed in compatibility mode, the classic mf classnames are transformed into mf2 classnames, making the original mf2 classnames look like children of empty items.&lt;br /&gt;
* Turns out this isn’t theme-specific, WordPress injects hentry via PHP [http://indiewebcamp.com/irc/2013-10-22/line/1382448759]. The bug with the wordpress mf2 plugin is resolved as of [http://indiewebcamp.com/irc/2013-10-22/line/1382449035 2013-10-22] --[[User:Barnabywalters|bw]] 13:38, 22 October 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== e- and p- escaping levels ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* The fact that the parsed value of any element with .e-* is at a different level of escaping to the parsed values of p-*, dt-* etc. without any indication of how the property was parsed in the output is a security problem. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;input&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;output&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
   &amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;p-name&amp;quot;&amp;gt;&amp;amp;lt;tag&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;items&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;type&amp;quot;: [&lt;br /&gt;
                &amp;quot;h-card&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;properties&amp;quot;: {&lt;br /&gt;
                &amp;quot;name&amp;quot;: [&lt;br /&gt;
                    &amp;quot;&amp;lt;tag&amp;gt;&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
   &amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;e-name&amp;quot;&amp;gt;&amp;amp;lt;tag&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;items&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;type&amp;quot;: [&lt;br /&gt;
                &amp;quot;h-card&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;properties&amp;quot;: {&lt;br /&gt;
                &amp;quot;name&amp;quot;: [&lt;br /&gt;
                    &amp;quot;&amp;amp;lt;tag&amp;amp;gt;&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* As a parser developer, the most straightforward way I can think of solving this is to add an option (enabled by default) which encodes HTML special characters on all non e-* properties, so the developer knows that all property values are going to be at the same level of escaping. --[[User:Barnabywalters|bw]] 20:00, 15 June 2013 (UTC)&lt;br /&gt;
** Your suggestion of auto-HTML-encoding p-*/u-*/dt-* property values is the most sensible I think. I would NOT make it an option, as it makes sense write consistent microformats2 consumers. - [[User:Tantek|Tantek]] 07:18, 5 July 2013 (UTC)&lt;br /&gt;
** Can you think of any existing apps/consumers of microformats2 via the parser that would break? What would indieweb comments parsers do? - [[User:Tantek|Tantek]] 07:18, 5 July 2013 (UTC)&lt;br /&gt;
*** The only breakage which might occur would be over-encoding of non e-* properties, but I’ll release this update as v0.2.0 and warn people about the changes. The worst thing which could happen is that some comments look a bit weird, as opposed to the current worst possible scenario of easy XSS attacks --[[User:Barnabywalters|bw]] 12:55, 5 July 2013 (UTC)&lt;br /&gt;
*** We should also decide exactly which characters get encoded — just angle brackets, or quotes/ampersands as well? --[[User:Barnabywalters|bw]] 12:55, 5 July 2013 (UTC)&lt;br /&gt;
*** I am not sure about this, it seems more like a helper function rather than a core feature of the parser. Personally I would like to store data as text and encode only when I am going to use and I known the format it is going to be use in.  --[[User:GlennJones|Glenn Jones]] 9:54, 14 July 2013 (UTC) &lt;br /&gt;
***After the discussion on the indiewebcamp IRC with Barnaby Walters I now understand the XSS issue that this change is trying to address. A rogue author could include HTML with scripts to execute a XSS attack. These could be masked by switch prefixes i.e. p-* to e-* on a well use property. As the consumer does not see the prefix in the JSON output they have no idea if a property will content HTML or text.  I will update my two parsers and the test suite --[[User:GlennJones|Glenn Jones]] 8:02, 17 July 2013 (UTC) &lt;br /&gt;
**So what about an author setting a property to e-* when it would normal be p-*, dt-* or u-* i.e.&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-card&amp;quot;&amp;gt;&amp;lt;p class=&amp;quot;e-name&amp;quot;&amp;gt;&amp;lt;script&amp;gt; alert('xss test') &amp;lt;/script&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** per [[events/2013-09-14-microformats2-parsing|microformats2 parsing discussion 2013-09-14]], parsers should never automatically attempt to HTML-special-characters encode - as that would provide the client of the parser a false sense of security. It's *always* up to client code to escape any text being output to HTML *at the moment it is output to HTML* and never before, because they can never trust that any text from storage/elsewhere has for sure been escaped or not. - [[User:Tantek|Tantek]] 18:07, 17 October 2013 (UTC)&lt;br /&gt;
** Should we not encode e-* as well and the consumer can decode at their own risk --[[User:GlennJones|Glenn Jones]] 18:42, 21 July 2013 (UTC) &lt;br /&gt;
*** No, never, per above point from [[events/2013-09-14-microformats2-parsing|microformats2 parsing discussion 2013-09-14]] - [[User:Tantek|Tantek]] 18:07, 17 October 2013 (UTC)&lt;br /&gt;
** See [[events/2013-09-14-microformats2-parsing|microformats2 parsing discussion 2013-09-14]] etherpad: https://etherpad.mozilla.org/microformats2parsing for more details on the resolution to this issue - and incorporate here (then move to resolved section below). - [[User:Tantek|Tantek]] 18:07, 17 October 2013 (UTC)&lt;br /&gt;
* Resolved by changes to the parsing spec: all properties are plaintext (non-HTML escaped), e-* properties result in a dictionary with &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; = plaintext version, &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; = raw HTML version &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== br hr empty string ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* The parsing rule 'else if br.p-x or hr.p-x, then return &amp;quot;&amp;quot; (empty string)' for p-* can cause any code consuming the API to become quite bloated. It means that you have test every array value to see if its an empty string. It is also unclear to me what the purpose of this mark-up pattern is for  [[User:GlennJones|Glenn Jones]]&lt;br /&gt;
** Upon reconsidering this, I agree with you, this is an unlikely use case. If a publisher wants to explicitly set an empty property &amp;quot;p-foo&amp;quot; they can simply write &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;p-foo&amp;quot;&amp;gt;&amp;amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; which looks explicit. Whereas BR and HR tags are often just presentational, so we should both not encourage usage of them for semantics, and anyone that did use them would be subject to likely loss of semantics upon a redesign (that got rid of those particular BR and HR tags). I'm going to remove them from the parsing spec. - [[User:Tantek|Tantek]] 15:29, 10 February 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== datetime examples without T delimiter ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* The examples in the wiki microformats-2 pages such h-entry and h-entry had datetime without the 'T' delimiter between date and time. ie&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;time class=&amp;quot;dt-published&amp;quot; datetime=&amp;quot;2013-06-13 12:00:00&amp;quot;&amp;gt;13&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; June 2013&amp;lt;/time&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
I have updated the pages. As far as I known this is a new pattern for dates. Was it a mistake in the examples or is it a new datetime pattern.&lt;br /&gt;
** The [[HTML5]] &amp;quot;time&amp;quot; element, and &amp;quot;datetime&amp;quot; attribute allow for space &amp;lt;span style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;&amp;quot; &amp;quot;&amp;lt;/span&amp;gt; as a separator between date and time as well as &amp;quot;T&amp;quot;, thus we allow it for microformats as well. The  &amp;lt;span style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;&amp;quot; &amp;quot;&amp;lt;/span&amp;gt; separator is preferred as the date and time are more readable when separated by a space. The examples noted in those specs deliberately use this. - [[User:Tantek|Tantek]] 18:48, 15 July 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== rel-alternate absent optional attributes ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* What should rel-alternate parsing do when one of the optional attributes specified (&amp;lt;kbd&amp;gt;hreflang&amp;lt;/kbd&amp;gt; or &amp;lt;kbd&amp;gt;media&amp;lt;/kbd&amp;gt; or both) is not there? The options seem to be:&lt;br /&gt;
*# leave the corresponding key out of the alternate JSON object&lt;br /&gt;
*#* This one. Leave the corresponding key out.&lt;br /&gt;
*# include the corresponding key in the alternate JSON object, but set the value to the JSON null object&lt;br /&gt;
*# include the corresponding key in the alternate JSON object, but set the value to a blank string&lt;br /&gt;
*# something I haven't thought of&lt;br /&gt;
&lt;br /&gt;
I haven't checked the existing implementations, but Barnaby said he's not sure what the appropriate way to deal with it is either. —[[User:TomMorris|Tom Morris]] 15:41, 9 August 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== rel-alternate and type attribute ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Should rel-alternate parsing also pick up the &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; attribute? It’s fairly widely used, e.g. for ATOM feeds.&lt;br /&gt;
** Numerous existing sites/pages have various [[rel-alternate]] uses with a type attribute for feeds/APIs so that's good enough to add this for help with discovery in general. Rel parsing updated. - [[User:Tantek|Tantek]] 00:47, 15 September 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Extraction vs Interpretation ===&lt;br /&gt;
Issue raised by: [[User:BenWard|Ben Ward]]&lt;br /&gt;
&lt;br /&gt;
A microformats ‘1.0’ parser performs the following function:&lt;br /&gt;
&lt;br /&gt;
* Given a piece of HTML content, discover a known microformat, extract it, apply various extraction patterns based upon the HTML mark-up used (e.g. include pattern, &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; patterns, date-time patterns, value-title pattern), apply various content optimisations where applicable, and return the result in an object native to the programming language.&lt;br /&gt;
&lt;br /&gt;
This is performing two types of function: Extraction of data from an HTML document or fragment, ''and'' interpretation and optimisation of that content to match the rules set out by a vocabulary specification.&lt;br /&gt;
&lt;br /&gt;
It is only possible to write a generic parser that covers the first half of this task: Extraction, and application of global rules based on HTML elements and patterns common to all formats.&lt;br /&gt;
&lt;br /&gt;
The purpose of a generic parser (as supported by use cases such as search engines, and other crawlers) is: &lt;br /&gt;
&lt;br /&gt;
To provide a way for tools to extract rich data from a page for native storage, such that the data may be interpreted later by applications. This allows microformats to be crawled, and indexed, and removes the need to include complex HTML parsing within every implementation of microformat data.&lt;br /&gt;
&lt;br /&gt;
Microformats will continue to define various vocabulary-specific optimisations. as part of the design to be optimised for authors. For example: The &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; pattern in [[hcard]], or the &amp;lt;code&amp;gt;lat;long&amp;lt;/code&amp;gt; pattern in [[geo]], as well as default values for properties, such as the maximum rating in an [[hreview]].&lt;br /&gt;
* Actually, no, as it is defined currently, microformats 2 ''drops'' vocabulary-specific optimizations. Such optimizations have often been too inapplicable, error prone or i18n-unsafe (e.g. fn to given-name + family-name fails for both numerous cases where middlenames/initials are used, and in general in numerous Asian languages where given/family name order is the reverse of Western English conventions, or languages with multiple family-names, e.g. Spanish - see [[hcard-issues-resolved]] for more). This is a deliberate cutting of a &amp;quot;feature&amp;quot; from microformats 1, it is a deliberate model simplification design decision. [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
==== Extraction resolution ====&lt;br /&gt;
Proposed resolution:&lt;br /&gt;
&lt;br /&gt;
Microformats2 should refer only to ''extraction'' of microformats. Vocabularies should in turn document their appropriate optimisations, which will need to be applied by implementations, or a companion to an extractor, which I'll refer to here as an ‘interpreter’.&lt;br /&gt;
* Vocabularies will no longer have optimizations, this is again deliberately, as they've been shown to be more error prone than helpful. Thus there should be no need for any vocabulary-specific 'interpreters'. However, due to design quirks in various legacy/interchange formats, ''export conversions algorithms'' to those legacy/interchange formats will require some additional legacy-format-specific rules (e.g. odd &amp;quot;required&amp;quot; rules in [[Atom]] or [[vCard]] will require specific synthesis rules, limitations in said formats will require filtering of some values, e.g. [[vcard3]] BDAY disallows vague birthdays like year-month and --month-day - subsequently allowed in [[vcard4]]). [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
A microformats2 ‘extractor’, in combination with the functionality of a domain and format-aware ‘interpreter’ (either another shared component, or part of the implementation itself) would be equivalent to a microformats 1.0 ‘parser.’&lt;br /&gt;
* A microformats2 parser is both generic (no knowledge of specific vocabularies), and lacks any/all such vocabulary-specific rules as compared to a microformats 1.0 [[hcard-parsing|parser]] with the exception of a 1) a limited list of well-established/interoperable backward compat root class names (of current [[microformats]] that are or can be soon shown to be specifications/standards per the [[process]]), 2) flat sets of backward compat property names (some with prefix/name specific conversion) for each of those backward compat root class names.  This is a deliberate design decision that makes microformats 2 more &amp;quot;micro&amp;quot;, and yes this means that even with such backward compat support, this simple form of backward compat may mean that some existing microformats 1 content breaks. We'll assess those and iterate on a documented case-by-case basis rather than attempt to maintain theoretical 100% backward compatibility (since many current microformats format-specific-features are either unused, or may have caused more problems than solutions). [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
N.B. I'll rewrite some of these as [[microformats2-parsing-faq]] to help better clarify. The reasoning that led to most of these design decisions is documented in the [[microformats-2#About_This_Brainstorm|microformats 2: About This Brainstorm]] section and following sections. I'll recheck those sections to see if/where reasoning for some of the above noted design decisions may have been missed, and back-fill accordingly. This is necessary because [[microformats2]] is a evolutionary result of simultaneously addressing both numerous generic [[issues]] as well as various common [[hcard-issues-resolved|format]]-[[hcalendar-issues-resolved|specific]] [[mfo|problems]] in microformats1 syntax and vocabularies. The very number of changes may make it more challenging (from a microformats1 perspective) to see why any particular design change has been made. [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
This issue can be moved from resolved to closed once the above-mentioned write-ups have occurred.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Parsing properties from rel attributes===&lt;br /&gt;
tl;dr resolution: As of 2013, [[microformats2-parsing]] handles parsing all link and a href rel values at document scope level, and producing canonical JSON accordingly. - [[User:Tantek|Tantek]]&lt;br /&gt;
&lt;br /&gt;
Issue raised by [[User:BenWard|BenWard]] 07:24, 5 October 2011 (UTC):&lt;br /&gt;
&lt;br /&gt;
* Currently, hAtom parses `bookmark` as a permalink&lt;br /&gt;
* Various microformats parse `rel=tag` as tags&lt;br /&gt;
* The current proposal for parsing does not allow parsing properties from rel attributes.&lt;br /&gt;
&lt;br /&gt;
Microformats parsers could instead extract ''all'' link relationships from rel attributes within an microformat object, parsing them as if a u- prefixed property.&lt;br /&gt;
* Minor nit: Rather than same as a u- prefixed property, I think such &amp;quot;rel&amp;quot; properties should be parsed purely from the &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; attribute on &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;area&amp;amp;gt;&amp;lt;/code&amp;gt; elements and nothing more. I would strongly disagree to extending rel to apply to other elements with URLs like img src, object data, or to apply to elements in general like div. That's the path that RDFa has taken and caused much confusion as a result. [[User:Tantek|Tantek]] 07:39, 5 October 2011 (UTC)&lt;br /&gt;
** Agree: That seems like a perfectly reasonable restriction. --[[User:BenWard|BenWard]] 08:29, 5 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
This results in:&lt;br /&gt;
&lt;br /&gt;
* Continuing use of the &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attribute in HTML, thereby building on HTML semantics rather than bypassing them or ignoring them in favour of something less meaningful.&lt;br /&gt;
* Parsing hAtom objects contain a property named &amp;lt;code&amp;gt;bookmark&amp;lt;/code&amp;gt;, in place of &amp;lt;code&amp;gt;permalink&amp;lt;/code&amp;gt;.&lt;br /&gt;
* All microformats that use &amp;lt;code&amp;gt;rel-tag&amp;lt;/code&amp;gt; would contain a property named… &amp;lt;code&amp;gt;tag&amp;lt;/code&amp;gt;. Perfect.&lt;br /&gt;
&lt;br /&gt;
Since &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes are not overloaded for other functionality like class is, and other uses of &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; within content are low (and non-semantic uses are nil, to the best of my knowledge) the risk of property pollution would be extremely low.&lt;br /&gt;
&lt;br /&gt;
Note, with regard to this last point, that a generic microformats parser ''will'' parse false-positive properties, and ''will'' parse objects in combined chunks, rather than individually by format. Extracted objects will often not represent a vocabulary without further processing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* This sounds like it might be workable. Let's try it and see how well authors &amp;quot;get it&amp;quot;. - [[User:Tantek|Tantek]]&lt;br /&gt;
* Possible issue: do we have any collisions between class property names and rel names? (I don't think so offhand, but useful to ask the question). - [[User:Tantek|Tantek]]&lt;br /&gt;
** None that I can think of in microformats. There is the case of Google's &amp;lt;code&amp;gt;rel=author&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;p-author&amp;lt;/code&amp;gt; in hAtom. However, the next point, about mfo scoping, would cover it in most situations (rel-author on a hyperlink within an hcard wouldn't be applied to the hentry.) The one situation in a parse tree where it's ambiguous would be this: &lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;p-author h-card&amp;quot; &lt;br /&gt;
   rel=&amp;quot;author&amp;quot; &lt;br /&gt;
   href=&amp;quot;http://benward.me&amp;quot;&amp;gt;&lt;br /&gt;
   Ben Ward&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** I can think of two quite reasonable solutions: &lt;br /&gt;
*** 1. Declare that class properties take precedence over rel properties of the same name, discarding rel values if a class is also found, or &lt;br /&gt;
*** 2. Since all properties are now multi-value anyway, the hAtom object could be parsed as:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from the p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        'http://benward.me'      /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** —[[User:BenWard|BenWard]] 08:29, 5 October 2011 (UTC)&lt;br /&gt;
*** Option 2 makes sense and is consistent with the rest of the multi-value parsing/handling. - [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
*** What about without the 'p-author'?&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;h-card&amp;quot; &lt;br /&gt;
   rel=&amp;quot;author&amp;quot; &lt;br /&gt;
   href=&amp;quot;http://benward.me&amp;quot;&amp;gt;&lt;br /&gt;
   Ben Ward&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Should that be parsed as:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        'http://benward.me'      /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Or&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': 'http://benward.me' /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
          'type': ['h-card'],          /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        &lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*** And if the former, then we're presumably saying that the value parsed due to the presence of a rel is always its own value, and does not combine with any other structures. I am fine with this, but I wanted to make sure we are ok with that explicitly. [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
**** +1 I think that since the rel attribute is specifically concerned with the relation to an href attribute, it should not be combined with other structures that are rightly declared uses classes.&lt;br /&gt;
***** The more I've thought about this and how consuming applications may want to treat rel semantics, the more it seems correct to keep rel semantics distinct from class semantics. Class semantics are quite general/flexible, whereas rel is quite specific, naming something else in terms of a relationship from the current page/microformat's perspective. I think we should consider putting rel values in their own 'rel' collection, separate from the 'properties' collection. E.g. the original rel-author p-author h-card markup example would be parsed into this:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from the p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        }&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
   'rel': {&lt;br /&gt;
     'author': ['http://benward.me'] /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
***** and if a post had multiple authors:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Tantek Çelik'], /* from 2nd p-author     */&lt;br /&gt;
          'type': ['h-card'],        /* from 2nd h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Tantek Çelik'], &lt;br /&gt;
            'url': ['http://tantek.com']&lt;br /&gt;
        },&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
   'rel': {&lt;br /&gt;
     'author': [&lt;br /&gt;
       'http://benward.me',      /* from rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
       'http://tantek.com'       /* from 2nd rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ]&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
***** This preserves the semantic distinction between rel and properties in general, and leaves it up to a higher-level application to implement any logic around showing &amp;quot;more info&amp;quot; about a rel-author, e.g. by correlating the rel-author URL with the 'url' of an hCard it found in the same entry. However, note that even in the earlier JSON data model, the rel-author value just shows up as another property value, and any higher level application would still have to do some correlation logic. At least with this JSON data model, applications that may be looking for a rel value in particular, or a property value in particular can do so without having one unintentionally pollute the other. [[User:Tantek|Tantek]] 17:33, 6 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Presumably we'd apply all the same property scoping rules to rel scoping as well. E.g. a rel hyperlink inside a microformat won't be seen by any containing microformat. - [[User:Tantek|Tantek]]&lt;br /&gt;
** Correct, it should be parsed in the same scope as all other class properties in the object.&lt;br /&gt;
*** Update: all rel microformats are now parsed at page-scope. Per-microformat scoping of rel has been found to be too confusing in practice (and against the general semantic of rel expressed in the HTML/HTML5 specs) [[User:Tantek|Tantek]] 01:00, 10 July 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This issue can be moved from resolved to closed once we've verified that all the above-mentioned and implied needs to write things up have occurred.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== deduping of rels ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-06-02 by [[User:Kevin Marks|Kevin Marks]] &lt;br /&gt;
* 2015-06-05 resolved by consensus and one real world implementation proof of implementability and verification of expected results. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Many sites have multiple duplicate rel links to the same url - a very common case is WordPress home pages eg [http://ma.tt ma.tt] &lt;br /&gt;
&lt;br /&gt;
Each post on the page has a block like&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;entry-meta&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;date&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://ma.tt/2015/05/beethoven-mozart-bach/&amp;quot; &lt;br /&gt;
    title=&amp;quot;Permalink to Beethoven, Mozart,&amp;amp;nbsp;Bach&amp;quot; rel=&amp;quot;bookmark&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;time class=&amp;quot;entry-date&amp;quot; datetime=&amp;quot;2015-05-31T22:42:00+00:00&amp;quot;&amp;gt;May 31, 2015&amp;lt;/time&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;categories-links&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://ma.tt/category/asides/&amp;quot; rel=&amp;quot;category tag&amp;quot;&amp;gt;Asides&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;author vcard&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;url fn n&amp;quot; href=&amp;quot;http://ma.tt/author/saxmatt/&amp;quot; &lt;br /&gt;
    title=&amp;quot;View all posts by Matt&amp;quot; rel=&amp;quot;author&amp;quot;&amp;gt;Matt&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- .entry-meta --&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As currently defined, the parser will create duplicate entries in &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; for each post:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;category&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;author&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;tag&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;home&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and in the &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; we will also see:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;author&amp;quot;, &lt;br /&gt;
                &amp;quot;author&amp;quot;, &lt;br /&gt;
                &amp;quot;author&amp;quot;, &lt;br /&gt;
                &amp;quot;author&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;View all posts by Matt&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;home&amp;quot;, &lt;br /&gt;
                &amp;quot;home&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/category/asides/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;, &lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;, &lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;, &lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Asides&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
These duplicates are unhelpful for parser consumers. We should:&lt;br /&gt;
* make them both sets - only listing distinct values. This will remove ordering information, but order is irrelevant for rel in html.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;category&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;author&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;tag&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;home&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
}&lt;br /&gt;
…&lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;author&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;View all posts by Matt&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;home&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/category/asides/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Asides&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* possibly we could also make &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; sets too. That would solve the information loss issue with the current parsers&lt;br /&gt;
** Resolution: in the case of duplicate other attributes, first one set wins. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 as the proposer. A version of mf2py that does this is running at unmung,com. see [http://www.unmung.com/mf2?url=https%3A%2F%2Fma.tt&amp;amp;html=&amp;amp;pretty=on fro ma.tt] or [http://www.unmung.com/?html=%3Ca+href%3D%22http%3A%2F%2Fma.tt%2Fcategory%2Fasides%2F%22+rel%3D%22category+tag%22%3EAsides%3C%2Fa%3E%0D%0A%3Ca+href%3D%22http%3A%2F%2Fma.tt%2Fcategory%2Fasides%2F%22+rel%3D%22category+tag%22%3EAsides%3C%2Fa%3E%0D%0A%3Ca+href%3D%22http%3A%2F%2Fma.tt%2Fcategory%2Fasides%2F%22+rel%3D%22category+tag%22%3EAsides%3C%2Fa%3E&amp;amp;pretty=on a simple test] [[User:Kevin Marks|Kevin Marks]] 23:49, 2 June 2015 (UTC)&lt;br /&gt;
* +1 makes sense to me, and not having them be sets in the current spec is likely an oversight on my part. Thanks for noting this issue. [[User:Tantek|Tantek]] 05:28, 3 June 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== include alternates in rels ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-06-01 by [[Tantek]], per inconsistency noted by Kevin Marks.&lt;br /&gt;
* 2015-06-05 resolved per consensus and one real world implementation proof of implementability. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
As fallout from the adoption and implementation of 'rel-urls' per [[microformats2-parsing-brainstorming#more_information_for_rel-based_formats]], we should:&lt;br /&gt;
* add &amp;quot;alternate&amp;quot; rels to the &amp;quot;rels&amp;quot; collection to make them easier to look-up in &amp;quot;rel-urls&amp;quot; - that is, all rel values end up in &amp;quot;rels&amp;quot; collections. No exceptions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as the documenter of this issue, and attempting to represent what I think KevinMarks intended with &amp;quot;rels&amp;quot; and &amp;quot;rel-urls&amp;quot;.&lt;br /&gt;
* +1 This makes sense to me, as the &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; should match so you can lookup in rels first, then get details about urls from rel-urls. We can drop &amp;quot;alternates&amp;quot; independently from this change. [[User:Kevin Marks|Kevin Marks]] 00:23, 2 June 2015 (UTC)&lt;br /&gt;
** +1 drop &amp;quot;alternates&amp;quot; independently now made a separate issue. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
* +1 Makes sense. And I agree with Kevin; I think parsers should deprecate &amp;quot;alternates&amp;quot; for now and drop it after a version cycle or two. [[User:Kylewm|Kylewm]] 00:30, 2 June 2015 (UTC)&lt;br /&gt;
* implemented in [https://github.com/kevinmarks/mf2py/commit/4dba45200eef11da811f64817d02044ab9e98b77 my fork of mf2py] and running on [http://www.unmung.com/?html=%3Ca+rel%3D%22author%22+href%3D%22http%3A%2F%2Fexample.com%2Fa%22%3Eauthor+a%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22author%22+href%3D%22http%3A%2F%2Fexample.com%2Fb%22%3Eauthor+b%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22in-reply-to%22+href%3D%22http%3A%2F%2Fexample.com%2F1%22%3Epost+1%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22in-reply-to%22+href%3D%22http%3A%2F%2Fexample.com%2F2%22%3Epost+2%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22alternate+home%22%0D%0A+++href%3D%22http%3A%2F%2Fexample.com%2Ffr%22%0D%0A+++media%3D%22handheld%22%0D%0A+++hreflang%3D%22fr%22%3EFrench+mobile+homepage%3C%2Fa%3E&amp;amp;pretty=on unmung] [[User:Kevin Marks|Kevin Marks]] 01:29, 2 June 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Empty properties overridden by implied rules against user expectation ===&lt;br /&gt;
Status: resolved, existing behavior correct, no changes to parsing spec.&lt;br /&gt;
&lt;br /&gt;
2015-07-03: raised by [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
&lt;br /&gt;
Emma Kuo brought up an issue (https://github.com/glennjones/microformat-node/issues/22) based on following the indieweb note pattern, where the content of a note is given both the e-content and p-name classes. If the element containing the notes only has none text content like image the p-name can have unexpected value. Here is the example she gave:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;a href=&amp;quot;http://this.site/photo&amp;quot; class=&amp;quot;u-url&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;e-content p-name&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;photo.jpg&amp;quot; class=&amp;quot;u-photo&amp;quot;/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        Some extraneous text&lt;br /&gt;
        &amp;lt;div class=&amp;quot;h-cite&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;a href=&amp;quot;http://someother.site/like&amp;quot; class=&amp;quot;u-url&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;a href=&amp;quot;http://this.site/photo&amp;quot; class=&amp;quot;u-like-of&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;e-content p-name&amp;quot;&amp;gt;liked this&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At the moment I parser this as follows: - if a property (p-name) is empty do not add it to the output. In this case &amp;quot;empty&amp;quot; is classed as not containing any non-whitespace text. As far as I known there is no guidance on how to handle &amp;quot;empty&amp;quot; properties in microformats paring rules, so I followed the conventions of JSON API's not to return &amp;quot;empty&amp;quot; properties.&lt;br /&gt;
&lt;br /&gt;
The side effect of the above is that p-name also has a number of &amp;quot;implied rules&amp;quot;. The &amp;quot;implied rules&amp;quot; try to automatically fill properties like p-name if there is no defined value. In the example above it uses the textContent of the parent h-entry, so value of the h-entry&amp;gt;p-name is the text content of the h-cite i.e. &amp;quot;likes this&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
1. We should not allow the &amp;quot;implied name rule&amp;quot; to get textContent from within a child h-* &lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;strike&amp;gt;+1 I believe this is inline with how we parse properties and will meet user/author expectations  [[User:Glenn Jones|Glenn Jones]] 9:22, 3 July 2015 (UTC)&amp;lt;/strike&amp;gt;&lt;br /&gt;
* -1 A nested h-* is still part of the content of the parent h-*, I don't quite understand the rationale for excluding it. For example, I may include lots of h-cards in the body of a post that references people and wouldn't want them to be excluded from the implied name generation. [[User:Kylewm|Kylewm]] 14:40, 3 July 2015 (UTC)&lt;br /&gt;
* -1 I'm not sure this would solve the problem because auto-filled text could come from the parent h-* (&amp;quot;some extraneous text&amp;quot; in the example above) [[User:emmak|Emma Kuo]] 20:50, 4 July 2015 (UTC)&lt;br /&gt;
* -1 I agree with the other -1s. This would break some of the simplicity of the model. [[User:Tantek|Tantek]] 05:12, 14 July 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
2.  We should not execute the &amp;quot;implied rules&amp;quot; where there is an author defined &amp;quot;empty&amp;quot; property.&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;strike&amp;gt;-1 Although the output would meet author expectations it is complex for parsers as they will have to keep state for each property through the whole series of parsing rules.  [[User:Glenn Jones|Glenn Jones]] 9:22, 3 July 2015 (UTC)&amp;lt;/strike&amp;gt;&lt;br /&gt;
* +1 An explicit, empty, p-name property should prevent an implicit p-name from being generated. For example tantek.com includes &amp;amp;lt;span class=&amp;quot;p-name&amp;quot;&amp;gt;&amp;amp;lt;/span&amp;gt; at the start of the h-feed to prevent a giant name from being auto-generated. From my reading of the parsing spec, I don't see any reason that blank strings should be excluded from parsing. (mf2py and php-mf2 will both happily include empty strings in their output) [[User:Kylewm|Kylewm]] 14:40, 3 July 2015 (UTC)&lt;br /&gt;
* +1 We already have interop on this between mf2py and phpmf2, as well as people depending on it to explicitly set empty property values. [[User:Tantek|Tantek]] 05:12, 14 July 2015 (UTC)&lt;br /&gt;
* +1 As we already have interop with two parsers and solid user issue from Emma we should take this approach. [[User:GlennJones|Glenn Jones]] 11:51, 29 July 2015 (UTC)&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html&lt;br /&gt;
&lt;br /&gt;
=== uf2 children inside a classic microformats root class name ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-020: (raised by kylewm) What should microformats2 children inside a classic microformats root class name do?&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
1. Nothing. Any unattached uf2 children inside a classic microformats root are ignored. Problems:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* However then there's a possible surprise if/when the author upgrades the classic microformats root to uf2, then all of a sudden all the new uf2 children show-up.&lt;br /&gt;
* Another downside: author adds uf2 markup, can't figure out why nothing is happening (because somewhere up the tree in code they didn't touch is classic microformats that are hiding these unattached uf2 children.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
2. Show up in the children collection of the classic microformats root&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Feels most predictable. When you add uf2 root class names anywhere, they will show up in the JSON output hierarchy.&lt;br /&gt;
* When you convert ancestor class microformats root class names to uf2 root class names, no surprise in terms of which microformats show up. Same children collection.&lt;br /&gt;
* +1 Thus I'm leaning towards this one, despite the fact that classic microformats never had a concept of generic unattached children. [[User:Tantek|Tantek]] 04:55, 21 January 2015 (UTC)&lt;br /&gt;
* +1 I think this is the best option I will implement it and update the wiki once its in the JavaScript parser. [[User:GlennJones|Glenn Jones]] 11:55, 29 July 2015 (UTC)&lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
3. Show up as peers to the classic microformats root. Issue(s)&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Has ths surprise aspect of if/when you convert the classic root class name to a uf2 root class name, the former peers become unattached children.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html&lt;br /&gt;
&lt;br /&gt;
=== any h- root class name overrides and stops backcompat root ===&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience. &lt;br /&gt;
&lt;br /&gt;
2015-020: The presence of any h-* root class name overrides and stop any backcompat parsing of classic microformats root class names on that same element. [[User:Tantek|Tantek]] 04:55, 21 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Tom &amp;amp; Kyle - implementable with the same backcompat root flag as needed for restricting backcompat root class name to only seeing backcompat property class names&lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
* I don't think I understand this rule. If I was stop all parsing of of classic microformats in the presence of any h-* root in a document then some of the other rules such as &amp;quot;uf2 children inside a classic microformats root class name&amp;quot; do not make sense. Could this item be expanded and explained a bit more? [[User:GlennJones|Glenn Jones]] 12:13, 29 July 2015 (UTC)&lt;br /&gt;
** added &amp;quot;on that same element&amp;quot; as that was what we were discussing/implying in this issue. [[User:Tantek|Tantek]] 22:49, 18 September 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== backcompat classic microformats should only see backcompat properties ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-020: When parsing a microformats vocabulary that indicates a backcompat root class name (and thus an absence of the microformats2 equivalent on the same element), parsers must only look for the backcompat properties that are specified explicitly for that backcompat root class.&lt;br /&gt;
[[User:Tantek|Tantek]] 04:04, 21 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Reasoning: such behaviour was never expected by authors, and crossing a classic microformats root class name with microformats2 property names were never explicitly expected nor specified to work.&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Tom &amp;amp; Kyle - implementable with the same backcompat root flag as needed for&lt;br /&gt;
* +1 I think this will help backcompat parsing, I will implement it and update the wiki once its in the JavaScript parser. The test suite will also need updating. [[User:GlennJones|Glenn Jones]] 11:55, 29 July 2015 (UTC) &lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html Currently you need to switch on the option &amp;quot;Block overlapping properties from different microformat versions&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== microformats2 root class names should only see microformats2 properties ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-020: When parsing a microformats2 root class name, only explicit microformats2 properties should be parsed. Any backcompat property names must be ignored.&lt;br /&gt;
[[User:Tantek|Tantek]] 04:04, 21 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Reasoning: such microformats2 authors should be expected to do all their microformats markup with microformats2 class names - this is a deliberate expectation so that their microformats aren't polluted with other (classic microformats) coincidentally named generic class names.&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 I think this will help backcompat parsing, I will implement it and update the wiki once its in the JavaScript parser. The test suite will also need updating. [[User:GlennJones|Glenn Jones]] 11:55, 29 July 2015 (UTC) &lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html Currently you need to switch on the option &amp;quot;Block overlapping properties from different microformat versions&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== implied properties on backcompat parsing unlikely to be intended ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Since classic microformats had no notion of implied properties, when implied property parsing occurs on backward compat classic microformats root class names, it is unlikely that any implied property (p-name u-url u-photo) was ever intended by the author of the classic microformat. [[User:Tantek|Tantek]] 02:43, 30 December 2014 (UTC)&lt;br /&gt;
Examples:&lt;br /&gt;
* see https://indiewebcamp.com/h-entry#bad_hentry_properties for a growing list&lt;br /&gt;
&lt;br /&gt;
'''Proposed resolution:'''&lt;br /&gt;
&lt;br /&gt;
* Be explicit in implied property parsing that it must only be done for explicit 'h-*' root class name microformats, not for any (back)compat parsing of microformats. Please comment on this proposal with &amp;quot;** comment&amp;quot; on new lines below. [[User:Tantek|Tantek]] 02:43, 30 December 2014 (UTC)&lt;br /&gt;
** +1 This makes a lot of sense to me. We should strive to parse mf1 as it was intended by the author, and I think you're right that implied rules are unlikely to be what was intended [[User:Kylewm|Kylewm]] 03:22, 30 December 2014 (UTC)&lt;br /&gt;
** +1 I think this will help backcompat parsing, but there are two major things to consider. It may well break some consumer code as the output for a microformats currently always has the name property, there may not be the defences code to check this is true when we remove the implied name rule for classic microformats.  The test suite will also need major updating as all the test output for classic microformats will have. I will look into implementing this and report back to the wiki. [[User:GlennJones|Glenn Jones]] 12:13, 29 July 2015 (UTC) &lt;br /&gt;
** Also it should be made clear that we are only removing the implied rules from classic microformats parsing and not the value property? [[User:GlennJones|Glenn Jones]] 12:13, 29 July 2015 (UTC)&lt;br /&gt;
*** The &amp;quot;parsing for implied properties&amp;quot; section only references name, photo, url properties. Where (in the spec) is the confusion about &amp;quot;value&amp;quot; coming from? [[User:Tantek|Tantek]]&lt;br /&gt;
** RESOLVED at [[2015-01-20]] meetup. [[User:Tantek|Tantek]] 04:09, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html Currently you need to switch on the option &amp;quot;Set implied properties by microformat version&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== link elements and u- parsing ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Raised by tantek on 2014-07-08 on [http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=8+Jul+2014&amp;amp;e=9+Jul+2014#c72916 irc]: should the parsing specification for handling u- properties be modified to include the &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; element? The potential downside is that [[invisible-metadata-is-considered-harmful]], however all known real world examples of &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; are &amp;lt;em&amp;gt;semi-&amp;lt;/em&amp;gt;visible data (not fully hidden).&lt;br /&gt;
&lt;br /&gt;
There are potential cases for wanting to use link as an alternative to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; (and &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt;), such as a whole page where the root &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; element is an &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; and the properties are included across the page: some in visible data in the &amp;lt;code&amp;gt;body&amp;lt;/code&amp;gt; while others are in the &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; as &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; elements. Example:&lt;br /&gt;
&lt;br /&gt;
One specific use-case is the semi-visible &amp;lt;code&amp;gt;link rel=&amp;quot;shortcut icon&amp;quot; href=&amp;quot;...&amp;quot;&amp;lt;/code&amp;gt; - which is visible sometimes in browser UI, and also when a user chooses &amp;quot;Add to Home Screen&amp;quot; on a mobile device. Such page level icons may be used as a &amp;lt;code&amp;gt;u-photo&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;u-logo&amp;lt;/code&amp;gt; of the containing &amp;lt;code&amp;gt;h-*&amp;lt;/code&amp;gt; object on the &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; element.&lt;br /&gt;
* http://adactio.com/about/myself/ on 2014-190&lt;br /&gt;
** &amp;lt;em&amp;gt;could&amp;lt;/em&amp;gt; use &amp;lt;code&amp;gt;&amp;amp;lt;html class=h-card&amp;amp;gt;&amp;lt;/code&amp;gt; - page is all about Jeremy Keith the person&lt;br /&gt;
** &amp;lt;em&amp;gt;icon / logo is only&amp;lt;/em&amp;gt; on &amp;lt;code&amp;gt;&amp;amp;lt;link&amp;amp;gt;&amp;lt;/code&amp;gt; tag which &amp;lt;em&amp;gt;could&amp;lt;/em&amp;gt; use &amp;lt;code&amp;gt;class=u-logo&amp;lt;/code&amp;gt;: &amp;lt;br/&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;link rel=&amp;quot;shortcut icon apple-touch-icon&amp;quot; type=&amp;quot;image/png&amp;quot; href=&amp;quot;/icon.png&amp;quot; /&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another specific use-case is a post permalink page, e.g. with &amp;lt;code&amp;gt;&amp;amp;lt;html class=h-entry&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* http://waterpigs.co.uk/notes/4WjHpC/&lt;br /&gt;
** &amp;lt;em&amp;gt;has&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;&amp;amp;lt;html class=&amp;quot;no-js h-entry hentry h-as-note&amp;quot; lang=&amp;quot;en&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another use-case is publishing links to PGP/GPG keys linked from the head which is currently handled by &amp;lt;code&amp;gt;&amp;amp;lt;link rel=pgpkey&amp;amp;gt;&amp;lt;/code&amp;gt; which is already supported in existing [[microformats2-parsing#parse_a_hyperlink_element_for_rel_microformats|microformats2 rel parsing]] of &amp;lt;code&amp;gt;link rel&amp;lt;/code&amp;gt; elements. Thus there is a (admittedly weak) argument for consistently parsing &amp;lt;em&amp;gt;both&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;&amp;amp;lt;link rel&amp;amp;gt;&amp;lt;/code&amp;gt; &amp;lt;em&amp;gt;and&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;&amp;amp;lt;link class=&amp;quot;u-*&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
E.g. inside that aforementioned real world &amp;lt;code&amp;gt;&amp;amp;lt;html class=h-entry&amp;amp;gt;&amp;lt;/code&amp;gt; post permalink page example, &lt;br /&gt;
* why should &amp;lt;code&amp;gt;&amp;amp;lt;link rel=&amp;quot;in-reply-to&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; work &lt;br /&gt;
* but not &amp;lt;code&amp;gt;&amp;amp;lt;link class=&amp;quot;u-in-reply-to&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; ?&lt;br /&gt;
The slightly stronger argument for consistency of link handling is that it &amp;lt;strong&amp;gt;[[simpler|simplifies]]&amp;lt;/strong&amp;gt; the publisher (and parser) model: &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;area&amp;amp;gt;&amp;lt;/code&amp;gt; work for both &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;&lt;br /&gt;
* why does &amp;lt;code&amp;gt;&amp;amp;lt;link&amp;amp;gt;&amp;lt;/code&amp;gt; only work for &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; ?&lt;br /&gt;
* it would be &amp;lt;em&amp;gt;simpler&amp;lt;/em&amp;gt; if all three tags just worked (in the same way) for both &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Should the parsing spec be modified to handle these cases?''' —[[User:TomMorris|Tom Morris]] 09:25, 9 July 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
** I'm generally in favour. It'd be good to see what other parser developers think. —[[User:TomMorris|Tom Morris]] 10:16, 9 July 2014 (UTC)&lt;br /&gt;
** adding this to the parsers won't be an issue. &amp;lt;del datetime=&amp;quot;2014-07-09T18:45&amp;quot;&amp;gt;The question is should the door be opened to hidden mf data?&amp;lt;/del&amp;gt; &amp;lt;ins datetime=&amp;quot;2014-07-09T18:45&amp;quot;&amp;gt;Up on further reflection, there seems to be no need to distinguish between &amp;lt;code&amp;gt;rel=property&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class=u-property&amp;lt;/code&amp;gt; on link elements. So I am in favour for consistency.&amp;lt;/ins&amp;gt; [[User:KP|Kartik]] 18:30, 2014-07-09 (EST)&lt;br /&gt;
** RESOLVED at [[2015-01-20]] meetup. Make link consistent with a.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== drop alternates collection ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-06-01 by [[Tantek]], per inconsistency noted by Kevin Marks.&lt;br /&gt;
* 2015-06-05 split into separate issue from include alternates in rels per implementation feedback from Kevin Marks. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
As fallout from the adoption and implementation of 'rel-urls' per [[microformats2-parsing-brainstorming#more_information_for_rel-based_formats]], we should:&lt;br /&gt;
* drop &amp;quot;alternates&amp;quot; as its no longer needed, and all current consuming code clients like rel-urls better anyway.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as the documenter of this issue, and attempting to represent what I think KevinMarks intended with &amp;quot;rels&amp;quot; and &amp;quot;rel-urls&amp;quot; in original issue now &amp;quot;include alternates in rels&amp;quot;, we no longer need &amp;quot;alternates&amp;quot;, and those with client consuming code have universally indicated that they would rather use rel-urls anyway. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats2-parsing]]&lt;br /&gt;
* [[microformats2]]&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65437</id>
		<title>microformats2-parsing-issues</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65437"/>
		<updated>2016-03-13T20:42:16Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: /* ignore u-camelCase properties */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is for documenting issues with the [[microformats2-parsing]] specification.&lt;br /&gt;
&lt;br /&gt;
== issues ==&lt;br /&gt;
Open issues in various states of partial resolution from none to nearly resolved.&lt;br /&gt;
&lt;br /&gt;
=== ignore u-camelCase properties ===&lt;br /&gt;
Due to Suit CSS (and others? citations?) recent (2015-?) use of &amp;quot;u-*&amp;quot; class names for so-called &amp;quot;[http://davidtheclark.com/on-utility-classes/ utility classes]&amp;quot;, we are seeing some false positives in a few very rare instances, e.g.: http://www.unmung.com/mf2?url=http%3A%2F%2Fwww.kevinmarks.com%2Ftwitterutils.html&amp;amp;html=&amp;amp;pretty=on&lt;br /&gt;
&lt;br /&gt;
(Nearly) all these &amp;quot;utility classes&amp;quot; use camelCase for the class name suffixes, thus we can filter them out by looking for camelCase (since microformats class name conventions are always all lowercase and hyphenated), or even just looking for (and rejecting) *any* capital letters.&lt;br /&gt;
&lt;br /&gt;
Proposal:&lt;br /&gt;
* microformats2 parsers MUST IGNORE u-* classnames where the * has any uppercase letter(s).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] Let's get this fix rolling quickly to avoid further pollution.&lt;br /&gt;
* +1 [[User:Barnabywalters|Barnaby]] php-mf2 already ignores classnames with capitalised prefixes, ignoring any classnames with capital letters seems totally reasonable &lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== exclude style elements before parsing ===&lt;br /&gt;
[http://logs.glob.uno/?c=freenode%23microformats#c85457 2016-01-25 raised in #microformats]&lt;br /&gt;
&lt;br /&gt;
Ran into an issue of a &amp;lt;style&amp;gt; element being parsed as plain text in a p-name. Should [[microformats2-parsing]] be updated to indicate &amp;lt;style&amp;gt; should be excluded when parsing? Appears to implicitly fall under [[microformats2-parsing#note_HTML_parsing_rules]]&lt;br /&gt;
&lt;br /&gt;
Sample link: http://veganstraightedge.com/notes/2016/01/16/tonight-s-dinner-tacocleanse-beverly-hills-c&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;script&amp;gt; tag can be similarly problematic.&lt;br /&gt;
&lt;br /&gt;
Proposal: Drop both &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; elements completely when parsing any property (including e-* HTML values). [[User:Tantek|Tantek]] 01:01, 29 February 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Please discuss and/or give +1/0/-1 feedback&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as proposer&lt;br /&gt;
* +1 [[User:Aaronpk|aaronpk]] as a consumer of HTML from an e-* property, I will always be sanitizing the HTML and removing &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; anyway&lt;br /&gt;
* +1 [[User:Kylewm|kylewm]]&lt;br /&gt;
* 0 [[User:Barnabywalters|Barnaby]] +1 to removing the contents of &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; from all plaintext properties (and 'value' property in HTML dicts), -1 to removing &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; from HTML. That’s a job for a sanitization stage. As aaronpk points out, sanitization will have to be done anyway if the content is to be reposted, so doing so in the parser doesn’t actually save anyone any work, but removes information which could be useful to people (example use cases: publishing posts with embedded per-post styling, publishing interactive HTML documents with embedded javascript)&lt;br /&gt;
** +1 this seems like reasonable feedback to make a new refined proposal. [[User:Tantek|Tantek]] 20:37, 13 March 2016 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Proposal 2: Drop both &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; elements completely when parsing any property (except for e-* HTML values, which preserve all markup). [[User:Tantek|Tantek]] 20:37, 13 March 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Please discuss and/or give +1/0/-1 feedback&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as proposer&lt;br /&gt;
* +1 [[User:Barnabywalters|Barnaby]&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== use poster if no src on video for u props ===&lt;br /&gt;
[https://indiewebcamp.com/irc/2015-12-13#t1450035721661 2015-12-13 raised in #indiewebcamp]&lt;br /&gt;
&lt;br /&gt;
There is a use-case of marking up the &amp;quot;poster&amp;quot; of a video element as the u-featured of an [[h-entry]], to do that, we need to change [[microformats2-parsing#parsing_a_u-_property|u- property parsing]] to look at the poster attribute of the video element, after it's looked for the src attribute.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;quot; else if video.u-x[poster], then get the poster attribute &amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Real-world example of markup in the wild:&lt;br /&gt;
* http://veganstraightedge.com/videos/2013/5/31/1/backyard-squirrel-buddy&lt;br /&gt;
** and likely all other videos posted there.&lt;br /&gt;
&lt;br /&gt;
Background discussion that led to this proposal:&lt;br /&gt;
* https://indiewebcamp.com/irc/2015-12-13#t1450035721661&lt;br /&gt;
&lt;br /&gt;
This seems very straightforward so I've added it as PROPOSED directly in the parsing spec. This issue is for tracking the discussion.&lt;br /&gt;
&lt;br /&gt;
Feedback from parser implementers please!&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== uf2 children on backcompat properties ===&lt;br /&gt;
[http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=today#c84632 2015-11-24 raised by Calli] in #microformats&lt;br /&gt;
&lt;br /&gt;
Related but different from [[#uf2_children_inside_a_classic_microformats_root_class_name]], when there is a uf2 child directly on a backcompat property, what should happen? E.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;div class=&amp;quot;adr h-adr&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;locality&amp;quot;&amp;gt;MF1&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;p-locality&amp;quot;&amp;gt;MF2&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What is the expected behavior and parser output?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
&amp;quot;items&amp;quot;: [{ &lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;adr&amp;quot;: [{&lt;br /&gt;
      &amp;quot;value&amp;quot;: &amp;quot;MF1MF2&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-adr&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;locality&amp;quot;: [&amp;quot;MF2&amp;quot;],&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;MF1MF2&amp;quot;]&lt;br /&gt;
       }&lt;br /&gt;
     }]&lt;br /&gt;
   }  &lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Proposal: the nested &amp;quot;adr h-adr&amp;quot; child is treated as an mf2 object, not backcompat, and thus the resulting parsed &amp;quot;locality&amp;quot; property has a single value of &amp;quot;MF2&amp;quot;. Proposed by Calli, noting that Glenn Jones's microformatshiv gets that result currently, and it would be easier for him (Calli) to implement this way.&lt;br /&gt;
** +1 Tantek, seems reasonable and the reasoning provided is good (we have one implementation this way already)&lt;br /&gt;
** +1 Kyle, this is consistent with the resolution to the related issue&lt;br /&gt;
** +1 Calli, yes, this is easier for me to implement (than taking both MF1 and MF2 properties) because it is consistent - for me, consistency is the controlling factor in favor rather than ease of parser implementation&lt;br /&gt;
** ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;adr h-custom&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;locality&amp;quot;&amp;gt;MF1&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;p-locality&amp;quot;&amp;gt;MF2&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
&amp;quot;items&amp;quot;: [{ &lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;adr&amp;quot;: [{&lt;br /&gt;
      &amp;quot;value&amp;quot;: &amp;quot;MF1MF2&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-custom&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;locality&amp;quot;: [&amp;quot;MF2&amp;quot;],&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;MF1MF2&amp;quot;]&lt;br /&gt;
       }&lt;br /&gt;
     }]&lt;br /&gt;
   }  &lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per the [[#any_h-_root_class_name_overrides_and_stops_backcompat_root]] resolution, the class name &amp;quot;h-custom&amp;quot; overrides the use of &amp;quot;adr&amp;quot; as a backcompat root.&lt;br /&gt;
&lt;br /&gt;
=== default generated HTML ===&lt;br /&gt;
2015-09-08 raised by Tantek in #indiewebcamp&lt;br /&gt;
&lt;br /&gt;
Should there be a default (perhaps not quite &amp;quot;canonical&amp;quot;) way to map/generate HTML+microformats2 from a parsed mf2 JSON output?&lt;br /&gt;
&lt;br /&gt;
E.g. straw proposal:&lt;br /&gt;
* JSON/mf2 -&amp;gt; [[XOXO]]+mf2&lt;br /&gt;
&lt;br /&gt;
Existing work / mappings:&lt;br /&gt;
* https://github.com/snarfed/granary/blob/master/granary/microformats2.py#L295&lt;br /&gt;
&lt;br /&gt;
Related to:&lt;br /&gt;
* https://github.com/snarfed/granary/issues/31&lt;br /&gt;
&lt;br /&gt;
Use-cases:&lt;br /&gt;
* default webview / presentation for a site that stores mf2 JSON output&lt;br /&gt;
* possibly a way to implement a distributed HTTP webcache retrieval protocol&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] I think we should have this, but am open to proposals on specifics!&lt;br /&gt;
* +1 [[User:GlennJones|Glenn]] Also think this is worth looking at, but I am not sure it should be part of the parser spec. Feels like it should be built as a separate library and have it own spec on the microformats wiki.&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Noscript skip/parse ===&lt;br /&gt;
2015-07-28&lt;br /&gt;
&lt;br /&gt;
Should mf parsers skip &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; tag in the HTML, like the &amp;lt;code&amp;gt;&amp;lt;template&amp;gt;&amp;lt;/code&amp;gt; tag mentioned in http://microformats.org/wiki/microformats2-parsing#note_HTML_parsing_rules ?&lt;br /&gt;
&lt;br /&gt;
mf2py skips &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; when using the html5lib DOM parser but no when using lxml parser. Example use of &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; https://kartikprabhu.com/ featured images have a no javascript fallback image inside &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;class='u-featured'&amp;lt;/code&amp;gt; markup.&lt;br /&gt;
* html5lib actually HTML-escapes the contents of &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt;, so to mf2py it just looks like plain text with no tags. In Woodwind, I've resorted to using regex to strip out &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; tags before parsing (very hacky). [[User:Kylewm|Kylewm]] 15:52, 25 August 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] skip noscript (and inside) because in today's typical browsing contexts, nothing in noscript is displayed, thus we should discourage marking up effectively invisible content.&lt;br /&gt;
** Proposed change to [[microformats2-parsing#parse_a_document_for_microformats]]:&lt;br /&gt;
*** from: &amp;quot;follow the HTML parsing rules&amp;quot;&lt;br /&gt;
*** to: &amp;quot;follow the HTML parsing rules (including skipping/omitting &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; elements, e.g. like the html5lib DOM parser)&lt;br /&gt;
* -1 [[User:GlennJones|Glenn]] This subject does need to be address, but differently to proposed change. My personal view is that  e-* html should be passed through raw and then the consumer can process it in a way they feel fit. Its a case for helper libraries. I am about to build a helper library to do this based on the Readability code to post process e-* html. Other people may want to take different approaches, defining this in the spec feels like move into a whole area of new functionally.  &lt;br /&gt;
&lt;br /&gt;
As a separate new point we need to consider &amp;quot;exclude tags&amp;quot; lists for parsed text from html.  We should consider &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;noframe&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;template&amp;gt;&amp;lt;/code&amp;gt; there maybe other I have not gone through all the tags in current HTML spec. Also we should consider what to do about the more common pattern of fallback text within media tags &amp;lt;code&amp;gt;&amp;lt;video&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;audio&amp;gt;&amp;lt;/code&amp;gt; etc. This should be explicitly discussed in the parsing rules. At the moment my experimental text normalisation does exclude tags, but the default text parse does not. Currently the fallback content in media tags like &amp;lt;code&amp;gt;&amp;lt;video&amp;gt;&amp;lt;/code&amp;gt; is added to the parse text. 12:56, 25 Septemeber 2015 (UTC)&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Standard datetime format ===&lt;br /&gt;
2015-07-28&lt;br /&gt;
&lt;br /&gt;
http://microformats.org/wiki/microformats2-parsing#parsing_a_dt-_property does not specify any standard format to use for datetimes. e.g.  &amp;lt;pre&amp;gt;2015-07-28T12:55:33&amp;lt;/pre&amp;gt; vs &amp;lt;pre&amp;gt;2015-07-28 12:55:33&amp;lt;/pre&amp;gt;&lt;br /&gt;
Would be good to standardize this to compare various parser outputs.&lt;br /&gt;
&lt;br /&gt;
2015-07-29: This subject is (somewhat) covered in http://microformats.org/wiki/iso-8601 As it stands the JavaScript parsers support output in the 3 main profiles, 'W3C Note', 'RFC 3339' and 'HTML5' plus 'auto' which keeps authors format. The default date output for the JavaScript parsers is the same format as the date was originally authored in. This can be changes by setting the options.dateFormat switch to any of the other profiles mentioned. It would be good if other parser also had a switch to force output to a common profiles so we could compare various parser outputs, but I think the default should be how a date was authored. All output whatever profile should also keeps the authored level of specificity, i.e. not adding minutes or seconds if they are not in the input date string. This is important if you want to compare parser outputs. &lt;br /&gt;
&lt;br /&gt;
The only exception to this where date and times are combined such as the implied h-event rule for dt-start and dt-end where I output in the HTML5 style 2015-07-29 12:55:33 as there is no predefined author preference and HTML5 profile is more human readable. [[User:GlennJones|Glenn Jones]] 11:02, 29 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] output more human readable &amp;lt;code&amp;gt;2015-07-28 12:55:33&amp;lt;/code&amp;gt; canonically, with authored level of specificity, i.e. not adding minutes or seconds if they are not in the input date string.&lt;br /&gt;
** Let's update any test cases as needed for this. - [[User:Tantek|Tantek]]&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== implied date for dt properties both mf2 and backcompat ===&lt;br /&gt;
The [[value-class-pattern#microformats2_parsers|value class pattern dt-* date proposal]] should apply to both mf2 dt-* properties, and backcompat classic microformats, to preserve the hAtom / hCalendar optimizations noted on that page, but in a generic way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] 16:12, 18 August 2015 (UTC)&lt;br /&gt;
* +1 [[User:Glenn Jones|Glenn Jones]] 20 August 2015&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== implied properties when an explicit class is provided ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Should &amp;quot;u-url&amp;quot; still be implied if another explicit class is already provided, as below. This is a contrived example, but it is taken from Bridgy's unit tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;article class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;a class=&amp;quot;u-like-of&amp;quot; href=&amp;quot;http://orig.domain/baz&amp;quot;&amp;gt;liked this&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/article&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, http://orig.domain/baz is almost certainly not the u-url, so IMO it would be better to leave it out —[[User:Kylewm|Kylewm]] 15:10, 7 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
'''2015-01-20 consensus'''&lt;br /&gt;
* Changed my mind. Simpler to do nothing. Example provided is artificially constructed, does not reflect likely real world confusion of if we make implied properties more complicated. [[User:Tantek|Tantek]] 06:26, 21 January 2015 (UTC)&lt;br /&gt;
* ++ Consensus on do nothing for this case. At [[2015-01-20]]&lt;br /&gt;
&lt;br /&gt;
'''Proposed resolution:'''&lt;br /&gt;
* Changed again. Due to indiewebcamp.com/edit use-case, this now makes sense for all implied properties. That is:&lt;br /&gt;
** If an element has any explicit property class name(s) on it, then it must not be used to imply any properties. [[User:Tantek|Tantek]] 20:50, 27 May 2015 (UTC)&lt;br /&gt;
*** +1 this seems reasonable, if a publisher is going to add an mf2 class, it is unlikely they want other classes automatically implied from the same value [[User:Aaronpk|Aaronpk]] 23:19, 29 November 2015 (UTC)&lt;br /&gt;
*** -1 for now. To my knowledge, this has only been observed in artificially constructed unit tests and examples, and it adds some weird edge cases that are hard to reason about. [[User:Kylewm|Kylewm]] 00:46, 1 December 2015 (UTC)&lt;br /&gt;
*** ... provide input on this proposal here&lt;br /&gt;
** Refined: Or should this be refined by per parsing prefix? [[User:Tantek|Tantek]] 22:59, 18 September 2015 (UTC) &lt;br /&gt;
*** Any explicit &amp;quot;p-*&amp;quot; property means no implied &amp;quot;p-name&amp;quot; from that element&lt;br /&gt;
*** Any explicit &amp;quot;u-*&amp;quot; property means no implied &amp;quot;u-url&amp;quot; nor &amp;quot;u-photo&amp;quot; from that element.&lt;br /&gt;
*** ... provide input on this refined proposal here&lt;br /&gt;
** Suggestion: split this issue up per property. I think it makes sense for u-url and can be easily added to the spec as e.g. &amp;quot;.h-x&amp;gt;a[href]:only-of-type:not[.h-*&amp;lt;strong&amp;gt;,.u-*&amp;lt;/strong&amp;gt;]&amp;quot;. [[User:Kylewm|Kylewm]] 00:46, 1 December 2015 (UTC)&lt;br /&gt;
*** Obviously wrong to assume a link explicitly pointing elsewhere is our &amp;quot;url&amp;quot; &lt;br /&gt;
*** More difficult to make a case for photo and especially for name.&lt;br /&gt;
*** &amp;quot;name&amp;quot; is implied at least by [.h-x textContent], so often the excluded element would end up included anyway.&lt;br /&gt;
*** ... provide input on this refined proposal here&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== whitespace collapsing revisited ===&lt;br /&gt;
2015-05-27: (raised by [[User:Kevin Marks|Kevin Marks]] per Glenn Jones)&lt;br /&gt;
&lt;br /&gt;
Revising the microformats tests to conform to the &amp;quot;don't collapse whitespace&amp;quot; rule below reveals some non-intuitive cases. &lt;br /&gt;
preserving whitespace in addresses is somewhat defensible, but in an implied name it is often unhelpful, as it preserves non-user visible space there for authoring reasons.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
[https://github.com/microformats/tests/commit/a325e0e9bc2089507e69b1883f7065a3316e07c2#diff-d577012c1438978a571c4049179607f0 this test] shows how extraneous whitespace ends up in the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-review-aggregate&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;p-item h-event&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 class=&amp;quot;p-name&amp;quot;&amp;gt;Fullfrontal&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;p class=&amp;quot;p-description&amp;quot;&amp;gt;A one day JavaScript Conference held in Brighton&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;time class=&amp;quot;dt-start&amp;quot; datetime=&amp;quot;2012-11-09&amp;quot;&amp;gt;9th November 2012&amp;lt;/time&amp;gt;&amp;lt;/p&amp;gt;    &lt;br /&gt;
    &amp;lt;/div&amp;gt; &lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;p class=&amp;quot;p-rating&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;p-average value&amp;quot;&amp;gt;9.9&amp;lt;/span&amp;gt; out of &lt;br /&gt;
        &amp;lt;span class=&amp;quot;p-best&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt; &lt;br /&gt;
        based on &amp;lt;span class=&amp;quot;p-count&amp;quot;&amp;gt;62&amp;lt;/span&amp;gt; reviews&lt;br /&gt;
    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
give a parsed result of:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;items&amp;quot;: [{&lt;br /&gt;
        &amp;quot;type&amp;quot;: [&amp;quot;h-review-aggregate&amp;quot;],&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
            &amp;quot;item&amp;quot;: [{&lt;br /&gt;
                &amp;quot;value&amp;quot;: &amp;quot;Fullfrontal\nA one day JavaScript Conference held in Brighton\n9th November 2012&amp;quot;,&lt;br /&gt;
                &amp;quot;type&amp;quot;: [&amp;quot;h-event&amp;quot;],&lt;br /&gt;
                &amp;quot;properties&amp;quot;: {&lt;br /&gt;
                    &amp;quot;name&amp;quot;: [&amp;quot;Fullfrontal&amp;quot;],&lt;br /&gt;
                    &amp;quot;description&amp;quot;: [&amp;quot;A one day JavaScript Conference held in Brighton&amp;quot;],&lt;br /&gt;
                    &amp;quot;start&amp;quot;: [&amp;quot;2012-11-09&amp;quot;]&lt;br /&gt;
                }&lt;br /&gt;
            }],&lt;br /&gt;
            &amp;quot;rating&amp;quot;: [&amp;quot;9.9&amp;quot;],&lt;br /&gt;
            &amp;quot;average&amp;quot;: [&amp;quot;9.9&amp;quot;],&lt;br /&gt;
            &amp;quot;best&amp;quot;: [&amp;quot;10&amp;quot;],&lt;br /&gt;
            &amp;quot;count&amp;quot;: [&amp;quot;62&amp;quot;],&lt;br /&gt;
            &amp;quot;name&amp;quot;: [&amp;quot;Fullfrontal\nA one day JavaScript Conference held in Brighton\n9th November 2012\n\n\n9.9 out of \n        10 \n        based on 62 reviews&amp;quot;]&lt;br /&gt;
        }&lt;br /&gt;
    }],&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is a reasonable textual representation of the event, but the implied &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; is full of spurious whitespace that any consumer would have to strip. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/microformats/tests/commit/4c9690b53b0a2f40440abac8e609c51ac7dd6d56 h-review] has similar issues&lt;br /&gt;
&lt;br /&gt;
2015-05-28: (Addition by [[User:GlennJones|Glenn Jones]])&lt;br /&gt;
&lt;br /&gt;
The example below shows the type of markup most effected by the &amp;quot;implied name&amp;quot; and &amp;quot;don't collapse whitespace&amp;quot; rule working together to produce output that is hard to use without further processing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;h-card&amp;quot; href=&amp;quot;http://glennjones.net&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;p-given-name&amp;quot;&amp;gt;Glenn&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;p-family-name&amp;quot;&amp;gt;Jones&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The output for the name property from the above HTML would be &amp;lt;code&amp;gt;Glenn\r\n     Jones&amp;lt;/code&amp;gt; using the (trim lead/trailing) suggested in the  parsing spec.  I could of course move the spans onto one line, but it feels fragile to consider whitespace sensitivity in HTML like this. Added to the fact that HTML templating environments often take away that level of whitespace control from authors anyway.&lt;br /&gt;
&lt;br /&gt;
There are issues with both: keeping whitespace, returns and tabs from parsed HTML or collapse that whitespace. If we return the whitespace it becomes mal-formatted for humans because it was only added to make the HTML code understandable and in most cases was not meant to be used/read outside of that context. If we collapse the whitespace we can have issues of whitespace sensitive text from &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; etc. being incorrectly formatted. &lt;br /&gt;
&lt;br /&gt;
Providing a CSS aware innerText feature would produce the most useable output, but this is too complex/time consuming to build for most parser developers. In the face of no perfect solution I have taken the 80:20 view,  whereby errant whitespace, causes me considerably more problems than mal-formatted &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; content so I collapse whitespace on all text returned. &lt;br /&gt;
&lt;br /&gt;
This feature is a non-CSS aware version of innerText. It does not cover all rendering edge cases, but enough to produce practical output.&lt;br /&gt;
&lt;br /&gt;
For now, I have started changing the node parser to flag &amp;quot;white-space collapsing&amp;quot; as an experimental feature which is off by default i.e. http://glennjones.net/tools/microformats/ but personally I will parse everything with this on as I find it the most practical solution.  &lt;br /&gt;
&lt;br /&gt;
Not sure where that leaves me on the options below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
Choose from:&lt;br /&gt;
# keep as is and every parser client has to post process for common cases.&lt;br /&gt;
# '''keep as is but have mf2 parser trim leading/trailing whitespace (likely to provide desired result and be reasonably backcompat)'''&lt;br /&gt;
#* +1 my preference of the two options. [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
#* +1 though this doesn't solve any of the problems discussed above, it's still worth doing [[User:Kevin Marks|Kevin Marks]] 16:41, 28 May 2015 (UTC)&lt;br /&gt;
#* +1 will help parsers be more consistent with each other, and I haven't ever encountered a case where preserving leading/trailing whitespace was desirable [[User:Kylewm|Kylewm]] 20:45, 8 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
2015-06-08 option 2 resolved by consensus and implementation in mf2py.&lt;br /&gt;
&lt;br /&gt;
Somewhat orthogonal:&lt;br /&gt;
* make &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; on properties with children normalise whitespace&lt;br /&gt;
** -1 Seems like a bad idea as this &amp;quot;value&amp;quot; is supposed to be the same as if there was no embedded child microformat. [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
* make implied &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; normalise whitespace.&lt;br /&gt;
** +0 This is reasonable and already done somewhat in the parsing spec (trim lead/trailing). [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
** +1 Given the universality of name, this would fix most of the issues we see. [[User:Kevin Marks|Kevin Marks]] 16:41, 28 May 2015 (UTC)&lt;br /&gt;
* Put \n in textual forms if there is a &amp;lt;code&amp;gt;&amp;amp;lt;p&amp;amp;gt;&amp;lt;/code&amp;gt; tag in the original.&lt;br /&gt;
** -1 that's a long path to go down with whitespace equivalents for HTML markup. [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
** would only preserving whitespace if in &amp;amp;lt;pre&amp;amp;gt; be an 80:20 compromise? [[User:Kevin Marks|Kevin Marks]] 16:41, 28 May 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Because there are both code markup and specific vocabulary (label) needs for preserving whitespace, we are compelled to preserve in general, perhaps except for very specific limited generic cases (e.g. trim leading/trailing, &amp;quot;value&amp;quot; parsing, implied name). [[User:Tantek|Tantek]]&lt;br /&gt;
&lt;br /&gt;
=== u- parsing iframe src ===&lt;br /&gt;
Currently if I put u-* on an iframe it gets the value of the fallback text. This seems a shame. Getting the URL seems a sensible answer.&lt;br /&gt;
[[User:Kevin Marks|Kevin Marks]] 09:07, 11 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== i- parsing iframe src ===&lt;br /&gt;
&lt;br /&gt;
More controversially, what about using an iframe for transclusion? A use case here is comments on a static site. Currently, on eg http://www.kevinmarks.com/microformatschema.html the comments are injected via JS, making them opaque to parsers and thus precluding further parsing such as salmentions.&lt;br /&gt;
&lt;br /&gt;
If instead they were an iframe embedding them, a parser could optionally fetch its contents, parse them, and include them in the parsed mf2 output at that point. Overloading u-* for this seems wrong; e-* as below for srcdoc would have a different effect; this implies a new prefix directive would be needed. A strawman i-* (for include) may work.&lt;br /&gt;
[[User:Kevin Marks|Kevin Marks]] 09:07, 11 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== e- parsing iframe srcdoc ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Proposal: addition of a new e-* parsing rule for iframe elements with srcdoc attributes. E.G.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;iframe class=&amp;quot;e-content&amp;quot; srcdoc=&amp;quot;&amp;lt;p&amp;gt;A paragraph of HTML with &amp;amp;quot;quoted quotes&amp;amp;quot; &amp;amp;amp;amp; doubly quoted ampersands&amp;lt;/p&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;items&amp;quot;: [{&lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-entry&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
   &amp;quot;content&amp;quot;: [&amp;quot;&amp;lt;p&amp;gt;A paragraph of HTML with &amp;amp;quot;quoted quotes&amp;amp;quot; &amp;amp;amp; doubly quoted ampersands&amp;lt;/p&amp;gt;&amp;quot;]&lt;br /&gt;
  }&lt;br /&gt;
 }]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would allow, for example, HTML comments to be sandboxed inside iframes but still parsable as microformats.&lt;br /&gt;
&lt;br /&gt;
I believe the correct processing would be to leave &amp;amp;quot; entities as they are but to unescape any doubly-escaped ampersands.&lt;br /&gt;
&lt;br /&gt;
** Is there any use case for that? —[[User:TomMorris|Tom Morris]] 12:32, 14 September 2013 (UTC)&lt;br /&gt;
** +1 we need documentation of use case and existing sites publishing iframe srcdoc like this - [[User:Tantek|Tantek]] 00:47, 15 September 2013 (UTC)&lt;br /&gt;
** Rejected by consensus at [[2015-01-20]] meetup due to lack of real world uses cases / existing sites. [[User:Tantek|Tantek]] 06:26, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to interpret mf2 properties on select ===&lt;br /&gt;
How should select elements with properties be treated any differently?&lt;br /&gt;
&lt;br /&gt;
Awaiting real world examples / stronger use-cases, until then no special treatment of select elements with properties:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Are there any real world examples of select elements with microformats properties?&lt;br /&gt;
* What would the use-case be for putting a microformats property class name on a select element?&lt;br /&gt;
* Nothing special. By consensus at [[2015-01-20]] meetup due to lack of real world uses cases / existing sites. [[User:Tantek|Tantek]] 06:26, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to interpret mf2 root name on form ===&lt;br /&gt;
See what to do about &amp;lt;em&amp;gt;root class names&amp;lt;/em&amp;gt; on &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; elements in particular:&lt;br /&gt;
* [[hcard-input]]&lt;br /&gt;
&lt;br /&gt;
Awaiting real world examples / stronger use-cases, until then, no special treatment of root class names on &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; elements:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Are there any real world examples of a &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; element with a microformats root class name?&lt;br /&gt;
* [[hcard-input]] is one possible use-case, is anyone attempting to use forms for hCard input, e.g. with scripts to help make it work?&lt;br /&gt;
* Are there other use-cases for putting a microformats root class name on a &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; element?&lt;br /&gt;
* As of [[2015-01-20]] - no consensus - need more input as to when/why this is useful to do anything special.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Parsing Literal Values===&lt;br /&gt;
Issue raised by: [[User:BenWard|Ben Ward]]&lt;br /&gt;
&lt;br /&gt;
It is proposed for microformats2 that all microformats be parsable from just their root element, e.g. &amp;lt;code&amp;gt;&amp;amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;Ben Ward&amp;amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; would create an hCard with the following properties after parsing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
  'type': ['h-card'],&lt;br /&gt;
  'properties': {&lt;br /&gt;
     'name': ['Ben Ward']&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a four-fold change from the current [[hCard]]:&lt;br /&gt;
# type is generically identifiable as a microformat root, even in parsed form. The use of the 'h-' prefix persists into the type of the object. This is deliberately so, as a result of re-using the JSON data model of microdata which itself is re-using a common JSON convention, such that microformatted data is clearly distinguishable (as opposed to any other random schema that may be using a similar data model).&lt;br /&gt;
# root-class-only support. Per [[microformats-2-implied-properties]], the ''name'' property is implied by the entirety of the root class name element.&lt;br /&gt;
# 'name' instead of 'fn'. As also documented in [[microformats-2-implied-properties]], the continuous challenges/problems and need to repeatedly re-explain 'fn' over the years combined with the real-world market response of nearly every other party doing a person vocabulary renaming 'fn' to 'name', microformats 2 makes this change as well.&lt;br /&gt;
# There is no automatic parse-time inferring of &amp;lt;code&amp;gt;'given-name': ['Ben']&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;'family-name': ['Ward']&amp;lt;/code&amp;gt;. Any such inferring *might* be made by a vCard converter, but is left up to that specific application (not all applications) built on that vocabulary, though even in that case it may not be necessary, as an empty &amp;quot;N:;;;&amp;quot; [[vCard]] property is sufficient to satisfy the N property requirement of [[vCard]], and also causes no problems when imported into various [[vcard-implementations]].&lt;br /&gt;
&lt;br /&gt;
It is required of the extractor to understand that when a microformats object specifies no explicit child properties, that it must treat &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; as having a &amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;. But, the parser is generic, so it also treats &amp;lt;code&amp;gt;h-review&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-entry&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-recipe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-geo&amp;lt;/code&amp;gt; as having a ‘&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;’.&lt;br /&gt;
&lt;br /&gt;
As a result, specific vocabularies are evolved to drop their specific form of name (e.g. fn, summary, entry-title) and simplified to use a common 'name' property instead.&lt;br /&gt;
&lt;br /&gt;
Note: while the overwhelming majority of real world publishing/consuming uses of microformats do so with proper nouns which have names (and thus this parser-level incorporation of an implied 'name'), there are some formats that do not have a 'name' semantic. For example, [[geo]], [[adr]], and possibly if/when developed, units of measure, length, cost. The current thinking is that the benefits to the far greater proper-noun use-case of microformats outweigh the technical inelegance of having an extra/ignored 'name' property on formats that lack such a semantic.&lt;br /&gt;
&lt;br /&gt;
Some formats also may appear in theory to better imply some other property, e.g. a review might be thought to imply its ''content'', not its name, and an Atom entry its ''content'', not its title, but in practice (actual publishing patterns) this is not the case. Typically, brief unstructured reviews (or mentions thereof) provide a ''summary'' (often hyperlinked to an expanded structured form) of that review, not its content, and similarly, brief unstructured posts (e.g. RSS items) have historically most often been link blog items which include the title of an item and a link. Short status updates as well established by Twitter are newer and would seem to imply purely content with no title, at least semantically, however, even Twitter populates the RSS title and ATOM entry title of their feeds with the content. It's not clear what went into that decision, however, that's likely irrelevant, as the outcome turns out to be emergent consistency among publishing behaviors.&lt;br /&gt;
&lt;br /&gt;
To avoid overloading or undermining the semantics of a vocabulary, I propose that we handle this at the extractor level in a simpler fashion: Define a new property for literal data, that an extractor will provide if no other information was available. All ''interpreters'' may then be instructed that in the event that an object has no properties, it can attempt to interpret the literal value from the page instead.&lt;br /&gt;
&lt;br /&gt;
* This was one of the design iterations I went through which led me to the current implied 'name' design. Another iteration was the ability for a vocabulary to specify a single required property which was implied if there were no properties provided. However, the combination of the fact that in most cases such single required properties were quite name-like, and that a vocabulary-specific rule like that would then bind parsers to specific vocabularies (even so slightly) led me to collapse them into implying a 'name'. It's not perfect, but it's the best alternative so far that balances practical convenience of publishing/consuming, avoids vocabulary-specific knowledge in the parser, and technical (in)elegance. [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
In existing microformats, the closest existing example we have for this is the &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; property in hCard, which is used to represent the literal address label for a place. It is a corresponding piece of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;org&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; in combination, but has no structure in and of itself. Possibly, every microformat could have a &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; form where structured data is unavailable.&lt;br /&gt;
&lt;br /&gt;
However in practice, the hCard &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; property is both little understood and little used. It's not even clear that it ought to be kept for microformats 2 (no known consumers, very few (if any?) real-world non-test publishers). This disuse is likely a good indicator that we should avoid basing anything on its design.&lt;br /&gt;
&lt;br /&gt;
Alternatively, &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is used throughout microformats to target a generic value (e.g. in combination with &amp;lt;code&amp;gt;price&amp;lt;/code&amp;gt; in hListing.) It has been proposed that when parsing properties that are also themselves microformats, we create native objects of the form:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        'value': '1900 12th Street, San Francisco, CA 94'&lt;br /&gt;
      , 'type': ['h-adr']&lt;br /&gt;
      , 'properties': {&lt;br /&gt;
            'street-address': '1900 12th Street'&lt;br /&gt;
          , 'etc': 'etc'&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
We could apply this same pattern to the root level:&lt;br /&gt;
&lt;br /&gt;
    { &lt;br /&gt;
        type: [h-card]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: 'Ben Ward'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
In this case, an interpreter or implementation is responsible for using &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; in place of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, or restructuring the object. It would be the responsibility of each vocabulary to define its root property. The parsing layer of microformats 2.0 would not impose semantics or naming onto that.&lt;br /&gt;
&lt;br /&gt;
For another example, h-geo would end up like this:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        type: [h-geo]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: '1.3232;-0.543'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
* This is an alternative I've been considering as well:  [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
** 'value' is more generic than 'name' (applies to more vocabularies) with the trade-off that it naturally has less (weaker) semantics.&lt;br /&gt;
*** +1 I think that having naturally weaker semantics would be appropriate for this parsing functionality. —[[User:BenWard|BenWard]] 07:24, 5 October 2011 (UTC)&lt;br /&gt;
** The interesting thing that this analysis has revealed is that there appear to be two distinct clusters of microformats, the much more commonly used/understood/useful proper-noun microformats which markup things with names (people, events, reviews, recipes), and the less used compound-data microformats which are often used ''inside'' other microformats and just have some sort of semi-structured value (adr, geo, measure, and perhaps even things like tel). Perhaps this is implying the possibility and some degree of utility for ''two'' microformats root class name prefixes, 'h-' for existing proper-noun microformats, and something else ('m-' for microformat/molecule?, 's-' for structured-value?, 'v-' for value (though historically &amp;quot;v-&amp;quot;/&amp;quot;v.&amp;quot; has meant &amp;quot;vendor-specific&amp;quot;)?) for unnamed structured data microformats.&lt;br /&gt;
*** This more and more feels like a good idea, and I'm leaning toward &amp;quot;s-&amp;quot; for struct / structure / structured value. &amp;quot;s-&amp;quot; works just like &amp;quot;h-&amp;quot; except that it doesn't imply any properties at parse time. We can try it and see what happens. There's also no harm if publishers just use &amp;quot;h-&amp;quot; structures, they just (possibly) get a few extra properties if they happen to omit properties.&lt;br /&gt;
** Parallels the same JSON when a property has both a string value ''and'' is a structure itself.&lt;br /&gt;
*** Changed my mind on this. The parallel is not quite there. 'name'/'url'/'photo' are only implied if there are NO properties, where as the JSON string value + structure convention *always* provides a 'value'. [[User:Tantek|Tantek]] 22:39, 4 October 2011 (UTC)&lt;br /&gt;
*** And due to this difference in behavior ('value' is there when nested properties are present, whereas 'name' is only implied when there are no properties specified), I think it's correct to keep them separate, i.e. stick with implied 'name'. [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
** However, I'm still currently leaning towards the practical convenience of providing a 'name' for the vast majority of microformats uses, rather than diluting this feature for the sake of avoiding implying inapplicable semantics to the few plain structured data microformats, and even then, only when no properties are explicitly specified! I'd rather introduce a new root prefix for those than lose the simplicity and utility of implied 'name'. [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== resolved ==&lt;br /&gt;
=== When to collapse whitespace in properties ===&lt;br /&gt;
&lt;br /&gt;
The spec doesn’t explicitly require whitespace to be collapsed or not. The official mf2 test suite requires it to be collapsed.&lt;br /&gt;
&lt;br /&gt;
Reasons why whitespace ''shouldn’t'' be collapsed:&lt;br /&gt;
* Plaintext property representations of syntax-highlighted code, poetry and song lyrics require whitespace to be present&lt;br /&gt;
* Whether or not whitespace is an important part of the content being parsed is determined by css white-space and CANNOT be inferred from HTML markup alone&lt;br /&gt;
&lt;br /&gt;
Resolution 2013-11-12: Agreed, whitespace should not be collapsed (other than normal HTML5 parsing rules). The spec now refers to &amp;quot;textContent&amp;quot; rather than &amp;quot;innertext&amp;quot; to make this explicit.&lt;br /&gt;
&lt;br /&gt;
=== How to interpret mf2 classnames on form inputs ===&lt;br /&gt;
E.G. how to parse:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;input class=&amp;quot;u-url&amp;quot; value=&amp;quot;https://brennannovak.com/notes/338&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Examples in the wild: https://brennannovak.com/notes/338&lt;br /&gt;
&lt;br /&gt;
See proposal:&lt;br /&gt;
* [[hcard-parsing-brainstorming#input_element_handling]]&lt;br /&gt;
&lt;br /&gt;
Resolution 2013-11-12: Per that proposal, p- u- dt- properties on input[value] elements now use the value attribute.&lt;br /&gt;
&lt;br /&gt;
=== mixture of microformats2 and classic microformats classnames on different elements ===&lt;br /&gt;
Some sites in the wild have mistakenly combined classic mf and mf2 markup in ways which misrepresent the content if parsed in BC mode.&lt;br /&gt;
&lt;br /&gt;
Typically this is caused by putting classic and mf2 classnames for the same vocabulary on different elements, e.g:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;body class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;article class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name&amp;quot;&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
 &amp;lt;/article&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sites where this has been observed:&lt;br /&gt;
* http://acegiak.machinespirit.net/2013/10/17/barnaby-walters-notes-another-thing-i-love-about-the-web-users-have-the-power-to-take-control-of-their-uis-and-improve-their-own-experiences-aside-drm-for-html-would-prevent-this-from-being-possibl/&lt;br /&gt;
* http://shawfactor.com/2013/08/06/thoughts-on-extending-webmentions/ (fixed)&lt;br /&gt;
* http://notizblog.org/2013/06/18/the-rise-of-the-indieweb/ (fixed)&lt;br /&gt;
&lt;br /&gt;
Discussion:&lt;br /&gt;
&lt;br /&gt;
* As far as I can tell, the problems in all of these examples were caused by mf2 markup being injected by a wordpress plugin, but classic mf classnames being present further up the DOM in the themes. When parsed in compatibility mode, the classic mf classnames are transformed into mf2 classnames, making the original mf2 classnames look like children of empty items.&lt;br /&gt;
* Turns out this isn’t theme-specific, WordPress injects hentry via PHP [http://indiewebcamp.com/irc/2013-10-22/line/1382448759]. The bug with the wordpress mf2 plugin is resolved as of [http://indiewebcamp.com/irc/2013-10-22/line/1382449035 2013-10-22] --[[User:Barnabywalters|bw]] 13:38, 22 October 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== e- and p- escaping levels ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* The fact that the parsed value of any element with .e-* is at a different level of escaping to the parsed values of p-*, dt-* etc. without any indication of how the property was parsed in the output is a security problem. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;input&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;output&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
   &amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;p-name&amp;quot;&amp;gt;&amp;amp;lt;tag&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;items&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;type&amp;quot;: [&lt;br /&gt;
                &amp;quot;h-card&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;properties&amp;quot;: {&lt;br /&gt;
                &amp;quot;name&amp;quot;: [&lt;br /&gt;
                    &amp;quot;&amp;lt;tag&amp;gt;&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
   &amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;e-name&amp;quot;&amp;gt;&amp;amp;lt;tag&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;items&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;type&amp;quot;: [&lt;br /&gt;
                &amp;quot;h-card&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;properties&amp;quot;: {&lt;br /&gt;
                &amp;quot;name&amp;quot;: [&lt;br /&gt;
                    &amp;quot;&amp;amp;lt;tag&amp;amp;gt;&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* As a parser developer, the most straightforward way I can think of solving this is to add an option (enabled by default) which encodes HTML special characters on all non e-* properties, so the developer knows that all property values are going to be at the same level of escaping. --[[User:Barnabywalters|bw]] 20:00, 15 June 2013 (UTC)&lt;br /&gt;
** Your suggestion of auto-HTML-encoding p-*/u-*/dt-* property values is the most sensible I think. I would NOT make it an option, as it makes sense write consistent microformats2 consumers. - [[User:Tantek|Tantek]] 07:18, 5 July 2013 (UTC)&lt;br /&gt;
** Can you think of any existing apps/consumers of microformats2 via the parser that would break? What would indieweb comments parsers do? - [[User:Tantek|Tantek]] 07:18, 5 July 2013 (UTC)&lt;br /&gt;
*** The only breakage which might occur would be over-encoding of non e-* properties, but I’ll release this update as v0.2.0 and warn people about the changes. The worst thing which could happen is that some comments look a bit weird, as opposed to the current worst possible scenario of easy XSS attacks --[[User:Barnabywalters|bw]] 12:55, 5 July 2013 (UTC)&lt;br /&gt;
*** We should also decide exactly which characters get encoded — just angle brackets, or quotes/ampersands as well? --[[User:Barnabywalters|bw]] 12:55, 5 July 2013 (UTC)&lt;br /&gt;
*** I am not sure about this, it seems more like a helper function rather than a core feature of the parser. Personally I would like to store data as text and encode only when I am going to use and I known the format it is going to be use in.  --[[User:GlennJones|Glenn Jones]] 9:54, 14 July 2013 (UTC) &lt;br /&gt;
***After the discussion on the indiewebcamp IRC with Barnaby Walters I now understand the XSS issue that this change is trying to address. A rogue author could include HTML with scripts to execute a XSS attack. These could be masked by switch prefixes i.e. p-* to e-* on a well use property. As the consumer does not see the prefix in the JSON output they have no idea if a property will content HTML or text.  I will update my two parsers and the test suite --[[User:GlennJones|Glenn Jones]] 8:02, 17 July 2013 (UTC) &lt;br /&gt;
**So what about an author setting a property to e-* when it would normal be p-*, dt-* or u-* i.e.&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-card&amp;quot;&amp;gt;&amp;lt;p class=&amp;quot;e-name&amp;quot;&amp;gt;&amp;lt;script&amp;gt; alert('xss test') &amp;lt;/script&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** per [[events/2013-09-14-microformats2-parsing|microformats2 parsing discussion 2013-09-14]], parsers should never automatically attempt to HTML-special-characters encode - as that would provide the client of the parser a false sense of security. It's *always* up to client code to escape any text being output to HTML *at the moment it is output to HTML* and never before, because they can never trust that any text from storage/elsewhere has for sure been escaped or not. - [[User:Tantek|Tantek]] 18:07, 17 October 2013 (UTC)&lt;br /&gt;
** Should we not encode e-* as well and the consumer can decode at their own risk --[[User:GlennJones|Glenn Jones]] 18:42, 21 July 2013 (UTC) &lt;br /&gt;
*** No, never, per above point from [[events/2013-09-14-microformats2-parsing|microformats2 parsing discussion 2013-09-14]] - [[User:Tantek|Tantek]] 18:07, 17 October 2013 (UTC)&lt;br /&gt;
** See [[events/2013-09-14-microformats2-parsing|microformats2 parsing discussion 2013-09-14]] etherpad: https://etherpad.mozilla.org/microformats2parsing for more details on the resolution to this issue - and incorporate here (then move to resolved section below). - [[User:Tantek|Tantek]] 18:07, 17 October 2013 (UTC)&lt;br /&gt;
* Resolved by changes to the parsing spec: all properties are plaintext (non-HTML escaped), e-* properties result in a dictionary with &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; = plaintext version, &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; = raw HTML version &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== br hr empty string ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* The parsing rule 'else if br.p-x or hr.p-x, then return &amp;quot;&amp;quot; (empty string)' for p-* can cause any code consuming the API to become quite bloated. It means that you have test every array value to see if its an empty string. It is also unclear to me what the purpose of this mark-up pattern is for  [[User:GlennJones|Glenn Jones]]&lt;br /&gt;
** Upon reconsidering this, I agree with you, this is an unlikely use case. If a publisher wants to explicitly set an empty property &amp;quot;p-foo&amp;quot; they can simply write &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;p-foo&amp;quot;&amp;gt;&amp;amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; which looks explicit. Whereas BR and HR tags are often just presentational, so we should both not encourage usage of them for semantics, and anyone that did use them would be subject to likely loss of semantics upon a redesign (that got rid of those particular BR and HR tags). I'm going to remove them from the parsing spec. - [[User:Tantek|Tantek]] 15:29, 10 February 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== datetime examples without T delimiter ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* The examples in the wiki microformats-2 pages such h-entry and h-entry had datetime without the 'T' delimiter between date and time. ie&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;time class=&amp;quot;dt-published&amp;quot; datetime=&amp;quot;2013-06-13 12:00:00&amp;quot;&amp;gt;13&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; June 2013&amp;lt;/time&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
I have updated the pages. As far as I known this is a new pattern for dates. Was it a mistake in the examples or is it a new datetime pattern.&lt;br /&gt;
** The [[HTML5]] &amp;quot;time&amp;quot; element, and &amp;quot;datetime&amp;quot; attribute allow for space &amp;lt;span style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;&amp;quot; &amp;quot;&amp;lt;/span&amp;gt; as a separator between date and time as well as &amp;quot;T&amp;quot;, thus we allow it for microformats as well. The  &amp;lt;span style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;&amp;quot; &amp;quot;&amp;lt;/span&amp;gt; separator is preferred as the date and time are more readable when separated by a space. The examples noted in those specs deliberately use this. - [[User:Tantek|Tantek]] 18:48, 15 July 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== rel-alternate absent optional attributes ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* What should rel-alternate parsing do when one of the optional attributes specified (&amp;lt;kbd&amp;gt;hreflang&amp;lt;/kbd&amp;gt; or &amp;lt;kbd&amp;gt;media&amp;lt;/kbd&amp;gt; or both) is not there? The options seem to be:&lt;br /&gt;
*# leave the corresponding key out of the alternate JSON object&lt;br /&gt;
*#* This one. Leave the corresponding key out.&lt;br /&gt;
*# include the corresponding key in the alternate JSON object, but set the value to the JSON null object&lt;br /&gt;
*# include the corresponding key in the alternate JSON object, but set the value to a blank string&lt;br /&gt;
*# something I haven't thought of&lt;br /&gt;
&lt;br /&gt;
I haven't checked the existing implementations, but Barnaby said he's not sure what the appropriate way to deal with it is either. —[[User:TomMorris|Tom Morris]] 15:41, 9 August 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== rel-alternate and type attribute ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Should rel-alternate parsing also pick up the &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; attribute? It’s fairly widely used, e.g. for ATOM feeds.&lt;br /&gt;
** Numerous existing sites/pages have various [[rel-alternate]] uses with a type attribute for feeds/APIs so that's good enough to add this for help with discovery in general. Rel parsing updated. - [[User:Tantek|Tantek]] 00:47, 15 September 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Extraction vs Interpretation ===&lt;br /&gt;
Issue raised by: [[User:BenWard|Ben Ward]]&lt;br /&gt;
&lt;br /&gt;
A microformats ‘1.0’ parser performs the following function:&lt;br /&gt;
&lt;br /&gt;
* Given a piece of HTML content, discover a known microformat, extract it, apply various extraction patterns based upon the HTML mark-up used (e.g. include pattern, &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; patterns, date-time patterns, value-title pattern), apply various content optimisations where applicable, and return the result in an object native to the programming language.&lt;br /&gt;
&lt;br /&gt;
This is performing two types of function: Extraction of data from an HTML document or fragment, ''and'' interpretation and optimisation of that content to match the rules set out by a vocabulary specification.&lt;br /&gt;
&lt;br /&gt;
It is only possible to write a generic parser that covers the first half of this task: Extraction, and application of global rules based on HTML elements and patterns common to all formats.&lt;br /&gt;
&lt;br /&gt;
The purpose of a generic parser (as supported by use cases such as search engines, and other crawlers) is: &lt;br /&gt;
&lt;br /&gt;
To provide a way for tools to extract rich data from a page for native storage, such that the data may be interpreted later by applications. This allows microformats to be crawled, and indexed, and removes the need to include complex HTML parsing within every implementation of microformat data.&lt;br /&gt;
&lt;br /&gt;
Microformats will continue to define various vocabulary-specific optimisations. as part of the design to be optimised for authors. For example: The &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; pattern in [[hcard]], or the &amp;lt;code&amp;gt;lat;long&amp;lt;/code&amp;gt; pattern in [[geo]], as well as default values for properties, such as the maximum rating in an [[hreview]].&lt;br /&gt;
* Actually, no, as it is defined currently, microformats 2 ''drops'' vocabulary-specific optimizations. Such optimizations have often been too inapplicable, error prone or i18n-unsafe (e.g. fn to given-name + family-name fails for both numerous cases where middlenames/initials are used, and in general in numerous Asian languages where given/family name order is the reverse of Western English conventions, or languages with multiple family-names, e.g. Spanish - see [[hcard-issues-resolved]] for more). This is a deliberate cutting of a &amp;quot;feature&amp;quot; from microformats 1, it is a deliberate model simplification design decision. [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
==== Extraction resolution ====&lt;br /&gt;
Proposed resolution:&lt;br /&gt;
&lt;br /&gt;
Microformats2 should refer only to ''extraction'' of microformats. Vocabularies should in turn document their appropriate optimisations, which will need to be applied by implementations, or a companion to an extractor, which I'll refer to here as an ‘interpreter’.&lt;br /&gt;
* Vocabularies will no longer have optimizations, this is again deliberately, as they've been shown to be more error prone than helpful. Thus there should be no need for any vocabulary-specific 'interpreters'. However, due to design quirks in various legacy/interchange formats, ''export conversions algorithms'' to those legacy/interchange formats will require some additional legacy-format-specific rules (e.g. odd &amp;quot;required&amp;quot; rules in [[Atom]] or [[vCard]] will require specific synthesis rules, limitations in said formats will require filtering of some values, e.g. [[vcard3]] BDAY disallows vague birthdays like year-month and --month-day - subsequently allowed in [[vcard4]]). [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
A microformats2 ‘extractor’, in combination with the functionality of a domain and format-aware ‘interpreter’ (either another shared component, or part of the implementation itself) would be equivalent to a microformats 1.0 ‘parser.’&lt;br /&gt;
* A microformats2 parser is both generic (no knowledge of specific vocabularies), and lacks any/all such vocabulary-specific rules as compared to a microformats 1.0 [[hcard-parsing|parser]] with the exception of a 1) a limited list of well-established/interoperable backward compat root class names (of current [[microformats]] that are or can be soon shown to be specifications/standards per the [[process]]), 2) flat sets of backward compat property names (some with prefix/name specific conversion) for each of those backward compat root class names.  This is a deliberate design decision that makes microformats 2 more &amp;quot;micro&amp;quot;, and yes this means that even with such backward compat support, this simple form of backward compat may mean that some existing microformats 1 content breaks. We'll assess those and iterate on a documented case-by-case basis rather than attempt to maintain theoretical 100% backward compatibility (since many current microformats format-specific-features are either unused, or may have caused more problems than solutions). [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
N.B. I'll rewrite some of these as [[microformats2-parsing-faq]] to help better clarify. The reasoning that led to most of these design decisions is documented in the [[microformats-2#About_This_Brainstorm|microformats 2: About This Brainstorm]] section and following sections. I'll recheck those sections to see if/where reasoning for some of the above noted design decisions may have been missed, and back-fill accordingly. This is necessary because [[microformats2]] is a evolutionary result of simultaneously addressing both numerous generic [[issues]] as well as various common [[hcard-issues-resolved|format]]-[[hcalendar-issues-resolved|specific]] [[mfo|problems]] in microformats1 syntax and vocabularies. The very number of changes may make it more challenging (from a microformats1 perspective) to see why any particular design change has been made. [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
This issue can be moved from resolved to closed once the above-mentioned write-ups have occurred.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Parsing properties from rel attributes===&lt;br /&gt;
tl;dr resolution: As of 2013, [[microformats2-parsing]] handles parsing all link and a href rel values at document scope level, and producing canonical JSON accordingly. - [[User:Tantek|Tantek]]&lt;br /&gt;
&lt;br /&gt;
Issue raised by [[User:BenWard|BenWard]] 07:24, 5 October 2011 (UTC):&lt;br /&gt;
&lt;br /&gt;
* Currently, hAtom parses `bookmark` as a permalink&lt;br /&gt;
* Various microformats parse `rel=tag` as tags&lt;br /&gt;
* The current proposal for parsing does not allow parsing properties from rel attributes.&lt;br /&gt;
&lt;br /&gt;
Microformats parsers could instead extract ''all'' link relationships from rel attributes within an microformat object, parsing them as if a u- prefixed property.&lt;br /&gt;
* Minor nit: Rather than same as a u- prefixed property, I think such &amp;quot;rel&amp;quot; properties should be parsed purely from the &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; attribute on &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;area&amp;amp;gt;&amp;lt;/code&amp;gt; elements and nothing more. I would strongly disagree to extending rel to apply to other elements with URLs like img src, object data, or to apply to elements in general like div. That's the path that RDFa has taken and caused much confusion as a result. [[User:Tantek|Tantek]] 07:39, 5 October 2011 (UTC)&lt;br /&gt;
** Agree: That seems like a perfectly reasonable restriction. --[[User:BenWard|BenWard]] 08:29, 5 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
This results in:&lt;br /&gt;
&lt;br /&gt;
* Continuing use of the &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attribute in HTML, thereby building on HTML semantics rather than bypassing them or ignoring them in favour of something less meaningful.&lt;br /&gt;
* Parsing hAtom objects contain a property named &amp;lt;code&amp;gt;bookmark&amp;lt;/code&amp;gt;, in place of &amp;lt;code&amp;gt;permalink&amp;lt;/code&amp;gt;.&lt;br /&gt;
* All microformats that use &amp;lt;code&amp;gt;rel-tag&amp;lt;/code&amp;gt; would contain a property named… &amp;lt;code&amp;gt;tag&amp;lt;/code&amp;gt;. Perfect.&lt;br /&gt;
&lt;br /&gt;
Since &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes are not overloaded for other functionality like class is, and other uses of &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; within content are low (and non-semantic uses are nil, to the best of my knowledge) the risk of property pollution would be extremely low.&lt;br /&gt;
&lt;br /&gt;
Note, with regard to this last point, that a generic microformats parser ''will'' parse false-positive properties, and ''will'' parse objects in combined chunks, rather than individually by format. Extracted objects will often not represent a vocabulary without further processing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* This sounds like it might be workable. Let's try it and see how well authors &amp;quot;get it&amp;quot;. - [[User:Tantek|Tantek]]&lt;br /&gt;
* Possible issue: do we have any collisions between class property names and rel names? (I don't think so offhand, but useful to ask the question). - [[User:Tantek|Tantek]]&lt;br /&gt;
** None that I can think of in microformats. There is the case of Google's &amp;lt;code&amp;gt;rel=author&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;p-author&amp;lt;/code&amp;gt; in hAtom. However, the next point, about mfo scoping, would cover it in most situations (rel-author on a hyperlink within an hcard wouldn't be applied to the hentry.) The one situation in a parse tree where it's ambiguous would be this: &lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;p-author h-card&amp;quot; &lt;br /&gt;
   rel=&amp;quot;author&amp;quot; &lt;br /&gt;
   href=&amp;quot;http://benward.me&amp;quot;&amp;gt;&lt;br /&gt;
   Ben Ward&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** I can think of two quite reasonable solutions: &lt;br /&gt;
*** 1. Declare that class properties take precedence over rel properties of the same name, discarding rel values if a class is also found, or &lt;br /&gt;
*** 2. Since all properties are now multi-value anyway, the hAtom object could be parsed as:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from the p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        'http://benward.me'      /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** —[[User:BenWard|BenWard]] 08:29, 5 October 2011 (UTC)&lt;br /&gt;
*** Option 2 makes sense and is consistent with the rest of the multi-value parsing/handling. - [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
*** What about without the 'p-author'?&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;h-card&amp;quot; &lt;br /&gt;
   rel=&amp;quot;author&amp;quot; &lt;br /&gt;
   href=&amp;quot;http://benward.me&amp;quot;&amp;gt;&lt;br /&gt;
   Ben Ward&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Should that be parsed as:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        'http://benward.me'      /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Or&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': 'http://benward.me' /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
          'type': ['h-card'],          /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        &lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*** And if the former, then we're presumably saying that the value parsed due to the presence of a rel is always its own value, and does not combine with any other structures. I am fine with this, but I wanted to make sure we are ok with that explicitly. [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
**** +1 I think that since the rel attribute is specifically concerned with the relation to an href attribute, it should not be combined with other structures that are rightly declared uses classes.&lt;br /&gt;
***** The more I've thought about this and how consuming applications may want to treat rel semantics, the more it seems correct to keep rel semantics distinct from class semantics. Class semantics are quite general/flexible, whereas rel is quite specific, naming something else in terms of a relationship from the current page/microformat's perspective. I think we should consider putting rel values in their own 'rel' collection, separate from the 'properties' collection. E.g. the original rel-author p-author h-card markup example would be parsed into this:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from the p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        }&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
   'rel': {&lt;br /&gt;
     'author': ['http://benward.me'] /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
***** and if a post had multiple authors:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Tantek Çelik'], /* from 2nd p-author     */&lt;br /&gt;
          'type': ['h-card'],        /* from 2nd h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Tantek Çelik'], &lt;br /&gt;
            'url': ['http://tantek.com']&lt;br /&gt;
        },&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
   'rel': {&lt;br /&gt;
     'author': [&lt;br /&gt;
       'http://benward.me',      /* from rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
       'http://tantek.com'       /* from 2nd rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ]&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
***** This preserves the semantic distinction between rel and properties in general, and leaves it up to a higher-level application to implement any logic around showing &amp;quot;more info&amp;quot; about a rel-author, e.g. by correlating the rel-author URL with the 'url' of an hCard it found in the same entry. However, note that even in the earlier JSON data model, the rel-author value just shows up as another property value, and any higher level application would still have to do some correlation logic. At least with this JSON data model, applications that may be looking for a rel value in particular, or a property value in particular can do so without having one unintentionally pollute the other. [[User:Tantek|Tantek]] 17:33, 6 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Presumably we'd apply all the same property scoping rules to rel scoping as well. E.g. a rel hyperlink inside a microformat won't be seen by any containing microformat. - [[User:Tantek|Tantek]]&lt;br /&gt;
** Correct, it should be parsed in the same scope as all other class properties in the object.&lt;br /&gt;
*** Update: all rel microformats are now parsed at page-scope. Per-microformat scoping of rel has been found to be too confusing in practice (and against the general semantic of rel expressed in the HTML/HTML5 specs) [[User:Tantek|Tantek]] 01:00, 10 July 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This issue can be moved from resolved to closed once we've verified that all the above-mentioned and implied needs to write things up have occurred.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== deduping of rels ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-06-02 by [[User:Kevin Marks|Kevin Marks]] &lt;br /&gt;
* 2015-06-05 resolved by consensus and one real world implementation proof of implementability and verification of expected results. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Many sites have multiple duplicate rel links to the same url - a very common case is WordPress home pages eg [http://ma.tt ma.tt] &lt;br /&gt;
&lt;br /&gt;
Each post on the page has a block like&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;entry-meta&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;date&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://ma.tt/2015/05/beethoven-mozart-bach/&amp;quot; &lt;br /&gt;
    title=&amp;quot;Permalink to Beethoven, Mozart,&amp;amp;nbsp;Bach&amp;quot; rel=&amp;quot;bookmark&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;time class=&amp;quot;entry-date&amp;quot; datetime=&amp;quot;2015-05-31T22:42:00+00:00&amp;quot;&amp;gt;May 31, 2015&amp;lt;/time&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;categories-links&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://ma.tt/category/asides/&amp;quot; rel=&amp;quot;category tag&amp;quot;&amp;gt;Asides&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;author vcard&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;url fn n&amp;quot; href=&amp;quot;http://ma.tt/author/saxmatt/&amp;quot; &lt;br /&gt;
    title=&amp;quot;View all posts by Matt&amp;quot; rel=&amp;quot;author&amp;quot;&amp;gt;Matt&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- .entry-meta --&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As currently defined, the parser will create duplicate entries in &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; for each post:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;category&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;author&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;tag&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;home&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and in the &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; we will also see:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;author&amp;quot;, &lt;br /&gt;
                &amp;quot;author&amp;quot;, &lt;br /&gt;
                &amp;quot;author&amp;quot;, &lt;br /&gt;
                &amp;quot;author&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;View all posts by Matt&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;home&amp;quot;, &lt;br /&gt;
                &amp;quot;home&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/category/asides/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;, &lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;, &lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;, &lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Asides&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
These duplicates are unhelpful for parser consumers. We should:&lt;br /&gt;
* make them both sets - only listing distinct values. This will remove ordering information, but order is irrelevant for rel in html.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;category&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;author&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;tag&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;home&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
}&lt;br /&gt;
…&lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;author&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;View all posts by Matt&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;home&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/category/asides/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Asides&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* possibly we could also make &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; sets too. That would solve the information loss issue with the current parsers&lt;br /&gt;
** Resolution: in the case of duplicate other attributes, first one set wins. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 as the proposer. A version of mf2py that does this is running at unmung,com. see [http://www.unmung.com/mf2?url=https%3A%2F%2Fma.tt&amp;amp;html=&amp;amp;pretty=on fro ma.tt] or [http://www.unmung.com/?html=%3Ca+href%3D%22http%3A%2F%2Fma.tt%2Fcategory%2Fasides%2F%22+rel%3D%22category+tag%22%3EAsides%3C%2Fa%3E%0D%0A%3Ca+href%3D%22http%3A%2F%2Fma.tt%2Fcategory%2Fasides%2F%22+rel%3D%22category+tag%22%3EAsides%3C%2Fa%3E%0D%0A%3Ca+href%3D%22http%3A%2F%2Fma.tt%2Fcategory%2Fasides%2F%22+rel%3D%22category+tag%22%3EAsides%3C%2Fa%3E&amp;amp;pretty=on a simple test] [[User:Kevin Marks|Kevin Marks]] 23:49, 2 June 2015 (UTC)&lt;br /&gt;
* +1 makes sense to me, and not having them be sets in the current spec is likely an oversight on my part. Thanks for noting this issue. [[User:Tantek|Tantek]] 05:28, 3 June 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== include alternates in rels ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-06-01 by [[Tantek]], per inconsistency noted by Kevin Marks.&lt;br /&gt;
* 2015-06-05 resolved per consensus and one real world implementation proof of implementability. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
As fallout from the adoption and implementation of 'rel-urls' per [[microformats2-parsing-brainstorming#more_information_for_rel-based_formats]], we should:&lt;br /&gt;
* add &amp;quot;alternate&amp;quot; rels to the &amp;quot;rels&amp;quot; collection to make them easier to look-up in &amp;quot;rel-urls&amp;quot; - that is, all rel values end up in &amp;quot;rels&amp;quot; collections. No exceptions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as the documenter of this issue, and attempting to represent what I think KevinMarks intended with &amp;quot;rels&amp;quot; and &amp;quot;rel-urls&amp;quot;.&lt;br /&gt;
* +1 This makes sense to me, as the &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; should match so you can lookup in rels first, then get details about urls from rel-urls. We can drop &amp;quot;alternates&amp;quot; independently from this change. [[User:Kevin Marks|Kevin Marks]] 00:23, 2 June 2015 (UTC)&lt;br /&gt;
** +1 drop &amp;quot;alternates&amp;quot; independently now made a separate issue. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
* +1 Makes sense. And I agree with Kevin; I think parsers should deprecate &amp;quot;alternates&amp;quot; for now and drop it after a version cycle or two. [[User:Kylewm|Kylewm]] 00:30, 2 June 2015 (UTC)&lt;br /&gt;
* implemented in [https://github.com/kevinmarks/mf2py/commit/4dba45200eef11da811f64817d02044ab9e98b77 my fork of mf2py] and running on [http://www.unmung.com/?html=%3Ca+rel%3D%22author%22+href%3D%22http%3A%2F%2Fexample.com%2Fa%22%3Eauthor+a%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22author%22+href%3D%22http%3A%2F%2Fexample.com%2Fb%22%3Eauthor+b%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22in-reply-to%22+href%3D%22http%3A%2F%2Fexample.com%2F1%22%3Epost+1%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22in-reply-to%22+href%3D%22http%3A%2F%2Fexample.com%2F2%22%3Epost+2%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22alternate+home%22%0D%0A+++href%3D%22http%3A%2F%2Fexample.com%2Ffr%22%0D%0A+++media%3D%22handheld%22%0D%0A+++hreflang%3D%22fr%22%3EFrench+mobile+homepage%3C%2Fa%3E&amp;amp;pretty=on unmung] [[User:Kevin Marks|Kevin Marks]] 01:29, 2 June 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Empty properties overridden by implied rules against user expectation ===&lt;br /&gt;
Status: resolved, existing behavior correct, no changes to parsing spec.&lt;br /&gt;
&lt;br /&gt;
2015-07-03: raised by [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
&lt;br /&gt;
Emma Kuo brought up an issue (https://github.com/glennjones/microformat-node/issues/22) based on following the indieweb note pattern, where the content of a note is given both the e-content and p-name classes. If the element containing the notes only has none text content like image the p-name can have unexpected value. Here is the example she gave:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;a href=&amp;quot;http://this.site/photo&amp;quot; class=&amp;quot;u-url&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;e-content p-name&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;photo.jpg&amp;quot; class=&amp;quot;u-photo&amp;quot;/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        Some extraneous text&lt;br /&gt;
        &amp;lt;div class=&amp;quot;h-cite&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;a href=&amp;quot;http://someother.site/like&amp;quot; class=&amp;quot;u-url&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;a href=&amp;quot;http://this.site/photo&amp;quot; class=&amp;quot;u-like-of&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;e-content p-name&amp;quot;&amp;gt;liked this&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At the moment I parser this as follows: - if a property (p-name) is empty do not add it to the output. In this case &amp;quot;empty&amp;quot; is classed as not containing any non-whitespace text. As far as I known there is no guidance on how to handle &amp;quot;empty&amp;quot; properties in microformats paring rules, so I followed the conventions of JSON API's not to return &amp;quot;empty&amp;quot; properties.&lt;br /&gt;
&lt;br /&gt;
The side effect of the above is that p-name also has a number of &amp;quot;implied rules&amp;quot;. The &amp;quot;implied rules&amp;quot; try to automatically fill properties like p-name if there is no defined value. In the example above it uses the textContent of the parent h-entry, so value of the h-entry&amp;gt;p-name is the text content of the h-cite i.e. &amp;quot;likes this&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
1. We should not allow the &amp;quot;implied name rule&amp;quot; to get textContent from within a child h-* &lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;strike&amp;gt;+1 I believe this is inline with how we parse properties and will meet user/author expectations  [[User:Glenn Jones|Glenn Jones]] 9:22, 3 July 2015 (UTC)&amp;lt;/strike&amp;gt;&lt;br /&gt;
* -1 A nested h-* is still part of the content of the parent h-*, I don't quite understand the rationale for excluding it. For example, I may include lots of h-cards in the body of a post that references people and wouldn't want them to be excluded from the implied name generation. [[User:Kylewm|Kylewm]] 14:40, 3 July 2015 (UTC)&lt;br /&gt;
* -1 I'm not sure this would solve the problem because auto-filled text could come from the parent h-* (&amp;quot;some extraneous text&amp;quot; in the example above) [[User:emmak|Emma Kuo]] 20:50, 4 July 2015 (UTC)&lt;br /&gt;
* -1 I agree with the other -1s. This would break some of the simplicity of the model. [[User:Tantek|Tantek]] 05:12, 14 July 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
2.  We should not execute the &amp;quot;implied rules&amp;quot; where there is an author defined &amp;quot;empty&amp;quot; property.&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;strike&amp;gt;-1 Although the output would meet author expectations it is complex for parsers as they will have to keep state for each property through the whole series of parsing rules.  [[User:Glenn Jones|Glenn Jones]] 9:22, 3 July 2015 (UTC)&amp;lt;/strike&amp;gt;&lt;br /&gt;
* +1 An explicit, empty, p-name property should prevent an implicit p-name from being generated. For example tantek.com includes &amp;amp;lt;span class=&amp;quot;p-name&amp;quot;&amp;gt;&amp;amp;lt;/span&amp;gt; at the start of the h-feed to prevent a giant name from being auto-generated. From my reading of the parsing spec, I don't see any reason that blank strings should be excluded from parsing. (mf2py and php-mf2 will both happily include empty strings in their output) [[User:Kylewm|Kylewm]] 14:40, 3 July 2015 (UTC)&lt;br /&gt;
* +1 We already have interop on this between mf2py and phpmf2, as well as people depending on it to explicitly set empty property values. [[User:Tantek|Tantek]] 05:12, 14 July 2015 (UTC)&lt;br /&gt;
* +1 As we already have interop with two parsers and solid user issue from Emma we should take this approach. [[User:GlennJones|Glenn Jones]] 11:51, 29 July 2015 (UTC)&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html&lt;br /&gt;
&lt;br /&gt;
=== uf2 children inside a classic microformats root class name ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-020: (raised by kylewm) What should microformats2 children inside a classic microformats root class name do?&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
1. Nothing. Any unattached uf2 children inside a classic microformats root are ignored. Problems:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* However then there's a possible surprise if/when the author upgrades the classic microformats root to uf2, then all of a sudden all the new uf2 children show-up.&lt;br /&gt;
* Another downside: author adds uf2 markup, can't figure out why nothing is happening (because somewhere up the tree in code they didn't touch is classic microformats that are hiding these unattached uf2 children.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
2. Show up in the children collection of the classic microformats root&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Feels most predictable. When you add uf2 root class names anywhere, they will show up in the JSON output hierarchy.&lt;br /&gt;
* When you convert ancestor class microformats root class names to uf2 root class names, no surprise in terms of which microformats show up. Same children collection.&lt;br /&gt;
* +1 Thus I'm leaning towards this one, despite the fact that classic microformats never had a concept of generic unattached children. [[User:Tantek|Tantek]] 04:55, 21 January 2015 (UTC)&lt;br /&gt;
* +1 I think this is the best option I will implement it and update the wiki once its in the JavaScript parser. [[User:GlennJones|Glenn Jones]] 11:55, 29 July 2015 (UTC)&lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
3. Show up as peers to the classic microformats root. Issue(s)&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Has ths surprise aspect of if/when you convert the classic root class name to a uf2 root class name, the former peers become unattached children.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html&lt;br /&gt;
&lt;br /&gt;
=== any h- root class name overrides and stops backcompat root ===&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience. &lt;br /&gt;
&lt;br /&gt;
2015-020: The presence of any h-* root class name overrides and stop any backcompat parsing of classic microformats root class names on that same element. [[User:Tantek|Tantek]] 04:55, 21 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Tom &amp;amp; Kyle - implementable with the same backcompat root flag as needed for restricting backcompat root class name to only seeing backcompat property class names&lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
* I don't think I understand this rule. If I was stop all parsing of of classic microformats in the presence of any h-* root in a document then some of the other rules such as &amp;quot;uf2 children inside a classic microformats root class name&amp;quot; do not make sense. Could this item be expanded and explained a bit more? [[User:GlennJones|Glenn Jones]] 12:13, 29 July 2015 (UTC)&lt;br /&gt;
** added &amp;quot;on that same element&amp;quot; as that was what we were discussing/implying in this issue. [[User:Tantek|Tantek]] 22:49, 18 September 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== backcompat classic microformats should only see backcompat properties ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-020: When parsing a microformats vocabulary that indicates a backcompat root class name (and thus an absence of the microformats2 equivalent on the same element), parsers must only look for the backcompat properties that are specified explicitly for that backcompat root class.&lt;br /&gt;
[[User:Tantek|Tantek]] 04:04, 21 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Reasoning: such behaviour was never expected by authors, and crossing a classic microformats root class name with microformats2 property names were never explicitly expected nor specified to work.&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Tom &amp;amp; Kyle - implementable with the same backcompat root flag as needed for&lt;br /&gt;
* +1 I think this will help backcompat parsing, I will implement it and update the wiki once its in the JavaScript parser. The test suite will also need updating. [[User:GlennJones|Glenn Jones]] 11:55, 29 July 2015 (UTC) &lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html Currently you need to switch on the option &amp;quot;Block overlapping properties from different microformat versions&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== microformats2 root class names should only see microformats2 properties ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-020: When parsing a microformats2 root class name, only explicit microformats2 properties should be parsed. Any backcompat property names must be ignored.&lt;br /&gt;
[[User:Tantek|Tantek]] 04:04, 21 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Reasoning: such microformats2 authors should be expected to do all their microformats markup with microformats2 class names - this is a deliberate expectation so that their microformats aren't polluted with other (classic microformats) coincidentally named generic class names.&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 I think this will help backcompat parsing, I will implement it and update the wiki once its in the JavaScript parser. The test suite will also need updating. [[User:GlennJones|Glenn Jones]] 11:55, 29 July 2015 (UTC) &lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html Currently you need to switch on the option &amp;quot;Block overlapping properties from different microformat versions&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== implied properties on backcompat parsing unlikely to be intended ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Since classic microformats had no notion of implied properties, when implied property parsing occurs on backward compat classic microformats root class names, it is unlikely that any implied property (p-name u-url u-photo) was ever intended by the author of the classic microformat. [[User:Tantek|Tantek]] 02:43, 30 December 2014 (UTC)&lt;br /&gt;
Examples:&lt;br /&gt;
* see https://indiewebcamp.com/h-entry#bad_hentry_properties for a growing list&lt;br /&gt;
&lt;br /&gt;
'''Proposed resolution:'''&lt;br /&gt;
&lt;br /&gt;
* Be explicit in implied property parsing that it must only be done for explicit 'h-*' root class name microformats, not for any (back)compat parsing of microformats. Please comment on this proposal with &amp;quot;** comment&amp;quot; on new lines below. [[User:Tantek|Tantek]] 02:43, 30 December 2014 (UTC)&lt;br /&gt;
** +1 This makes a lot of sense to me. We should strive to parse mf1 as it was intended by the author, and I think you're right that implied rules are unlikely to be what was intended [[User:Kylewm|Kylewm]] 03:22, 30 December 2014 (UTC)&lt;br /&gt;
** +1 I think this will help backcompat parsing, but there are two major things to consider. It may well break some consumer code as the output for a microformats currently always has the name property, there may not be the defences code to check this is true when we remove the implied name rule for classic microformats.  The test suite will also need major updating as all the test output for classic microformats will have. I will look into implementing this and report back to the wiki. [[User:GlennJones|Glenn Jones]] 12:13, 29 July 2015 (UTC) &lt;br /&gt;
** Also it should be made clear that we are only removing the implied rules from classic microformats parsing and not the value property? [[User:GlennJones|Glenn Jones]] 12:13, 29 July 2015 (UTC)&lt;br /&gt;
*** The &amp;quot;parsing for implied properties&amp;quot; section only references name, photo, url properties. Where (in the spec) is the confusion about &amp;quot;value&amp;quot; coming from? [[User:Tantek|Tantek]]&lt;br /&gt;
** RESOLVED at [[2015-01-20]] meetup. [[User:Tantek|Tantek]] 04:09, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html Currently you need to switch on the option &amp;quot;Set implied properties by microformat version&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== link elements and u- parsing ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Raised by tantek on 2014-07-08 on [http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=8+Jul+2014&amp;amp;e=9+Jul+2014#c72916 irc]: should the parsing specification for handling u- properties be modified to include the &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; element? The potential downside is that [[invisible-metadata-is-considered-harmful]], however all known real world examples of &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; are &amp;lt;em&amp;gt;semi-&amp;lt;/em&amp;gt;visible data (not fully hidden).&lt;br /&gt;
&lt;br /&gt;
There are potential cases for wanting to use link as an alternative to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; (and &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt;), such as a whole page where the root &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; element is an &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; and the properties are included across the page: some in visible data in the &amp;lt;code&amp;gt;body&amp;lt;/code&amp;gt; while others are in the &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; as &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; elements. Example:&lt;br /&gt;
&lt;br /&gt;
One specific use-case is the semi-visible &amp;lt;code&amp;gt;link rel=&amp;quot;shortcut icon&amp;quot; href=&amp;quot;...&amp;quot;&amp;lt;/code&amp;gt; - which is visible sometimes in browser UI, and also when a user chooses &amp;quot;Add to Home Screen&amp;quot; on a mobile device. Such page level icons may be used as a &amp;lt;code&amp;gt;u-photo&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;u-logo&amp;lt;/code&amp;gt; of the containing &amp;lt;code&amp;gt;h-*&amp;lt;/code&amp;gt; object on the &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; element.&lt;br /&gt;
* http://adactio.com/about/myself/ on 2014-190&lt;br /&gt;
** &amp;lt;em&amp;gt;could&amp;lt;/em&amp;gt; use &amp;lt;code&amp;gt;&amp;amp;lt;html class=h-card&amp;amp;gt;&amp;lt;/code&amp;gt; - page is all about Jeremy Keith the person&lt;br /&gt;
** &amp;lt;em&amp;gt;icon / logo is only&amp;lt;/em&amp;gt; on &amp;lt;code&amp;gt;&amp;amp;lt;link&amp;amp;gt;&amp;lt;/code&amp;gt; tag which &amp;lt;em&amp;gt;could&amp;lt;/em&amp;gt; use &amp;lt;code&amp;gt;class=u-logo&amp;lt;/code&amp;gt;: &amp;lt;br/&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;link rel=&amp;quot;shortcut icon apple-touch-icon&amp;quot; type=&amp;quot;image/png&amp;quot; href=&amp;quot;/icon.png&amp;quot; /&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another specific use-case is a post permalink page, e.g. with &amp;lt;code&amp;gt;&amp;amp;lt;html class=h-entry&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* http://waterpigs.co.uk/notes/4WjHpC/&lt;br /&gt;
** &amp;lt;em&amp;gt;has&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;&amp;amp;lt;html class=&amp;quot;no-js h-entry hentry h-as-note&amp;quot; lang=&amp;quot;en&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another use-case is publishing links to PGP/GPG keys linked from the head which is currently handled by &amp;lt;code&amp;gt;&amp;amp;lt;link rel=pgpkey&amp;amp;gt;&amp;lt;/code&amp;gt; which is already supported in existing [[microformats2-parsing#parse_a_hyperlink_element_for_rel_microformats|microformats2 rel parsing]] of &amp;lt;code&amp;gt;link rel&amp;lt;/code&amp;gt; elements. Thus there is a (admittedly weak) argument for consistently parsing &amp;lt;em&amp;gt;both&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;&amp;amp;lt;link rel&amp;amp;gt;&amp;lt;/code&amp;gt; &amp;lt;em&amp;gt;and&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;&amp;amp;lt;link class=&amp;quot;u-*&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
E.g. inside that aforementioned real world &amp;lt;code&amp;gt;&amp;amp;lt;html class=h-entry&amp;amp;gt;&amp;lt;/code&amp;gt; post permalink page example, &lt;br /&gt;
* why should &amp;lt;code&amp;gt;&amp;amp;lt;link rel=&amp;quot;in-reply-to&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; work &lt;br /&gt;
* but not &amp;lt;code&amp;gt;&amp;amp;lt;link class=&amp;quot;u-in-reply-to&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; ?&lt;br /&gt;
The slightly stronger argument for consistency of link handling is that it &amp;lt;strong&amp;gt;[[simpler|simplifies]]&amp;lt;/strong&amp;gt; the publisher (and parser) model: &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;area&amp;amp;gt;&amp;lt;/code&amp;gt; work for both &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;&lt;br /&gt;
* why does &amp;lt;code&amp;gt;&amp;amp;lt;link&amp;amp;gt;&amp;lt;/code&amp;gt; only work for &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; ?&lt;br /&gt;
* it would be &amp;lt;em&amp;gt;simpler&amp;lt;/em&amp;gt; if all three tags just worked (in the same way) for both &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Should the parsing spec be modified to handle these cases?''' —[[User:TomMorris|Tom Morris]] 09:25, 9 July 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
** I'm generally in favour. It'd be good to see what other parser developers think. —[[User:TomMorris|Tom Morris]] 10:16, 9 July 2014 (UTC)&lt;br /&gt;
** adding this to the parsers won't be an issue. &amp;lt;del datetime=&amp;quot;2014-07-09T18:45&amp;quot;&amp;gt;The question is should the door be opened to hidden mf data?&amp;lt;/del&amp;gt; &amp;lt;ins datetime=&amp;quot;2014-07-09T18:45&amp;quot;&amp;gt;Up on further reflection, there seems to be no need to distinguish between &amp;lt;code&amp;gt;rel=property&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class=u-property&amp;lt;/code&amp;gt; on link elements. So I am in favour for consistency.&amp;lt;/ins&amp;gt; [[User:KP|Kartik]] 18:30, 2014-07-09 (EST)&lt;br /&gt;
** RESOLVED at [[2015-01-20]] meetup. Make link consistent with a.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== drop alternates collection ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-06-01 by [[Tantek]], per inconsistency noted by Kevin Marks.&lt;br /&gt;
* 2015-06-05 split into separate issue from include alternates in rels per implementation feedback from Kevin Marks. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
As fallout from the adoption and implementation of 'rel-urls' per [[microformats2-parsing-brainstorming#more_information_for_rel-based_formats]], we should:&lt;br /&gt;
* drop &amp;quot;alternates&amp;quot; as its no longer needed, and all current consuming code clients like rel-urls better anyway.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as the documenter of this issue, and attempting to represent what I think KevinMarks intended with &amp;quot;rels&amp;quot; and &amp;quot;rel-urls&amp;quot; in original issue now &amp;quot;include alternates in rels&amp;quot;, we no longer need &amp;quot;alternates&amp;quot;, and those with client consuming code have universally indicated that they would rather use rel-urls anyway. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats2-parsing]]&lt;br /&gt;
* [[microformats2]]&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65436</id>
		<title>microformats2-parsing-issues</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65436"/>
		<updated>2016-03-13T20:39:50Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: /* exclude style elements before parsing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is for documenting issues with the [[microformats2-parsing]] specification.&lt;br /&gt;
&lt;br /&gt;
== issues ==&lt;br /&gt;
Open issues in various states of partial resolution from none to nearly resolved.&lt;br /&gt;
&lt;br /&gt;
=== ignore u-camelCase properties ===&lt;br /&gt;
Due to Suit CSS (and others? citations?) recent (2015-?) use of &amp;quot;u-*&amp;quot; class names for so-called &amp;quot;[http://davidtheclark.com/on-utility-classes/ utility classes]&amp;quot;, we are seeing some false positives in a few very rare instances, e.g.: http://www.unmung.com/mf2?url=http%3A%2F%2Fwww.kevinmarks.com%2Ftwitterutils.html&amp;amp;html=&amp;amp;pretty=on&lt;br /&gt;
&lt;br /&gt;
(Nearly) all these &amp;quot;utility classes&amp;quot; use camelCase for the class name suffixes, thus we can filter them out by looking for camelCase (since microformats class name conventions are always all lowercase and hyphenated), or even just looking for (and rejecting) *any* capital letters.&lt;br /&gt;
&lt;br /&gt;
Proposal:&lt;br /&gt;
* microformats2 parsers MUST IGNORE u-* classnames where the * has any uppercase letter(s).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] Let's get this fix rolling quickly to avoid further pollution.&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== exclude style elements before parsing ===&lt;br /&gt;
[http://logs.glob.uno/?c=freenode%23microformats#c85457 2016-01-25 raised in #microformats]&lt;br /&gt;
&lt;br /&gt;
Ran into an issue of a &amp;lt;style&amp;gt; element being parsed as plain text in a p-name. Should [[microformats2-parsing]] be updated to indicate &amp;lt;style&amp;gt; should be excluded when parsing? Appears to implicitly fall under [[microformats2-parsing#note_HTML_parsing_rules]]&lt;br /&gt;
&lt;br /&gt;
Sample link: http://veganstraightedge.com/notes/2016/01/16/tonight-s-dinner-tacocleanse-beverly-hills-c&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;script&amp;gt; tag can be similarly problematic.&lt;br /&gt;
&lt;br /&gt;
Proposal: Drop both &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; elements completely when parsing any property (including e-* HTML values). [[User:Tantek|Tantek]] 01:01, 29 February 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Please discuss and/or give +1/0/-1 feedback&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as proposer&lt;br /&gt;
* +1 [[User:Aaronpk|aaronpk]] as a consumer of HTML from an e-* property, I will always be sanitizing the HTML and removing &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; anyway&lt;br /&gt;
* +1 [[User:Kylewm|kylewm]]&lt;br /&gt;
* 0 [[User:Barnabywalters|Barnaby]] +1 to removing the contents of &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; from all plaintext properties (and 'value' property in HTML dicts), -1 to removing &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; from HTML. That’s a job for a sanitization stage. As aaronpk points out, sanitization will have to be done anyway if the content is to be reposted, so doing so in the parser doesn’t actually save anyone any work, but removes information which could be useful to people (example use cases: publishing posts with embedded per-post styling, publishing interactive HTML documents with embedded javascript)&lt;br /&gt;
** +1 this seems like reasonable feedback to make a new refined proposal. [[User:Tantek|Tantek]] 20:37, 13 March 2016 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Proposal 2: Drop both &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; elements completely when parsing any property (except for e-* HTML values, which preserve all markup). [[User:Tantek|Tantek]] 20:37, 13 March 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Please discuss and/or give +1/0/-1 feedback&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as proposer&lt;br /&gt;
* +1 [[User:Barnabywalters|Barnaby]&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== use poster if no src on video for u props ===&lt;br /&gt;
[https://indiewebcamp.com/irc/2015-12-13#t1450035721661 2015-12-13 raised in #indiewebcamp]&lt;br /&gt;
&lt;br /&gt;
There is a use-case of marking up the &amp;quot;poster&amp;quot; of a video element as the u-featured of an [[h-entry]], to do that, we need to change [[microformats2-parsing#parsing_a_u-_property|u- property parsing]] to look at the poster attribute of the video element, after it's looked for the src attribute.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;quot; else if video.u-x[poster], then get the poster attribute &amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Real-world example of markup in the wild:&lt;br /&gt;
* http://veganstraightedge.com/videos/2013/5/31/1/backyard-squirrel-buddy&lt;br /&gt;
** and likely all other videos posted there.&lt;br /&gt;
&lt;br /&gt;
Background discussion that led to this proposal:&lt;br /&gt;
* https://indiewebcamp.com/irc/2015-12-13#t1450035721661&lt;br /&gt;
&lt;br /&gt;
This seems very straightforward so I've added it as PROPOSED directly in the parsing spec. This issue is for tracking the discussion.&lt;br /&gt;
&lt;br /&gt;
Feedback from parser implementers please!&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== uf2 children on backcompat properties ===&lt;br /&gt;
[http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=today#c84632 2015-11-24 raised by Calli] in #microformats&lt;br /&gt;
&lt;br /&gt;
Related but different from [[#uf2_children_inside_a_classic_microformats_root_class_name]], when there is a uf2 child directly on a backcompat property, what should happen? E.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;div class=&amp;quot;adr h-adr&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;locality&amp;quot;&amp;gt;MF1&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;p-locality&amp;quot;&amp;gt;MF2&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What is the expected behavior and parser output?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
&amp;quot;items&amp;quot;: [{ &lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;adr&amp;quot;: [{&lt;br /&gt;
      &amp;quot;value&amp;quot;: &amp;quot;MF1MF2&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-adr&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;locality&amp;quot;: [&amp;quot;MF2&amp;quot;],&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;MF1MF2&amp;quot;]&lt;br /&gt;
       }&lt;br /&gt;
     }]&lt;br /&gt;
   }  &lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Proposal: the nested &amp;quot;adr h-adr&amp;quot; child is treated as an mf2 object, not backcompat, and thus the resulting parsed &amp;quot;locality&amp;quot; property has a single value of &amp;quot;MF2&amp;quot;. Proposed by Calli, noting that Glenn Jones's microformatshiv gets that result currently, and it would be easier for him (Calli) to implement this way.&lt;br /&gt;
** +1 Tantek, seems reasonable and the reasoning provided is good (we have one implementation this way already)&lt;br /&gt;
** +1 Kyle, this is consistent with the resolution to the related issue&lt;br /&gt;
** +1 Calli, yes, this is easier for me to implement (than taking both MF1 and MF2 properties) because it is consistent - for me, consistency is the controlling factor in favor rather than ease of parser implementation&lt;br /&gt;
** ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;adr h-custom&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;locality&amp;quot;&amp;gt;MF1&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;p-locality&amp;quot;&amp;gt;MF2&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
&amp;quot;items&amp;quot;: [{ &lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;adr&amp;quot;: [{&lt;br /&gt;
      &amp;quot;value&amp;quot;: &amp;quot;MF1MF2&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-custom&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;locality&amp;quot;: [&amp;quot;MF2&amp;quot;],&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;MF1MF2&amp;quot;]&lt;br /&gt;
       }&lt;br /&gt;
     }]&lt;br /&gt;
   }  &lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per the [[#any_h-_root_class_name_overrides_and_stops_backcompat_root]] resolution, the class name &amp;quot;h-custom&amp;quot; overrides the use of &amp;quot;adr&amp;quot; as a backcompat root.&lt;br /&gt;
&lt;br /&gt;
=== default generated HTML ===&lt;br /&gt;
2015-09-08 raised by Tantek in #indiewebcamp&lt;br /&gt;
&lt;br /&gt;
Should there be a default (perhaps not quite &amp;quot;canonical&amp;quot;) way to map/generate HTML+microformats2 from a parsed mf2 JSON output?&lt;br /&gt;
&lt;br /&gt;
E.g. straw proposal:&lt;br /&gt;
* JSON/mf2 -&amp;gt; [[XOXO]]+mf2&lt;br /&gt;
&lt;br /&gt;
Existing work / mappings:&lt;br /&gt;
* https://github.com/snarfed/granary/blob/master/granary/microformats2.py#L295&lt;br /&gt;
&lt;br /&gt;
Related to:&lt;br /&gt;
* https://github.com/snarfed/granary/issues/31&lt;br /&gt;
&lt;br /&gt;
Use-cases:&lt;br /&gt;
* default webview / presentation for a site that stores mf2 JSON output&lt;br /&gt;
* possibly a way to implement a distributed HTTP webcache retrieval protocol&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] I think we should have this, but am open to proposals on specifics!&lt;br /&gt;
* +1 [[User:GlennJones|Glenn]] Also think this is worth looking at, but I am not sure it should be part of the parser spec. Feels like it should be built as a separate library and have it own spec on the microformats wiki.&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Noscript skip/parse ===&lt;br /&gt;
2015-07-28&lt;br /&gt;
&lt;br /&gt;
Should mf parsers skip &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; tag in the HTML, like the &amp;lt;code&amp;gt;&amp;lt;template&amp;gt;&amp;lt;/code&amp;gt; tag mentioned in http://microformats.org/wiki/microformats2-parsing#note_HTML_parsing_rules ?&lt;br /&gt;
&lt;br /&gt;
mf2py skips &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; when using the html5lib DOM parser but no when using lxml parser. Example use of &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; https://kartikprabhu.com/ featured images have a no javascript fallback image inside &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;class='u-featured'&amp;lt;/code&amp;gt; markup.&lt;br /&gt;
* html5lib actually HTML-escapes the contents of &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt;, so to mf2py it just looks like plain text with no tags. In Woodwind, I've resorted to using regex to strip out &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; tags before parsing (very hacky). [[User:Kylewm|Kylewm]] 15:52, 25 August 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] skip noscript (and inside) because in today's typical browsing contexts, nothing in noscript is displayed, thus we should discourage marking up effectively invisible content.&lt;br /&gt;
** Proposed change to [[microformats2-parsing#parse_a_document_for_microformats]]:&lt;br /&gt;
*** from: &amp;quot;follow the HTML parsing rules&amp;quot;&lt;br /&gt;
*** to: &amp;quot;follow the HTML parsing rules (including skipping/omitting &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; elements, e.g. like the html5lib DOM parser)&lt;br /&gt;
* -1 [[User:GlennJones|Glenn]] This subject does need to be address, but differently to proposed change. My personal view is that  e-* html should be passed through raw and then the consumer can process it in a way they feel fit. Its a case for helper libraries. I am about to build a helper library to do this based on the Readability code to post process e-* html. Other people may want to take different approaches, defining this in the spec feels like move into a whole area of new functionally.  &lt;br /&gt;
&lt;br /&gt;
As a separate new point we need to consider &amp;quot;exclude tags&amp;quot; lists for parsed text from html.  We should consider &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;noframe&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;template&amp;gt;&amp;lt;/code&amp;gt; there maybe other I have not gone through all the tags in current HTML spec. Also we should consider what to do about the more common pattern of fallback text within media tags &amp;lt;code&amp;gt;&amp;lt;video&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;audio&amp;gt;&amp;lt;/code&amp;gt; etc. This should be explicitly discussed in the parsing rules. At the moment my experimental text normalisation does exclude tags, but the default text parse does not. Currently the fallback content in media tags like &amp;lt;code&amp;gt;&amp;lt;video&amp;gt;&amp;lt;/code&amp;gt; is added to the parse text. 12:56, 25 Septemeber 2015 (UTC)&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Standard datetime format ===&lt;br /&gt;
2015-07-28&lt;br /&gt;
&lt;br /&gt;
http://microformats.org/wiki/microformats2-parsing#parsing_a_dt-_property does not specify any standard format to use for datetimes. e.g.  &amp;lt;pre&amp;gt;2015-07-28T12:55:33&amp;lt;/pre&amp;gt; vs &amp;lt;pre&amp;gt;2015-07-28 12:55:33&amp;lt;/pre&amp;gt;&lt;br /&gt;
Would be good to standardize this to compare various parser outputs.&lt;br /&gt;
&lt;br /&gt;
2015-07-29: This subject is (somewhat) covered in http://microformats.org/wiki/iso-8601 As it stands the JavaScript parsers support output in the 3 main profiles, 'W3C Note', 'RFC 3339' and 'HTML5' plus 'auto' which keeps authors format. The default date output for the JavaScript parsers is the same format as the date was originally authored in. This can be changes by setting the options.dateFormat switch to any of the other profiles mentioned. It would be good if other parser also had a switch to force output to a common profiles so we could compare various parser outputs, but I think the default should be how a date was authored. All output whatever profile should also keeps the authored level of specificity, i.e. not adding minutes or seconds if they are not in the input date string. This is important if you want to compare parser outputs. &lt;br /&gt;
&lt;br /&gt;
The only exception to this where date and times are combined such as the implied h-event rule for dt-start and dt-end where I output in the HTML5 style 2015-07-29 12:55:33 as there is no predefined author preference and HTML5 profile is more human readable. [[User:GlennJones|Glenn Jones]] 11:02, 29 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] output more human readable &amp;lt;code&amp;gt;2015-07-28 12:55:33&amp;lt;/code&amp;gt; canonically, with authored level of specificity, i.e. not adding minutes or seconds if they are not in the input date string.&lt;br /&gt;
** Let's update any test cases as needed for this. - [[User:Tantek|Tantek]]&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== implied date for dt properties both mf2 and backcompat ===&lt;br /&gt;
The [[value-class-pattern#microformats2_parsers|value class pattern dt-* date proposal]] should apply to both mf2 dt-* properties, and backcompat classic microformats, to preserve the hAtom / hCalendar optimizations noted on that page, but in a generic way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] 16:12, 18 August 2015 (UTC)&lt;br /&gt;
* +1 [[User:Glenn Jones|Glenn Jones]] 20 August 2015&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== implied properties when an explicit class is provided ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Should &amp;quot;u-url&amp;quot; still be implied if another explicit class is already provided, as below. This is a contrived example, but it is taken from Bridgy's unit tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;article class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;a class=&amp;quot;u-like-of&amp;quot; href=&amp;quot;http://orig.domain/baz&amp;quot;&amp;gt;liked this&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/article&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, http://orig.domain/baz is almost certainly not the u-url, so IMO it would be better to leave it out —[[User:Kylewm|Kylewm]] 15:10, 7 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
'''2015-01-20 consensus'''&lt;br /&gt;
* Changed my mind. Simpler to do nothing. Example provided is artificially constructed, does not reflect likely real world confusion of if we make implied properties more complicated. [[User:Tantek|Tantek]] 06:26, 21 January 2015 (UTC)&lt;br /&gt;
* ++ Consensus on do nothing for this case. At [[2015-01-20]]&lt;br /&gt;
&lt;br /&gt;
'''Proposed resolution:'''&lt;br /&gt;
* Changed again. Due to indiewebcamp.com/edit use-case, this now makes sense for all implied properties. That is:&lt;br /&gt;
** If an element has any explicit property class name(s) on it, then it must not be used to imply any properties. [[User:Tantek|Tantek]] 20:50, 27 May 2015 (UTC)&lt;br /&gt;
*** +1 this seems reasonable, if a publisher is going to add an mf2 class, it is unlikely they want other classes automatically implied from the same value [[User:Aaronpk|Aaronpk]] 23:19, 29 November 2015 (UTC)&lt;br /&gt;
*** -1 for now. To my knowledge, this has only been observed in artificially constructed unit tests and examples, and it adds some weird edge cases that are hard to reason about. [[User:Kylewm|Kylewm]] 00:46, 1 December 2015 (UTC)&lt;br /&gt;
*** ... provide input on this proposal here&lt;br /&gt;
** Refined: Or should this be refined by per parsing prefix? [[User:Tantek|Tantek]] 22:59, 18 September 2015 (UTC) &lt;br /&gt;
*** Any explicit &amp;quot;p-*&amp;quot; property means no implied &amp;quot;p-name&amp;quot; from that element&lt;br /&gt;
*** Any explicit &amp;quot;u-*&amp;quot; property means no implied &amp;quot;u-url&amp;quot; nor &amp;quot;u-photo&amp;quot; from that element.&lt;br /&gt;
*** ... provide input on this refined proposal here&lt;br /&gt;
** Suggestion: split this issue up per property. I think it makes sense for u-url and can be easily added to the spec as e.g. &amp;quot;.h-x&amp;gt;a[href]:only-of-type:not[.h-*&amp;lt;strong&amp;gt;,.u-*&amp;lt;/strong&amp;gt;]&amp;quot;. [[User:Kylewm|Kylewm]] 00:46, 1 December 2015 (UTC)&lt;br /&gt;
*** Obviously wrong to assume a link explicitly pointing elsewhere is our &amp;quot;url&amp;quot; &lt;br /&gt;
*** More difficult to make a case for photo and especially for name.&lt;br /&gt;
*** &amp;quot;name&amp;quot; is implied at least by [.h-x textContent], so often the excluded element would end up included anyway.&lt;br /&gt;
*** ... provide input on this refined proposal here&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== whitespace collapsing revisited ===&lt;br /&gt;
2015-05-27: (raised by [[User:Kevin Marks|Kevin Marks]] per Glenn Jones)&lt;br /&gt;
&lt;br /&gt;
Revising the microformats tests to conform to the &amp;quot;don't collapse whitespace&amp;quot; rule below reveals some non-intuitive cases. &lt;br /&gt;
preserving whitespace in addresses is somewhat defensible, but in an implied name it is often unhelpful, as it preserves non-user visible space there for authoring reasons.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
[https://github.com/microformats/tests/commit/a325e0e9bc2089507e69b1883f7065a3316e07c2#diff-d577012c1438978a571c4049179607f0 this test] shows how extraneous whitespace ends up in the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-review-aggregate&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;p-item h-event&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 class=&amp;quot;p-name&amp;quot;&amp;gt;Fullfrontal&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;p class=&amp;quot;p-description&amp;quot;&amp;gt;A one day JavaScript Conference held in Brighton&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;time class=&amp;quot;dt-start&amp;quot; datetime=&amp;quot;2012-11-09&amp;quot;&amp;gt;9th November 2012&amp;lt;/time&amp;gt;&amp;lt;/p&amp;gt;    &lt;br /&gt;
    &amp;lt;/div&amp;gt; &lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;p class=&amp;quot;p-rating&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;p-average value&amp;quot;&amp;gt;9.9&amp;lt;/span&amp;gt; out of &lt;br /&gt;
        &amp;lt;span class=&amp;quot;p-best&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt; &lt;br /&gt;
        based on &amp;lt;span class=&amp;quot;p-count&amp;quot;&amp;gt;62&amp;lt;/span&amp;gt; reviews&lt;br /&gt;
    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
give a parsed result of:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;items&amp;quot;: [{&lt;br /&gt;
        &amp;quot;type&amp;quot;: [&amp;quot;h-review-aggregate&amp;quot;],&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
            &amp;quot;item&amp;quot;: [{&lt;br /&gt;
                &amp;quot;value&amp;quot;: &amp;quot;Fullfrontal\nA one day JavaScript Conference held in Brighton\n9th November 2012&amp;quot;,&lt;br /&gt;
                &amp;quot;type&amp;quot;: [&amp;quot;h-event&amp;quot;],&lt;br /&gt;
                &amp;quot;properties&amp;quot;: {&lt;br /&gt;
                    &amp;quot;name&amp;quot;: [&amp;quot;Fullfrontal&amp;quot;],&lt;br /&gt;
                    &amp;quot;description&amp;quot;: [&amp;quot;A one day JavaScript Conference held in Brighton&amp;quot;],&lt;br /&gt;
                    &amp;quot;start&amp;quot;: [&amp;quot;2012-11-09&amp;quot;]&lt;br /&gt;
                }&lt;br /&gt;
            }],&lt;br /&gt;
            &amp;quot;rating&amp;quot;: [&amp;quot;9.9&amp;quot;],&lt;br /&gt;
            &amp;quot;average&amp;quot;: [&amp;quot;9.9&amp;quot;],&lt;br /&gt;
            &amp;quot;best&amp;quot;: [&amp;quot;10&amp;quot;],&lt;br /&gt;
            &amp;quot;count&amp;quot;: [&amp;quot;62&amp;quot;],&lt;br /&gt;
            &amp;quot;name&amp;quot;: [&amp;quot;Fullfrontal\nA one day JavaScript Conference held in Brighton\n9th November 2012\n\n\n9.9 out of \n        10 \n        based on 62 reviews&amp;quot;]&lt;br /&gt;
        }&lt;br /&gt;
    }],&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is a reasonable textual representation of the event, but the implied &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; is full of spurious whitespace that any consumer would have to strip. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/microformats/tests/commit/4c9690b53b0a2f40440abac8e609c51ac7dd6d56 h-review] has similar issues&lt;br /&gt;
&lt;br /&gt;
2015-05-28: (Addition by [[User:GlennJones|Glenn Jones]])&lt;br /&gt;
&lt;br /&gt;
The example below shows the type of markup most effected by the &amp;quot;implied name&amp;quot; and &amp;quot;don't collapse whitespace&amp;quot; rule working together to produce output that is hard to use without further processing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;h-card&amp;quot; href=&amp;quot;http://glennjones.net&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;p-given-name&amp;quot;&amp;gt;Glenn&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;p-family-name&amp;quot;&amp;gt;Jones&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The output for the name property from the above HTML would be &amp;lt;code&amp;gt;Glenn\r\n     Jones&amp;lt;/code&amp;gt; using the (trim lead/trailing) suggested in the  parsing spec.  I could of course move the spans onto one line, but it feels fragile to consider whitespace sensitivity in HTML like this. Added to the fact that HTML templating environments often take away that level of whitespace control from authors anyway.&lt;br /&gt;
&lt;br /&gt;
There are issues with both: keeping whitespace, returns and tabs from parsed HTML or collapse that whitespace. If we return the whitespace it becomes mal-formatted for humans because it was only added to make the HTML code understandable and in most cases was not meant to be used/read outside of that context. If we collapse the whitespace we can have issues of whitespace sensitive text from &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; etc. being incorrectly formatted. &lt;br /&gt;
&lt;br /&gt;
Providing a CSS aware innerText feature would produce the most useable output, but this is too complex/time consuming to build for most parser developers. In the face of no perfect solution I have taken the 80:20 view,  whereby errant whitespace, causes me considerably more problems than mal-formatted &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; content so I collapse whitespace on all text returned. &lt;br /&gt;
&lt;br /&gt;
This feature is a non-CSS aware version of innerText. It does not cover all rendering edge cases, but enough to produce practical output.&lt;br /&gt;
&lt;br /&gt;
For now, I have started changing the node parser to flag &amp;quot;white-space collapsing&amp;quot; as an experimental feature which is off by default i.e. http://glennjones.net/tools/microformats/ but personally I will parse everything with this on as I find it the most practical solution.  &lt;br /&gt;
&lt;br /&gt;
Not sure where that leaves me on the options below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
Choose from:&lt;br /&gt;
# keep as is and every parser client has to post process for common cases.&lt;br /&gt;
# '''keep as is but have mf2 parser trim leading/trailing whitespace (likely to provide desired result and be reasonably backcompat)'''&lt;br /&gt;
#* +1 my preference of the two options. [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
#* +1 though this doesn't solve any of the problems discussed above, it's still worth doing [[User:Kevin Marks|Kevin Marks]] 16:41, 28 May 2015 (UTC)&lt;br /&gt;
#* +1 will help parsers be more consistent with each other, and I haven't ever encountered a case where preserving leading/trailing whitespace was desirable [[User:Kylewm|Kylewm]] 20:45, 8 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
2015-06-08 option 2 resolved by consensus and implementation in mf2py.&lt;br /&gt;
&lt;br /&gt;
Somewhat orthogonal:&lt;br /&gt;
* make &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; on properties with children normalise whitespace&lt;br /&gt;
** -1 Seems like a bad idea as this &amp;quot;value&amp;quot; is supposed to be the same as if there was no embedded child microformat. [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
* make implied &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; normalise whitespace.&lt;br /&gt;
** +0 This is reasonable and already done somewhat in the parsing spec (trim lead/trailing). [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
** +1 Given the universality of name, this would fix most of the issues we see. [[User:Kevin Marks|Kevin Marks]] 16:41, 28 May 2015 (UTC)&lt;br /&gt;
* Put \n in textual forms if there is a &amp;lt;code&amp;gt;&amp;amp;lt;p&amp;amp;gt;&amp;lt;/code&amp;gt; tag in the original.&lt;br /&gt;
** -1 that's a long path to go down with whitespace equivalents for HTML markup. [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
** would only preserving whitespace if in &amp;amp;lt;pre&amp;amp;gt; be an 80:20 compromise? [[User:Kevin Marks|Kevin Marks]] 16:41, 28 May 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Because there are both code markup and specific vocabulary (label) needs for preserving whitespace, we are compelled to preserve in general, perhaps except for very specific limited generic cases (e.g. trim leading/trailing, &amp;quot;value&amp;quot; parsing, implied name). [[User:Tantek|Tantek]]&lt;br /&gt;
&lt;br /&gt;
=== u- parsing iframe src ===&lt;br /&gt;
Currently if I put u-* on an iframe it gets the value of the fallback text. This seems a shame. Getting the URL seems a sensible answer.&lt;br /&gt;
[[User:Kevin Marks|Kevin Marks]] 09:07, 11 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== i- parsing iframe src ===&lt;br /&gt;
&lt;br /&gt;
More controversially, what about using an iframe for transclusion? A use case here is comments on a static site. Currently, on eg http://www.kevinmarks.com/microformatschema.html the comments are injected via JS, making them opaque to parsers and thus precluding further parsing such as salmentions.&lt;br /&gt;
&lt;br /&gt;
If instead they were an iframe embedding them, a parser could optionally fetch its contents, parse them, and include them in the parsed mf2 output at that point. Overloading u-* for this seems wrong; e-* as below for srcdoc would have a different effect; this implies a new prefix directive would be needed. A strawman i-* (for include) may work.&lt;br /&gt;
[[User:Kevin Marks|Kevin Marks]] 09:07, 11 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== e- parsing iframe srcdoc ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Proposal: addition of a new e-* parsing rule for iframe elements with srcdoc attributes. E.G.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;iframe class=&amp;quot;e-content&amp;quot; srcdoc=&amp;quot;&amp;lt;p&amp;gt;A paragraph of HTML with &amp;amp;quot;quoted quotes&amp;amp;quot; &amp;amp;amp;amp; doubly quoted ampersands&amp;lt;/p&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;items&amp;quot;: [{&lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-entry&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
   &amp;quot;content&amp;quot;: [&amp;quot;&amp;lt;p&amp;gt;A paragraph of HTML with &amp;amp;quot;quoted quotes&amp;amp;quot; &amp;amp;amp; doubly quoted ampersands&amp;lt;/p&amp;gt;&amp;quot;]&lt;br /&gt;
  }&lt;br /&gt;
 }]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would allow, for example, HTML comments to be sandboxed inside iframes but still parsable as microformats.&lt;br /&gt;
&lt;br /&gt;
I believe the correct processing would be to leave &amp;amp;quot; entities as they are but to unescape any doubly-escaped ampersands.&lt;br /&gt;
&lt;br /&gt;
** Is there any use case for that? —[[User:TomMorris|Tom Morris]] 12:32, 14 September 2013 (UTC)&lt;br /&gt;
** +1 we need documentation of use case and existing sites publishing iframe srcdoc like this - [[User:Tantek|Tantek]] 00:47, 15 September 2013 (UTC)&lt;br /&gt;
** Rejected by consensus at [[2015-01-20]] meetup due to lack of real world uses cases / existing sites. [[User:Tantek|Tantek]] 06:26, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to interpret mf2 properties on select ===&lt;br /&gt;
How should select elements with properties be treated any differently?&lt;br /&gt;
&lt;br /&gt;
Awaiting real world examples / stronger use-cases, until then no special treatment of select elements with properties:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Are there any real world examples of select elements with microformats properties?&lt;br /&gt;
* What would the use-case be for putting a microformats property class name on a select element?&lt;br /&gt;
* Nothing special. By consensus at [[2015-01-20]] meetup due to lack of real world uses cases / existing sites. [[User:Tantek|Tantek]] 06:26, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to interpret mf2 root name on form ===&lt;br /&gt;
See what to do about &amp;lt;em&amp;gt;root class names&amp;lt;/em&amp;gt; on &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; elements in particular:&lt;br /&gt;
* [[hcard-input]]&lt;br /&gt;
&lt;br /&gt;
Awaiting real world examples / stronger use-cases, until then, no special treatment of root class names on &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; elements:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Are there any real world examples of a &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; element with a microformats root class name?&lt;br /&gt;
* [[hcard-input]] is one possible use-case, is anyone attempting to use forms for hCard input, e.g. with scripts to help make it work?&lt;br /&gt;
* Are there other use-cases for putting a microformats root class name on a &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; element?&lt;br /&gt;
* As of [[2015-01-20]] - no consensus - need more input as to when/why this is useful to do anything special.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Parsing Literal Values===&lt;br /&gt;
Issue raised by: [[User:BenWard|Ben Ward]]&lt;br /&gt;
&lt;br /&gt;
It is proposed for microformats2 that all microformats be parsable from just their root element, e.g. &amp;lt;code&amp;gt;&amp;amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;Ben Ward&amp;amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; would create an hCard with the following properties after parsing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
  'type': ['h-card'],&lt;br /&gt;
  'properties': {&lt;br /&gt;
     'name': ['Ben Ward']&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a four-fold change from the current [[hCard]]:&lt;br /&gt;
# type is generically identifiable as a microformat root, even in parsed form. The use of the 'h-' prefix persists into the type of the object. This is deliberately so, as a result of re-using the JSON data model of microdata which itself is re-using a common JSON convention, such that microformatted data is clearly distinguishable (as opposed to any other random schema that may be using a similar data model).&lt;br /&gt;
# root-class-only support. Per [[microformats-2-implied-properties]], the ''name'' property is implied by the entirety of the root class name element.&lt;br /&gt;
# 'name' instead of 'fn'. As also documented in [[microformats-2-implied-properties]], the continuous challenges/problems and need to repeatedly re-explain 'fn' over the years combined with the real-world market response of nearly every other party doing a person vocabulary renaming 'fn' to 'name', microformats 2 makes this change as well.&lt;br /&gt;
# There is no automatic parse-time inferring of &amp;lt;code&amp;gt;'given-name': ['Ben']&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;'family-name': ['Ward']&amp;lt;/code&amp;gt;. Any such inferring *might* be made by a vCard converter, but is left up to that specific application (not all applications) built on that vocabulary, though even in that case it may not be necessary, as an empty &amp;quot;N:;;;&amp;quot; [[vCard]] property is sufficient to satisfy the N property requirement of [[vCard]], and also causes no problems when imported into various [[vcard-implementations]].&lt;br /&gt;
&lt;br /&gt;
It is required of the extractor to understand that when a microformats object specifies no explicit child properties, that it must treat &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; as having a &amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;. But, the parser is generic, so it also treats &amp;lt;code&amp;gt;h-review&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-entry&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-recipe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-geo&amp;lt;/code&amp;gt; as having a ‘&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;’.&lt;br /&gt;
&lt;br /&gt;
As a result, specific vocabularies are evolved to drop their specific form of name (e.g. fn, summary, entry-title) and simplified to use a common 'name' property instead.&lt;br /&gt;
&lt;br /&gt;
Note: while the overwhelming majority of real world publishing/consuming uses of microformats do so with proper nouns which have names (and thus this parser-level incorporation of an implied 'name'), there are some formats that do not have a 'name' semantic. For example, [[geo]], [[adr]], and possibly if/when developed, units of measure, length, cost. The current thinking is that the benefits to the far greater proper-noun use-case of microformats outweigh the technical inelegance of having an extra/ignored 'name' property on formats that lack such a semantic.&lt;br /&gt;
&lt;br /&gt;
Some formats also may appear in theory to better imply some other property, e.g. a review might be thought to imply its ''content'', not its name, and an Atom entry its ''content'', not its title, but in practice (actual publishing patterns) this is not the case. Typically, brief unstructured reviews (or mentions thereof) provide a ''summary'' (often hyperlinked to an expanded structured form) of that review, not its content, and similarly, brief unstructured posts (e.g. RSS items) have historically most often been link blog items which include the title of an item and a link. Short status updates as well established by Twitter are newer and would seem to imply purely content with no title, at least semantically, however, even Twitter populates the RSS title and ATOM entry title of their feeds with the content. It's not clear what went into that decision, however, that's likely irrelevant, as the outcome turns out to be emergent consistency among publishing behaviors.&lt;br /&gt;
&lt;br /&gt;
To avoid overloading or undermining the semantics of a vocabulary, I propose that we handle this at the extractor level in a simpler fashion: Define a new property for literal data, that an extractor will provide if no other information was available. All ''interpreters'' may then be instructed that in the event that an object has no properties, it can attempt to interpret the literal value from the page instead.&lt;br /&gt;
&lt;br /&gt;
* This was one of the design iterations I went through which led me to the current implied 'name' design. Another iteration was the ability for a vocabulary to specify a single required property which was implied if there were no properties provided. However, the combination of the fact that in most cases such single required properties were quite name-like, and that a vocabulary-specific rule like that would then bind parsers to specific vocabularies (even so slightly) led me to collapse them into implying a 'name'. It's not perfect, but it's the best alternative so far that balances practical convenience of publishing/consuming, avoids vocabulary-specific knowledge in the parser, and technical (in)elegance. [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
In existing microformats, the closest existing example we have for this is the &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; property in hCard, which is used to represent the literal address label for a place. It is a corresponding piece of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;org&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; in combination, but has no structure in and of itself. Possibly, every microformat could have a &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; form where structured data is unavailable.&lt;br /&gt;
&lt;br /&gt;
However in practice, the hCard &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; property is both little understood and little used. It's not even clear that it ought to be kept for microformats 2 (no known consumers, very few (if any?) real-world non-test publishers). This disuse is likely a good indicator that we should avoid basing anything on its design.&lt;br /&gt;
&lt;br /&gt;
Alternatively, &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is used throughout microformats to target a generic value (e.g. in combination with &amp;lt;code&amp;gt;price&amp;lt;/code&amp;gt; in hListing.) It has been proposed that when parsing properties that are also themselves microformats, we create native objects of the form:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        'value': '1900 12th Street, San Francisco, CA 94'&lt;br /&gt;
      , 'type': ['h-adr']&lt;br /&gt;
      , 'properties': {&lt;br /&gt;
            'street-address': '1900 12th Street'&lt;br /&gt;
          , 'etc': 'etc'&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
We could apply this same pattern to the root level:&lt;br /&gt;
&lt;br /&gt;
    { &lt;br /&gt;
        type: [h-card]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: 'Ben Ward'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
In this case, an interpreter or implementation is responsible for using &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; in place of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, or restructuring the object. It would be the responsibility of each vocabulary to define its root property. The parsing layer of microformats 2.0 would not impose semantics or naming onto that.&lt;br /&gt;
&lt;br /&gt;
For another example, h-geo would end up like this:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        type: [h-geo]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: '1.3232;-0.543'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
* This is an alternative I've been considering as well:  [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
** 'value' is more generic than 'name' (applies to more vocabularies) with the trade-off that it naturally has less (weaker) semantics.&lt;br /&gt;
*** +1 I think that having naturally weaker semantics would be appropriate for this parsing functionality. —[[User:BenWard|BenWard]] 07:24, 5 October 2011 (UTC)&lt;br /&gt;
** The interesting thing that this analysis has revealed is that there appear to be two distinct clusters of microformats, the much more commonly used/understood/useful proper-noun microformats which markup things with names (people, events, reviews, recipes), and the less used compound-data microformats which are often used ''inside'' other microformats and just have some sort of semi-structured value (adr, geo, measure, and perhaps even things like tel). Perhaps this is implying the possibility and some degree of utility for ''two'' microformats root class name prefixes, 'h-' for existing proper-noun microformats, and something else ('m-' for microformat/molecule?, 's-' for structured-value?, 'v-' for value (though historically &amp;quot;v-&amp;quot;/&amp;quot;v.&amp;quot; has meant &amp;quot;vendor-specific&amp;quot;)?) for unnamed structured data microformats.&lt;br /&gt;
*** This more and more feels like a good idea, and I'm leaning toward &amp;quot;s-&amp;quot; for struct / structure / structured value. &amp;quot;s-&amp;quot; works just like &amp;quot;h-&amp;quot; except that it doesn't imply any properties at parse time. We can try it and see what happens. There's also no harm if publishers just use &amp;quot;h-&amp;quot; structures, they just (possibly) get a few extra properties if they happen to omit properties.&lt;br /&gt;
** Parallels the same JSON when a property has both a string value ''and'' is a structure itself.&lt;br /&gt;
*** Changed my mind on this. The parallel is not quite there. 'name'/'url'/'photo' are only implied if there are NO properties, where as the JSON string value + structure convention *always* provides a 'value'. [[User:Tantek|Tantek]] 22:39, 4 October 2011 (UTC)&lt;br /&gt;
*** And due to this difference in behavior ('value' is there when nested properties are present, whereas 'name' is only implied when there are no properties specified), I think it's correct to keep them separate, i.e. stick with implied 'name'. [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
** However, I'm still currently leaning towards the practical convenience of providing a 'name' for the vast majority of microformats uses, rather than diluting this feature for the sake of avoiding implying inapplicable semantics to the few plain structured data microformats, and even then, only when no properties are explicitly specified! I'd rather introduce a new root prefix for those than lose the simplicity and utility of implied 'name'. [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== resolved ==&lt;br /&gt;
=== When to collapse whitespace in properties ===&lt;br /&gt;
&lt;br /&gt;
The spec doesn’t explicitly require whitespace to be collapsed or not. The official mf2 test suite requires it to be collapsed.&lt;br /&gt;
&lt;br /&gt;
Reasons why whitespace ''shouldn’t'' be collapsed:&lt;br /&gt;
* Plaintext property representations of syntax-highlighted code, poetry and song lyrics require whitespace to be present&lt;br /&gt;
* Whether or not whitespace is an important part of the content being parsed is determined by css white-space and CANNOT be inferred from HTML markup alone&lt;br /&gt;
&lt;br /&gt;
Resolution 2013-11-12: Agreed, whitespace should not be collapsed (other than normal HTML5 parsing rules). The spec now refers to &amp;quot;textContent&amp;quot; rather than &amp;quot;innertext&amp;quot; to make this explicit.&lt;br /&gt;
&lt;br /&gt;
=== How to interpret mf2 classnames on form inputs ===&lt;br /&gt;
E.G. how to parse:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;input class=&amp;quot;u-url&amp;quot; value=&amp;quot;https://brennannovak.com/notes/338&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Examples in the wild: https://brennannovak.com/notes/338&lt;br /&gt;
&lt;br /&gt;
See proposal:&lt;br /&gt;
* [[hcard-parsing-brainstorming#input_element_handling]]&lt;br /&gt;
&lt;br /&gt;
Resolution 2013-11-12: Per that proposal, p- u- dt- properties on input[value] elements now use the value attribute.&lt;br /&gt;
&lt;br /&gt;
=== mixture of microformats2 and classic microformats classnames on different elements ===&lt;br /&gt;
Some sites in the wild have mistakenly combined classic mf and mf2 markup in ways which misrepresent the content if parsed in BC mode.&lt;br /&gt;
&lt;br /&gt;
Typically this is caused by putting classic and mf2 classnames for the same vocabulary on different elements, e.g:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;body class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;article class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name&amp;quot;&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
 &amp;lt;/article&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sites where this has been observed:&lt;br /&gt;
* http://acegiak.machinespirit.net/2013/10/17/barnaby-walters-notes-another-thing-i-love-about-the-web-users-have-the-power-to-take-control-of-their-uis-and-improve-their-own-experiences-aside-drm-for-html-would-prevent-this-from-being-possibl/&lt;br /&gt;
* http://shawfactor.com/2013/08/06/thoughts-on-extending-webmentions/ (fixed)&lt;br /&gt;
* http://notizblog.org/2013/06/18/the-rise-of-the-indieweb/ (fixed)&lt;br /&gt;
&lt;br /&gt;
Discussion:&lt;br /&gt;
&lt;br /&gt;
* As far as I can tell, the problems in all of these examples were caused by mf2 markup being injected by a wordpress plugin, but classic mf classnames being present further up the DOM in the themes. When parsed in compatibility mode, the classic mf classnames are transformed into mf2 classnames, making the original mf2 classnames look like children of empty items.&lt;br /&gt;
* Turns out this isn’t theme-specific, WordPress injects hentry via PHP [http://indiewebcamp.com/irc/2013-10-22/line/1382448759]. The bug with the wordpress mf2 plugin is resolved as of [http://indiewebcamp.com/irc/2013-10-22/line/1382449035 2013-10-22] --[[User:Barnabywalters|bw]] 13:38, 22 October 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== e- and p- escaping levels ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* The fact that the parsed value of any element with .e-* is at a different level of escaping to the parsed values of p-*, dt-* etc. without any indication of how the property was parsed in the output is a security problem. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;input&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;output&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
   &amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;p-name&amp;quot;&amp;gt;&amp;amp;lt;tag&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;items&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;type&amp;quot;: [&lt;br /&gt;
                &amp;quot;h-card&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;properties&amp;quot;: {&lt;br /&gt;
                &amp;quot;name&amp;quot;: [&lt;br /&gt;
                    &amp;quot;&amp;lt;tag&amp;gt;&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
   &amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;e-name&amp;quot;&amp;gt;&amp;amp;lt;tag&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;items&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;type&amp;quot;: [&lt;br /&gt;
                &amp;quot;h-card&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;properties&amp;quot;: {&lt;br /&gt;
                &amp;quot;name&amp;quot;: [&lt;br /&gt;
                    &amp;quot;&amp;amp;lt;tag&amp;amp;gt;&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* As a parser developer, the most straightforward way I can think of solving this is to add an option (enabled by default) which encodes HTML special characters on all non e-* properties, so the developer knows that all property values are going to be at the same level of escaping. --[[User:Barnabywalters|bw]] 20:00, 15 June 2013 (UTC)&lt;br /&gt;
** Your suggestion of auto-HTML-encoding p-*/u-*/dt-* property values is the most sensible I think. I would NOT make it an option, as it makes sense write consistent microformats2 consumers. - [[User:Tantek|Tantek]] 07:18, 5 July 2013 (UTC)&lt;br /&gt;
** Can you think of any existing apps/consumers of microformats2 via the parser that would break? What would indieweb comments parsers do? - [[User:Tantek|Tantek]] 07:18, 5 July 2013 (UTC)&lt;br /&gt;
*** The only breakage which might occur would be over-encoding of non e-* properties, but I’ll release this update as v0.2.0 and warn people about the changes. The worst thing which could happen is that some comments look a bit weird, as opposed to the current worst possible scenario of easy XSS attacks --[[User:Barnabywalters|bw]] 12:55, 5 July 2013 (UTC)&lt;br /&gt;
*** We should also decide exactly which characters get encoded — just angle brackets, or quotes/ampersands as well? --[[User:Barnabywalters|bw]] 12:55, 5 July 2013 (UTC)&lt;br /&gt;
*** I am not sure about this, it seems more like a helper function rather than a core feature of the parser. Personally I would like to store data as text and encode only when I am going to use and I known the format it is going to be use in.  --[[User:GlennJones|Glenn Jones]] 9:54, 14 July 2013 (UTC) &lt;br /&gt;
***After the discussion on the indiewebcamp IRC with Barnaby Walters I now understand the XSS issue that this change is trying to address. A rogue author could include HTML with scripts to execute a XSS attack. These could be masked by switch prefixes i.e. p-* to e-* on a well use property. As the consumer does not see the prefix in the JSON output they have no idea if a property will content HTML or text.  I will update my two parsers and the test suite --[[User:GlennJones|Glenn Jones]] 8:02, 17 July 2013 (UTC) &lt;br /&gt;
**So what about an author setting a property to e-* when it would normal be p-*, dt-* or u-* i.e.&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-card&amp;quot;&amp;gt;&amp;lt;p class=&amp;quot;e-name&amp;quot;&amp;gt;&amp;lt;script&amp;gt; alert('xss test') &amp;lt;/script&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** per [[events/2013-09-14-microformats2-parsing|microformats2 parsing discussion 2013-09-14]], parsers should never automatically attempt to HTML-special-characters encode - as that would provide the client of the parser a false sense of security. It's *always* up to client code to escape any text being output to HTML *at the moment it is output to HTML* and never before, because they can never trust that any text from storage/elsewhere has for sure been escaped or not. - [[User:Tantek|Tantek]] 18:07, 17 October 2013 (UTC)&lt;br /&gt;
** Should we not encode e-* as well and the consumer can decode at their own risk --[[User:GlennJones|Glenn Jones]] 18:42, 21 July 2013 (UTC) &lt;br /&gt;
*** No, never, per above point from [[events/2013-09-14-microformats2-parsing|microformats2 parsing discussion 2013-09-14]] - [[User:Tantek|Tantek]] 18:07, 17 October 2013 (UTC)&lt;br /&gt;
** See [[events/2013-09-14-microformats2-parsing|microformats2 parsing discussion 2013-09-14]] etherpad: https://etherpad.mozilla.org/microformats2parsing for more details on the resolution to this issue - and incorporate here (then move to resolved section below). - [[User:Tantek|Tantek]] 18:07, 17 October 2013 (UTC)&lt;br /&gt;
* Resolved by changes to the parsing spec: all properties are plaintext (non-HTML escaped), e-* properties result in a dictionary with &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; = plaintext version, &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; = raw HTML version &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== br hr empty string ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* The parsing rule 'else if br.p-x or hr.p-x, then return &amp;quot;&amp;quot; (empty string)' for p-* can cause any code consuming the API to become quite bloated. It means that you have test every array value to see if its an empty string. It is also unclear to me what the purpose of this mark-up pattern is for  [[User:GlennJones|Glenn Jones]]&lt;br /&gt;
** Upon reconsidering this, I agree with you, this is an unlikely use case. If a publisher wants to explicitly set an empty property &amp;quot;p-foo&amp;quot; they can simply write &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;p-foo&amp;quot;&amp;gt;&amp;amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; which looks explicit. Whereas BR and HR tags are often just presentational, so we should both not encourage usage of them for semantics, and anyone that did use them would be subject to likely loss of semantics upon a redesign (that got rid of those particular BR and HR tags). I'm going to remove them from the parsing spec. - [[User:Tantek|Tantek]] 15:29, 10 February 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== datetime examples without T delimiter ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* The examples in the wiki microformats-2 pages such h-entry and h-entry had datetime without the 'T' delimiter between date and time. ie&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;time class=&amp;quot;dt-published&amp;quot; datetime=&amp;quot;2013-06-13 12:00:00&amp;quot;&amp;gt;13&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; June 2013&amp;lt;/time&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
I have updated the pages. As far as I known this is a new pattern for dates. Was it a mistake in the examples or is it a new datetime pattern.&lt;br /&gt;
** The [[HTML5]] &amp;quot;time&amp;quot; element, and &amp;quot;datetime&amp;quot; attribute allow for space &amp;lt;span style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;&amp;quot; &amp;quot;&amp;lt;/span&amp;gt; as a separator between date and time as well as &amp;quot;T&amp;quot;, thus we allow it for microformats as well. The  &amp;lt;span style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;&amp;quot; &amp;quot;&amp;lt;/span&amp;gt; separator is preferred as the date and time are more readable when separated by a space. The examples noted in those specs deliberately use this. - [[User:Tantek|Tantek]] 18:48, 15 July 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== rel-alternate absent optional attributes ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* What should rel-alternate parsing do when one of the optional attributes specified (&amp;lt;kbd&amp;gt;hreflang&amp;lt;/kbd&amp;gt; or &amp;lt;kbd&amp;gt;media&amp;lt;/kbd&amp;gt; or both) is not there? The options seem to be:&lt;br /&gt;
*# leave the corresponding key out of the alternate JSON object&lt;br /&gt;
*#* This one. Leave the corresponding key out.&lt;br /&gt;
*# include the corresponding key in the alternate JSON object, but set the value to the JSON null object&lt;br /&gt;
*# include the corresponding key in the alternate JSON object, but set the value to a blank string&lt;br /&gt;
*# something I haven't thought of&lt;br /&gt;
&lt;br /&gt;
I haven't checked the existing implementations, but Barnaby said he's not sure what the appropriate way to deal with it is either. —[[User:TomMorris|Tom Morris]] 15:41, 9 August 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== rel-alternate and type attribute ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Should rel-alternate parsing also pick up the &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; attribute? It’s fairly widely used, e.g. for ATOM feeds.&lt;br /&gt;
** Numerous existing sites/pages have various [[rel-alternate]] uses with a type attribute for feeds/APIs so that's good enough to add this for help with discovery in general. Rel parsing updated. - [[User:Tantek|Tantek]] 00:47, 15 September 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Extraction vs Interpretation ===&lt;br /&gt;
Issue raised by: [[User:BenWard|Ben Ward]]&lt;br /&gt;
&lt;br /&gt;
A microformats ‘1.0’ parser performs the following function:&lt;br /&gt;
&lt;br /&gt;
* Given a piece of HTML content, discover a known microformat, extract it, apply various extraction patterns based upon the HTML mark-up used (e.g. include pattern, &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; patterns, date-time patterns, value-title pattern), apply various content optimisations where applicable, and return the result in an object native to the programming language.&lt;br /&gt;
&lt;br /&gt;
This is performing two types of function: Extraction of data from an HTML document or fragment, ''and'' interpretation and optimisation of that content to match the rules set out by a vocabulary specification.&lt;br /&gt;
&lt;br /&gt;
It is only possible to write a generic parser that covers the first half of this task: Extraction, and application of global rules based on HTML elements and patterns common to all formats.&lt;br /&gt;
&lt;br /&gt;
The purpose of a generic parser (as supported by use cases such as search engines, and other crawlers) is: &lt;br /&gt;
&lt;br /&gt;
To provide a way for tools to extract rich data from a page for native storage, such that the data may be interpreted later by applications. This allows microformats to be crawled, and indexed, and removes the need to include complex HTML parsing within every implementation of microformat data.&lt;br /&gt;
&lt;br /&gt;
Microformats will continue to define various vocabulary-specific optimisations. as part of the design to be optimised for authors. For example: The &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; pattern in [[hcard]], or the &amp;lt;code&amp;gt;lat;long&amp;lt;/code&amp;gt; pattern in [[geo]], as well as default values for properties, such as the maximum rating in an [[hreview]].&lt;br /&gt;
* Actually, no, as it is defined currently, microformats 2 ''drops'' vocabulary-specific optimizations. Such optimizations have often been too inapplicable, error prone or i18n-unsafe (e.g. fn to given-name + family-name fails for both numerous cases where middlenames/initials are used, and in general in numerous Asian languages where given/family name order is the reverse of Western English conventions, or languages with multiple family-names, e.g. Spanish - see [[hcard-issues-resolved]] for more). This is a deliberate cutting of a &amp;quot;feature&amp;quot; from microformats 1, it is a deliberate model simplification design decision. [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
==== Extraction resolution ====&lt;br /&gt;
Proposed resolution:&lt;br /&gt;
&lt;br /&gt;
Microformats2 should refer only to ''extraction'' of microformats. Vocabularies should in turn document their appropriate optimisations, which will need to be applied by implementations, or a companion to an extractor, which I'll refer to here as an ‘interpreter’.&lt;br /&gt;
* Vocabularies will no longer have optimizations, this is again deliberately, as they've been shown to be more error prone than helpful. Thus there should be no need for any vocabulary-specific 'interpreters'. However, due to design quirks in various legacy/interchange formats, ''export conversions algorithms'' to those legacy/interchange formats will require some additional legacy-format-specific rules (e.g. odd &amp;quot;required&amp;quot; rules in [[Atom]] or [[vCard]] will require specific synthesis rules, limitations in said formats will require filtering of some values, e.g. [[vcard3]] BDAY disallows vague birthdays like year-month and --month-day - subsequently allowed in [[vcard4]]). [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
A microformats2 ‘extractor’, in combination with the functionality of a domain and format-aware ‘interpreter’ (either another shared component, or part of the implementation itself) would be equivalent to a microformats 1.0 ‘parser.’&lt;br /&gt;
* A microformats2 parser is both generic (no knowledge of specific vocabularies), and lacks any/all such vocabulary-specific rules as compared to a microformats 1.0 [[hcard-parsing|parser]] with the exception of a 1) a limited list of well-established/interoperable backward compat root class names (of current [[microformats]] that are or can be soon shown to be specifications/standards per the [[process]]), 2) flat sets of backward compat property names (some with prefix/name specific conversion) for each of those backward compat root class names.  This is a deliberate design decision that makes microformats 2 more &amp;quot;micro&amp;quot;, and yes this means that even with such backward compat support, this simple form of backward compat may mean that some existing microformats 1 content breaks. We'll assess those and iterate on a documented case-by-case basis rather than attempt to maintain theoretical 100% backward compatibility (since many current microformats format-specific-features are either unused, or may have caused more problems than solutions). [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
N.B. I'll rewrite some of these as [[microformats2-parsing-faq]] to help better clarify. The reasoning that led to most of these design decisions is documented in the [[microformats-2#About_This_Brainstorm|microformats 2: About This Brainstorm]] section and following sections. I'll recheck those sections to see if/where reasoning for some of the above noted design decisions may have been missed, and back-fill accordingly. This is necessary because [[microformats2]] is a evolutionary result of simultaneously addressing both numerous generic [[issues]] as well as various common [[hcard-issues-resolved|format]]-[[hcalendar-issues-resolved|specific]] [[mfo|problems]] in microformats1 syntax and vocabularies. The very number of changes may make it more challenging (from a microformats1 perspective) to see why any particular design change has been made. [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
This issue can be moved from resolved to closed once the above-mentioned write-ups have occurred.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Parsing properties from rel attributes===&lt;br /&gt;
tl;dr resolution: As of 2013, [[microformats2-parsing]] handles parsing all link and a href rel values at document scope level, and producing canonical JSON accordingly. - [[User:Tantek|Tantek]]&lt;br /&gt;
&lt;br /&gt;
Issue raised by [[User:BenWard|BenWard]] 07:24, 5 October 2011 (UTC):&lt;br /&gt;
&lt;br /&gt;
* Currently, hAtom parses `bookmark` as a permalink&lt;br /&gt;
* Various microformats parse `rel=tag` as tags&lt;br /&gt;
* The current proposal for parsing does not allow parsing properties from rel attributes.&lt;br /&gt;
&lt;br /&gt;
Microformats parsers could instead extract ''all'' link relationships from rel attributes within an microformat object, parsing them as if a u- prefixed property.&lt;br /&gt;
* Minor nit: Rather than same as a u- prefixed property, I think such &amp;quot;rel&amp;quot; properties should be parsed purely from the &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; attribute on &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;area&amp;amp;gt;&amp;lt;/code&amp;gt; elements and nothing more. I would strongly disagree to extending rel to apply to other elements with URLs like img src, object data, or to apply to elements in general like div. That's the path that RDFa has taken and caused much confusion as a result. [[User:Tantek|Tantek]] 07:39, 5 October 2011 (UTC)&lt;br /&gt;
** Agree: That seems like a perfectly reasonable restriction. --[[User:BenWard|BenWard]] 08:29, 5 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
This results in:&lt;br /&gt;
&lt;br /&gt;
* Continuing use of the &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attribute in HTML, thereby building on HTML semantics rather than bypassing them or ignoring them in favour of something less meaningful.&lt;br /&gt;
* Parsing hAtom objects contain a property named &amp;lt;code&amp;gt;bookmark&amp;lt;/code&amp;gt;, in place of &amp;lt;code&amp;gt;permalink&amp;lt;/code&amp;gt;.&lt;br /&gt;
* All microformats that use &amp;lt;code&amp;gt;rel-tag&amp;lt;/code&amp;gt; would contain a property named… &amp;lt;code&amp;gt;tag&amp;lt;/code&amp;gt;. Perfect.&lt;br /&gt;
&lt;br /&gt;
Since &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes are not overloaded for other functionality like class is, and other uses of &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; within content are low (and non-semantic uses are nil, to the best of my knowledge) the risk of property pollution would be extremely low.&lt;br /&gt;
&lt;br /&gt;
Note, with regard to this last point, that a generic microformats parser ''will'' parse false-positive properties, and ''will'' parse objects in combined chunks, rather than individually by format. Extracted objects will often not represent a vocabulary without further processing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* This sounds like it might be workable. Let's try it and see how well authors &amp;quot;get it&amp;quot;. - [[User:Tantek|Tantek]]&lt;br /&gt;
* Possible issue: do we have any collisions between class property names and rel names? (I don't think so offhand, but useful to ask the question). - [[User:Tantek|Tantek]]&lt;br /&gt;
** None that I can think of in microformats. There is the case of Google's &amp;lt;code&amp;gt;rel=author&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;p-author&amp;lt;/code&amp;gt; in hAtom. However, the next point, about mfo scoping, would cover it in most situations (rel-author on a hyperlink within an hcard wouldn't be applied to the hentry.) The one situation in a parse tree where it's ambiguous would be this: &lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;p-author h-card&amp;quot; &lt;br /&gt;
   rel=&amp;quot;author&amp;quot; &lt;br /&gt;
   href=&amp;quot;http://benward.me&amp;quot;&amp;gt;&lt;br /&gt;
   Ben Ward&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** I can think of two quite reasonable solutions: &lt;br /&gt;
*** 1. Declare that class properties take precedence over rel properties of the same name, discarding rel values if a class is also found, or &lt;br /&gt;
*** 2. Since all properties are now multi-value anyway, the hAtom object could be parsed as:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from the p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        'http://benward.me'      /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** —[[User:BenWard|BenWard]] 08:29, 5 October 2011 (UTC)&lt;br /&gt;
*** Option 2 makes sense and is consistent with the rest of the multi-value parsing/handling. - [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
*** What about without the 'p-author'?&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;h-card&amp;quot; &lt;br /&gt;
   rel=&amp;quot;author&amp;quot; &lt;br /&gt;
   href=&amp;quot;http://benward.me&amp;quot;&amp;gt;&lt;br /&gt;
   Ben Ward&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Should that be parsed as:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        'http://benward.me'      /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Or&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': 'http://benward.me' /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
          'type': ['h-card'],          /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        &lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*** And if the former, then we're presumably saying that the value parsed due to the presence of a rel is always its own value, and does not combine with any other structures. I am fine with this, but I wanted to make sure we are ok with that explicitly. [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
**** +1 I think that since the rel attribute is specifically concerned with the relation to an href attribute, it should not be combined with other structures that are rightly declared uses classes.&lt;br /&gt;
***** The more I've thought about this and how consuming applications may want to treat rel semantics, the more it seems correct to keep rel semantics distinct from class semantics. Class semantics are quite general/flexible, whereas rel is quite specific, naming something else in terms of a relationship from the current page/microformat's perspective. I think we should consider putting rel values in their own 'rel' collection, separate from the 'properties' collection. E.g. the original rel-author p-author h-card markup example would be parsed into this:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from the p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        }&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
   'rel': {&lt;br /&gt;
     'author': ['http://benward.me'] /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
***** and if a post had multiple authors:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Tantek Çelik'], /* from 2nd p-author     */&lt;br /&gt;
          'type': ['h-card'],        /* from 2nd h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Tantek Çelik'], &lt;br /&gt;
            'url': ['http://tantek.com']&lt;br /&gt;
        },&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
   'rel': {&lt;br /&gt;
     'author': [&lt;br /&gt;
       'http://benward.me',      /* from rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
       'http://tantek.com'       /* from 2nd rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ]&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
***** This preserves the semantic distinction between rel and properties in general, and leaves it up to a higher-level application to implement any logic around showing &amp;quot;more info&amp;quot; about a rel-author, e.g. by correlating the rel-author URL with the 'url' of an hCard it found in the same entry. However, note that even in the earlier JSON data model, the rel-author value just shows up as another property value, and any higher level application would still have to do some correlation logic. At least with this JSON data model, applications that may be looking for a rel value in particular, or a property value in particular can do so without having one unintentionally pollute the other. [[User:Tantek|Tantek]] 17:33, 6 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Presumably we'd apply all the same property scoping rules to rel scoping as well. E.g. a rel hyperlink inside a microformat won't be seen by any containing microformat. - [[User:Tantek|Tantek]]&lt;br /&gt;
** Correct, it should be parsed in the same scope as all other class properties in the object.&lt;br /&gt;
*** Update: all rel microformats are now parsed at page-scope. Per-microformat scoping of rel has been found to be too confusing in practice (and against the general semantic of rel expressed in the HTML/HTML5 specs) [[User:Tantek|Tantek]] 01:00, 10 July 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This issue can be moved from resolved to closed once we've verified that all the above-mentioned and implied needs to write things up have occurred.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== deduping of rels ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-06-02 by [[User:Kevin Marks|Kevin Marks]] &lt;br /&gt;
* 2015-06-05 resolved by consensus and one real world implementation proof of implementability and verification of expected results. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Many sites have multiple duplicate rel links to the same url - a very common case is WordPress home pages eg [http://ma.tt ma.tt] &lt;br /&gt;
&lt;br /&gt;
Each post on the page has a block like&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;entry-meta&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;date&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://ma.tt/2015/05/beethoven-mozart-bach/&amp;quot; &lt;br /&gt;
    title=&amp;quot;Permalink to Beethoven, Mozart,&amp;amp;nbsp;Bach&amp;quot; rel=&amp;quot;bookmark&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;time class=&amp;quot;entry-date&amp;quot; datetime=&amp;quot;2015-05-31T22:42:00+00:00&amp;quot;&amp;gt;May 31, 2015&amp;lt;/time&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;categories-links&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://ma.tt/category/asides/&amp;quot; rel=&amp;quot;category tag&amp;quot;&amp;gt;Asides&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;author vcard&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;url fn n&amp;quot; href=&amp;quot;http://ma.tt/author/saxmatt/&amp;quot; &lt;br /&gt;
    title=&amp;quot;View all posts by Matt&amp;quot; rel=&amp;quot;author&amp;quot;&amp;gt;Matt&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- .entry-meta --&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As currently defined, the parser will create duplicate entries in &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; for each post:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;category&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;author&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;tag&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;home&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and in the &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; we will also see:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;author&amp;quot;, &lt;br /&gt;
                &amp;quot;author&amp;quot;, &lt;br /&gt;
                &amp;quot;author&amp;quot;, &lt;br /&gt;
                &amp;quot;author&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;View all posts by Matt&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;home&amp;quot;, &lt;br /&gt;
                &amp;quot;home&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/category/asides/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;, &lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;, &lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;, &lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Asides&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
These duplicates are unhelpful for parser consumers. We should:&lt;br /&gt;
* make them both sets - only listing distinct values. This will remove ordering information, but order is irrelevant for rel in html.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;category&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;author&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;tag&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;home&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
}&lt;br /&gt;
…&lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;author&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;View all posts by Matt&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;home&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/category/asides/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Asides&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* possibly we could also make &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; sets too. That would solve the information loss issue with the current parsers&lt;br /&gt;
** Resolution: in the case of duplicate other attributes, first one set wins. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 as the proposer. A version of mf2py that does this is running at unmung,com. see [http://www.unmung.com/mf2?url=https%3A%2F%2Fma.tt&amp;amp;html=&amp;amp;pretty=on fro ma.tt] or [http://www.unmung.com/?html=%3Ca+href%3D%22http%3A%2F%2Fma.tt%2Fcategory%2Fasides%2F%22+rel%3D%22category+tag%22%3EAsides%3C%2Fa%3E%0D%0A%3Ca+href%3D%22http%3A%2F%2Fma.tt%2Fcategory%2Fasides%2F%22+rel%3D%22category+tag%22%3EAsides%3C%2Fa%3E%0D%0A%3Ca+href%3D%22http%3A%2F%2Fma.tt%2Fcategory%2Fasides%2F%22+rel%3D%22category+tag%22%3EAsides%3C%2Fa%3E&amp;amp;pretty=on a simple test] [[User:Kevin Marks|Kevin Marks]] 23:49, 2 June 2015 (UTC)&lt;br /&gt;
* +1 makes sense to me, and not having them be sets in the current spec is likely an oversight on my part. Thanks for noting this issue. [[User:Tantek|Tantek]] 05:28, 3 June 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== include alternates in rels ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-06-01 by [[Tantek]], per inconsistency noted by Kevin Marks.&lt;br /&gt;
* 2015-06-05 resolved per consensus and one real world implementation proof of implementability. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
As fallout from the adoption and implementation of 'rel-urls' per [[microformats2-parsing-brainstorming#more_information_for_rel-based_formats]], we should:&lt;br /&gt;
* add &amp;quot;alternate&amp;quot; rels to the &amp;quot;rels&amp;quot; collection to make them easier to look-up in &amp;quot;rel-urls&amp;quot; - that is, all rel values end up in &amp;quot;rels&amp;quot; collections. No exceptions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as the documenter of this issue, and attempting to represent what I think KevinMarks intended with &amp;quot;rels&amp;quot; and &amp;quot;rel-urls&amp;quot;.&lt;br /&gt;
* +1 This makes sense to me, as the &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; should match so you can lookup in rels first, then get details about urls from rel-urls. We can drop &amp;quot;alternates&amp;quot; independently from this change. [[User:Kevin Marks|Kevin Marks]] 00:23, 2 June 2015 (UTC)&lt;br /&gt;
** +1 drop &amp;quot;alternates&amp;quot; independently now made a separate issue. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
* +1 Makes sense. And I agree with Kevin; I think parsers should deprecate &amp;quot;alternates&amp;quot; for now and drop it after a version cycle or two. [[User:Kylewm|Kylewm]] 00:30, 2 June 2015 (UTC)&lt;br /&gt;
* implemented in [https://github.com/kevinmarks/mf2py/commit/4dba45200eef11da811f64817d02044ab9e98b77 my fork of mf2py] and running on [http://www.unmung.com/?html=%3Ca+rel%3D%22author%22+href%3D%22http%3A%2F%2Fexample.com%2Fa%22%3Eauthor+a%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22author%22+href%3D%22http%3A%2F%2Fexample.com%2Fb%22%3Eauthor+b%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22in-reply-to%22+href%3D%22http%3A%2F%2Fexample.com%2F1%22%3Epost+1%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22in-reply-to%22+href%3D%22http%3A%2F%2Fexample.com%2F2%22%3Epost+2%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22alternate+home%22%0D%0A+++href%3D%22http%3A%2F%2Fexample.com%2Ffr%22%0D%0A+++media%3D%22handheld%22%0D%0A+++hreflang%3D%22fr%22%3EFrench+mobile+homepage%3C%2Fa%3E&amp;amp;pretty=on unmung] [[User:Kevin Marks|Kevin Marks]] 01:29, 2 June 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Empty properties overridden by implied rules against user expectation ===&lt;br /&gt;
Status: resolved, existing behavior correct, no changes to parsing spec.&lt;br /&gt;
&lt;br /&gt;
2015-07-03: raised by [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
&lt;br /&gt;
Emma Kuo brought up an issue (https://github.com/glennjones/microformat-node/issues/22) based on following the indieweb note pattern, where the content of a note is given both the e-content and p-name classes. If the element containing the notes only has none text content like image the p-name can have unexpected value. Here is the example she gave:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;a href=&amp;quot;http://this.site/photo&amp;quot; class=&amp;quot;u-url&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;e-content p-name&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;photo.jpg&amp;quot; class=&amp;quot;u-photo&amp;quot;/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        Some extraneous text&lt;br /&gt;
        &amp;lt;div class=&amp;quot;h-cite&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;a href=&amp;quot;http://someother.site/like&amp;quot; class=&amp;quot;u-url&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;a href=&amp;quot;http://this.site/photo&amp;quot; class=&amp;quot;u-like-of&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;e-content p-name&amp;quot;&amp;gt;liked this&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At the moment I parser this as follows: - if a property (p-name) is empty do not add it to the output. In this case &amp;quot;empty&amp;quot; is classed as not containing any non-whitespace text. As far as I known there is no guidance on how to handle &amp;quot;empty&amp;quot; properties in microformats paring rules, so I followed the conventions of JSON API's not to return &amp;quot;empty&amp;quot; properties.&lt;br /&gt;
&lt;br /&gt;
The side effect of the above is that p-name also has a number of &amp;quot;implied rules&amp;quot;. The &amp;quot;implied rules&amp;quot; try to automatically fill properties like p-name if there is no defined value. In the example above it uses the textContent of the parent h-entry, so value of the h-entry&amp;gt;p-name is the text content of the h-cite i.e. &amp;quot;likes this&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
1. We should not allow the &amp;quot;implied name rule&amp;quot; to get textContent from within a child h-* &lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;strike&amp;gt;+1 I believe this is inline with how we parse properties and will meet user/author expectations  [[User:Glenn Jones|Glenn Jones]] 9:22, 3 July 2015 (UTC)&amp;lt;/strike&amp;gt;&lt;br /&gt;
* -1 A nested h-* is still part of the content of the parent h-*, I don't quite understand the rationale for excluding it. For example, I may include lots of h-cards in the body of a post that references people and wouldn't want them to be excluded from the implied name generation. [[User:Kylewm|Kylewm]] 14:40, 3 July 2015 (UTC)&lt;br /&gt;
* -1 I'm not sure this would solve the problem because auto-filled text could come from the parent h-* (&amp;quot;some extraneous text&amp;quot; in the example above) [[User:emmak|Emma Kuo]] 20:50, 4 July 2015 (UTC)&lt;br /&gt;
* -1 I agree with the other -1s. This would break some of the simplicity of the model. [[User:Tantek|Tantek]] 05:12, 14 July 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
2.  We should not execute the &amp;quot;implied rules&amp;quot; where there is an author defined &amp;quot;empty&amp;quot; property.&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;strike&amp;gt;-1 Although the output would meet author expectations it is complex for parsers as they will have to keep state for each property through the whole series of parsing rules.  [[User:Glenn Jones|Glenn Jones]] 9:22, 3 July 2015 (UTC)&amp;lt;/strike&amp;gt;&lt;br /&gt;
* +1 An explicit, empty, p-name property should prevent an implicit p-name from being generated. For example tantek.com includes &amp;amp;lt;span class=&amp;quot;p-name&amp;quot;&amp;gt;&amp;amp;lt;/span&amp;gt; at the start of the h-feed to prevent a giant name from being auto-generated. From my reading of the parsing spec, I don't see any reason that blank strings should be excluded from parsing. (mf2py and php-mf2 will both happily include empty strings in their output) [[User:Kylewm|Kylewm]] 14:40, 3 July 2015 (UTC)&lt;br /&gt;
* +1 We already have interop on this between mf2py and phpmf2, as well as people depending on it to explicitly set empty property values. [[User:Tantek|Tantek]] 05:12, 14 July 2015 (UTC)&lt;br /&gt;
* +1 As we already have interop with two parsers and solid user issue from Emma we should take this approach. [[User:GlennJones|Glenn Jones]] 11:51, 29 July 2015 (UTC)&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html&lt;br /&gt;
&lt;br /&gt;
=== uf2 children inside a classic microformats root class name ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-020: (raised by kylewm) What should microformats2 children inside a classic microformats root class name do?&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
1. Nothing. Any unattached uf2 children inside a classic microformats root are ignored. Problems:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* However then there's a possible surprise if/when the author upgrades the classic microformats root to uf2, then all of a sudden all the new uf2 children show-up.&lt;br /&gt;
* Another downside: author adds uf2 markup, can't figure out why nothing is happening (because somewhere up the tree in code they didn't touch is classic microformats that are hiding these unattached uf2 children.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
2. Show up in the children collection of the classic microformats root&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Feels most predictable. When you add uf2 root class names anywhere, they will show up in the JSON output hierarchy.&lt;br /&gt;
* When you convert ancestor class microformats root class names to uf2 root class names, no surprise in terms of which microformats show up. Same children collection.&lt;br /&gt;
* +1 Thus I'm leaning towards this one, despite the fact that classic microformats never had a concept of generic unattached children. [[User:Tantek|Tantek]] 04:55, 21 January 2015 (UTC)&lt;br /&gt;
* +1 I think this is the best option I will implement it and update the wiki once its in the JavaScript parser. [[User:GlennJones|Glenn Jones]] 11:55, 29 July 2015 (UTC)&lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
3. Show up as peers to the classic microformats root. Issue(s)&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Has ths surprise aspect of if/when you convert the classic root class name to a uf2 root class name, the former peers become unattached children.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html&lt;br /&gt;
&lt;br /&gt;
=== any h- root class name overrides and stops backcompat root ===&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience. &lt;br /&gt;
&lt;br /&gt;
2015-020: The presence of any h-* root class name overrides and stop any backcompat parsing of classic microformats root class names on that same element. [[User:Tantek|Tantek]] 04:55, 21 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Tom &amp;amp; Kyle - implementable with the same backcompat root flag as needed for restricting backcompat root class name to only seeing backcompat property class names&lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
* I don't think I understand this rule. If I was stop all parsing of of classic microformats in the presence of any h-* root in a document then some of the other rules such as &amp;quot;uf2 children inside a classic microformats root class name&amp;quot; do not make sense. Could this item be expanded and explained a bit more? [[User:GlennJones|Glenn Jones]] 12:13, 29 July 2015 (UTC)&lt;br /&gt;
** added &amp;quot;on that same element&amp;quot; as that was what we were discussing/implying in this issue. [[User:Tantek|Tantek]] 22:49, 18 September 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== backcompat classic microformats should only see backcompat properties ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-020: When parsing a microformats vocabulary that indicates a backcompat root class name (and thus an absence of the microformats2 equivalent on the same element), parsers must only look for the backcompat properties that are specified explicitly for that backcompat root class.&lt;br /&gt;
[[User:Tantek|Tantek]] 04:04, 21 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Reasoning: such behaviour was never expected by authors, and crossing a classic microformats root class name with microformats2 property names were never explicitly expected nor specified to work.&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Tom &amp;amp; Kyle - implementable with the same backcompat root flag as needed for&lt;br /&gt;
* +1 I think this will help backcompat parsing, I will implement it and update the wiki once its in the JavaScript parser. The test suite will also need updating. [[User:GlennJones|Glenn Jones]] 11:55, 29 July 2015 (UTC) &lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html Currently you need to switch on the option &amp;quot;Block overlapping properties from different microformat versions&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== microformats2 root class names should only see microformats2 properties ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-020: When parsing a microformats2 root class name, only explicit microformats2 properties should be parsed. Any backcompat property names must be ignored.&lt;br /&gt;
[[User:Tantek|Tantek]] 04:04, 21 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Reasoning: such microformats2 authors should be expected to do all their microformats markup with microformats2 class names - this is a deliberate expectation so that their microformats aren't polluted with other (classic microformats) coincidentally named generic class names.&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 I think this will help backcompat parsing, I will implement it and update the wiki once its in the JavaScript parser. The test suite will also need updating. [[User:GlennJones|Glenn Jones]] 11:55, 29 July 2015 (UTC) &lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html Currently you need to switch on the option &amp;quot;Block overlapping properties from different microformat versions&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== implied properties on backcompat parsing unlikely to be intended ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Since classic microformats had no notion of implied properties, when implied property parsing occurs on backward compat classic microformats root class names, it is unlikely that any implied property (p-name u-url u-photo) was ever intended by the author of the classic microformat. [[User:Tantek|Tantek]] 02:43, 30 December 2014 (UTC)&lt;br /&gt;
Examples:&lt;br /&gt;
* see https://indiewebcamp.com/h-entry#bad_hentry_properties for a growing list&lt;br /&gt;
&lt;br /&gt;
'''Proposed resolution:'''&lt;br /&gt;
&lt;br /&gt;
* Be explicit in implied property parsing that it must only be done for explicit 'h-*' root class name microformats, not for any (back)compat parsing of microformats. Please comment on this proposal with &amp;quot;** comment&amp;quot; on new lines below. [[User:Tantek|Tantek]] 02:43, 30 December 2014 (UTC)&lt;br /&gt;
** +1 This makes a lot of sense to me. We should strive to parse mf1 as it was intended by the author, and I think you're right that implied rules are unlikely to be what was intended [[User:Kylewm|Kylewm]] 03:22, 30 December 2014 (UTC)&lt;br /&gt;
** +1 I think this will help backcompat parsing, but there are two major things to consider. It may well break some consumer code as the output for a microformats currently always has the name property, there may not be the defences code to check this is true when we remove the implied name rule for classic microformats.  The test suite will also need major updating as all the test output for classic microformats will have. I will look into implementing this and report back to the wiki. [[User:GlennJones|Glenn Jones]] 12:13, 29 July 2015 (UTC) &lt;br /&gt;
** Also it should be made clear that we are only removing the implied rules from classic microformats parsing and not the value property? [[User:GlennJones|Glenn Jones]] 12:13, 29 July 2015 (UTC)&lt;br /&gt;
*** The &amp;quot;parsing for implied properties&amp;quot; section only references name, photo, url properties. Where (in the spec) is the confusion about &amp;quot;value&amp;quot; coming from? [[User:Tantek|Tantek]]&lt;br /&gt;
** RESOLVED at [[2015-01-20]] meetup. [[User:Tantek|Tantek]] 04:09, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html Currently you need to switch on the option &amp;quot;Set implied properties by microformat version&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== link elements and u- parsing ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Raised by tantek on 2014-07-08 on [http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=8+Jul+2014&amp;amp;e=9+Jul+2014#c72916 irc]: should the parsing specification for handling u- properties be modified to include the &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; element? The potential downside is that [[invisible-metadata-is-considered-harmful]], however all known real world examples of &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; are &amp;lt;em&amp;gt;semi-&amp;lt;/em&amp;gt;visible data (not fully hidden).&lt;br /&gt;
&lt;br /&gt;
There are potential cases for wanting to use link as an alternative to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; (and &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt;), such as a whole page where the root &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; element is an &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; and the properties are included across the page: some in visible data in the &amp;lt;code&amp;gt;body&amp;lt;/code&amp;gt; while others are in the &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; as &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; elements. Example:&lt;br /&gt;
&lt;br /&gt;
One specific use-case is the semi-visible &amp;lt;code&amp;gt;link rel=&amp;quot;shortcut icon&amp;quot; href=&amp;quot;...&amp;quot;&amp;lt;/code&amp;gt; - which is visible sometimes in browser UI, and also when a user chooses &amp;quot;Add to Home Screen&amp;quot; on a mobile device. Such page level icons may be used as a &amp;lt;code&amp;gt;u-photo&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;u-logo&amp;lt;/code&amp;gt; of the containing &amp;lt;code&amp;gt;h-*&amp;lt;/code&amp;gt; object on the &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; element.&lt;br /&gt;
* http://adactio.com/about/myself/ on 2014-190&lt;br /&gt;
** &amp;lt;em&amp;gt;could&amp;lt;/em&amp;gt; use &amp;lt;code&amp;gt;&amp;amp;lt;html class=h-card&amp;amp;gt;&amp;lt;/code&amp;gt; - page is all about Jeremy Keith the person&lt;br /&gt;
** &amp;lt;em&amp;gt;icon / logo is only&amp;lt;/em&amp;gt; on &amp;lt;code&amp;gt;&amp;amp;lt;link&amp;amp;gt;&amp;lt;/code&amp;gt; tag which &amp;lt;em&amp;gt;could&amp;lt;/em&amp;gt; use &amp;lt;code&amp;gt;class=u-logo&amp;lt;/code&amp;gt;: &amp;lt;br/&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;link rel=&amp;quot;shortcut icon apple-touch-icon&amp;quot; type=&amp;quot;image/png&amp;quot; href=&amp;quot;/icon.png&amp;quot; /&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another specific use-case is a post permalink page, e.g. with &amp;lt;code&amp;gt;&amp;amp;lt;html class=h-entry&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* http://waterpigs.co.uk/notes/4WjHpC/&lt;br /&gt;
** &amp;lt;em&amp;gt;has&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;&amp;amp;lt;html class=&amp;quot;no-js h-entry hentry h-as-note&amp;quot; lang=&amp;quot;en&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another use-case is publishing links to PGP/GPG keys linked from the head which is currently handled by &amp;lt;code&amp;gt;&amp;amp;lt;link rel=pgpkey&amp;amp;gt;&amp;lt;/code&amp;gt; which is already supported in existing [[microformats2-parsing#parse_a_hyperlink_element_for_rel_microformats|microformats2 rel parsing]] of &amp;lt;code&amp;gt;link rel&amp;lt;/code&amp;gt; elements. Thus there is a (admittedly weak) argument for consistently parsing &amp;lt;em&amp;gt;both&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;&amp;amp;lt;link rel&amp;amp;gt;&amp;lt;/code&amp;gt; &amp;lt;em&amp;gt;and&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;&amp;amp;lt;link class=&amp;quot;u-*&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
E.g. inside that aforementioned real world &amp;lt;code&amp;gt;&amp;amp;lt;html class=h-entry&amp;amp;gt;&amp;lt;/code&amp;gt; post permalink page example, &lt;br /&gt;
* why should &amp;lt;code&amp;gt;&amp;amp;lt;link rel=&amp;quot;in-reply-to&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; work &lt;br /&gt;
* but not &amp;lt;code&amp;gt;&amp;amp;lt;link class=&amp;quot;u-in-reply-to&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; ?&lt;br /&gt;
The slightly stronger argument for consistency of link handling is that it &amp;lt;strong&amp;gt;[[simpler|simplifies]]&amp;lt;/strong&amp;gt; the publisher (and parser) model: &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;area&amp;amp;gt;&amp;lt;/code&amp;gt; work for both &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;&lt;br /&gt;
* why does &amp;lt;code&amp;gt;&amp;amp;lt;link&amp;amp;gt;&amp;lt;/code&amp;gt; only work for &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; ?&lt;br /&gt;
* it would be &amp;lt;em&amp;gt;simpler&amp;lt;/em&amp;gt; if all three tags just worked (in the same way) for both &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Should the parsing spec be modified to handle these cases?''' —[[User:TomMorris|Tom Morris]] 09:25, 9 July 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
** I'm generally in favour. It'd be good to see what other parser developers think. —[[User:TomMorris|Tom Morris]] 10:16, 9 July 2014 (UTC)&lt;br /&gt;
** adding this to the parsers won't be an issue. &amp;lt;del datetime=&amp;quot;2014-07-09T18:45&amp;quot;&amp;gt;The question is should the door be opened to hidden mf data?&amp;lt;/del&amp;gt; &amp;lt;ins datetime=&amp;quot;2014-07-09T18:45&amp;quot;&amp;gt;Up on further reflection, there seems to be no need to distinguish between &amp;lt;code&amp;gt;rel=property&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class=u-property&amp;lt;/code&amp;gt; on link elements. So I am in favour for consistency.&amp;lt;/ins&amp;gt; [[User:KP|Kartik]] 18:30, 2014-07-09 (EST)&lt;br /&gt;
** RESOLVED at [[2015-01-20]] meetup. Make link consistent with a.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== drop alternates collection ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-06-01 by [[Tantek]], per inconsistency noted by Kevin Marks.&lt;br /&gt;
* 2015-06-05 split into separate issue from include alternates in rels per implementation feedback from Kevin Marks. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
As fallout from the adoption and implementation of 'rel-urls' per [[microformats2-parsing-brainstorming#more_information_for_rel-based_formats]], we should:&lt;br /&gt;
* drop &amp;quot;alternates&amp;quot; as its no longer needed, and all current consuming code clients like rel-urls better anyway.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as the documenter of this issue, and attempting to represent what I think KevinMarks intended with &amp;quot;rels&amp;quot; and &amp;quot;rel-urls&amp;quot; in original issue now &amp;quot;include alternates in rels&amp;quot;, we no longer need &amp;quot;alternates&amp;quot;, and those with client consuming code have universally indicated that they would rather use rel-urls anyway. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats2-parsing]]&lt;br /&gt;
* [[microformats2]]&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65434</id>
		<title>microformats2-parsing-issues</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65434"/>
		<updated>2016-03-13T18:47:33Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: /* exclude style elements before parsing */ added agreement to removing style and script contents from plaintext properties, objection to removing them from HTML properties&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is for documenting issues with the [[microformats2-parsing]] specification.&lt;br /&gt;
&lt;br /&gt;
== issues ==&lt;br /&gt;
Open issues in various states of partial resolution from none to nearly resolved.&lt;br /&gt;
&lt;br /&gt;
=== ignore u-camelCase properties ===&lt;br /&gt;
Due to Suit CSS (and others? citations?) recent (2015-?) use of &amp;quot;u-*&amp;quot; class names for so-called &amp;quot;[http://davidtheclark.com/on-utility-classes/ utility classes]&amp;quot;, we are seeing some false positives in a few very rare instances, e.g.: http://www.unmung.com/mf2?url=http%3A%2F%2Fwww.kevinmarks.com%2Ftwitterutils.html&amp;amp;html=&amp;amp;pretty=on&lt;br /&gt;
&lt;br /&gt;
(Nearly) all these &amp;quot;utility classes&amp;quot; use camelCase for the class name suffixes, thus we can filter them out by looking for camelCase (since microformats class name conventions are always all lowercase and hyphenated), or even just looking for (and rejecting) *any* capital letters.&lt;br /&gt;
&lt;br /&gt;
Proposal:&lt;br /&gt;
* microformats2 parsers MUST IGNORE u-* classnames where the * has any uppercase letter(s).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] Let's get this fix rolling quickly to avoid further pollution.&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== exclude style elements before parsing ===&lt;br /&gt;
[http://logs.glob.uno/?c=freenode%23microformats#c85457 2016-01-25 raised in #microformats]&lt;br /&gt;
&lt;br /&gt;
Ran into an issue of a &amp;lt;style&amp;gt; element being parsed as plain text in a p-name. Should [[microformats2-parsing]] be updated to indicate &amp;lt;style&amp;gt; should be excluded when parsing? Appears to implicitly fall under [[microformats2-parsing#note_HTML_parsing_rules]]&lt;br /&gt;
&lt;br /&gt;
Sample link: http://veganstraightedge.com/notes/2016/01/16/tonight-s-dinner-tacocleanse-beverly-hills-c&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;script&amp;gt; tag can be similarly problematic.&lt;br /&gt;
&lt;br /&gt;
Proposal: Drop both &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; elements completely when parsing any property (including e-* HTML values). [[User:Tantek|Tantek]] 01:01, 29 February 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Please discuss and/or give +1/0/-1 feedback&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as proposer&lt;br /&gt;
* +1 [[User:Aaronpk|aaronpk]] as a consumer of HTML from an e-* property, I will always be sanitizing the HTML and removing &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; anyway&lt;br /&gt;
* +1 [[User:Kylewm|kylewm]]&lt;br /&gt;
* 0 [[User:Barnabywalters]] +1 to removing the contents of &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; from all plaintext properties (and 'value' property in HTML dicts), -1 to removing &amp;lt;script&amp;gt; and &amp;lt;style&amp;gt; from HTML. That’s a job for a sanitization stage. As aaronpk points out, sanitization will have to be done anyway if the content is to be reposted, so doing so in the parser doesn’t actually save anyone any work, but removes information which could be useful to people (example use cases: publishing posts with embedded per-post styling, publishing interactive HTML documents with embedded javascript)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== use poster if no src on video for u props ===&lt;br /&gt;
[https://indiewebcamp.com/irc/2015-12-13#t1450035721661 2015-12-13 raised in #indiewebcamp]&lt;br /&gt;
&lt;br /&gt;
There is a use-case of marking up the &amp;quot;poster&amp;quot; of a video element as the u-featured of an [[h-entry]], to do that, we need to change [[microformats2-parsing#parsing_a_u-_property|u- property parsing]] to look at the poster attribute of the video element, after it's looked for the src attribute.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;quot; else if video.u-x[poster], then get the poster attribute &amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Real-world example of markup in the wild:&lt;br /&gt;
* http://veganstraightedge.com/videos/2013/5/31/1/backyard-squirrel-buddy&lt;br /&gt;
** and likely all other videos posted there.&lt;br /&gt;
&lt;br /&gt;
Background discussion that led to this proposal:&lt;br /&gt;
* https://indiewebcamp.com/irc/2015-12-13#t1450035721661&lt;br /&gt;
&lt;br /&gt;
This seems very straightforward so I've added it as PROPOSED directly in the parsing spec. This issue is for tracking the discussion.&lt;br /&gt;
&lt;br /&gt;
Feedback from parser implementers please!&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== uf2 children on backcompat properties ===&lt;br /&gt;
[http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=today#c84632 2015-11-24 raised by Calli] in #microformats&lt;br /&gt;
&lt;br /&gt;
Related but different from [[#uf2_children_inside_a_classic_microformats_root_class_name]], when there is a uf2 child directly on a backcompat property, what should happen? E.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;div class=&amp;quot;adr h-adr&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;locality&amp;quot;&amp;gt;MF1&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;p-locality&amp;quot;&amp;gt;MF2&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What is the expected behavior and parser output?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
&amp;quot;items&amp;quot;: [{ &lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;adr&amp;quot;: [{&lt;br /&gt;
      &amp;quot;value&amp;quot;: &amp;quot;MF1MF2&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-adr&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;locality&amp;quot;: [&amp;quot;MF2&amp;quot;],&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;MF1MF2&amp;quot;]&lt;br /&gt;
       }&lt;br /&gt;
     }]&lt;br /&gt;
   }  &lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Proposal: the nested &amp;quot;adr h-adr&amp;quot; child is treated as an mf2 object, not backcompat, and thus the resulting parsed &amp;quot;locality&amp;quot; property has a single value of &amp;quot;MF2&amp;quot;. Proposed by Calli, noting that Glenn Jones's microformatshiv gets that result currently, and it would be easier for him (Calli) to implement this way.&lt;br /&gt;
** +1 Tantek, seems reasonable and the reasoning provided is good (we have one implementation this way already)&lt;br /&gt;
** +1 Kyle, this is consistent with the resolution to the related issue&lt;br /&gt;
** +1 Calli, yes, this is easier for me to implement (than taking both MF1 and MF2 properties) because it is consistent - for me, consistency is the controlling factor in favor rather than ease of parser implementation&lt;br /&gt;
** ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;adr h-custom&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;locality&amp;quot;&amp;gt;MF1&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;p-locality&amp;quot;&amp;gt;MF2&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
&amp;quot;items&amp;quot;: [{ &lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;adr&amp;quot;: [{&lt;br /&gt;
      &amp;quot;value&amp;quot;: &amp;quot;MF1MF2&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-custom&amp;quot;],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;locality&amp;quot;: [&amp;quot;MF2&amp;quot;],&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;MF1MF2&amp;quot;]&lt;br /&gt;
       }&lt;br /&gt;
     }]&lt;br /&gt;
   }  &lt;br /&gt;
}]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per the [[#any_h-_root_class_name_overrides_and_stops_backcompat_root]] resolution, the class name &amp;quot;h-custom&amp;quot; overrides the use of &amp;quot;adr&amp;quot; as a backcompat root.&lt;br /&gt;
&lt;br /&gt;
=== default generated HTML ===&lt;br /&gt;
2015-09-08 raised by Tantek in #indiewebcamp&lt;br /&gt;
&lt;br /&gt;
Should there be a default (perhaps not quite &amp;quot;canonical&amp;quot;) way to map/generate HTML+microformats2 from a parsed mf2 JSON output?&lt;br /&gt;
&lt;br /&gt;
E.g. straw proposal:&lt;br /&gt;
* JSON/mf2 -&amp;gt; [[XOXO]]+mf2&lt;br /&gt;
&lt;br /&gt;
Existing work / mappings:&lt;br /&gt;
* https://github.com/snarfed/granary/blob/master/granary/microformats2.py#L295&lt;br /&gt;
&lt;br /&gt;
Related to:&lt;br /&gt;
* https://github.com/snarfed/granary/issues/31&lt;br /&gt;
&lt;br /&gt;
Use-cases:&lt;br /&gt;
* default webview / presentation for a site that stores mf2 JSON output&lt;br /&gt;
* possibly a way to implement a distributed HTTP webcache retrieval protocol&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] I think we should have this, but am open to proposals on specifics!&lt;br /&gt;
* +1 [[User:GlennJones|Glenn]] Also think this is worth looking at, but I am not sure it should be part of the parser spec. Feels like it should be built as a separate library and have it own spec on the microformats wiki.&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Noscript skip/parse ===&lt;br /&gt;
2015-07-28&lt;br /&gt;
&lt;br /&gt;
Should mf parsers skip &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; tag in the HTML, like the &amp;lt;code&amp;gt;&amp;lt;template&amp;gt;&amp;lt;/code&amp;gt; tag mentioned in http://microformats.org/wiki/microformats2-parsing#note_HTML_parsing_rules ?&lt;br /&gt;
&lt;br /&gt;
mf2py skips &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; when using the html5lib DOM parser but no when using lxml parser. Example use of &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; https://kartikprabhu.com/ featured images have a no javascript fallback image inside &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;class='u-featured'&amp;lt;/code&amp;gt; markup.&lt;br /&gt;
* html5lib actually HTML-escapes the contents of &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt;, so to mf2py it just looks like plain text with no tags. In Woodwind, I've resorted to using regex to strip out &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; tags before parsing (very hacky). [[User:Kylewm|Kylewm]] 15:52, 25 August 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] skip noscript (and inside) because in today's typical browsing contexts, nothing in noscript is displayed, thus we should discourage marking up effectively invisible content.&lt;br /&gt;
** Proposed change to [[microformats2-parsing#parse_a_document_for_microformats]]:&lt;br /&gt;
*** from: &amp;quot;follow the HTML parsing rules&amp;quot;&lt;br /&gt;
*** to: &amp;quot;follow the HTML parsing rules (including skipping/omitting &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt; elements, e.g. like the html5lib DOM parser)&lt;br /&gt;
* -1 [[User:GlennJones|Glenn]] This subject does need to be address, but differently to proposed change. My personal view is that  e-* html should be passed through raw and then the consumer can process it in a way they feel fit. Its a case for helper libraries. I am about to build a helper library to do this based on the Readability code to post process e-* html. Other people may want to take different approaches, defining this in the spec feels like move into a whole area of new functionally.  &lt;br /&gt;
&lt;br /&gt;
As a separate new point we need to consider &amp;quot;exclude tags&amp;quot; lists for parsed text from html.  We should consider &amp;lt;code&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;noframe&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;template&amp;gt;&amp;lt;/code&amp;gt; there maybe other I have not gone through all the tags in current HTML spec. Also we should consider what to do about the more common pattern of fallback text within media tags &amp;lt;code&amp;gt;&amp;lt;video&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;lt;audio&amp;gt;&amp;lt;/code&amp;gt; etc. This should be explicitly discussed in the parsing rules. At the moment my experimental text normalisation does exclude tags, but the default text parse does not. Currently the fallback content in media tags like &amp;lt;code&amp;gt;&amp;lt;video&amp;gt;&amp;lt;/code&amp;gt; is added to the parse text. 12:56, 25 Septemeber 2015 (UTC)&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Standard datetime format ===&lt;br /&gt;
2015-07-28&lt;br /&gt;
&lt;br /&gt;
http://microformats.org/wiki/microformats2-parsing#parsing_a_dt-_property does not specify any standard format to use for datetimes. e.g.  &amp;lt;pre&amp;gt;2015-07-28T12:55:33&amp;lt;/pre&amp;gt; vs &amp;lt;pre&amp;gt;2015-07-28 12:55:33&amp;lt;/pre&amp;gt;&lt;br /&gt;
Would be good to standardize this to compare various parser outputs.&lt;br /&gt;
&lt;br /&gt;
2015-07-29: This subject is (somewhat) covered in http://microformats.org/wiki/iso-8601 As it stands the JavaScript parsers support output in the 3 main profiles, 'W3C Note', 'RFC 3339' and 'HTML5' plus 'auto' which keeps authors format. The default date output for the JavaScript parsers is the same format as the date was originally authored in. This can be changes by setting the options.dateFormat switch to any of the other profiles mentioned. It would be good if other parser also had a switch to force output to a common profiles so we could compare various parser outputs, but I think the default should be how a date was authored. All output whatever profile should also keeps the authored level of specificity, i.e. not adding minutes or seconds if they are not in the input date string. This is important if you want to compare parser outputs. &lt;br /&gt;
&lt;br /&gt;
The only exception to this where date and times are combined such as the implied h-event rule for dt-start and dt-end where I output in the HTML5 style 2015-07-29 12:55:33 as there is no predefined author preference and HTML5 profile is more human readable. [[User:GlennJones|Glenn Jones]] 11:02, 29 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] output more human readable &amp;lt;code&amp;gt;2015-07-28 12:55:33&amp;lt;/code&amp;gt; canonically, with authored level of specificity, i.e. not adding minutes or seconds if they are not in the input date string.&lt;br /&gt;
** Let's update any test cases as needed for this. - [[User:Tantek|Tantek]]&lt;br /&gt;
* ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== implied date for dt properties both mf2 and backcompat ===&lt;br /&gt;
The [[value-class-pattern#microformats2_parsers|value class pattern dt-* date proposal]] should apply to both mf2 dt-* properties, and backcompat classic microformats, to preserve the hAtom / hCalendar optimizations noted on that page, but in a generic way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] 16:12, 18 August 2015 (UTC)&lt;br /&gt;
* +1 [[User:Glenn Jones|Glenn Jones]] 20 August 2015&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== implied properties when an explicit class is provided ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Should &amp;quot;u-url&amp;quot; still be implied if another explicit class is already provided, as below. This is a contrived example, but it is taken from Bridgy's unit tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;article class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;a class=&amp;quot;u-like-of&amp;quot; href=&amp;quot;http://orig.domain/baz&amp;quot;&amp;gt;liked this&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/article&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, http://orig.domain/baz is almost certainly not the u-url, so IMO it would be better to leave it out —[[User:Kylewm|Kylewm]] 15:10, 7 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
'''2015-01-20 consensus'''&lt;br /&gt;
* Changed my mind. Simpler to do nothing. Example provided is artificially constructed, does not reflect likely real world confusion of if we make implied properties more complicated. [[User:Tantek|Tantek]] 06:26, 21 January 2015 (UTC)&lt;br /&gt;
* ++ Consensus on do nothing for this case. At [[2015-01-20]]&lt;br /&gt;
&lt;br /&gt;
'''Proposed resolution:'''&lt;br /&gt;
* Changed again. Due to indiewebcamp.com/edit use-case, this now makes sense for all implied properties. That is:&lt;br /&gt;
** If an element has any explicit property class name(s) on it, then it must not be used to imply any properties. [[User:Tantek|Tantek]] 20:50, 27 May 2015 (UTC)&lt;br /&gt;
*** +1 this seems reasonable, if a publisher is going to add an mf2 class, it is unlikely they want other classes automatically implied from the same value [[User:Aaronpk|Aaronpk]] 23:19, 29 November 2015 (UTC)&lt;br /&gt;
*** -1 for now. To my knowledge, this has only been observed in artificially constructed unit tests and examples, and it adds some weird edge cases that are hard to reason about. [[User:Kylewm|Kylewm]] 00:46, 1 December 2015 (UTC)&lt;br /&gt;
*** ... provide input on this proposal here&lt;br /&gt;
** Refined: Or should this be refined by per parsing prefix? [[User:Tantek|Tantek]] 22:59, 18 September 2015 (UTC) &lt;br /&gt;
*** Any explicit &amp;quot;p-*&amp;quot; property means no implied &amp;quot;p-name&amp;quot; from that element&lt;br /&gt;
*** Any explicit &amp;quot;u-*&amp;quot; property means no implied &amp;quot;u-url&amp;quot; nor &amp;quot;u-photo&amp;quot; from that element.&lt;br /&gt;
*** ... provide input on this refined proposal here&lt;br /&gt;
** Suggestion: split this issue up per property. I think it makes sense for u-url and can be easily added to the spec as e.g. &amp;quot;.h-x&amp;gt;a[href]:only-of-type:not[.h-*&amp;lt;strong&amp;gt;,.u-*&amp;lt;/strong&amp;gt;]&amp;quot;. [[User:Kylewm|Kylewm]] 00:46, 1 December 2015 (UTC)&lt;br /&gt;
*** Obviously wrong to assume a link explicitly pointing elsewhere is our &amp;quot;url&amp;quot; &lt;br /&gt;
*** More difficult to make a case for photo and especially for name.&lt;br /&gt;
*** &amp;quot;name&amp;quot; is implied at least by [.h-x textContent], so often the excluded element would end up included anyway.&lt;br /&gt;
*** ... provide input on this refined proposal here&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== whitespace collapsing revisited ===&lt;br /&gt;
2015-05-27: (raised by [[User:Kevin Marks|Kevin Marks]] per Glenn Jones)&lt;br /&gt;
&lt;br /&gt;
Revising the microformats tests to conform to the &amp;quot;don't collapse whitespace&amp;quot; rule below reveals some non-intuitive cases. &lt;br /&gt;
preserving whitespace in addresses is somewhat defensible, but in an implied name it is often unhelpful, as it preserves non-user visible space there for authoring reasons.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
[https://github.com/microformats/tests/commit/a325e0e9bc2089507e69b1883f7065a3316e07c2#diff-d577012c1438978a571c4049179607f0 this test] shows how extraneous whitespace ends up in the &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-review-aggregate&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;p-item h-event&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 class=&amp;quot;p-name&amp;quot;&amp;gt;Fullfrontal&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;p class=&amp;quot;p-description&amp;quot;&amp;gt;A one day JavaScript Conference held in Brighton&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;time class=&amp;quot;dt-start&amp;quot; datetime=&amp;quot;2012-11-09&amp;quot;&amp;gt;9th November 2012&amp;lt;/time&amp;gt;&amp;lt;/p&amp;gt;    &lt;br /&gt;
    &amp;lt;/div&amp;gt; &lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;p class=&amp;quot;p-rating&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;p-average value&amp;quot;&amp;gt;9.9&amp;lt;/span&amp;gt; out of &lt;br /&gt;
        &amp;lt;span class=&amp;quot;p-best&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt; &lt;br /&gt;
        based on &amp;lt;span class=&amp;quot;p-count&amp;quot;&amp;gt;62&amp;lt;/span&amp;gt; reviews&lt;br /&gt;
    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
give a parsed result of:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;items&amp;quot;: [{&lt;br /&gt;
        &amp;quot;type&amp;quot;: [&amp;quot;h-review-aggregate&amp;quot;],&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
            &amp;quot;item&amp;quot;: [{&lt;br /&gt;
                &amp;quot;value&amp;quot;: &amp;quot;Fullfrontal\nA one day JavaScript Conference held in Brighton\n9th November 2012&amp;quot;,&lt;br /&gt;
                &amp;quot;type&amp;quot;: [&amp;quot;h-event&amp;quot;],&lt;br /&gt;
                &amp;quot;properties&amp;quot;: {&lt;br /&gt;
                    &amp;quot;name&amp;quot;: [&amp;quot;Fullfrontal&amp;quot;],&lt;br /&gt;
                    &amp;quot;description&amp;quot;: [&amp;quot;A one day JavaScript Conference held in Brighton&amp;quot;],&lt;br /&gt;
                    &amp;quot;start&amp;quot;: [&amp;quot;2012-11-09&amp;quot;]&lt;br /&gt;
                }&lt;br /&gt;
            }],&lt;br /&gt;
            &amp;quot;rating&amp;quot;: [&amp;quot;9.9&amp;quot;],&lt;br /&gt;
            &amp;quot;average&amp;quot;: [&amp;quot;9.9&amp;quot;],&lt;br /&gt;
            &amp;quot;best&amp;quot;: [&amp;quot;10&amp;quot;],&lt;br /&gt;
            &amp;quot;count&amp;quot;: [&amp;quot;62&amp;quot;],&lt;br /&gt;
            &amp;quot;name&amp;quot;: [&amp;quot;Fullfrontal\nA one day JavaScript Conference held in Brighton\n9th November 2012\n\n\n9.9 out of \n        10 \n        based on 62 reviews&amp;quot;]&lt;br /&gt;
        }&lt;br /&gt;
    }],&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is a reasonable textual representation of the event, but the implied &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; is full of spurious whitespace that any consumer would have to strip. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/microformats/tests/commit/4c9690b53b0a2f40440abac8e609c51ac7dd6d56 h-review] has similar issues&lt;br /&gt;
&lt;br /&gt;
2015-05-28: (Addition by [[User:GlennJones|Glenn Jones]])&lt;br /&gt;
&lt;br /&gt;
The example below shows the type of markup most effected by the &amp;quot;implied name&amp;quot; and &amp;quot;don't collapse whitespace&amp;quot; rule working together to produce output that is hard to use without further processing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;h-card&amp;quot; href=&amp;quot;http://glennjones.net&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;p-given-name&amp;quot;&amp;gt;Glenn&amp;lt;/span&amp;gt;&lt;br /&gt;
     &amp;lt;span class=&amp;quot;p-family-name&amp;quot;&amp;gt;Jones&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The output for the name property from the above HTML would be &amp;lt;code&amp;gt;Glenn\r\n     Jones&amp;lt;/code&amp;gt; using the (trim lead/trailing) suggested in the  parsing spec.  I could of course move the spans onto one line, but it feels fragile to consider whitespace sensitivity in HTML like this. Added to the fact that HTML templating environments often take away that level of whitespace control from authors anyway.&lt;br /&gt;
&lt;br /&gt;
There are issues with both: keeping whitespace, returns and tabs from parsed HTML or collapse that whitespace. If we return the whitespace it becomes mal-formatted for humans because it was only added to make the HTML code understandable and in most cases was not meant to be used/read outside of that context. If we collapse the whitespace we can have issues of whitespace sensitive text from &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; etc. being incorrectly formatted. &lt;br /&gt;
&lt;br /&gt;
Providing a CSS aware innerText feature would produce the most useable output, but this is too complex/time consuming to build for most parser developers. In the face of no perfect solution I have taken the 80:20 view,  whereby errant whitespace, causes me considerably more problems than mal-formatted &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; content so I collapse whitespace on all text returned. &lt;br /&gt;
&lt;br /&gt;
This feature is a non-CSS aware version of innerText. It does not cover all rendering edge cases, but enough to produce practical output.&lt;br /&gt;
&lt;br /&gt;
For now, I have started changing the node parser to flag &amp;quot;white-space collapsing&amp;quot; as an experimental feature which is off by default i.e. http://glennjones.net/tools/microformats/ but personally I will parse everything with this on as I find it the most practical solution.  &lt;br /&gt;
&lt;br /&gt;
Not sure where that leaves me on the options below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
Choose from:&lt;br /&gt;
# keep as is and every parser client has to post process for common cases.&lt;br /&gt;
# '''keep as is but have mf2 parser trim leading/trailing whitespace (likely to provide desired result and be reasonably backcompat)'''&lt;br /&gt;
#* +1 my preference of the two options. [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
#* +1 though this doesn't solve any of the problems discussed above, it's still worth doing [[User:Kevin Marks|Kevin Marks]] 16:41, 28 May 2015 (UTC)&lt;br /&gt;
#* +1 will help parsers be more consistent with each other, and I haven't ever encountered a case where preserving leading/trailing whitespace was desirable [[User:Kylewm|Kylewm]] 20:45, 8 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
2015-06-08 option 2 resolved by consensus and implementation in mf2py.&lt;br /&gt;
&lt;br /&gt;
Somewhat orthogonal:&lt;br /&gt;
* make &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; on properties with children normalise whitespace&lt;br /&gt;
** -1 Seems like a bad idea as this &amp;quot;value&amp;quot; is supposed to be the same as if there was no embedded child microformat. [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
* make implied &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; normalise whitespace.&lt;br /&gt;
** +0 This is reasonable and already done somewhat in the parsing spec (trim lead/trailing). [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
** +1 Given the universality of name, this would fix most of the issues we see. [[User:Kevin Marks|Kevin Marks]] 16:41, 28 May 2015 (UTC)&lt;br /&gt;
* Put \n in textual forms if there is a &amp;lt;code&amp;gt;&amp;amp;lt;p&amp;amp;gt;&amp;lt;/code&amp;gt; tag in the original.&lt;br /&gt;
** -1 that's a long path to go down with whitespace equivalents for HTML markup. [[User:Tantek|Tantek]] 20:45, 27 May 2015 (UTC)&lt;br /&gt;
** would only preserving whitespace if in &amp;amp;lt;pre&amp;amp;gt; be an 80:20 compromise? [[User:Kevin Marks|Kevin Marks]] 16:41, 28 May 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Because there are both code markup and specific vocabulary (label) needs for preserving whitespace, we are compelled to preserve in general, perhaps except for very specific limited generic cases (e.g. trim leading/trailing, &amp;quot;value&amp;quot; parsing, implied name). [[User:Tantek|Tantek]]&lt;br /&gt;
&lt;br /&gt;
=== u- parsing iframe src ===&lt;br /&gt;
Currently if I put u-* on an iframe it gets the value of the fallback text. This seems a shame. Getting the URL seems a sensible answer.&lt;br /&gt;
[[User:Kevin Marks|Kevin Marks]] 09:07, 11 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== i- parsing iframe src ===&lt;br /&gt;
&lt;br /&gt;
More controversially, what about using an iframe for transclusion? A use case here is comments on a static site. Currently, on eg http://www.kevinmarks.com/microformatschema.html the comments are injected via JS, making them opaque to parsers and thus precluding further parsing such as salmentions.&lt;br /&gt;
&lt;br /&gt;
If instead they were an iframe embedding them, a parser could optionally fetch its contents, parse them, and include them in the parsed mf2 output at that point. Overloading u-* for this seems wrong; e-* as below for srcdoc would have a different effect; this implies a new prefix directive would be needed. A strawman i-* (for include) may work.&lt;br /&gt;
[[User:Kevin Marks|Kevin Marks]] 09:07, 11 July 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== e- parsing iframe srcdoc ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Proposal: addition of a new e-* parsing rule for iframe elements with srcdoc attributes. E.G.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;iframe class=&amp;quot;e-content&amp;quot; srcdoc=&amp;quot;&amp;lt;p&amp;gt;A paragraph of HTML with &amp;amp;quot;quoted quotes&amp;amp;quot; &amp;amp;amp;amp; doubly quoted ampersands&amp;lt;/p&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;items&amp;quot;: [{&lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-entry&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
   &amp;quot;content&amp;quot;: [&amp;quot;&amp;lt;p&amp;gt;A paragraph of HTML with &amp;amp;quot;quoted quotes&amp;amp;quot; &amp;amp;amp; doubly quoted ampersands&amp;lt;/p&amp;gt;&amp;quot;]&lt;br /&gt;
  }&lt;br /&gt;
 }]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would allow, for example, HTML comments to be sandboxed inside iframes but still parsable as microformats.&lt;br /&gt;
&lt;br /&gt;
I believe the correct processing would be to leave &amp;amp;quot; entities as they are but to unescape any doubly-escaped ampersands.&lt;br /&gt;
&lt;br /&gt;
** Is there any use case for that? —[[User:TomMorris|Tom Morris]] 12:32, 14 September 2013 (UTC)&lt;br /&gt;
** +1 we need documentation of use case and existing sites publishing iframe srcdoc like this - [[User:Tantek|Tantek]] 00:47, 15 September 2013 (UTC)&lt;br /&gt;
** Rejected by consensus at [[2015-01-20]] meetup due to lack of real world uses cases / existing sites. [[User:Tantek|Tantek]] 06:26, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to interpret mf2 properties on select ===&lt;br /&gt;
How should select elements with properties be treated any differently?&lt;br /&gt;
&lt;br /&gt;
Awaiting real world examples / stronger use-cases, until then no special treatment of select elements with properties:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Are there any real world examples of select elements with microformats properties?&lt;br /&gt;
* What would the use-case be for putting a microformats property class name on a select element?&lt;br /&gt;
* Nothing special. By consensus at [[2015-01-20]] meetup due to lack of real world uses cases / existing sites. [[User:Tantek|Tantek]] 06:26, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to interpret mf2 root name on form ===&lt;br /&gt;
See what to do about &amp;lt;em&amp;gt;root class names&amp;lt;/em&amp;gt; on &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; elements in particular:&lt;br /&gt;
* [[hcard-input]]&lt;br /&gt;
&lt;br /&gt;
Awaiting real world examples / stronger use-cases, until then, no special treatment of root class names on &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; elements:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Are there any real world examples of a &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; element with a microformats root class name?&lt;br /&gt;
* [[hcard-input]] is one possible use-case, is anyone attempting to use forms for hCard input, e.g. with scripts to help make it work?&lt;br /&gt;
* Are there other use-cases for putting a microformats root class name on a &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; element?&lt;br /&gt;
* As of [[2015-01-20]] - no consensus - need more input as to when/why this is useful to do anything special.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Parsing Literal Values===&lt;br /&gt;
Issue raised by: [[User:BenWard|Ben Ward]]&lt;br /&gt;
&lt;br /&gt;
It is proposed for microformats2 that all microformats be parsable from just their root element, e.g. &amp;lt;code&amp;gt;&amp;amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;Ben Ward&amp;amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; would create an hCard with the following properties after parsing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
  'type': ['h-card'],&lt;br /&gt;
  'properties': {&lt;br /&gt;
     'name': ['Ben Ward']&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a four-fold change from the current [[hCard]]:&lt;br /&gt;
# type is generically identifiable as a microformat root, even in parsed form. The use of the 'h-' prefix persists into the type of the object. This is deliberately so, as a result of re-using the JSON data model of microdata which itself is re-using a common JSON convention, such that microformatted data is clearly distinguishable (as opposed to any other random schema that may be using a similar data model).&lt;br /&gt;
# root-class-only support. Per [[microformats-2-implied-properties]], the ''name'' property is implied by the entirety of the root class name element.&lt;br /&gt;
# 'name' instead of 'fn'. As also documented in [[microformats-2-implied-properties]], the continuous challenges/problems and need to repeatedly re-explain 'fn' over the years combined with the real-world market response of nearly every other party doing a person vocabulary renaming 'fn' to 'name', microformats 2 makes this change as well.&lt;br /&gt;
# There is no automatic parse-time inferring of &amp;lt;code&amp;gt;'given-name': ['Ben']&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;'family-name': ['Ward']&amp;lt;/code&amp;gt;. Any such inferring *might* be made by a vCard converter, but is left up to that specific application (not all applications) built on that vocabulary, though even in that case it may not be necessary, as an empty &amp;quot;N:;;;&amp;quot; [[vCard]] property is sufficient to satisfy the N property requirement of [[vCard]], and also causes no problems when imported into various [[vcard-implementations]].&lt;br /&gt;
&lt;br /&gt;
It is required of the extractor to understand that when a microformats object specifies no explicit child properties, that it must treat &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; as having a &amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;. But, the parser is generic, so it also treats &amp;lt;code&amp;gt;h-review&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-entry&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-recipe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h-geo&amp;lt;/code&amp;gt; as having a ‘&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;’.&lt;br /&gt;
&lt;br /&gt;
As a result, specific vocabularies are evolved to drop their specific form of name (e.g. fn, summary, entry-title) and simplified to use a common 'name' property instead.&lt;br /&gt;
&lt;br /&gt;
Note: while the overwhelming majority of real world publishing/consuming uses of microformats do so with proper nouns which have names (and thus this parser-level incorporation of an implied 'name'), there are some formats that do not have a 'name' semantic. For example, [[geo]], [[adr]], and possibly if/when developed, units of measure, length, cost. The current thinking is that the benefits to the far greater proper-noun use-case of microformats outweigh the technical inelegance of having an extra/ignored 'name' property on formats that lack such a semantic.&lt;br /&gt;
&lt;br /&gt;
Some formats also may appear in theory to better imply some other property, e.g. a review might be thought to imply its ''content'', not its name, and an Atom entry its ''content'', not its title, but in practice (actual publishing patterns) this is not the case. Typically, brief unstructured reviews (or mentions thereof) provide a ''summary'' (often hyperlinked to an expanded structured form) of that review, not its content, and similarly, brief unstructured posts (e.g. RSS items) have historically most often been link blog items which include the title of an item and a link. Short status updates as well established by Twitter are newer and would seem to imply purely content with no title, at least semantically, however, even Twitter populates the RSS title and ATOM entry title of their feeds with the content. It's not clear what went into that decision, however, that's likely irrelevant, as the outcome turns out to be emergent consistency among publishing behaviors.&lt;br /&gt;
&lt;br /&gt;
To avoid overloading or undermining the semantics of a vocabulary, I propose that we handle this at the extractor level in a simpler fashion: Define a new property for literal data, that an extractor will provide if no other information was available. All ''interpreters'' may then be instructed that in the event that an object has no properties, it can attempt to interpret the literal value from the page instead.&lt;br /&gt;
&lt;br /&gt;
* This was one of the design iterations I went through which led me to the current implied 'name' design. Another iteration was the ability for a vocabulary to specify a single required property which was implied if there were no properties provided. However, the combination of the fact that in most cases such single required properties were quite name-like, and that a vocabulary-specific rule like that would then bind parsers to specific vocabularies (even so slightly) led me to collapse them into implying a 'name'. It's not perfect, but it's the best alternative so far that balances practical convenience of publishing/consuming, avoids vocabulary-specific knowledge in the parser, and technical (in)elegance. [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
In existing microformats, the closest existing example we have for this is the &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; property in hCard, which is used to represent the literal address label for a place. It is a corresponding piece of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;org&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; in combination, but has no structure in and of itself. Possibly, every microformat could have a &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; form where structured data is unavailable.&lt;br /&gt;
&lt;br /&gt;
However in practice, the hCard &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; property is both little understood and little used. It's not even clear that it ought to be kept for microformats 2 (no known consumers, very few (if any?) real-world non-test publishers). This disuse is likely a good indicator that we should avoid basing anything on its design.&lt;br /&gt;
&lt;br /&gt;
Alternatively, &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; is used throughout microformats to target a generic value (e.g. in combination with &amp;lt;code&amp;gt;price&amp;lt;/code&amp;gt; in hListing.) It has been proposed that when parsing properties that are also themselves microformats, we create native objects of the form:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        'value': '1900 12th Street, San Francisco, CA 94'&lt;br /&gt;
      , 'type': ['h-adr']&lt;br /&gt;
      , 'properties': {&lt;br /&gt;
            'street-address': '1900 12th Street'&lt;br /&gt;
          , 'etc': 'etc'&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
We could apply this same pattern to the root level:&lt;br /&gt;
&lt;br /&gt;
    { &lt;br /&gt;
        type: [h-card]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: 'Ben Ward'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
In this case, an interpreter or implementation is responsible for using &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; in place of &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt;, or restructuring the object. It would be the responsibility of each vocabulary to define its root property. The parsing layer of microformats 2.0 would not impose semantics or naming onto that.&lt;br /&gt;
&lt;br /&gt;
For another example, h-geo would end up like this:&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        type: [h-geo]&lt;br /&gt;
      , properties: {}&lt;br /&gt;
      , value: '1.3232;-0.543'&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
* This is an alternative I've been considering as well:  [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
** 'value' is more generic than 'name' (applies to more vocabularies) with the trade-off that it naturally has less (weaker) semantics.&lt;br /&gt;
*** +1 I think that having naturally weaker semantics would be appropriate for this parsing functionality. —[[User:BenWard|BenWard]] 07:24, 5 October 2011 (UTC)&lt;br /&gt;
** The interesting thing that this analysis has revealed is that there appear to be two distinct clusters of microformats, the much more commonly used/understood/useful proper-noun microformats which markup things with names (people, events, reviews, recipes), and the less used compound-data microformats which are often used ''inside'' other microformats and just have some sort of semi-structured value (adr, geo, measure, and perhaps even things like tel). Perhaps this is implying the possibility and some degree of utility for ''two'' microformats root class name prefixes, 'h-' for existing proper-noun microformats, and something else ('m-' for microformat/molecule?, 's-' for structured-value?, 'v-' for value (though historically &amp;quot;v-&amp;quot;/&amp;quot;v.&amp;quot; has meant &amp;quot;vendor-specific&amp;quot;)?) for unnamed structured data microformats.&lt;br /&gt;
*** This more and more feels like a good idea, and I'm leaning toward &amp;quot;s-&amp;quot; for struct / structure / structured value. &amp;quot;s-&amp;quot; works just like &amp;quot;h-&amp;quot; except that it doesn't imply any properties at parse time. We can try it and see what happens. There's also no harm if publishers just use &amp;quot;h-&amp;quot; structures, they just (possibly) get a few extra properties if they happen to omit properties.&lt;br /&gt;
** Parallels the same JSON when a property has both a string value ''and'' is a structure itself.&lt;br /&gt;
*** Changed my mind on this. The parallel is not quite there. 'name'/'url'/'photo' are only implied if there are NO properties, where as the JSON string value + structure convention *always* provides a 'value'. [[User:Tantek|Tantek]] 22:39, 4 October 2011 (UTC)&lt;br /&gt;
*** And due to this difference in behavior ('value' is there when nested properties are present, whereas 'name' is only implied when there are no properties specified), I think it's correct to keep them separate, i.e. stick with implied 'name'. [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
** However, I'm still currently leaning towards the practical convenience of providing a 'name' for the vast majority of microformats uses, rather than diluting this feature for the sake of avoiding implying inapplicable semantics to the few plain structured data microformats, and even then, only when no properties are explicitly specified! I'd rather introduce a new root prefix for those than lose the simplicity and utility of implied 'name'. [[User:Tantek|Tantek]] 13:48, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== resolved ==&lt;br /&gt;
=== When to collapse whitespace in properties ===&lt;br /&gt;
&lt;br /&gt;
The spec doesn’t explicitly require whitespace to be collapsed or not. The official mf2 test suite requires it to be collapsed.&lt;br /&gt;
&lt;br /&gt;
Reasons why whitespace ''shouldn’t'' be collapsed:&lt;br /&gt;
* Plaintext property representations of syntax-highlighted code, poetry and song lyrics require whitespace to be present&lt;br /&gt;
* Whether or not whitespace is an important part of the content being parsed is determined by css white-space and CANNOT be inferred from HTML markup alone&lt;br /&gt;
&lt;br /&gt;
Resolution 2013-11-12: Agreed, whitespace should not be collapsed (other than normal HTML5 parsing rules). The spec now refers to &amp;quot;textContent&amp;quot; rather than &amp;quot;innertext&amp;quot; to make this explicit.&lt;br /&gt;
&lt;br /&gt;
=== How to interpret mf2 classnames on form inputs ===&lt;br /&gt;
E.G. how to parse:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;input class=&amp;quot;u-url&amp;quot; value=&amp;quot;https://brennannovak.com/notes/338&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Examples in the wild: https://brennannovak.com/notes/338&lt;br /&gt;
&lt;br /&gt;
See proposal:&lt;br /&gt;
* [[hcard-parsing-brainstorming#input_element_handling]]&lt;br /&gt;
&lt;br /&gt;
Resolution 2013-11-12: Per that proposal, p- u- dt- properties on input[value] elements now use the value attribute.&lt;br /&gt;
&lt;br /&gt;
=== mixture of microformats2 and classic microformats classnames on different elements ===&lt;br /&gt;
Some sites in the wild have mistakenly combined classic mf and mf2 markup in ways which misrepresent the content if parsed in BC mode.&lt;br /&gt;
&lt;br /&gt;
Typically this is caused by putting classic and mf2 classnames for the same vocabulary on different elements, e.g:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;body class=&amp;quot;hentry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;article class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name&amp;quot;&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
 &amp;lt;/article&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sites where this has been observed:&lt;br /&gt;
* http://acegiak.machinespirit.net/2013/10/17/barnaby-walters-notes-another-thing-i-love-about-the-web-users-have-the-power-to-take-control-of-their-uis-and-improve-their-own-experiences-aside-drm-for-html-would-prevent-this-from-being-possibl/&lt;br /&gt;
* http://shawfactor.com/2013/08/06/thoughts-on-extending-webmentions/ (fixed)&lt;br /&gt;
* http://notizblog.org/2013/06/18/the-rise-of-the-indieweb/ (fixed)&lt;br /&gt;
&lt;br /&gt;
Discussion:&lt;br /&gt;
&lt;br /&gt;
* As far as I can tell, the problems in all of these examples were caused by mf2 markup being injected by a wordpress plugin, but classic mf classnames being present further up the DOM in the themes. When parsed in compatibility mode, the classic mf classnames are transformed into mf2 classnames, making the original mf2 classnames look like children of empty items.&lt;br /&gt;
* Turns out this isn’t theme-specific, WordPress injects hentry via PHP [http://indiewebcamp.com/irc/2013-10-22/line/1382448759]. The bug with the wordpress mf2 plugin is resolved as of [http://indiewebcamp.com/irc/2013-10-22/line/1382449035 2013-10-22] --[[User:Barnabywalters|bw]] 13:38, 22 October 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== e- and p- escaping levels ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* The fact that the parsed value of any element with .e-* is at a different level of escaping to the parsed values of p-*, dt-* etc. without any indication of how the property was parsed in the output is a security problem. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;input&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;output&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
   &amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;p-name&amp;quot;&amp;gt;&amp;amp;lt;tag&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;items&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;type&amp;quot;: [&lt;br /&gt;
                &amp;quot;h-card&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;properties&amp;quot;: {&lt;br /&gt;
                &amp;quot;name&amp;quot;: [&lt;br /&gt;
                    &amp;quot;&amp;lt;tag&amp;gt;&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
   &amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;e-name&amp;quot;&amp;gt;&amp;amp;lt;tag&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;items&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;type&amp;quot;: [&lt;br /&gt;
                &amp;quot;h-card&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;properties&amp;quot;: {&lt;br /&gt;
                &amp;quot;name&amp;quot;: [&lt;br /&gt;
                    &amp;quot;&amp;amp;lt;tag&amp;amp;gt;&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
  &amp;lt;/source&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* As a parser developer, the most straightforward way I can think of solving this is to add an option (enabled by default) which encodes HTML special characters on all non e-* properties, so the developer knows that all property values are going to be at the same level of escaping. --[[User:Barnabywalters|bw]] 20:00, 15 June 2013 (UTC)&lt;br /&gt;
** Your suggestion of auto-HTML-encoding p-*/u-*/dt-* property values is the most sensible I think. I would NOT make it an option, as it makes sense write consistent microformats2 consumers. - [[User:Tantek|Tantek]] 07:18, 5 July 2013 (UTC)&lt;br /&gt;
** Can you think of any existing apps/consumers of microformats2 via the parser that would break? What would indieweb comments parsers do? - [[User:Tantek|Tantek]] 07:18, 5 July 2013 (UTC)&lt;br /&gt;
*** The only breakage which might occur would be over-encoding of non e-* properties, but I’ll release this update as v0.2.0 and warn people about the changes. The worst thing which could happen is that some comments look a bit weird, as opposed to the current worst possible scenario of easy XSS attacks --[[User:Barnabywalters|bw]] 12:55, 5 July 2013 (UTC)&lt;br /&gt;
*** We should also decide exactly which characters get encoded — just angle brackets, or quotes/ampersands as well? --[[User:Barnabywalters|bw]] 12:55, 5 July 2013 (UTC)&lt;br /&gt;
*** I am not sure about this, it seems more like a helper function rather than a core feature of the parser. Personally I would like to store data as text and encode only when I am going to use and I known the format it is going to be use in.  --[[User:GlennJones|Glenn Jones]] 9:54, 14 July 2013 (UTC) &lt;br /&gt;
***After the discussion on the indiewebcamp IRC with Barnaby Walters I now understand the XSS issue that this change is trying to address. A rogue author could include HTML with scripts to execute a XSS attack. These could be masked by switch prefixes i.e. p-* to e-* on a well use property. As the consumer does not see the prefix in the JSON output they have no idea if a property will content HTML or text.  I will update my two parsers and the test suite --[[User:GlennJones|Glenn Jones]] 8:02, 17 July 2013 (UTC) &lt;br /&gt;
**So what about an author setting a property to e-* when it would normal be p-*, dt-* or u-* i.e.&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-card&amp;quot;&amp;gt;&amp;lt;p class=&amp;quot;e-name&amp;quot;&amp;gt;&amp;lt;script&amp;gt; alert('xss test') &amp;lt;/script&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** per [[events/2013-09-14-microformats2-parsing|microformats2 parsing discussion 2013-09-14]], parsers should never automatically attempt to HTML-special-characters encode - as that would provide the client of the parser a false sense of security. It's *always* up to client code to escape any text being output to HTML *at the moment it is output to HTML* and never before, because they can never trust that any text from storage/elsewhere has for sure been escaped or not. - [[User:Tantek|Tantek]] 18:07, 17 October 2013 (UTC)&lt;br /&gt;
** Should we not encode e-* as well and the consumer can decode at their own risk --[[User:GlennJones|Glenn Jones]] 18:42, 21 July 2013 (UTC) &lt;br /&gt;
*** No, never, per above point from [[events/2013-09-14-microformats2-parsing|microformats2 parsing discussion 2013-09-14]] - [[User:Tantek|Tantek]] 18:07, 17 October 2013 (UTC)&lt;br /&gt;
** See [[events/2013-09-14-microformats2-parsing|microformats2 parsing discussion 2013-09-14]] etherpad: https://etherpad.mozilla.org/microformats2parsing for more details on the resolution to this issue - and incorporate here (then move to resolved section below). - [[User:Tantek|Tantek]] 18:07, 17 October 2013 (UTC)&lt;br /&gt;
* Resolved by changes to the parsing spec: all properties are plaintext (non-HTML escaped), e-* properties result in a dictionary with &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; = plaintext version, &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; = raw HTML version &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== br hr empty string ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* The parsing rule 'else if br.p-x or hr.p-x, then return &amp;quot;&amp;quot; (empty string)' for p-* can cause any code consuming the API to become quite bloated. It means that you have test every array value to see if its an empty string. It is also unclear to me what the purpose of this mark-up pattern is for  [[User:GlennJones|Glenn Jones]]&lt;br /&gt;
** Upon reconsidering this, I agree with you, this is an unlikely use case. If a publisher wants to explicitly set an empty property &amp;quot;p-foo&amp;quot; they can simply write &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;p-foo&amp;quot;&amp;gt;&amp;amp;lt;/span&amp;gt;&amp;lt;/code&amp;gt; which looks explicit. Whereas BR and HR tags are often just presentational, so we should both not encourage usage of them for semantics, and anyone that did use them would be subject to likely loss of semantics upon a redesign (that got rid of those particular BR and HR tags). I'm going to remove them from the parsing spec. - [[User:Tantek|Tantek]] 15:29, 10 February 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== datetime examples without T delimiter ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* The examples in the wiki microformats-2 pages such h-entry and h-entry had datetime without the 'T' delimiter between date and time. ie&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;time class=&amp;quot;dt-published&amp;quot; datetime=&amp;quot;2013-06-13 12:00:00&amp;quot;&amp;gt;13&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt; June 2013&amp;lt;/time&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
I have updated the pages. As far as I known this is a new pattern for dates. Was it a mistake in the examples or is it a new datetime pattern.&lt;br /&gt;
** The [[HTML5]] &amp;quot;time&amp;quot; element, and &amp;quot;datetime&amp;quot; attribute allow for space &amp;lt;span style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;&amp;quot; &amp;quot;&amp;lt;/span&amp;gt; as a separator between date and time as well as &amp;quot;T&amp;quot;, thus we allow it for microformats as well. The  &amp;lt;span style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;&amp;quot; &amp;quot;&amp;lt;/span&amp;gt; separator is preferred as the date and time are more readable when separated by a space. The examples noted in those specs deliberately use this. - [[User:Tantek|Tantek]] 18:48, 15 July 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== rel-alternate absent optional attributes ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* What should rel-alternate parsing do when one of the optional attributes specified (&amp;lt;kbd&amp;gt;hreflang&amp;lt;/kbd&amp;gt; or &amp;lt;kbd&amp;gt;media&amp;lt;/kbd&amp;gt; or both) is not there? The options seem to be:&lt;br /&gt;
*# leave the corresponding key out of the alternate JSON object&lt;br /&gt;
*#* This one. Leave the corresponding key out.&lt;br /&gt;
*# include the corresponding key in the alternate JSON object, but set the value to the JSON null object&lt;br /&gt;
*# include the corresponding key in the alternate JSON object, but set the value to a blank string&lt;br /&gt;
*# something I haven't thought of&lt;br /&gt;
&lt;br /&gt;
I haven't checked the existing implementations, but Barnaby said he's not sure what the appropriate way to deal with it is either. —[[User:TomMorris|Tom Morris]] 15:41, 9 August 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== rel-alternate and type attribute ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Should rel-alternate parsing also pick up the &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; attribute? It’s fairly widely used, e.g. for ATOM feeds.&lt;br /&gt;
** Numerous existing sites/pages have various [[rel-alternate]] uses with a type attribute for feeds/APIs so that's good enough to add this for help with discovery in general. Rel parsing updated. - [[User:Tantek|Tantek]] 00:47, 15 September 2013 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Extraction vs Interpretation ===&lt;br /&gt;
Issue raised by: [[User:BenWard|Ben Ward]]&lt;br /&gt;
&lt;br /&gt;
A microformats ‘1.0’ parser performs the following function:&lt;br /&gt;
&lt;br /&gt;
* Given a piece of HTML content, discover a known microformat, extract it, apply various extraction patterns based upon the HTML mark-up used (e.g. include pattern, &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; patterns, date-time patterns, value-title pattern), apply various content optimisations where applicable, and return the result in an object native to the programming language.&lt;br /&gt;
&lt;br /&gt;
This is performing two types of function: Extraction of data from an HTML document or fragment, ''and'' interpretation and optimisation of that content to match the rules set out by a vocabulary specification.&lt;br /&gt;
&lt;br /&gt;
It is only possible to write a generic parser that covers the first half of this task: Extraction, and application of global rules based on HTML elements and patterns common to all formats.&lt;br /&gt;
&lt;br /&gt;
The purpose of a generic parser (as supported by use cases such as search engines, and other crawlers) is: &lt;br /&gt;
&lt;br /&gt;
To provide a way for tools to extract rich data from a page for native storage, such that the data may be interpreted later by applications. This allows microformats to be crawled, and indexed, and removes the need to include complex HTML parsing within every implementation of microformat data.&lt;br /&gt;
&lt;br /&gt;
Microformats will continue to define various vocabulary-specific optimisations. as part of the design to be optimised for authors. For example: The &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; pattern in [[hcard]], or the &amp;lt;code&amp;gt;lat;long&amp;lt;/code&amp;gt; pattern in [[geo]], as well as default values for properties, such as the maximum rating in an [[hreview]].&lt;br /&gt;
* Actually, no, as it is defined currently, microformats 2 ''drops'' vocabulary-specific optimizations. Such optimizations have often been too inapplicable, error prone or i18n-unsafe (e.g. fn to given-name + family-name fails for both numerous cases where middlenames/initials are used, and in general in numerous Asian languages where given/family name order is the reverse of Western English conventions, or languages with multiple family-names, e.g. Spanish - see [[hcard-issues-resolved]] for more). This is a deliberate cutting of a &amp;quot;feature&amp;quot; from microformats 1, it is a deliberate model simplification design decision. [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
==== Extraction resolution ====&lt;br /&gt;
Proposed resolution:&lt;br /&gt;
&lt;br /&gt;
Microformats2 should refer only to ''extraction'' of microformats. Vocabularies should in turn document their appropriate optimisations, which will need to be applied by implementations, or a companion to an extractor, which I'll refer to here as an ‘interpreter’.&lt;br /&gt;
* Vocabularies will no longer have optimizations, this is again deliberately, as they've been shown to be more error prone than helpful. Thus there should be no need for any vocabulary-specific 'interpreters'. However, due to design quirks in various legacy/interchange formats, ''export conversions algorithms'' to those legacy/interchange formats will require some additional legacy-format-specific rules (e.g. odd &amp;quot;required&amp;quot; rules in [[Atom]] or [[vCard]] will require specific synthesis rules, limitations in said formats will require filtering of some values, e.g. [[vcard3]] BDAY disallows vague birthdays like year-month and --month-day - subsequently allowed in [[vcard4]]). [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
A microformats2 ‘extractor’, in combination with the functionality of a domain and format-aware ‘interpreter’ (either another shared component, or part of the implementation itself) would be equivalent to a microformats 1.0 ‘parser.’&lt;br /&gt;
* A microformats2 parser is both generic (no knowledge of specific vocabularies), and lacks any/all such vocabulary-specific rules as compared to a microformats 1.0 [[hcard-parsing|parser]] with the exception of a 1) a limited list of well-established/interoperable backward compat root class names (of current [[microformats]] that are or can be soon shown to be specifications/standards per the [[process]]), 2) flat sets of backward compat property names (some with prefix/name specific conversion) for each of those backward compat root class names.  This is a deliberate design decision that makes microformats 2 more &amp;quot;micro&amp;quot;, and yes this means that even with such backward compat support, this simple form of backward compat may mean that some existing microformats 1 content breaks. We'll assess those and iterate on a documented case-by-case basis rather than attempt to maintain theoretical 100% backward compatibility (since many current microformats format-specific-features are either unused, or may have caused more problems than solutions). [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
N.B. I'll rewrite some of these as [[microformats2-parsing-faq]] to help better clarify. The reasoning that led to most of these design decisions is documented in the [[microformats-2#About_This_Brainstorm|microformats 2: About This Brainstorm]] section and following sections. I'll recheck those sections to see if/where reasoning for some of the above noted design decisions may have been missed, and back-fill accordingly. This is necessary because [[microformats2]] is a evolutionary result of simultaneously addressing both numerous generic [[issues]] as well as various common [[hcard-issues-resolved|format]]-[[hcalendar-issues-resolved|specific]] [[mfo|problems]] in microformats1 syntax and vocabularies. The very number of changes may make it more challenging (from a microformats1 perspective) to see why any particular design change has been made. [[User:Tantek|Tantek]] 12:43, 4 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
This issue can be moved from resolved to closed once the above-mentioned write-ups have occurred.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Parsing properties from rel attributes===&lt;br /&gt;
tl;dr resolution: As of 2013, [[microformats2-parsing]] handles parsing all link and a href rel values at document scope level, and producing canonical JSON accordingly. - [[User:Tantek|Tantek]]&lt;br /&gt;
&lt;br /&gt;
Issue raised by [[User:BenWard|BenWard]] 07:24, 5 October 2011 (UTC):&lt;br /&gt;
&lt;br /&gt;
* Currently, hAtom parses `bookmark` as a permalink&lt;br /&gt;
* Various microformats parse `rel=tag` as tags&lt;br /&gt;
* The current proposal for parsing does not allow parsing properties from rel attributes.&lt;br /&gt;
&lt;br /&gt;
Microformats parsers could instead extract ''all'' link relationships from rel attributes within an microformat object, parsing them as if a u- prefixed property.&lt;br /&gt;
* Minor nit: Rather than same as a u- prefixed property, I think such &amp;quot;rel&amp;quot; properties should be parsed purely from the &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; attribute on &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;area&amp;amp;gt;&amp;lt;/code&amp;gt; elements and nothing more. I would strongly disagree to extending rel to apply to other elements with URLs like img src, object data, or to apply to elements in general like div. That's the path that RDFa has taken and caused much confusion as a result. [[User:Tantek|Tantek]] 07:39, 5 October 2011 (UTC)&lt;br /&gt;
** Agree: That seems like a perfectly reasonable restriction. --[[User:BenWard|BenWard]] 08:29, 5 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
This results in:&lt;br /&gt;
&lt;br /&gt;
* Continuing use of the &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attribute in HTML, thereby building on HTML semantics rather than bypassing them or ignoring them in favour of something less meaningful.&lt;br /&gt;
* Parsing hAtom objects contain a property named &amp;lt;code&amp;gt;bookmark&amp;lt;/code&amp;gt;, in place of &amp;lt;code&amp;gt;permalink&amp;lt;/code&amp;gt;.&lt;br /&gt;
* All microformats that use &amp;lt;code&amp;gt;rel-tag&amp;lt;/code&amp;gt; would contain a property named… &amp;lt;code&amp;gt;tag&amp;lt;/code&amp;gt;. Perfect.&lt;br /&gt;
&lt;br /&gt;
Since &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes are not overloaded for other functionality like class is, and other uses of &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; within content are low (and non-semantic uses are nil, to the best of my knowledge) the risk of property pollution would be extremely low.&lt;br /&gt;
&lt;br /&gt;
Note, with regard to this last point, that a generic microformats parser ''will'' parse false-positive properties, and ''will'' parse objects in combined chunks, rather than individually by format. Extracted objects will often not represent a vocabulary without further processing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* This sounds like it might be workable. Let's try it and see how well authors &amp;quot;get it&amp;quot;. - [[User:Tantek|Tantek]]&lt;br /&gt;
* Possible issue: do we have any collisions between class property names and rel names? (I don't think so offhand, but useful to ask the question). - [[User:Tantek|Tantek]]&lt;br /&gt;
** None that I can think of in microformats. There is the case of Google's &amp;lt;code&amp;gt;rel=author&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;p-author&amp;lt;/code&amp;gt; in hAtom. However, the next point, about mfo scoping, would cover it in most situations (rel-author on a hyperlink within an hcard wouldn't be applied to the hentry.) The one situation in a parse tree where it's ambiguous would be this: &lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;p-author h-card&amp;quot; &lt;br /&gt;
   rel=&amp;quot;author&amp;quot; &lt;br /&gt;
   href=&amp;quot;http://benward.me&amp;quot;&amp;gt;&lt;br /&gt;
   Ben Ward&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** I can think of two quite reasonable solutions: &lt;br /&gt;
*** 1. Declare that class properties take precedence over rel properties of the same name, discarding rel values if a class is also found, or &lt;br /&gt;
*** 2. Since all properties are now multi-value anyway, the hAtom object could be parsed as:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from the p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        'http://benward.me'      /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
** —[[User:BenWard|BenWard]] 08:29, 5 October 2011 (UTC)&lt;br /&gt;
*** Option 2 makes sense and is consistent with the rest of the multi-value parsing/handling. - [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
*** What about without the 'p-author'?&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;h-card&amp;quot; &lt;br /&gt;
   rel=&amp;quot;author&amp;quot; &lt;br /&gt;
   href=&amp;quot;http://benward.me&amp;quot;&amp;gt;&lt;br /&gt;
   Ben Ward&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Should that be parsed as:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        'http://benward.me'      /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Or&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': 'http://benward.me' /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
          'type': ['h-card'],          /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        &lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*** And if the former, then we're presumably saying that the value parsed due to the presence of a rel is always its own value, and does not combine with any other structures. I am fine with this, but I wanted to make sure we are ok with that explicitly. [[User:Tantek|Tantek]] 14:56, 5 October 2011 (UTC)&lt;br /&gt;
**** +1 I think that since the rel attribute is specifically concerned with the relation to an href attribute, it should not be combined with other structures that are rightly declared uses classes.&lt;br /&gt;
***** The more I've thought about this and how consuming applications may want to treat rel semantics, the more it seems correct to keep rel semantics distinct from class semantics. Class semantics are quite general/flexible, whereas rel is quite specific, naming something else in terms of a relationship from the current page/microformat's perspective. I think we should consider putting rel values in their own 'rel' collection, separate from the 'properties' collection. E.g. the original rel-author p-author h-card markup example would be parsed into this:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from the p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from the h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        }&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
   'rel': {&lt;br /&gt;
     'author': ['http://benward.me'] /* from the rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
***** and if a post had multiple authors:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
   'type': ['h-entry'],&lt;br /&gt;
   'properties': {&lt;br /&gt;
     …&lt;br /&gt;
     'author': [&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Ben Ward'], /* from p-author     */&lt;br /&gt;
          'type': ['h-card'],    /* from h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Ben Ward'], &lt;br /&gt;
            'url': ['http://benward.me']&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          'value': ['Tantek Çelik'], /* from 2nd p-author     */&lt;br /&gt;
          'type': ['h-card'],        /* from 2nd h-card ...   */&lt;br /&gt;
          'properties': { &lt;br /&gt;
            'name': ['Tantek Çelik'], &lt;br /&gt;
            'url': ['http://tantek.com']&lt;br /&gt;
        },&lt;br /&gt;
     ],&lt;br /&gt;
     …&lt;br /&gt;
   }&lt;br /&gt;
   'rel': {&lt;br /&gt;
     'author': [&lt;br /&gt;
       'http://benward.me',      /* from rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
       'http://tantek.com'       /* from 2nd rel=&amp;quot;author&amp;quot; */&lt;br /&gt;
     ]&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
***** This preserves the semantic distinction between rel and properties in general, and leaves it up to a higher-level application to implement any logic around showing &amp;quot;more info&amp;quot; about a rel-author, e.g. by correlating the rel-author URL with the 'url' of an hCard it found in the same entry. However, note that even in the earlier JSON data model, the rel-author value just shows up as another property value, and any higher level application would still have to do some correlation logic. At least with this JSON data model, applications that may be looking for a rel value in particular, or a property value in particular can do so without having one unintentionally pollute the other. [[User:Tantek|Tantek]] 17:33, 6 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Presumably we'd apply all the same property scoping rules to rel scoping as well. E.g. a rel hyperlink inside a microformat won't be seen by any containing microformat. - [[User:Tantek|Tantek]]&lt;br /&gt;
** Correct, it should be parsed in the same scope as all other class properties in the object.&lt;br /&gt;
*** Update: all rel microformats are now parsed at page-scope. Per-microformat scoping of rel has been found to be too confusing in practice (and against the general semantic of rel expressed in the HTML/HTML5 specs) [[User:Tantek|Tantek]] 01:00, 10 July 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This issue can be moved from resolved to closed once we've verified that all the above-mentioned and implied needs to write things up have occurred.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== deduping of rels ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-06-02 by [[User:Kevin Marks|Kevin Marks]] &lt;br /&gt;
* 2015-06-05 resolved by consensus and one real world implementation proof of implementability and verification of expected results. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Many sites have multiple duplicate rel links to the same url - a very common case is WordPress home pages eg [http://ma.tt ma.tt] &lt;br /&gt;
&lt;br /&gt;
Each post on the page has a block like&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;entry-meta&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;date&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://ma.tt/2015/05/beethoven-mozart-bach/&amp;quot; &lt;br /&gt;
    title=&amp;quot;Permalink to Beethoven, Mozart,&amp;amp;nbsp;Bach&amp;quot; rel=&amp;quot;bookmark&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;time class=&amp;quot;entry-date&amp;quot; datetime=&amp;quot;2015-05-31T22:42:00+00:00&amp;quot;&amp;gt;May 31, 2015&amp;lt;/time&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;categories-links&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;http://ma.tt/category/asides/&amp;quot; rel=&amp;quot;category tag&amp;quot;&amp;gt;Asides&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;author vcard&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;url fn n&amp;quot; href=&amp;quot;http://ma.tt/author/saxmatt/&amp;quot; &lt;br /&gt;
    title=&amp;quot;View all posts by Matt&amp;quot; rel=&amp;quot;author&amp;quot;&amp;gt;Matt&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;!-- .entry-meta --&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As currently defined, the parser will create duplicate entries in &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; for each post:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;category&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;author&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;tag&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;home&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/&amp;quot;, &lt;br /&gt;
            &amp;quot;https://ma.tt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and in the &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; we will also see:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;author&amp;quot;, &lt;br /&gt;
                &amp;quot;author&amp;quot;, &lt;br /&gt;
                &amp;quot;author&amp;quot;, &lt;br /&gt;
                &amp;quot;author&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;View all posts by Matt&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;home&amp;quot;, &lt;br /&gt;
                &amp;quot;home&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/category/asides/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;, &lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;, &lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;, &lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Asides&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
These duplicates are unhelpful for parser consumers. We should:&lt;br /&gt;
* make them both sets - only listing distinct values. This will remove ordering information, but order is irrelevant for rel in html.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;category&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;author&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;tag&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/category/asides/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;home&amp;quot;: [&lt;br /&gt;
            &amp;quot;https://ma.tt/&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
}&lt;br /&gt;
…&lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;https://ma.tt/author/saxmatt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;author&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;View all posts by Matt&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;home&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;Matt Mullenweg&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
…&lt;br /&gt;
        &amp;quot;https://ma.tt/category/asides/&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;category&amp;quot;, &lt;br /&gt;
                &amp;quot;tag&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Asides&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* possibly we could also make &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; sets too. That would solve the information loss issue with the current parsers&lt;br /&gt;
** Resolution: in the case of duplicate other attributes, first one set wins. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 as the proposer. A version of mf2py that does this is running at unmung,com. see [http://www.unmung.com/mf2?url=https%3A%2F%2Fma.tt&amp;amp;html=&amp;amp;pretty=on fro ma.tt] or [http://www.unmung.com/?html=%3Ca+href%3D%22http%3A%2F%2Fma.tt%2Fcategory%2Fasides%2F%22+rel%3D%22category+tag%22%3EAsides%3C%2Fa%3E%0D%0A%3Ca+href%3D%22http%3A%2F%2Fma.tt%2Fcategory%2Fasides%2F%22+rel%3D%22category+tag%22%3EAsides%3C%2Fa%3E%0D%0A%3Ca+href%3D%22http%3A%2F%2Fma.tt%2Fcategory%2Fasides%2F%22+rel%3D%22category+tag%22%3EAsides%3C%2Fa%3E&amp;amp;pretty=on a simple test] [[User:Kevin Marks|Kevin Marks]] 23:49, 2 June 2015 (UTC)&lt;br /&gt;
* +1 makes sense to me, and not having them be sets in the current spec is likely an oversight on my part. Thanks for noting this issue. [[User:Tantek|Tantek]] 05:28, 3 June 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== include alternates in rels ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-06-01 by [[Tantek]], per inconsistency noted by Kevin Marks.&lt;br /&gt;
* 2015-06-05 resolved per consensus and one real world implementation proof of implementability. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
As fallout from the adoption and implementation of 'rel-urls' per [[microformats2-parsing-brainstorming#more_information_for_rel-based_formats]], we should:&lt;br /&gt;
* add &amp;quot;alternate&amp;quot; rels to the &amp;quot;rels&amp;quot; collection to make them easier to look-up in &amp;quot;rel-urls&amp;quot; - that is, all rel values end up in &amp;quot;rels&amp;quot; collections. No exceptions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as the documenter of this issue, and attempting to represent what I think KevinMarks intended with &amp;quot;rels&amp;quot; and &amp;quot;rel-urls&amp;quot;.&lt;br /&gt;
* +1 This makes sense to me, as the &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; should match so you can lookup in rels first, then get details about urls from rel-urls. We can drop &amp;quot;alternates&amp;quot; independently from this change. [[User:Kevin Marks|Kevin Marks]] 00:23, 2 June 2015 (UTC)&lt;br /&gt;
** +1 drop &amp;quot;alternates&amp;quot; independently now made a separate issue. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
* +1 Makes sense. And I agree with Kevin; I think parsers should deprecate &amp;quot;alternates&amp;quot; for now and drop it after a version cycle or two. [[User:Kylewm|Kylewm]] 00:30, 2 June 2015 (UTC)&lt;br /&gt;
* implemented in [https://github.com/kevinmarks/mf2py/commit/4dba45200eef11da811f64817d02044ab9e98b77 my fork of mf2py] and running on [http://www.unmung.com/?html=%3Ca+rel%3D%22author%22+href%3D%22http%3A%2F%2Fexample.com%2Fa%22%3Eauthor+a%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22author%22+href%3D%22http%3A%2F%2Fexample.com%2Fb%22%3Eauthor+b%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22in-reply-to%22+href%3D%22http%3A%2F%2Fexample.com%2F1%22%3Epost+1%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22in-reply-to%22+href%3D%22http%3A%2F%2Fexample.com%2F2%22%3Epost+2%3C%2Fa%3E%0D%0A%3Ca+rel%3D%22alternate+home%22%0D%0A+++href%3D%22http%3A%2F%2Fexample.com%2Ffr%22%0D%0A+++media%3D%22handheld%22%0D%0A+++hreflang%3D%22fr%22%3EFrench+mobile+homepage%3C%2Fa%3E&amp;amp;pretty=on unmung] [[User:Kevin Marks|Kevin Marks]] 01:29, 2 June 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Empty properties overridden by implied rules against user expectation ===&lt;br /&gt;
Status: resolved, existing behavior correct, no changes to parsing spec.&lt;br /&gt;
&lt;br /&gt;
2015-07-03: raised by [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
&lt;br /&gt;
Emma Kuo brought up an issue (https://github.com/glennjones/microformat-node/issues/22) based on following the indieweb note pattern, where the content of a note is given both the e-content and p-name classes. If the element containing the notes only has none text content like image the p-name can have unexpected value. Here is the example she gave:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;a href=&amp;quot;http://this.site/photo&amp;quot; class=&amp;quot;u-url&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;e-content p-name&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;photo.jpg&amp;quot; class=&amp;quot;u-photo&amp;quot;/&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        Some extraneous text&lt;br /&gt;
        &amp;lt;div class=&amp;quot;h-cite&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;a href=&amp;quot;http://someother.site/like&amp;quot; class=&amp;quot;u-url&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;a href=&amp;quot;http://this.site/photo&amp;quot; class=&amp;quot;u-like-of&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;e-content p-name&amp;quot;&amp;gt;liked this&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At the moment I parser this as follows: - if a property (p-name) is empty do not add it to the output. In this case &amp;quot;empty&amp;quot; is classed as not containing any non-whitespace text. As far as I known there is no guidance on how to handle &amp;quot;empty&amp;quot; properties in microformats paring rules, so I followed the conventions of JSON API's not to return &amp;quot;empty&amp;quot; properties.&lt;br /&gt;
&lt;br /&gt;
The side effect of the above is that p-name also has a number of &amp;quot;implied rules&amp;quot;. The &amp;quot;implied rules&amp;quot; try to automatically fill properties like p-name if there is no defined value. In the example above it uses the textContent of the parent h-entry, so value of the h-entry&amp;gt;p-name is the text content of the h-cite i.e. &amp;quot;likes this&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
1. We should not allow the &amp;quot;implied name rule&amp;quot; to get textContent from within a child h-* &lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;strike&amp;gt;+1 I believe this is inline with how we parse properties and will meet user/author expectations  [[User:Glenn Jones|Glenn Jones]] 9:22, 3 July 2015 (UTC)&amp;lt;/strike&amp;gt;&lt;br /&gt;
* -1 A nested h-* is still part of the content of the parent h-*, I don't quite understand the rationale for excluding it. For example, I may include lots of h-cards in the body of a post that references people and wouldn't want them to be excluded from the implied name generation. [[User:Kylewm|Kylewm]] 14:40, 3 July 2015 (UTC)&lt;br /&gt;
* -1 I'm not sure this would solve the problem because auto-filled text could come from the parent h-* (&amp;quot;some extraneous text&amp;quot; in the example above) [[User:emmak|Emma Kuo]] 20:50, 4 July 2015 (UTC)&lt;br /&gt;
* -1 I agree with the other -1s. This would break some of the simplicity of the model. [[User:Tantek|Tantek]] 05:12, 14 July 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
2.  We should not execute the &amp;quot;implied rules&amp;quot; where there is an author defined &amp;quot;empty&amp;quot; property.&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;strike&amp;gt;-1 Although the output would meet author expectations it is complex for parsers as they will have to keep state for each property through the whole series of parsing rules.  [[User:Glenn Jones|Glenn Jones]] 9:22, 3 July 2015 (UTC)&amp;lt;/strike&amp;gt;&lt;br /&gt;
* +1 An explicit, empty, p-name property should prevent an implicit p-name from being generated. For example tantek.com includes &amp;amp;lt;span class=&amp;quot;p-name&amp;quot;&amp;gt;&amp;amp;lt;/span&amp;gt; at the start of the h-feed to prevent a giant name from being auto-generated. From my reading of the parsing spec, I don't see any reason that blank strings should be excluded from parsing. (mf2py and php-mf2 will both happily include empty strings in their output) [[User:Kylewm|Kylewm]] 14:40, 3 July 2015 (UTC)&lt;br /&gt;
* +1 We already have interop on this between mf2py and phpmf2, as well as people depending on it to explicitly set empty property values. [[User:Tantek|Tantek]] 05:12, 14 July 2015 (UTC)&lt;br /&gt;
* +1 As we already have interop with two parsers and solid user issue from Emma we should take this approach. [[User:GlennJones|Glenn Jones]] 11:51, 29 July 2015 (UTC)&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html&lt;br /&gt;
&lt;br /&gt;
=== uf2 children inside a classic microformats root class name ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-020: (raised by kylewm) What should microformats2 children inside a classic microformats root class name do?&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
1. Nothing. Any unattached uf2 children inside a classic microformats root are ignored. Problems:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* However then there's a possible surprise if/when the author upgrades the classic microformats root to uf2, then all of a sudden all the new uf2 children show-up.&lt;br /&gt;
* Another downside: author adds uf2 markup, can't figure out why nothing is happening (because somewhere up the tree in code they didn't touch is classic microformats that are hiding these unattached uf2 children.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
2. Show up in the children collection of the classic microformats root&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Feels most predictable. When you add uf2 root class names anywhere, they will show up in the JSON output hierarchy.&lt;br /&gt;
* When you convert ancestor class microformats root class names to uf2 root class names, no surprise in terms of which microformats show up. Same children collection.&lt;br /&gt;
* +1 Thus I'm leaning towards this one, despite the fact that classic microformats never had a concept of generic unattached children. [[User:Tantek|Tantek]] 04:55, 21 January 2015 (UTC)&lt;br /&gt;
* +1 I think this is the best option I will implement it and update the wiki once its in the JavaScript parser. [[User:GlennJones|Glenn Jones]] 11:55, 29 July 2015 (UTC)&lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
3. Show up as peers to the classic microformats root. Issue(s)&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Has ths surprise aspect of if/when you convert the classic root class name to a uf2 root class name, the former peers become unattached children.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html&lt;br /&gt;
&lt;br /&gt;
=== any h- root class name overrides and stops backcompat root ===&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience. &lt;br /&gt;
&lt;br /&gt;
2015-020: The presence of any h-* root class name overrides and stop any backcompat parsing of classic microformats root class names on that same element. [[User:Tantek|Tantek]] 04:55, 21 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Tom &amp;amp; Kyle - implementable with the same backcompat root flag as needed for restricting backcompat root class name to only seeing backcompat property class names&lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
* I don't think I understand this rule. If I was stop all parsing of of classic microformats in the presence of any h-* root in a document then some of the other rules such as &amp;quot;uf2 children inside a classic microformats root class name&amp;quot; do not make sense. Could this item be expanded and explained a bit more? [[User:GlennJones|Glenn Jones]] 12:13, 29 July 2015 (UTC)&lt;br /&gt;
** added &amp;quot;on that same element&amp;quot; as that was what we were discussing/implying in this issue. [[User:Tantek|Tantek]] 22:49, 18 September 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== backcompat classic microformats should only see backcompat properties ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-020: When parsing a microformats vocabulary that indicates a backcompat root class name (and thus an absence of the microformats2 equivalent on the same element), parsers must only look for the backcompat properties that are specified explicitly for that backcompat root class.&lt;br /&gt;
[[User:Tantek|Tantek]] 04:04, 21 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Reasoning: such behaviour was never expected by authors, and crossing a classic microformats root class name with microformats2 property names were never explicitly expected nor specified to work.&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Tom &amp;amp; Kyle - implementable with the same backcompat root flag as needed for&lt;br /&gt;
* +1 I think this will help backcompat parsing, I will implement it and update the wiki once its in the JavaScript parser. The test suite will also need updating. [[User:GlennJones|Glenn Jones]] 11:55, 29 July 2015 (UTC) &lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html Currently you need to switch on the option &amp;quot;Block overlapping properties from different microformat versions&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== microformats2 root class names should only see microformats2 properties ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-020: When parsing a microformats2 root class name, only explicit microformats2 properties should be parsed. Any backcompat property names must be ignored.&lt;br /&gt;
[[User:Tantek|Tantek]] 04:04, 21 January 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
Reasoning: such microformats2 authors should be expected to do all their microformats markup with microformats2 class names - this is a deliberate expectation so that their microformats aren't polluted with other (classic microformats) coincidentally named generic class names.&lt;br /&gt;
&lt;br /&gt;
Thoughts?&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 I think this will help backcompat parsing, I will implement it and update the wiki once its in the JavaScript parser. The test suite will also need updating. [[User:GlennJones|Glenn Jones]] 11:55, 29 July 2015 (UTC) &lt;br /&gt;
* ++ Consensus at [[2015-01-20]] - option that presents the least surprises in the most cases.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html Currently you need to switch on the option &amp;quot;Block overlapping properties from different microformat versions&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== implied properties on backcompat parsing unlikely to be intended ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Since classic microformats had no notion of implied properties, when implied property parsing occurs on backward compat classic microformats root class names, it is unlikely that any implied property (p-name u-url u-photo) was ever intended by the author of the classic microformat. [[User:Tantek|Tantek]] 02:43, 30 December 2014 (UTC)&lt;br /&gt;
Examples:&lt;br /&gt;
* see https://indiewebcamp.com/h-entry#bad_hentry_properties for a growing list&lt;br /&gt;
&lt;br /&gt;
'''Proposed resolution:'''&lt;br /&gt;
&lt;br /&gt;
* Be explicit in implied property parsing that it must only be done for explicit 'h-*' root class name microformats, not for any (back)compat parsing of microformats. Please comment on this proposal with &amp;quot;** comment&amp;quot; on new lines below. [[User:Tantek|Tantek]] 02:43, 30 December 2014 (UTC)&lt;br /&gt;
** +1 This makes a lot of sense to me. We should strive to parse mf1 as it was intended by the author, and I think you're right that implied rules are unlikely to be what was intended [[User:Kylewm|Kylewm]] 03:22, 30 December 2014 (UTC)&lt;br /&gt;
** +1 I think this will help backcompat parsing, but there are two major things to consider. It may well break some consumer code as the output for a microformats currently always has the name property, there may not be the defences code to check this is true when we remove the implied name rule for classic microformats.  The test suite will also need major updating as all the test output for classic microformats will have. I will look into implementing this and report back to the wiki. [[User:GlennJones|Glenn Jones]] 12:13, 29 July 2015 (UTC) &lt;br /&gt;
** Also it should be made clear that we are only removing the implied rules from classic microformats parsing and not the value property? [[User:GlennJones|Glenn Jones]] 12:13, 29 July 2015 (UTC)&lt;br /&gt;
*** The &amp;quot;parsing for implied properties&amp;quot; section only references name, photo, url properties. Where (in the spec) is the confusion about &amp;quot;value&amp;quot; coming from? [[User:Tantek|Tantek]]&lt;br /&gt;
** RESOLVED at [[2015-01-20]] meetup. [[User:Tantek|Tantek]] 04:09, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2015-08-21: [[User:Glenn Jones|Glenn Jones]]&lt;br /&gt;
Now implemented in microformat-shiv can be tested at http://microformatshiv.com/editor.html Currently you need to switch on the option &amp;quot;Set implied properties by microformat version&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== link elements and u- parsing ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Raised by tantek on 2014-07-08 on [http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=8+Jul+2014&amp;amp;e=9+Jul+2014#c72916 irc]: should the parsing specification for handling u- properties be modified to include the &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; element? The potential downside is that [[invisible-metadata-is-considered-harmful]], however all known real world examples of &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; are &amp;lt;em&amp;gt;semi-&amp;lt;/em&amp;gt;visible data (not fully hidden).&lt;br /&gt;
&lt;br /&gt;
There are potential cases for wanting to use link as an alternative to &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; (and &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt;), such as a whole page where the root &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; element is an &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; and the properties are included across the page: some in visible data in the &amp;lt;code&amp;gt;body&amp;lt;/code&amp;gt; while others are in the &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; as &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt; elements. Example:&lt;br /&gt;
&lt;br /&gt;
One specific use-case is the semi-visible &amp;lt;code&amp;gt;link rel=&amp;quot;shortcut icon&amp;quot; href=&amp;quot;...&amp;quot;&amp;lt;/code&amp;gt; - which is visible sometimes in browser UI, and also when a user chooses &amp;quot;Add to Home Screen&amp;quot; on a mobile device. Such page level icons may be used as a &amp;lt;code&amp;gt;u-photo&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;u-logo&amp;lt;/code&amp;gt; of the containing &amp;lt;code&amp;gt;h-*&amp;lt;/code&amp;gt; object on the &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; element.&lt;br /&gt;
* http://adactio.com/about/myself/ on 2014-190&lt;br /&gt;
** &amp;lt;em&amp;gt;could&amp;lt;/em&amp;gt; use &amp;lt;code&amp;gt;&amp;amp;lt;html class=h-card&amp;amp;gt;&amp;lt;/code&amp;gt; - page is all about Jeremy Keith the person&lt;br /&gt;
** &amp;lt;em&amp;gt;icon / logo is only&amp;lt;/em&amp;gt; on &amp;lt;code&amp;gt;&amp;amp;lt;link&amp;amp;gt;&amp;lt;/code&amp;gt; tag which &amp;lt;em&amp;gt;could&amp;lt;/em&amp;gt; use &amp;lt;code&amp;gt;class=u-logo&amp;lt;/code&amp;gt;: &amp;lt;br/&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;link rel=&amp;quot;shortcut icon apple-touch-icon&amp;quot; type=&amp;quot;image/png&amp;quot; href=&amp;quot;/icon.png&amp;quot; /&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another specific use-case is a post permalink page, e.g. with &amp;lt;code&amp;gt;&amp;amp;lt;html class=h-entry&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* http://waterpigs.co.uk/notes/4WjHpC/&lt;br /&gt;
** &amp;lt;em&amp;gt;has&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;&amp;amp;lt;html class=&amp;quot;no-js h-entry hentry h-as-note&amp;quot; lang=&amp;quot;en&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another use-case is publishing links to PGP/GPG keys linked from the head which is currently handled by &amp;lt;code&amp;gt;&amp;amp;lt;link rel=pgpkey&amp;amp;gt;&amp;lt;/code&amp;gt; which is already supported in existing [[microformats2-parsing#parse_a_hyperlink_element_for_rel_microformats|microformats2 rel parsing]] of &amp;lt;code&amp;gt;link rel&amp;lt;/code&amp;gt; elements. Thus there is a (admittedly weak) argument for consistently parsing &amp;lt;em&amp;gt;both&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;&amp;amp;lt;link rel&amp;amp;gt;&amp;lt;/code&amp;gt; &amp;lt;em&amp;gt;and&amp;lt;/em&amp;gt; &amp;lt;code&amp;gt;&amp;amp;lt;link class=&amp;quot;u-*&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
E.g. inside that aforementioned real world &amp;lt;code&amp;gt;&amp;amp;lt;html class=h-entry&amp;amp;gt;&amp;lt;/code&amp;gt; post permalink page example, &lt;br /&gt;
* why should &amp;lt;code&amp;gt;&amp;amp;lt;link rel=&amp;quot;in-reply-to&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; work &lt;br /&gt;
* but not &amp;lt;code&amp;gt;&amp;amp;lt;link class=&amp;quot;u-in-reply-to&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; ?&lt;br /&gt;
The slightly stronger argument for consistency of link handling is that it &amp;lt;strong&amp;gt;[[simpler|simplifies]]&amp;lt;/strong&amp;gt; the publisher (and parser) model: &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;area&amp;amp;gt;&amp;lt;/code&amp;gt; work for both &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;&lt;br /&gt;
* why does &amp;lt;code&amp;gt;&amp;amp;lt;link&amp;amp;gt;&amp;lt;/code&amp;gt; only work for &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; ?&lt;br /&gt;
* it would be &amp;lt;em&amp;gt;simpler&amp;lt;/em&amp;gt; if all three tags just worked (in the same way) for both &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Should the parsing spec be modified to handle these cases?''' —[[User:TomMorris|Tom Morris]] 09:25, 9 July 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
** I'm generally in favour. It'd be good to see what other parser developers think. —[[User:TomMorris|Tom Morris]] 10:16, 9 July 2014 (UTC)&lt;br /&gt;
** adding this to the parsers won't be an issue. &amp;lt;del datetime=&amp;quot;2014-07-09T18:45&amp;quot;&amp;gt;The question is should the door be opened to hidden mf data?&amp;lt;/del&amp;gt; &amp;lt;ins datetime=&amp;quot;2014-07-09T18:45&amp;quot;&amp;gt;Up on further reflection, there seems to be no need to distinguish between &amp;lt;code&amp;gt;rel=property&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class=u-property&amp;lt;/code&amp;gt; on link elements. So I am in favour for consistency.&amp;lt;/ins&amp;gt; [[User:KP|Kartik]] 18:30, 2014-07-09 (EST)&lt;br /&gt;
** RESOLVED at [[2015-01-20]] meetup. Make link consistent with a.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== drop alternates collection ===&lt;br /&gt;
Status: incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
2015-06-01 by [[Tantek]], per inconsistency noted by Kevin Marks.&lt;br /&gt;
* 2015-06-05 split into separate issue from include alternates in rels per implementation feedback from Kevin Marks. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
As fallout from the adoption and implementation of 'rel-urls' per [[microformats2-parsing-brainstorming#more_information_for_rel-based_formats]], we should:&lt;br /&gt;
* drop &amp;quot;alternates&amp;quot; as its no longer needed, and all current consuming code clients like rel-urls better anyway.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 [[User:Tantek|Tantek]] as the documenter of this issue, and attempting to represent what I think KevinMarks intended with &amp;quot;rels&amp;quot; and &amp;quot;rel-urls&amp;quot; in original issue now &amp;quot;include alternates in rels&amp;quot;, we no longer need &amp;quot;alternates&amp;quot;, and those with client consuming code have universally indicated that they would rather use rel-urls anyway. [[User:Tantek|Tantek]] 03:42, 6 June 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats2-parsing]]&lt;br /&gt;
* [[microformats2]]&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=User:Barnabywalters&amp;diff=65433</id>
		<title>User:Barnabywalters</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=User:Barnabywalters&amp;diff=65433"/>
		<updated>2016-03-13T18:43:19Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: removed out of date text, replaced with text which is not doomed to go out of date&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;More information about Barnaby on [http://waterpigs.co.uk waterpigs.co.uk]&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=mf2py&amp;diff=65130</id>
		<title>mf2py</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=mf2py&amp;diff=65130"/>
		<updated>2015-07-12T15:07:38Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: Added list of live implementations&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
This is a holding page for '''mf2py''', the [[microformats2]] parser for Python.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/tommorris/mf2py tommorris/mf2py] on github&lt;br /&gt;
* [https://pypi.python.org/pypi/mf2py/ mf2py] on PyPI&lt;br /&gt;
&lt;br /&gt;
You can test how mf2py parses HTML on the following pages:&lt;br /&gt;
* URL and/or textarea: https://kylewm.com/services/mf2&lt;br /&gt;
* URL entry: [https://mf2py.herokuapp.com/ mf2py.herokuapp.com]&lt;br /&gt;
* textarea entry: https://kartikprabhu.com/connection/mfparser&lt;br /&gt;
* another textarea: http://www.unmung.com/?html=&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[parsers]]&lt;br /&gt;
* [[microformats2]]&lt;br /&gt;
* [[validators]]&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=representative-h-card-parsing&amp;diff=64586</id>
		<title>representative-h-card-parsing</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=representative-h-card-parsing&amp;diff=64586"/>
		<updated>2014-10-06T23:14:56Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: added mf-cleaner implementation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Assuming you already have access to a [[parsers#microformats2_parsers|microformats2 parser]], the algorithm defined here allows you to determine the representative [[h-card]] for a given page.&lt;br /&gt;
&lt;br /&gt;
This algorithm is the microformats2 update to [[representative-hcard-parsing]].&lt;br /&gt;
&lt;br /&gt;
== Algorithm ==&lt;br /&gt;
&lt;br /&gt;
After [[parsing]] the page:&lt;br /&gt;
&lt;br /&gt;
* If the page contains an h-card with '''uid''' and '''url''' properties both matching the page URL, the first such h-card is the representative h-card&lt;br /&gt;
* If no representative h-card was found, if the page contains an h-card with a '''url''' property value which also has a &amp;lt;code&amp;gt;rel=me&amp;lt;/code&amp;gt; relation (i.e. matches a URL in parse_results.rels.me), the first such h-card is the representative h-card&lt;br /&gt;
* If no representative h-card was found, if the page contains '''one single''' h-card with a '''url''' property matching the page URL, that h-card is the representative h-card&lt;br /&gt;
* If no representative h-card was found, the page has no representative h-card&lt;br /&gt;
&lt;br /&gt;
=== Matching URLs ===&lt;br /&gt;
URLs are to be matched as per the parsing algorithm defined in https://url.spec.whatwg.org:&lt;br /&gt;
&lt;br /&gt;
* Parse the URLs&lt;br /&gt;
* If every component matches, the URLs match&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
Open source implementations of the representative h-card algorithm.&lt;br /&gt;
&lt;br /&gt;
* '''PHP''' [https://github.com/barnabywalters/php-mf-cleaner barnabywalters/mf-cleaner] package implements representative h-card parsing in [https://github.com/barnabywalters/php-mf-cleaner/blob/master/src/BarnabyWalters/Mf2/Functions.php#L211 getRepresentativeHCard()] function&lt;br /&gt;
** Example usage: &amp;lt;code&amp;gt;$hcard = BarnabyWalters\Mf2\getRepresentativeHCard($mfs, $url);&amp;lt;/code&amp;gt;&lt;br /&gt;
* Add yours here!&lt;br /&gt;
* …&lt;br /&gt;
&lt;br /&gt;
== Back compat ==&lt;br /&gt;
All backcompat for representative h-card parsing should already be handled by the [[h-card#Backward_Compatibility|h-card backcompat]] rules, implemented by a conforming parser.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[h-card]]&lt;br /&gt;
* [[representative-hcard]] — original hCard work, most of which applies equally to the updated algorithm&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=representative-hcard-parsing&amp;diff=64585</id>
		<title>representative-hcard-parsing</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=representative-hcard-parsing&amp;diff=64585"/>
		<updated>2014-10-06T22:41:45Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: Linked to updated version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;representative hCard parsing&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{latest|representative-h-card-parsing}}&lt;br /&gt;
&lt;br /&gt;
Assuming you are already using code that properly implements [[hcard-parsing]], this page documents how to determine a [[representative hCard]] for a page using the current [[representative-hcard-brainstorming]] proposal.&lt;br /&gt;
&lt;br /&gt;
== representative hCard algorithm ==&lt;br /&gt;
After [[microformats2-parsing|parsing]] the page:&lt;br /&gt;
# '''url uid source.''' The first hCard found which has a &amp;quot;url&amp;quot; property whose value is the url of the page (source) and is also a &amp;quot;uid&amp;quot; property for the hCard, is the representative hCard for the page. &lt;br /&gt;
# '''url and rel me.''' If the previous step didn't find a representative hCard, then the first hCard with a &amp;quot;url&amp;quot; property that also has the &amp;lt;code&amp;gt;rel=&amp;quot;me&amp;quot;&amp;lt;/code&amp;gt; relation is the representative hCard for the page.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
* In the first step, how should URLs be matched? Resolving relative URLs is a given, but there are other cases. E.g. if the h-card has a URL of 'http://aaronparecki.com/', should 'http://aaronparecki.com' match? What about 'https://aaronparecki.com/'? --[[User:Barnabywalters|bw]] 14:47, 6 October 2014 (UTC)&lt;br /&gt;
** Per https://url.spec.whatwg.org/ : [[User:Tantek|Tantek]] 22:18, 6 October 2014 (UTC)&lt;br /&gt;
*** Parse the URLs&lt;br /&gt;
*** Compare the serialization&lt;br /&gt;
*** If all the components match, the two URLs match.&lt;br /&gt;
*** (background/discussion: [http://krijnhoetmer.nl/irc-logs/whatwg/20141006#l-843])&lt;br /&gt;
* Why is u-uid required in addition to u-url in the first step but not the second step? In what case has an h-card had a u-url property matching the URL of the page it’s on, but *not* been the representative h-card? --[[User:Barnabywalters|bw]] 14:47, 6 October 2014 (UTC)&lt;br /&gt;
** Let's try a third step: if there is only one hCard with url == page URL then use that hCard, else there is no representative hCard [[User:Tantek|Tantek]] 22:18, 6 October 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
== open source implementations ==&lt;br /&gt;
The below open source implementations of '''representative hCard parsing''' have been contributed inline and are thus in the public domain per [[Microformats_Wiki:Copyrights]].&lt;br /&gt;
&lt;br /&gt;
=== Draft hKit (PHP5) code ===&lt;br /&gt;
I - ([[User:TomMorris|Tom]]) - have been working on implementing represenative hCard parsing in PHP so that a user can simply type in a URL pointing to a page with an hCard on it, and have their name and some details automatically filled in the form. The code below implements the following:&lt;br /&gt;
# If there is only one hCard on a page, it uses that.&lt;br /&gt;
# If there is more than one hCard on a page, it looks through to see if any of the cards have UID or URL fields that match the URL it searches, then selects that one if one exists.&lt;br /&gt;
&lt;br /&gt;
It's experimental and quite 'alpha', so I'd suggest you test it and make adjustments as necessary.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// example hKit code to extract a representative hCard&lt;br /&gt;
// tom morris &amp;lt;http://tommorris.org&amp;gt;&lt;br /&gt;
// public domain 2007&lt;br /&gt;
&lt;br /&gt;
// An hCard could have more than one url, so we use a multi-dimensional array search. - Sarven Capadisli&lt;br /&gt;
&lt;br /&gt;
// From http://nl2.php.net/manual/en/function.array-search.php#80692&lt;br /&gt;
function multidimArrayLocate($array, $text){&lt;br /&gt;
  foreach($array as $key =&amp;gt; $arrayValue){&lt;br /&gt;
    if (is_array($arrayValue)){&lt;br /&gt;
      if ($key == $text) $arrayResult[$key] = $arrayValue;&lt;br /&gt;
      $temp[$key] = multidimArrayLocate($arrayValue, $text);&lt;br /&gt;
      if ($temp[$key]) $arrayResult[$key] = $temp[$key];&lt;br /&gt;
    }&lt;br /&gt;
    else{&lt;br /&gt;
      if ($key == $text) $arrayResult[$key] = $arrayValue;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  return $arrayResult;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
include(&amp;quot;hkit.class.php&amp;quot;);&lt;br /&gt;
$hkit = new hKit;&lt;br /&gt;
$result = $hkit-&amp;gt;getByURL('hcard', $HTTP_GET_VARS['url']);&lt;br /&gt;
if (count($result) != 0) {&lt;br /&gt;
  if (count($result) == 1) {&lt;br /&gt;
    $repcard = $result[0];&lt;br /&gt;
  } else {&lt;br /&gt;
    foreach ($result as $card) {&lt;br /&gt;
      if (multidimArrayLocate($card, $HTTP_GET_VARS['url']) == true || $card['uid'] == $HTTP_GET_VARS['url']) {&lt;br /&gt;
        $repcard = $card;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
print_r($repcard);&lt;br /&gt;
?&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== jQuery (JavaScript) code ===&lt;br /&gt;
The following JavaScript code follows the [[representative-hcard-brainstorming#current_proposal|current proposal for finding a representative hCard]]. It requires the [http://jquery.com/ jQuery] library, however, it can be easily switched over to another library.&lt;br /&gt;
&lt;br /&gt;
* If a vCard has a &amp;lt;code&amp;gt;class=&amp;quot;url&amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;class=&amp;quot;uid&amp;quot;&amp;lt;/code&amp;gt; with an href value same as the source URI (current document), then that vCard is a representative hCard candidate, otherwise;&lt;br /&gt;
* If a vCard has a &amp;lt;code&amp;gt;class=&amp;quot;url&amp;quot;&amp;lt;/code&amp;gt; and a &amp;lt;code&amp;gt;rel=&amp;quot;me&amp;quot;&amp;lt;/code&amp;gt; on the same element, then that vCard is a representative hCard candidate, otherwise;&lt;br /&gt;
* There is no representative hCard.&lt;br /&gt;
* Grab the first hCard from the list of candidates.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
/***&lt;br /&gt;
    Note: Extracts representative hCard&lt;br /&gt;
    Author: Sarven Capadisli http://csarven.ca/&lt;br /&gt;
    License: Public Domain 2009-06-04&lt;br /&gt;
*/&lt;br /&gt;
var sourceURI = window.location.href;&lt;br /&gt;
var rep_hCard = new Array();&lt;br /&gt;
&lt;br /&gt;
function rep_hCard_uidurlsource() {&lt;br /&gt;
    $('.vcard .uid[href='+sourceURI+']').each(function() {&lt;br /&gt;
        $(this).each(function() {&lt;br /&gt;
            if ($(this).closest('.vcard').find('.url[href='+sourceURI+']').length &amp;gt; 0) {&lt;br /&gt;
                rep_hCard.push($(this).closest('.vcard')[0]);&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
    return (rep_hCard.length &amp;gt; 0) ? true : false;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function rep_hCard_urlme() {&lt;br /&gt;
    $('.vcard .url[rel=me]').each(function() {&lt;br /&gt;
        rep_hCard.push($(this).closest('.vcard')[0]);&lt;br /&gt;
    });&lt;br /&gt;
    return (rep_hCard.length &amp;gt; 0) ? true : false;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if (rep_hCard_uidurlsource() || rep_hCard_urlme()) {&lt;br /&gt;
    rep_hCard = $($(rep_hCard)[0]); &lt;br /&gt;
    rep_hCard_url = (rep_hCard.find('.uid').length &amp;gt; 0) ? rep_hCard.find('.uid')[0].href : rep_hCard.find('.url[rel=me]')[0].href;&lt;br /&gt;
    hCard_fn = $('.fn', rep_hCard).text();&lt;br /&gt;
    hCard_photo_src = ($('.photo', rep_hCard).length &amp;gt; 0) ? $('.photo', rep_hCard)[0].src : '';&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
    //no representative hCard&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
--[[User:Csarven|Sarven Capadisli]] 04:24, 4 June 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[representative-hcard]]&lt;br /&gt;
* [[representative-hcard-authoring]]&lt;br /&gt;
* [[representative-hcard-parsing]]&lt;br /&gt;
* [[representative-hcard-examples]]&lt;br /&gt;
* [[representative-hcard-formats]]&lt;br /&gt;
* [[representative-hcard-brainstorming]]&lt;br /&gt;
* [[hcard]]&lt;br /&gt;
* [[hcard-parsing]]&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=representative-h-card-parsing&amp;diff=64584</id>
		<title>representative-h-card-parsing</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=representative-h-card-parsing&amp;diff=64584"/>
		<updated>2014-10-06T22:40:39Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: initial updated microformats2 version of representative h-card algorithm&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Assuming you already have access to a [[parsers#microformats2_parsers|microformats2 parser]], the algorithm defined here allows you to determine the representative [[h-card]] for a given page.&lt;br /&gt;
&lt;br /&gt;
This algorithm is the microformats2 update to [[representative-hcard-parsing]].&lt;br /&gt;
&lt;br /&gt;
== Algorithm ==&lt;br /&gt;
&lt;br /&gt;
After [[parsing]] the page:&lt;br /&gt;
&lt;br /&gt;
* If the page contains an h-card with '''uid''' and '''url''' properties both matching the page URL, the first such h-card is the representative h-card&lt;br /&gt;
* If no representative h-card was found, if the page contains an h-card with a '''url''' property value which also has a &amp;lt;code&amp;gt;rel=me&amp;lt;/code&amp;gt; relation (i.e. matches a URL in parse_results.rels.me), the first such h-card is the representative h-card&lt;br /&gt;
* If no representative h-card was found, if the page contains '''one single''' h-card with a '''url''' property matching the page URL, that h-card is the representative h-card&lt;br /&gt;
* If no representative h-card was found, the page has no representative h-card&lt;br /&gt;
&lt;br /&gt;
=== Matching URLs ===&lt;br /&gt;
URLs are to be matched as per the parsing algorithm defined in https://url.spec.whatwg.org:&lt;br /&gt;
&lt;br /&gt;
* Parse the URLs&lt;br /&gt;
* If every component matches, the URLs match&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
Open source implementations of the representative h-card algorithm.&lt;br /&gt;
&lt;br /&gt;
* Add yours here!&lt;br /&gt;
* …&lt;br /&gt;
&lt;br /&gt;
== Back compat ==&lt;br /&gt;
All backcompat for representative h-card parsing should already be handled by the [[h-card#Backward_Compatibility|h-card backcompat]] rules, implemented by a conforming parser.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[h-card]]&lt;br /&gt;
* [[representative-hcard]] — original hCard work, most of which applies equally to the updated algorithm&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
	<entry>
		<id>http://microformats.org/wiki/index.php?title=h-card&amp;diff=64581</id>
		<title>h-card</title>
		<link rel="alternate" type="text/html" href="http://microformats.org/wiki/index.php?title=h-card&amp;diff=64581"/>
		<updated>2014-10-06T22:08:55Z</updated>

		<summary type="html">&lt;p&gt;Barnabywalters: /* Properties */ clarified u-uid, u-logo as set apart from u-photo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;h-card&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;h-card vcard&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;p-name fn&amp;quot;&amp;gt;[[User:Tantek|Tantek Çelik]]&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;p-role role&amp;quot;&amp;gt;Editor&amp;lt;/span&amp;gt;)&amp;lt;/span&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;dfn style=&amp;quot;font-style:normal;font-weight:bold&amp;quot;&amp;gt;h-card&amp;lt;/dfn&amp;gt; is a simple, open format for publishing people and organisations on the web. h-card is one of several open [[microformats|microformat]] draft standards suitable for embedding data in HTML/HTML5.&lt;br /&gt;
&lt;br /&gt;
h-card is the [[microformats2]] update to [[hCard]].&lt;br /&gt;
&lt;br /&gt;
{{cc0-owfa-license}}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Here is a simple minimal person example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;a class=&amp;quot;h-card&amp;quot; href=&amp;quot;http://example.com&amp;quot;&amp;gt;Joe Bloggs&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parsed JSON: &lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;items&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&lt;br /&gt;
        &amp;quot;h-card&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&lt;br /&gt;
          &amp;quot;Joe Bloggs&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;url&amp;quot;: [&lt;br /&gt;
          &amp;quot;http://example.com&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And a slightly more complete example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;img class=&amp;quot;u-photo&amp;quot; src=&amp;quot;http://example.org/photo.png&amp;quot; alt=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;a class=&amp;quot;p-name u-url&amp;quot; href=&amp;quot;http://example.org&amp;quot;&amp;gt;Joe Bloggs&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;a class=&amp;quot;u-email&amp;quot; href=&amp;quot;mailto:joebloggs@example.com&amp;quot;&amp;gt;joebloggs@example.com&amp;lt;/a&amp;gt;, &lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-street-address&amp;quot;&amp;gt;17 Austerstræti&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-locality&amp;quot;&amp;gt;Reykjavík&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-country-name&amp;quot;&amp;gt;Iceland&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;
Parsed JSON:&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;items&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&lt;br /&gt;
        &amp;quot;h-card&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;photo&amp;quot;: [&lt;br /&gt;
          &amp;quot;http://example.org/photo.png&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;name&amp;quot;: [&lt;br /&gt;
          &amp;quot;Joe Bloggs&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;url&amp;quot;: [&lt;br /&gt;
          &amp;quot;http://example.org&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;email&amp;quot;: [&lt;br /&gt;
          &amp;quot;mailto:joebloggs@example.com&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;street-address&amp;quot;: [&lt;br /&gt;
          &amp;quot;17 Austerstræti&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;locality&amp;quot;: [&lt;br /&gt;
          &amp;quot;Reykjavík&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;country-name&amp;quot;: [&lt;br /&gt;
          &amp;quot;Iceland&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Get started ===&lt;br /&gt;
The class '''&amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt;''' is a ''root class name'' that indicates the presence of an h-card.&lt;br /&gt;
&lt;br /&gt;
For minimal examples where at most &amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;u-url&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;u-photo&amp;lt;/code&amp;gt; are required (such as the first given above), only the root class name is needed — see [[microformats-2-implied-properties|implied properties]].&lt;br /&gt;
&lt;br /&gt;
For more complex examples, the root class name must be placed on an element which encloses all the desired properties, and then the properties themselves marked up using the classnames given below.&lt;br /&gt;
&lt;br /&gt;
See [[microformats2-parsing]] to learn more about property classnames.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
h-card properties, inside an element with class '''h-card''':&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;''' - The full/formatted name of the person or organisation&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-honorific-prefix&amp;lt;/code&amp;gt;''' - e.g. Mrs., Mr. or Dr.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-given-name&amp;lt;/code&amp;gt;''' - given (often first) name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-additional-name&amp;lt;/code&amp;gt;''' - other/middle name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-family-name&amp;lt;/code&amp;gt;''' - family (often last) name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-sort-string&amp;lt;/code&amp;gt;''' - string to sort by&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-honorific-suffix&amp;lt;/code&amp;gt;''' - e.g. Ph.D, Esq.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-nickname&amp;lt;/code&amp;gt;''' - nickname/alias/handle&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-email&amp;lt;/code&amp;gt;''' - email address&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-logo&amp;lt;/code&amp;gt;''' - a logo representing the person or organisation&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-photo&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-url&amp;lt;/code&amp;gt;''' - home page&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-uid&amp;lt;/code&amp;gt;''' - unique identifier, often canonical URL&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-category&amp;lt;/code&amp;gt;''' - category/tag&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-adr&amp;lt;/code&amp;gt;''' - postal address, optionally embed an [[h-adr]] {{main|h-adr}}&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-post-office-box&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-extended-address&amp;lt;/code&amp;gt;''' - apartment/suite/room name/number if any&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-street-address&amp;lt;/code&amp;gt;''' - street number + name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-locality&amp;lt;/code&amp;gt;''' - city/town/village&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-region&amp;lt;/code&amp;gt;''' - state/county/province&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-postal-code&amp;lt;/code&amp;gt;''' - postal code, e.g. US ZIP&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-country-name&amp;lt;/code&amp;gt;''' - country name&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-label&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-geo&amp;lt;/code&amp;gt;''' or '''&amp;lt;code&amp;gt;u-geo&amp;lt;/code&amp;gt;''', optionally embed an [[h-geo]] {{main|h-geo}}&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-latitude&amp;lt;/code&amp;gt;''' - decimal latitude&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-longitude&amp;lt;/code&amp;gt;''' - decimal longitude&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-altitude&amp;lt;/code&amp;gt;''' - decimal altitude&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-tel&amp;lt;/code&amp;gt;''' - telephone number&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-note&amp;lt;/code&amp;gt;''' - additional notes&lt;br /&gt;
* '''&amp;lt;code&amp;gt;dt-bday&amp;lt;/code&amp;gt;''' - birth date&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-key&amp;lt;/code&amp;gt;''' - cryptographic public key e.g. SSH or GPG&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-org&amp;lt;/code&amp;gt;''' - affiliated organization, optionally embed an [[h-card]]&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-job-title&amp;lt;/code&amp;gt;''' - job title, previously 'title' in [[hCard]], disambiguated.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-role&amp;lt;/code&amp;gt;''' - description of role &lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-impp&amp;lt;/code&amp;gt;''' per RFC 4770, new in vCard4 (RFC6350)&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-sex&amp;lt;/code&amp;gt;''' - biological sex, new in vCard4 (RFC6350)&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-gender-identity&amp;lt;/code&amp;gt;''' - gender identity, new in vCard4 (RFC6350)&lt;br /&gt;
* '''&amp;lt;code&amp;gt;dt-anniversary&amp;lt;/code&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
All properties are optional.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
'''h-card''' is a microformats.org draft specification. Public discussion on h-card takes place on [[h-card-feedback]], the #microformats [[irc]] channel on irc.freenode.net, and [http://microformats.org/discuss/mail/microformats-new/ microformats-new mailing list].&lt;br /&gt;
&lt;br /&gt;
h-card is ready to use and implemented in the wild, but for backwards compatibility you should also mark h-cards up as classic [[hCard]]s.&lt;br /&gt;
&lt;br /&gt;
== Property Details ==&lt;br /&gt;
(stub, to be expanded)&lt;br /&gt;
&lt;br /&gt;
=== p-adr ===&lt;br /&gt;
&amp;lt;code&amp;gt;p-adr&amp;lt;/code&amp;gt; can optionally embed an [[h-adr]] to cluster associated structured address properties. E.g. adding &amp;quot;p-adr&amp;quot; to the example earlier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;p-name&amp;quot;&amp;gt;Joe Bloggs&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;p class=&amp;quot;p-adr h-adr&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-street-address&amp;quot;&amp;gt;17 Austerstræti&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-locality&amp;quot;&amp;gt;Reykjavík&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-country-name&amp;quot;&amp;gt;Iceland&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Q: Why would you use &amp;quot;p-adr&amp;quot; to cluster associated structured address properties?&lt;br /&gt;
&lt;br /&gt;
A: Because if you have more than one structured address, it helps to cluster which properties go with which address, e.g. home vs. work.&lt;br /&gt;
&lt;br /&gt;
=== p-tel ===&lt;br /&gt;
Note: use of 'value' within 'p-tel' should be automatically handled by the support of the [[value-class-pattern]]. And for now, the former [[hCard]] 'type' subproperty of 'tel' is dropped/ignored. If there is demonstrable documented need for additional tel types (e.g. fax), we can introduce new flat properties as needed (e.g. p-tel-fax).&lt;br /&gt;
&lt;br /&gt;
=== Reserved properties ===&lt;br /&gt;
Reserved properties (not used much, if at all, in practice):&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-organization-name&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-organization-unit&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-tz&amp;lt;/code&amp;gt;''' - timezone offset, e.g. &amp;lt;code&amp;gt;&amp;amp;lt;data class=&amp;quot;p-tz&amp;quot; value=&amp;quot;-0800&amp;quot;&amp;gt;PST&amp;amp;lt;/data&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''&amp;lt;code&amp;gt;dt-rev&amp;lt;/code&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
== Examples in the wild ==&lt;br /&gt;
Real world in the wild examples:&lt;br /&gt;
&lt;br /&gt;
* ... add uses of h-card you see in the wild here.&lt;br /&gt;
* App.net rolled out support for h-card and h-entry on all profile pages and permalink pages as of 2013-08-06 ([https://alpha.app.net/voidfiles example])&lt;br /&gt;
* Brett Comnes marks up his posts with h-card ([http://bret.io/2013/06/29/getting-started-with-bower/ example])&lt;br /&gt;
* Ben Werdmuller marks up his homepage and posts with h-card [http://werd.io/view/51d5097fbed7ded0633a5956 example])&lt;br /&gt;
* Sandeep Shetty marks his homepage and posts up with h-card and h-entry ([sandeep.io/101 example])&lt;br /&gt;
* spreadly marks up share permalink pages with minimal h-cards inside h-entry ([http://my.spread.ly/share/51d570bc09e9486562000002 example])&lt;br /&gt;
* [http://eschnou.com/ Laurent Eschenauer] marks his homepage profile up using h-card&lt;br /&gt;
* [http://tommorris.org/ Tom Morris] marks himself up with h-card as well as venues he’s checked into ([http://tommorris.org/posts/8408 example])&lt;br /&gt;
* [http://www.w3.org/conf/ W3Conf 2013] uses h-card for all the event speakers and notable attendees. The h-cards make particularly good use of implied name, url, and photo properties.&lt;br /&gt;
* [http://wordpress.org/extend/themes/sempress SemPress] is a WordPress theme that supports h-card, h-feed/h-entry and h-as-*&lt;br /&gt;
* [http://the-pastry-box-project.net/ The Pastry Box Project] use h-card markup on their homepage and individual thoughts pages&lt;br /&gt;
* Tom Morris uses h-card and [[XFN]] to markup [http://tommorris.org/pages/blogroll his blogroll].&lt;br /&gt;
* Aaron Parecki uses h-card to markup both authorship and references to people in his notes permalinks, e.g. [http://aaronparecki.com/2012/230/reply/1 2012/230/reply/1].&lt;br /&gt;
* [http://tantek.com/ Tantek Çelik] uses h-card  on his home page as well as within [[h-entry]]s on permalink pages to indicate authorship.&lt;br /&gt;
* [http://waterpigs.co.uk/ Barnaby Walters] uses h-card on his home page, as well as within h-entries for notes and articles, both to indicate authorship and also when mentioning people within the body of the notes.&lt;br /&gt;
* [http://tantek.com/presentations/2012/06/microformats microformats.org at 7 years] presentation with and h-card markup for people and organizations.&lt;br /&gt;
* [http://tantek.com/presentations/2012/06/pdf2012-indieweb.html Rise of the Indie Web hCards] (from Personal Democracy Forum 2012 #pdf12 #pdf2012) has [[microformats2]] h-card markup&lt;br /&gt;
* WebMaker by Mozilla has [[microformats2]] h-card on event search (e.g. [https://webmaker.org/en-US/events/near/?lat=45.5234515&amp;amp;lng=-122.6762071 search near Portland Oregon]) and event pages (e.g. [https://webmaker.org/en-US/events/192f56eb9/ IndieWebCamp 2012]).[https://twitter.com/microformats/status/212207925643587585]&lt;br /&gt;
* WebFWD by Mozilla has [[microformats2]] h-card markup on [https://webfwd.org/about/experts/ experts] and [https://webfwd.org/about/team/ team] pages&lt;br /&gt;
* [http://indiewebcamp.com IndieWebCamp] has [[microformats2]] h-event markup with embedded h-cards for the organizers and the location.&lt;br /&gt;
* [https://wiki.mozilla.org/Events Mozilla Events] page has [[microformats2]] h-event markup with attendees marked up with h-card.&lt;br /&gt;
&lt;br /&gt;
== Validating ==&lt;br /&gt;
* '''[http://indiewebify.waterpigs.co.uk/validate-h-card/ indiewebify.me h-card validator]''' parses [[h-card]] markup and makes suggestions for things to add, with code samples&lt;br /&gt;
{{h-spec-section-validating}}&lt;br /&gt;
&lt;br /&gt;
== Backward Compatibility ==&lt;br /&gt;
=== Publisher Compatibility ===&lt;br /&gt;
For backward compatibility, you may wish to use classic [[hCard]] classnames in addition to the more future-proof h-card properties, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;h-card vcard&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-name fn&amp;quot;&amp;gt;Joe Bloggs&amp;lt;/span&amp;gt;,&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-org org&amp;quot;&amp;gt;Awesome Nonprofit&amp;lt;/span&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The class '''&amp;lt;code&amp;gt;vcard&amp;lt;/code&amp;gt;''' is a ''backward compatible root class name'' that indicates the presence of an [[hCard]].&lt;br /&gt;
&lt;br /&gt;
'''fn''', '''org''', and all the other backward compatibility hCard property class names are listed below.&lt;br /&gt;
&lt;br /&gt;
=== Parser Compatibility ===&lt;br /&gt;
Microformats parsers {{should}} detect classic properties only if a classic root class name is found and parse them as microformats2 properties. &lt;br /&gt;
&lt;br /&gt;
If an &amp;quot;h-card&amp;quot; is found, don't look for a &amp;quot;vcard&amp;quot; on the same element.&lt;br /&gt;
&lt;br /&gt;
Compat. root class name: &amp;lt;code id=&amp;quot;vcard&amp;quot;&amp;gt;vcard&amp;lt;/code&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Properties: (parsed as '''p-''' plain text unless otherwise specified)&lt;br /&gt;
* &amp;lt;code&amp;gt;fn&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;'''&lt;br /&gt;
* &amp;lt;code&amp;gt;honorific-prefix&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;given-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;additional-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;family-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;honorific-suffix&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;nickname&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;email&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;logo&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;photo&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;url&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;uid&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;category&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;p-adr h-adr&amp;lt;/code&amp;gt;''' including compat root class &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;extended-address&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;street-address&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;locality&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;region&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;postal-code&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;country-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;geo&amp;lt;/code&amp;gt; - parse as '''&amp;lt;code&amp;gt;p-geo h-geo&amp;lt;/code&amp;gt;''' including compat root class &amp;lt;code&amp;gt;geo&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;latitude&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;longitude&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;tel&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;note&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;bday&amp;lt;/code&amp;gt; - parse as '''dt-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; - parse as '''u-'''&lt;br /&gt;
* &amp;lt;code&amp;gt;org&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;organization-name&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;organization-unit&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; - parse as '''p-job-title'''&lt;br /&gt;
* &amp;lt;code&amp;gt;role&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reserved: (backward compat properties that parsers {{may}} implement, if they do, they {{must}} implement in this way:&lt;br /&gt;
* &amp;lt;code&amp;gt;tz&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;rev&amp;lt;/code&amp;gt; - parse as '''dt-'''&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
This work is based on the existing [[hCard]] and [[vcard]] specifications.&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
(stub, expand)&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[microformats2]]&lt;br /&gt;
* [[microformats2-parsing]]&lt;br /&gt;
* [[h-adr]]&lt;br /&gt;
* [[h-geo]]&lt;br /&gt;
* [[hCard]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Draft Specifications]]&lt;/div&gt;</summary>
		<author><name>Barnabywalters</name></author>
	</entry>
</feed>