<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://microformats.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kevin+Marks</id>
	<title>Microformats Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://microformats.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kevin+Marks"/>
	<link rel="alternate" type="text/html" href="https://microformats.org/wiki/Special:Contributions/Kevin_Marks"/>
	<updated>2026-05-14T12:21:18Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-prefixes&amp;diff=70417</id>
		<title>microformats2-prefixes</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-prefixes&amp;diff=70417"/>
		<updated>2021-08-17T15:32:39Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* naming conventions for generic parsing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:microformats2 prefix conventions}}&lt;br /&gt;
&lt;br /&gt;
[[microformats2]] uses a small number of prefixes to distinguish microformats2 class names from other class names.&lt;br /&gt;
&lt;br /&gt;
== microformats2 prefixes ==&lt;br /&gt;
=== naming conventions for generic parsing ===&lt;br /&gt;
The naming conventions for microformats class names make it obvious when:'''&lt;br /&gt;
* a class name represents a microformat '''root class name'''&lt;br /&gt;
* a class name represents a microformat '''property name'''&lt;br /&gt;
* a class name represents a microformat '''property that needs special parsing'''&lt;br /&gt;
&lt;br /&gt;
In particular:&lt;br /&gt;
* '''&amp;quot;h-*&amp;quot; for root class names''', e.g. &amp;quot;h-card&amp;quot;, &amp;quot;h-event&amp;quot;, &amp;quot;h-entry&amp;quot;&lt;br /&gt;
* '''&amp;quot;p-*&amp;quot; for plain (text) properties''', e.g. &amp;quot;p-name&amp;quot;, &amp;quot;p-summary&amp;quot;&lt;br /&gt;
** generic plain text parsing, element text in general, certain HTML elements use special attributes first, e.g. img/alt, abbr/title.&lt;br /&gt;
* '''&amp;quot;u-*&amp;quot; for URL properties''', e.g. &amp;quot;u-url&amp;quot;, &amp;quot;u-photo&amp;quot;, &amp;quot;u-logo&amp;quot;&lt;br /&gt;
** special parsing required: prefer a/href, img/src, object/data etc. attributes to element contents.&lt;br /&gt;
* '''&amp;quot;dt-*&amp;quot; for datetime properties''', e.g. &amp;quot;dt-start&amp;quot;, &amp;quot;dt-end&amp;quot;, &amp;quot;dt-bday&amp;quot;&lt;br /&gt;
** special parsing required: [[value-class-pattern]] and separate date time value parsing for readability&lt;br /&gt;
* '''&amp;quot;e-*&amp;quot; for element tree properties''' where the entire contained element hierarchy is the value, e.g. &amp;quot;e-content&amp;quot; (formerly &amp;quot;entry-content&amp;quot;) for [[hAtom]]. The 'e-' prefix can also be mnemonically remembered as &amp;quot;element tree&amp;quot;, &amp;quot;embedded markup&amp;quot;, or &amp;quot;encapsulated markup&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== microformats2 examples ==&lt;br /&gt;
Example: simple heading h-card example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card&amp;quot;&amp;gt;Chris Messina&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More examples: here is that same heading example with name components:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;p-given-name&amp;quot;&amp;gt;Chris&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;abbr class=&amp;quot;p-additional-name&amp;quot;&amp;gt;R.&amp;lt;/abbr&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;p-family-name&amp;quot;&amp;gt;Messina&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with a hyperlink to Chris's URL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;a class=&amp;quot;u-url&amp;quot; href=&amp;quot;http://factoryjoe.com/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-given-name&amp;quot;&amp;gt;Chris&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;abbr class=&amp;quot;p-additional-name&amp;quot;&amp;gt;R.&amp;lt;/abbr&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-family-name&amp;quot;&amp;gt;Messina&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== backwards compatibility ===&lt;br /&gt;
&lt;br /&gt;
microformats2 provides backwards compatibility by enabling content authors to markup with both old and new class names for compatibility with old tools.&lt;br /&gt;
&lt;br /&gt;
Here is a simple backcompat example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card vcard&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;fn&amp;quot;&amp;gt;Chris Messina&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A microformats2 parser would see the class name &amp;quot;h-card&amp;quot; and imply the one required property from the contents, while a microformats 1.0 parser would find the class name &amp;quot;vcard&amp;quot; and then look for the class name &amp;quot;fn&amp;quot;. no data duplication is required. this is a very important continuing application of the &amp;lt;abbr title=&amp;quot;don't repeat yourself&amp;quot;&amp;gt;DRY&amp;lt;/abbr&amp;gt; [[principle]].&lt;br /&gt;
&lt;br /&gt;
And the above hyperlinked example with both sets of class names:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;h1 class=&amp;quot;h-card vcard&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;a class=&amp;quot;u-url n fn url&amp;quot; href=&amp;quot;http://factoryjoe.com/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-given-name given-name&amp;quot;&amp;gt;Chris&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;abbr class=&amp;quot;p-additional-name additional-name&amp;quot;&amp;gt;R.&amp;lt;/abbr&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-family-name family-name&amp;quot;&amp;gt;Messina&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== vendor extensions ==&lt;br /&gt;
Proprietary extensions to formats have typically been shortlived experimental failures with one big recent exception.&lt;br /&gt;
&lt;br /&gt;
Proprietary or experimental CSS3 property implementations have been very successful.&lt;br /&gt;
&lt;br /&gt;
There has been much use of border radius properties and animations/transitions which use CSS properties with vendor-specific prefixes like:&lt;br /&gt;
&lt;br /&gt;
* -moz-border-radius&lt;br /&gt;
* -webkit-border-radius&lt;br /&gt;
&lt;br /&gt;
etc.&lt;br /&gt;
&lt;br /&gt;
Note that these are merely string '''prefixes''', not bound to any URL, and thus not namespaces in any practical sense of the word. This is quite an important distinction, as avoiding the need to bind to a URL has made them easier to support and use.&lt;br /&gt;
&lt;br /&gt;
This use of vendor specific CSS properties has in recent years allowed the larger web design/development/implementer communities to experiment and iterate on new CSS features while the features were being developed and standardized.&lt;br /&gt;
&lt;br /&gt;
The benefits have been two-fold:&lt;br /&gt;
* designers have been able to make more attractive sites sooner (at least in some browsers)&lt;br /&gt;
* features have been market / real-world tested before being fully standardized, thus resulting in better features&lt;br /&gt;
&lt;br /&gt;
Implementers have used/introduced &amp;quot;x-&amp;quot; prefixes for IETF MIME/content-types for experimental content-types, MIME parameter extensions, and HTTP header extensions, per RFC 2045 Section 6.3, RFC 3798 section 3.3, and [https://secure.wikimedia.org/wikipedia/en/wiki/List_of_HTTP_header_fields#Common_non-standard_headers Wikipedia: HTTP header fields - non-standard headers] (could use RFC reference instead) respectively, like:&lt;br /&gt;
&lt;br /&gt;
* application/x-latex (per [https://secure.wikimedia.org/wikipedia/en/wiki/Internet_media_type#Type_x Wikipedia Internet media type: Type x])&lt;br /&gt;
* x-spam-score (in email headers)&lt;br /&gt;
* X-Pingback (per [http://en.wikipedia.org/wiki/Pingback Wikipedia:Pingback])&lt;br /&gt;
&lt;br /&gt;
Some standard types started as experimental &amp;quot;x-&amp;quot; types, thus demonstrating this experiment first, standardize later approach has worked for at least some cases:&lt;br /&gt;
&lt;br /&gt;
* image/x-png (standardized as image/png, both per [http://tools.ietf.org/html/rfc2083 RFC2083])&lt;br /&gt;
&lt;br /&gt;
There have been times when specific sites have wanted to extend microformats beyond what the set of properties in the microformat, and currently lack any '''experimental''' way to do so - to try and see if a feature (or even a whole format) is interesting in the real world before bothering to pursue researching and walking it through the microformats process.  Thus:&lt;br /&gt;
&lt;br /&gt;
* '*-x-' + '-' + meaningful name for root and property class names&lt;br /&gt;
** where &amp;quot;*&amp;quot; indicates the single-character-prefix as defined above&lt;br /&gt;
** where &amp;quot;x&amp;quot; indicates a literal 'x' for an experimental extension OR&lt;br /&gt;
** OR &amp;quot;x&amp;quot; indicates a vendor prefix (more than one character, e.g. like CSS vendor extension abbreviations, or some stock symbols, avoiding first words/phrases/abbreviations of microformats properties like dt-)&lt;br /&gt;
** e.g.&lt;br /&gt;
** &amp;quot;h-bigco-one-ring&amp;quot; - a hypothetical &amp;quot;bigco&amp;quot; vendor-specific &amp;quot;onering&amp;quot; microformat root class name.&lt;br /&gt;
** &amp;quot;p-goog-preptime&amp;quot; - to represent [http://www.google.com/support/webmasters/bin/answer.py?answer=173379 Google's &amp;quot;preptime&amp;quot; property extension] to [[hRecipe]] (aside: &amp;quot;duration&amp;quot; may be another property type to consider separate from &amp;quot;datetime&amp;quot; as it may be subject to different parsing rules.)&lt;br /&gt;
** &amp;quot;p-x-prep-time&amp;quot; - a possible experimental property name to be added to hRecipe upon consideration/documentation of real-world usage/uptake.&lt;br /&gt;
&lt;br /&gt;
Background - this proposal is a composition of the following (at least somewhat) successful vendor extension syntaxes&lt;br /&gt;
* [http://www.w3.org/TR/CSS21/syndata.html#vendor-keywords CSS 2.1 4.1.2.1 Vendor-specific extensions]&lt;br /&gt;
* IETF MIME/content-type &amp;quot;x-*&amp;quot; extensions per RFC 2045 Section 6.3. [http://en.wikipedia.org/wiki/Internet_media_type]&lt;br /&gt;
* IETF MIME experimental fields (e.g. x-spam-score)&lt;br /&gt;
* HTTP header extensions (e.g. x-pingback)&lt;br /&gt;
* note also [http://www.mnot.net/blog/2009/02/18/x- some critical thoughts from mnot]&lt;br /&gt;
&lt;br /&gt;
== TO DO ==&lt;br /&gt;
* move resolved '''issues''' to a separate page.&lt;br /&gt;
* clean-up and move background research to a microformats2-background or history page&lt;br /&gt;
&lt;br /&gt;
== issues ==&lt;br /&gt;
=== Hungarian prefixing issues ===&lt;br /&gt;
Raised by [[User:BenWard|BenWard]] 01:16, 11 April 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
Microformats 2.0 proposes using an explicit &amp;lt;code&amp;gt;[a-z]-&amp;lt;/code&amp;gt; prefix on properties, to differentiate them from other uses of the class attribute, and identify them as microformat properties, such that they can be parsed generically.&lt;br /&gt;
&lt;br /&gt;
* The differentiation use case is supported by anecdotal evidence of sites (such as Facebook, Twitter, Yahoo) removing microformats or breaking objects in page edits. The addition of a prefix assists self-documentation of code.&lt;br /&gt;
* The generic parsing use case is supported by Google Rich Snippets, Yahoo Search Monkey, and extensible plugins like Operator and the Firefox microformats parser. Although these extract microformats from the page, they are intermediate systems between the page content and the actual interpretation of the data. They need to parse all objects from a page, and then another developer or application will interpret some of them into something else.&lt;br /&gt;
&lt;br /&gt;
(Note: the theoretical assertion &amp;quot;they need to parse all objects from a page&amp;quot; is not actually backed by *any* existing use of microformats/microdata/RDFa parsing - *none* of those parse &amp;quot;all objects from a page&amp;quot; if you consider every markup element an &amp;quot;object&amp;quot; - rather, one of the strength of microformats (mimicked by the others) is that the publisher is able to markup *just* the data to be extracted, rather than perhaps purely &amp;quot;presentational&amp;quot; content, ads, UI widgets etc. -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC) )&lt;br /&gt;
&lt;br /&gt;
The µf2 proposal goes further, though, into a small vocabulary of [http://en.wikipedia.org/wiki/Hungarian_notation Hungarian] prefixes of properties based on data type. This increases the level of understanding required to read microformats, and reduces the benefit of all microformat properties having a consistent identifying prefix.&lt;br /&gt;
&lt;br /&gt;
(Debatable assertion:&amp;quot;increases the level of understanding required to read microformats&amp;quot; - how? In microformats 2.0, authors/developers know that any single-letter-and-hyphen prefixed class name is for microformats 2.0, in contrast to today - developers have consistently given feedback that's hard to tell which generic class names (other than h* names) are microformat related and which are not. As for specific prefixes, &amp;quot;h-*&amp;quot; is special and follows the pattern of existing microformats. p = generic (p)roperty, and the other prefixes have trivial mnemonics as well, d for (d)atetimes etc. (so far, hopefully we can keep that up). -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC) )&lt;br /&gt;
&lt;br /&gt;
Hungarian notation itself is controversial amongst programmers. &lt;br /&gt;
Plenty find it uglifies their code, can be a cause of confusion (especially when very-short prefixes are used, or esoteric types, or where the declared set of types differs from the available types in other programming languages.) Others support its benefits to type identification.&lt;br /&gt;
&lt;br /&gt;
(Programmers are not the priority here, rather, designers/authors/publishers are. We design microformats for them first as they're the common use case, and we should avoid making statements that seem to imply any priority for the aesthetic preferences of programmers. -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC))&lt;br /&gt;
&lt;br /&gt;
Critically, however, there is no clear indication that either of the above use cases requires types to be strongly identified.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* For identifying µf in pages, a differentiator is required from regular classnames. There is no evidence of further requirement to differentiate between properties beyond their name (and existing criticisms of Hungarian notation suggest it can harm understandability.)&lt;br /&gt;
** There is such evidence, and perhaps thus this would be a good FAQ topic. The derivation is quite simple - it comes directly from minimally affecting existing markup, and maximally using existing semantic information. Example of special purpose parsing, URL-like properties use the value of the 'href' (or equivalent) attribute because that's where that data already is in pages. Similarly with dates and datetimes - special parsing rules for that data type have permitted us to design the [[value-class-pattern]] to take advantage of specially parsing date and time separation. By re-using data *where publishers already put it, including attributes vs inline* we minimize the risk of data drift. -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC)&lt;br /&gt;
** Additionally, this special type-specific parsing of microformats properties conveys microformats advantages of markup brevity that other syntaxes lack. E.g. you can convey *multiple* properties and values from a single existing element, e.g. the *very* common real-world pattern &amp;lt;code&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;a href=&amp;quot;http://example.com/user&amp;quot;&amp;gt;User Name&amp;lt;/a&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/code&amp;gt; is minimally marked up as &amp;lt;code&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;span class=&amp;quot;h-card&amp;quot;&amp;gt;&amp;lt;a class=&amp;quot;p-name u-url&amp;quot; href=&amp;quot;http://example.com/user&amp;quot;&amp;gt;User Name&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* For generic parsing, there is no requirement that datatypes be established at extraction time. Data types will instead be applied by the developers of apps and widgets that build on the generic parsers.&lt;br /&gt;
** There are requirements based on experience with actual markup. In order to support the patterns of where content publishers put the data we want to extract, we have determined (based on those publishing patterns) a few different ways (types) of parsing this data. This is all captured in the [[hcard-parsing]] property-specific parsing rules each of which were added one at a time as Brian Suda and myself encountered real world sites wanting to use [[hCard]] but not wanting to have to rewrite their markup (adding one span and some class names was about the limit, moving tags/attributes around was a showstopper in many/most cases), and each of the microformats 2.0 &amp;quot;types&amp;quot; are directly derived from such special purpose data/type parsing across *multiple* microformats. -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC)&lt;br /&gt;
* A counter argument may be that special properties in microformats—such as URLs, or images—need to be identified because in microformats it is common to parse an attribute (href, or src) rather than inner text of an element for these properties. However, in the context of extracting and then interpreting HTML in other contexts this is insufficient: For example, though an image only exists as a single property in vcard, in HTML it is both a URL to a resource ''and'' and text string (alt) representing an accessible fallback. A ‘generic extracter’ of microformats from a page must capture all of this information from HTML, so that the interpreting application can choose which data type is most relevant to its context. Likewise, an application interpreting a URL may also consider using the original inner text as an inferred label. Both pieces of data are useful, and a generic parser should not discard elemental semantics at the extraction level.&lt;br /&gt;
** It's not just &amp;quot;*common* to parse an attribute rather than inner text of an element for these properties&amp;quot; - it is the vast overwhelming majority - if not all - such cases!&lt;br /&gt;
** One misconception: &amp;quot;image only exists as a single property&amp;quot;. No, there is both 'photo' and 'logo'. The 'url' and 'sound' properties are also of type 'url'. For all of these, when parsing an &amp;quot;object&amp;quot; element, you must use the 'data' attribute first for example. hCalendar has &amp;quot;attachment&amp;quot; as well. Etc.&lt;br /&gt;
** Theoretical assertion: &amp;quot;A ‘generic extracter’ of microformats from a page must capture all of this information from HTML, so that the interpreting application can choose which data type is most relevant to its context.&amp;quot; Why? There is no existing nor demonstrated use case for this requirement, even across other formats. While I agree it &amp;quot;might be nice&amp;quot; to develop a new &amp;quot;structured image&amp;quot; type - that's brand new work (deserving of research per the [[process]] etc.), and not a good source of reasoning to reject existing working patterns. I reject blocking microformats 2.0 on an as-yet-to-be-researched-enhancement. This is certainly a case where &amp;quot;better&amp;quot; is an enemy of the good.&lt;br /&gt;
** Theoretical assertion: &amp;quot;a generic parser should not discard elemental semantics at the extraction level&amp;quot; - already does for other syntaxes like both microdata and RDFa - so clearly this is not a reasonable &amp;quot;should not&amp;quot; assertion (and thus unnecessary) for development of a minimally competitive syntax. RDFa kind of cheats by overloading the 'rel' attribute in attempt to solve the name+url case as mentioned above, but that's only two types - and existing real world use of microformats has demonstrated utility of a few more.  -- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Given this, hungarian prefixes are of no benefit to parsers (and may in fact harm applications down the chain if parsing is prematurely strict.) It would be sufficient then not to concern embedding data types in property names, and instead settle on one single property prefix to differentiate all properties consistently. This would reduce the prefixes to just 3:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;h&amp;lt;/code&amp;gt; would indicates a root class name. An ‘object in HTML’.&lt;br /&gt;
* &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; would indicates a property within an object.&lt;br /&gt;
* &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; would indicates an experimental extension to an object.&lt;br /&gt;
&lt;br /&gt;
--[[User:BenWard|BenWard]] 01:16, 11 April 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
The primary benefit of type-specific parsing is *not* for parsers, but rather, publishers (who we still hold in higher priority than parsers).&lt;br /&gt;
&lt;br /&gt;
I will also note that *each* of the type-specific parsing methods in [[hcard-parsing]] was added both conservatively, reluctantly, and only when it became clear that such type-specific publishing patterns existing across *multiple* sites that would otherwise be unable to change their markup to work with microformats (Yes, I'm wishing now that I better documented exactly *which* sites, precisely *when*, but like many startups, early on we didn't exactly know how much to document vs get things done - frankly I think we documented far more than any other comparable such efforts, e.g. we managed to at least capture/grow both an explicit [[process]] and [[principles]] in *far* greater detail than anything remotely comparable either before microformats or since!). The type-specific parsing features are certainly not overdesigned, on the contrary they've *slowly* evolved, adapting to real world data on the web.&lt;br /&gt;
&lt;br /&gt;
While per the [[simplicity]] principle, I would actually *strongly* prefer to only have the three prefixes given above, or actually just *two* (I started with just two for the design of microformats 2.0 actually, just &amp;quot;h-*&amp;quot; and &amp;quot;p-*&amp;quot;), doing so would be a step *backwards* in terms of the adaptability of microformats to existing markup, and that's IMHO an unacceptable barrier, and  a sufficiently high barrier to hurt the adoption/applicability of microformats 2.0. &lt;br /&gt;
&lt;br /&gt;
(Aside: In addition, note that you still need h-x-* for experimental objects, and thus it's *simpler* to simply have *both* h-x-* and p-x-* rather than add x-*. Alternatively x-h-* and x-p-* is no better, in some ways worse, in that object vs. property is a more important distinction for parsers than established vs experimental, especially if/when an experimental property (or object) may be adopted. Also, mild precdent: PNG started with image/x-png, not x-image/png.).&lt;br /&gt;
&lt;br /&gt;
To put it in a positive way, type-specific parsing conveys microformats a publisher-markup-density (and re-use) advantage which neither microdata nor RDFa have, and it would behoove us to *keep* this significant real-world advantage as we evolve microformats.&lt;br /&gt;
&lt;br /&gt;
-- [[User:Tantek|Tantek]] 02:15, 11 April 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== motivating causes ==&lt;br /&gt;
As described on the [[microformats 2]] page.&lt;br /&gt;
&lt;br /&gt;
=== distinguishing properties from other classes ===&lt;br /&gt;
Current microformats properties re-use generic terms like &amp;quot;summary&amp;quot;, &amp;quot;photo&amp;quot;, &amp;quot;updated&amp;quot; both for ease of use and understanding.&lt;br /&gt;
&lt;br /&gt;
However, through longer term experience, we've seen sites that accidentally drop (or break) their microformats support (e.g. Upcoming.org, Facebook) because web authors sometimes rewrite all their class names, and either are unaware that microformats were in the page, or couldn't easily distinguish microformats property class names from other site-specific class names.&lt;br /&gt;
&lt;br /&gt;
This issue has been reported by a number of web authors:&lt;br /&gt;
* [http://html5doctor.com/microformats/#comment-10241 Wim's comment on HTML5Doctor] &amp;quot;Authors use classes like 'url' or 'region' all the time ... All sorts of markup might look like a microformat.&amp;quot;&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
There has also been an anecdotal report of a design firm who was not (yet) familiar with microformats seeing the &amp;quot;extra&amp;quot; classes that &amp;quot;that don't seem to be used&amp;quot; (without corresponding CSS rules) and asking if they &amp;quot;can remove them&amp;quot;. By making microformats class names different from generic words, authors unfamiliar with microformats may at least notice such distinction and infer special functionality accordingly.&lt;br /&gt;
&lt;br /&gt;
Thus microformats 2 uses ''prefixes'' for property class names, e.g.:&lt;br /&gt;
* '''p-summary''' instead of ''summary''&lt;br /&gt;
* '''u-photo''' instead of ''photo'' &lt;br /&gt;
* '''dt-updated''' instead of ''updated''&lt;br /&gt;
&lt;br /&gt;
Such prefixing of all microformats class names was first suggested by Scott Isaacs of Microsoft to Tantek on a visit to Microsoft sometime in 2006/2007, but specifically aimed at making microformats easier to parse. At the time the suggestion was rejected since microformats were focused on web authors rather than parsers.&lt;br /&gt;
&lt;br /&gt;
However, since experience has shown that distinguishing property class names is an issue for '''both web authors and parser developers''', this is a key change that microformats 2 is adopting. See the next section for details.&lt;br /&gt;
&lt;br /&gt;
=== existing microformats parsing requirements ===&lt;br /&gt;
A non-trivial number of parser and tools developers have been sufficiently frustrated with some general issues with microformats that they've done the significant extra work to support very different and less friendly alternatives (microdata, RDFa). Based on this real-world data (market behavior), it behooves us to address these general issues with microformats for this constituency.&lt;br /&gt;
&lt;br /&gt;
COMMUNITY and TOOLS (that) USE MICROFORMATS &lt;br /&gt;
* parser / parsing&lt;br /&gt;
* structured&lt;br /&gt;
* getting the data out&lt;br /&gt;
* json - 1:1 mapping&lt;br /&gt;
&lt;br /&gt;
[[parsing]] microformats currently requires&lt;br /&gt;
# a list of root class names of each microformat to be parsed&lt;br /&gt;
# a list of properties for each specific microformats, along with knowledge of the type of each property in order to parse their data from potentially different portions of the HTML markup&lt;br /&gt;
# some number of format-specific specific rules (markup/content optimizations)&lt;br /&gt;
&lt;br /&gt;
This has meant that whenever a new microformat is drafted/specificied/adopted, parsers need to updated to handle it correctly, at a minimum to parse them when inside other microformats and avoid errantly implying properties from one to the other (containment, [[mfo]] problem).&lt;br /&gt;
&lt;br /&gt;
=== naming conventions for generic parsing ===&lt;br /&gt;
There is a fairly simple solution to #1 and #2 from the above list, and we can make progress towards minimizing #3.  In short:&lt;br /&gt;
&lt;br /&gt;
'''Proposal: a set of naming conventions for microformat root class names and properties that make it obvious when:'''&lt;br /&gt;
* a class name represents a microformat root class name&lt;br /&gt;
* a class name represents a microformat property name&lt;br /&gt;
* a class name represents a microformat property that needs special parsing (specific type of property).&lt;br /&gt;
&lt;br /&gt;
In particular - derived from the real world examples of existing proven microformats (rather than any abstraction of what a schema should have)&lt;br /&gt;
* '''&amp;quot;h-*&amp;quot; for root class names''', e.g. &amp;quot;h-card&amp;quot;, &amp;quot;h-event&amp;quot;, &amp;quot;h-entry&amp;quot;&lt;br /&gt;
** The 'h-' prefix is based on the existing microformats naming pattern of starting with 'h'.&lt;br /&gt;
* '''&amp;quot;p-*&amp;quot; for simple (text) properties''', e.g. &amp;quot;p-fn&amp;quot;, &amp;quot;p-summary&amp;quot;&lt;br /&gt;
** vocabulary generic parsing, element text in general, treat certain HTML element/attribute combination as special and use those first, e.g. img/alt, abbr/title.&lt;br /&gt;
** The 'p-' prefix is based on the word &amp;quot;property&amp;quot; starting with 'p'.&lt;br /&gt;
* '''&amp;quot;u-*&amp;quot; for URL properties''', e.g. &amp;quot;u-url&amp;quot;, &amp;quot;u-photo&amp;quot;, &amp;quot;u-logo&amp;quot;&lt;br /&gt;
** special parsing required: prefer a/href, img/src, object/data etc. attributes to element contents.&lt;br /&gt;
** The 'u-' prefix is based on URL/URI starting with the letter 'u', which is the type of most of these related properties.&lt;br /&gt;
* '''&amp;quot;dt-*&amp;quot; for datetime properties''', e.g. &amp;quot;dt-start&amp;quot;, &amp;quot;dt-end&amp;quot;, &amp;quot;dt-bday&amp;quot;&lt;br /&gt;
** special parsing required: [[value-class-pattern]], in particular separate date time value parsing for better human readabillity / DRY balance.&lt;br /&gt;
** The 'dt-' prefix is based on &amp;quot;date time&amp;quot; having the initials &amp;quot;dt&amp;quot; and the preponderance of existing date time properties starting with &amp;quot;dt&amp;quot;, e.g. dtstart, dtend, dtstamp, dtreviewed.&lt;br /&gt;
*** Initially I had proposed &amp;quot;dt-*&amp;quot; but Chris Messina suggested reducing it to &amp;quot;d-*&amp;quot; so that all prefixes were a single letter - made sense.&lt;br /&gt;
*** However, I've noticed that Google+ is using &amp;quot;d-*&amp;quot; class names on [https://plus.google.com/109182513536739786206 profile pages], thus we can't really use 'd-' as a microformats 2 property parsing prefix. [[User:Tantek|Tantek]] 03:00, 22 July 2011 (UTC)&lt;br /&gt;
* '''&amp;quot;e-*&amp;quot; for element tree properties''' where the entire contained element hierarchy is the value, e.g. &amp;quot;e-content&amp;quot; (formerly &amp;quot;entry-content&amp;quot;) for [[hAtom]]. The 'e-' prefix can also be mnemonically remembered as &amp;quot;element tree&amp;quot;, &amp;quot;embedded markup&amp;quot;, or &amp;quot;encapsulated markup&amp;quot;.&lt;br /&gt;
** special parsing required: follow the [http://www.whatwg.org/specs/web-apps/current-work/multipage/the-end.html#serializing-html-fragments HTML spec: Serializing HTML Fragments algorithm] to create a serialization.&lt;br /&gt;
&lt;br /&gt;
This provides a simpler transition/education story for existing microformats authors/publishers: &lt;br /&gt;
* &amp;quot;h*&amp;quot; to &amp;quot;h-*&amp;quot;, &amp;quot;dt*&amp;quot; to &amp;quot;dt-*&amp;quot;, url-like properties to &amp;quot;u-*&amp;quot;, entire embedded markup to &amp;quot;e-*&amp;quot;, and &amp;quot;p-*&amp;quot; for all &amp;quot;plain text&amp;quot; properties.&lt;br /&gt;
&lt;br /&gt;
As part of microformats2 we would immediately define root class names and property names for all existing microformats and drafts consistent with this naming convention, and require support thereof from all new implementations, as well as strongly encouraging existing implementations to adopt the simplified microformats2 syntax and mechanism. Question: which microformats deserve explicit backward compatibility?&lt;br /&gt;
&lt;br /&gt;
As a community we would continue to use the microformats [[process]] both for researching and determining the need for new microformats, and for naming new microformat property names for maximum re-use and interoperability of a shared vocabulary.&lt;br /&gt;
&lt;br /&gt;
If it turns out we need a new property type in the future, we can use one of the remaining single-letter-prefixes to add it to microformats 2.0. This would require updating of parsers of course, but in practice the number of different types of properties has grown very slowly, and we know from other schema/programming languages that there's always some small limited number of scalar/atomic property types that you need, and using those you can create compound types/objects that represent richer / more complicated types of data.&lt;br /&gt;
&lt;br /&gt;
==== ADVANTAGES ====&lt;br /&gt;
This has numerous advantages:&lt;br /&gt;
* '''better maintainability''' - much more obvious to web authors/designers/publishers which class names are for/from microformats.&lt;br /&gt;
* '''no chance of collision''' - for all practical purposes with existing class names and thus avoiding any need to add more complex CSS style rules to prevent unintended styling effects.&lt;br /&gt;
* '''simpler parsing''' - parsers can now do a simple stream-parse (or in-order DOM tree walk) and parse out '''all''' microformat objects, properties, and values, without having to know anything about any specific microformats.&lt;br /&gt;
* '''separation of syntax and vocabulary''' - by abstracting microformats 2 syntax independent of any vocabulary, it allows and encourages development of shared vocabularies  that can work in alternative syntaxes.&lt;br /&gt;
&lt;br /&gt;
==== prefixes for future consideration ====&lt;br /&gt;
possibly also:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* '''&amp;quot;s-*&amp;quot; for structured properties''' basically s-* works just like h-* except that no properties (e.g. 'name','url','photo') are implied when there are no properties present. Example uses: s-geo and s-adr. This is being considered as a result of [[microformats-2-parsing#Parsing_Literal_Values|microformats 2 parsing discussions]]. 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;
** -1. Although I do think the implied-literal parsing behaviour carries some complications and parsed-cruft with more 'structural' formats, introducing a further generic prefix to differentiate one kind of format from another is oesoteric, won't be understood by authors (we're already considering a full reversal rename of 'fn' to 'name' in response to user comprehension), and we've seen historically that mixed prefixes (v and h) also cause muddle. --[[User:BenWard|BenWard]] 06:30, 5 October 2011 (UTC)&lt;br /&gt;
*** This is good reasoning, especially the comparison to v vs. h prefixed root class names (my experience with authors concurs with that). Each new prefix introduces complexity and thus must have advantages sufficient to exceed the complexity cost. [[User:Tantek|Tantek]] 06:55, 5 October 2011 (UTC)&lt;br /&gt;
** Furthermore, both of the examples given here have in-the-wild use cases for literal parsing: Geo's existing documented optimisation of &amp;lt;code&amp;gt;1.233;0.453&amp;lt;/code&amp;gt; is applied in two (one valid) manners with the &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; element (incorrectly as an expansion of a place name, and as an alternative to degree-format co-ordinates. Coordinates are also displayed in-place alongside map references, markers, and the like.) In the case of &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt;, there's an overlap with existing uses of the &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; label property, which is used in cases of unstructured addresses (common in most social network profile systems, also in vcalendar.) Based on previous discussion around unstructured addresses, Twitter uses &amp;lt;code&amp;gt;&amp;amp;lt;* class=&amp;quot;adr&amp;quot;&amp;gt;&amp;amp;lt;* class=&amp;quot;label&amp;quot;&amp;gt;&amp;lt;/code&amp;gt; on profiles ([https://twitter.com/intent/user?screen_name=benward&amp;amp;detailed Example].) Having literal parsing of &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; would be neater though, if &amp;lt;code&amp;gt;label&amp;lt;/code&amp;gt; were to be deprecated. --[[User:BenWard|BenWard]] 06:30, 5 October 2011 (UTC)&lt;br /&gt;
*** [[geo]] has been historically quite problematic in practice, despite our efforts at making it work better via optimizations. I'd like to see real world examples of &amp;quot;Coordinates are also displayed in-place alongside map references, markers, and the like&amp;quot; documented on a page like [[geo-examples]] so we can see how any kind of geo-markup could/would help. Interesting about the Twitter use of 'label' inside 'adr' - quite prescient as [[vCard4]] moved 'label' from being its own top-level property to being an attribute (what we used to call subproperty) of 'adr'. Thus we should consider adding 'p-label' as a property for 'h-adr', given a) Twitter's real world usage, b) the refactoring of label into adr in vCard4. [[User:Tantek|Tantek]] 06:55, 5 October 2011 (UTC)&lt;br /&gt;
* '''&amp;quot;e-*&amp;quot; for properties''' where the entire contained element hierarchy is the value, e.g. &amp;quot;e-content&amp;quot; (formerly &amp;quot;entry-content&amp;quot;) for [[hAtom]]. (2011-09-21 note: this has now been included in microformats 2, the below discussion is kept for posterity [[User:Tantek|Tantek]] 09:44, 21 September 2011 (UTC))&lt;br /&gt;
** unclear if this is necessary in general. and if so, if this is only for hAtom, that's insufficient to justify putting it in the generic syntax.&lt;br /&gt;
** Would be sufficient to have all &amp;lt;code&amp;gt;p-&amp;lt;/code&amp;gt; properties parse the complete content, including any nested mark-up if present, and then implementations to sanitize/run a &amp;lt;code&amp;gt;strip_tags&amp;lt;/code&amp;gt; style function (as per data input best practice) as appropriate. --[[User:BenWard|BenWard]] 22:05, 19 September 2011 (UTC)&lt;br /&gt;
** Ouch that sounds like passing on complexity downstream for all cases just to handle *one* known use-case so far. Since we'd typically do the opposite (simplify for the 99% case over the 1% case), passing on content including mark-up by default seems like a step backwards. Also, given how many vulnerabilities seem to deal with parsing/filtering, doing that *first* rather than burdening downstream implementations seems like the right choice. I'd rather wait til we get a concrete complaint from a microformats-2 hAtom consumer before worrying about this for hAtom 2.0. Or are there other current real world use cases besides Atom? [[User:Tantek|Tantek]] 22:22, 19 September 2011 (UTC)&lt;br /&gt;
*** In addition to &amp;lt;code&amp;gt;entry-content&amp;lt;/code&amp;gt; in hAtom there's also &amp;lt;code&amp;gt;entry-summary&amp;lt;/code&amp;gt;, plus any large region of text in other microformats, which at the very least can commonly contain additional hyperlinks, images, and phrasing mark-up: &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt; in hCal, hReview, hProduct, hListing, &amp;lt;code&amp;gt;note&amp;lt;/code&amp;gt; in hCard, &amp;lt;code&amp;gt;ingredient&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;instructions&amp;lt;/code&amp;gt; in hRecipe may link to a store, or wikipedia entry for the ingredient, or include an image to illustrate a step of a recipe, as well as recipe instructions that are expressed as lists. If an author/publisher marks up a property in such a way that it contains further mark-up, that mark-up should be assumed to be part of the value. It's always going to be up to an implementation to decide whether it wishes to translate that HTML mark-up into some other format (e.g. Markdown-esque text annotation when converting to something like &amp;lt;code&amp;gt;vcard&amp;lt;/code&amp;gt;, or some other kind of formatting language on non-HTML platforms, or stripping text altogether. —[[User:BenWard|BenWard]] 01:05, 20 September 2011 (UTC)&lt;br /&gt;
**** While hAtom's &amp;lt;code&amp;gt;entry-content&amp;lt;/code&amp;gt; and possibly hCard's &amp;lt;code&amp;gt;note&amp;lt;/code&amp;gt; may be the only existing practical use-cases (&amp;lt;code&amp;gt;entry-summary&amp;lt;/code&amp;gt; and other &amp;quot;large region of text&amp;quot; are potential/prospective use cases), I'm now convinced the hAtom use-case alone is worthy of including the &amp;quot;e-&amp;quot; prefix because it enables a full fidelity replacement for typical Atom use cases. [[User:Tantek|Tantek]] 09:44, 21 September 2011 (UTC)&lt;br /&gt;
* '''&amp;quot;i-*&amp;quot; for ID properties''', e.g. &amp;quot;i-uid&amp;quot; (if this is the only one, then perhaps we just always re-use &amp;quot;uid&amp;quot; or collapse with &amp;quot;u-*&amp;quot; into &amp;quot;u-id&amp;quot;.)&lt;br /&gt;
** parsing is no different than &amp;quot;u-*&amp;quot; parsing, thus no need to introduce for now.&lt;br /&gt;
* '''&amp;quot;n-*&amp;quot; for numbers''', e.g. &amp;quot;n-rating&amp;quot;, &amp;quot;n-geo&amp;quot;, where the numbers may have different human-readable-friendly and decimal/machine values (e.g. with geo lat/long degrees minutes seconds vs decimal).&lt;br /&gt;
** requires definition of how would different parsing work before worthy of consideration.&lt;br /&gt;
* '''&amp;quot;t-*&amp;quot; for time duration''', e.g. &amp;quot;t-duration&amp;quot; in [[hCalendar]], [[hAudio]], [[hRecipe]] (note also Google's hRecipe extensions &amp;quot;preptime&amp;quot;, &amp;quot;cooktime&amp;quot;, &amp;quot;totaltime&amp;quot;)&lt;br /&gt;
** requires definition of how would different parsing work before worthy of consideration.&lt;br /&gt;
** now that the HTML5 &amp;amp;lt;time&amp;gt; element supports representing durations, we should simply incorporate duration (and timezone at that) into the 'dt-' datetime parsing rules. Certainly no need for a separate prefix. [[User:Tantek|Tantek]] 08:45, 1 December 2011 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== reserving other prefixes ====&lt;br /&gt;
We should '''reserve all other single-letter-dash prefixes for future use''' (within the scope of '''h-''' objects: outside of the context of an '''h-''' object, this is inapplicable).&lt;br /&gt;
&lt;br /&gt;
In practice we have seen little (if any) use of single-letter-dash prefixing of class names by web developers/designers, and thus in practice we think this will have little if any impact/collisions.  Certainly far fewer than existing generic microformat property class names like &amp;quot;title&amp;quot;, &amp;quot;note&amp;quot;, &amp;quot;summary&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== existing single letter class prefixes ====&lt;br /&gt;
We should document existing usage of single/double letter prefixed names:&lt;br /&gt;
* Google+ (e.g. [https://plus.google.com/109182513536739786206 profile page], others) uses:&lt;br /&gt;
** '''a-'''&lt;br /&gt;
** '''d-'''&lt;br /&gt;
** '''g-''', '''gb*'''&lt;br /&gt;
* [http://getskeleton.com/#utilities Skeleton] uses &lt;br /&gt;
** '''u-''' for utility classes u-full-width u-max-full-width u-pull-right u-pull-left and u-cf&lt;br /&gt;
* [https://github.com/suitcss/utils SUITCSS] uses&lt;br /&gt;
** '''u-''' for utility classes. Usually two words written in camelCase: u-alignTop u-floatLeft however some use abbreviations: u-nbfc (new block formatting context) u-cf (clearfix)&lt;br /&gt;
* Yahoo&lt;br /&gt;
** '''y-'''&lt;br /&gt;
* others? please add alphabetical by company/org name.&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats-2]]&lt;br /&gt;
* [[microformats-2-brainstorming]]&lt;br /&gt;
* [[microformats-2-faq]]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=menu-brainstorming&amp;diff=70282</id>
		<title>menu-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=menu-brainstorming&amp;diff=70282"/>
		<updated>2020-12-04T15:04:10Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* Brainstorming */ agree p-caetgory is good&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
Per [[process]], for documenting ideas towards a restaurant [[menu]] microformat, based on experience and research into:&lt;br /&gt;
* [[menu-examples]]&lt;br /&gt;
* [[menu-formats]]&lt;br /&gt;
And of course using existing microformats as building blocks when appropriate.&lt;br /&gt;
&lt;br /&gt;
== Brainstorming ==&lt;br /&gt;
There may be some similarities with [[h-resume]], which also has an [[h-card]] for the organization (e.g. restaurant) whom the resume belongs to.&lt;br /&gt;
&lt;br /&gt;
The obvious path forward is to use [[h-product]] for menu items. [[h-product]] offers pretty much everything a menu item microformat needs: p-name for the item name, (e.g. mushroom soup), u-photo, e-description, and p-price. There are some additional things in menus, notably calories, that might  require a new property. If a menu has a page for individual items, u-url is available. [[h-review]] might be useful for review sites like Yelp or Google (though that might be a disincentive for restaurants, which tend to harbor strong antipathy to review sites in general and Yelp in particular. I'm not sure if p-category can be reused, but some way to tag items -- as vegetarian, gluten-free, etc. -- would be useful. [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 02:12, 4 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
Yes, p-category makes sense as a general tagging model. Gathering examples of categories used is useful to see what may be worth including as examples. [[User:Kevin Marks|Kevin Marks]] ([[User talk:Kevin Marks|talk]]) 15:04, 4 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
What's missing is a container for the menu items. Such a menu container microformat could include meta information such as availability (e.g., a dinner menu is available 5pm -10pm). [[User:Btrem|Btrem]] ([[User talk:Btrem|talk]]) 02:14, 4 December 2020 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
... feel free to add more unstructured thoughts there.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[menu]]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=h-cite&amp;diff=70260</id>
		<title>h-cite</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=h-cite&amp;diff=70260"/>
		<updated>2020-10-22T02:52:25Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* Examples in the wild */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:h-cite}}&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-cite&amp;lt;/dfn&amp;gt; is a simple, open format for publishing citations and references to online and other publications. h-cite is one of several open [[microformats|microformat]] draft standards suitable for embedding data in HTML/HTML5.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Here is a simple minimal abstract web citation example:&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;h-cite&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;time class=&amp;quot;dt-published&amp;quot;&amp;gt;YYYY-MM-DD&amp;lt;/time&amp;gt; &lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-author h-card&amp;quot;&amp;gt;AUTHOR&amp;lt;/span&amp;gt;: &lt;br /&gt;
  &amp;lt;cite&amp;gt;&amp;lt;a class=&amp;quot;u-url p-name&amp;quot; href=&amp;quot;URL&amp;quot;&amp;gt;TITLE&amp;lt;/a&amp;gt;&amp;lt;/cite&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;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-cite&amp;lt;/code&amp;gt;''' is a ''root class name'' that indicates the presence of an h-cite.&lt;br /&gt;
&lt;br /&gt;
The classes '''&amp;lt;code&amp;gt;dt-published&amp;lt;/code&amp;gt;''', '''&amp;lt;code&amp;gt;p-author&amp;lt;/code&amp;gt;''', '''&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;''', and '''&amp;lt;code&amp;gt;u-url&amp;lt;/code&amp;gt;''' define  ''properties'' of the h-cite. &lt;br /&gt;
&lt;br /&gt;
The class '''&amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt;''' on the same &amp;lt;code&amp;gt;&amp;amp;lt;span&amp;amp;gt;&amp;lt;/code&amp;gt; as '''&amp;lt;code&amp;gt;p-author&amp;lt;/code&amp;gt;''' indicates the presence of a nested [[h-card]] microformat as the '''author''' of the h-cite.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
h-cite properties (inside class &amp;lt;code&amp;gt;'''h-cite'''&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;''' - name of the work&lt;br /&gt;
* '''&amp;lt;code&amp;gt;dt-published&amp;lt;/code&amp;gt;''' - date (and optionally time) of publication&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-author&amp;lt;/code&amp;gt;''' - author of publication, with optional nested [[h-card]]&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-url&amp;lt;/code&amp;gt;''' - a URL to access the cited work&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-uid&amp;lt;/code&amp;gt;''' - a URL/URI that uniquely/canonically identifies the cited work, canonical permalink.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-publication&amp;lt;/code&amp;gt;''' - for citing articles in publications with more than one author, or perhaps when the author has a specific publication vehicle for the cited work. Also works when the publication is known, but the authorship information is either unknown, ambiguous, unclear, or collaboratively complex enough to be unable to list explicit author(s), e.g. like with many wiki pages.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;dt-accessed&amp;lt;/code&amp;gt;''' - date the cited work was accessed for whatever reason it is being cited. Useful in case online work changes and it's possible to access the dt-accessed datetimestamped version in particular, e.g. via the Internet Archive.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-content&amp;lt;/code&amp;gt;''' for when the citation includes the content itself, like when citing short text notes (e.g. tweets).&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
'''h-cite''' is a microformats.org draft specification. Public discussion on h-cite takes place on [[h-cite-feedback]] and the #microformats [[irc]] channel on irc.freenode.net.&lt;br /&gt;
&lt;br /&gt;
== Property Details ==&lt;br /&gt;
(stub, to be expanded)&lt;br /&gt;
&lt;br /&gt;
All web citation properties are derived from those implied in [[citation-formats#styles|existing citation styling guides]] for citing permalinks to articles and short text notes online.&lt;br /&gt;
&lt;br /&gt;
Date-time properties (dt-published, dt-accessed) may optionally include time information in addition to the date if relevant to the citation (e.g. when citing short text notes (tweets) of which there may be several in a single day).&lt;br /&gt;
&lt;br /&gt;
To be added:&lt;br /&gt;
* for each property, what equivalent TCMOS, APA, MLA terms/vocabulary is being expressed/captured as researched in the [[citation-formats#styles|citation formats styles]] section.&lt;br /&gt;
* transforms from the web citations proposal properties into each of those citation styles.&lt;br /&gt;
** for citations of blog posts / articles &lt;br /&gt;
** for citations of text notes / tweets&lt;br /&gt;
** see examples in wild below for markup samples to style in each of the TCMOS/APA/MLA styles for blog/note citations.&lt;br /&gt;
&lt;br /&gt;
== Offline Citations ==&lt;br /&gt;
The web citation proposal can be used for simple web-to-off-web citation use cases. As suggested by Ed Summers, dropping the hyperlink to the cited web article provides a simple off-web citation, e.g. a citation of a physical book:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;h-cite&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;time class=&amp;quot;dt-published&amp;quot;&amp;gt;YYYY-MM-DD&amp;lt;/time&amp;gt; &lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-author h-card&amp;quot;&amp;gt;AUTHOR&amp;lt;/span&amp;gt;: &lt;br /&gt;
  &amp;lt;cite class=&amp;quot;p-name&amp;quot;&amp;gt;TITLE&amp;lt;/cite&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: physical books typically only provide the YYYY (year) published, not the precise date.&lt;br /&gt;
&lt;br /&gt;
Next steps: &lt;br /&gt;
* Try such markup with actual content being published on the web (perhaps a bibliography, list of papers in a resume, etc.)&lt;br /&gt;
* See how it works/feels there&lt;br /&gt;
* Determine what seems to be missing. &lt;br /&gt;
* See if the &amp;quot;p-publisher&amp;quot; property helps in some web-to-off-web citation use cases.&lt;br /&gt;
&lt;br /&gt;
== Examples in the wild ==&lt;br /&gt;
Real world in the wild examples:&lt;br /&gt;
* ... add uses of h-cite you see in the wild here.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;cite class=&amp;quot;h-cite&amp;quot;&amp;gt;[http://christopheducamp.com/blog/test-indieweb-parvenir-a-posser-un-article-vers-twitter/ Test #IndieWeb : Parvenir à « POSSEr » un article vers Twitter]&amp;lt;/cite&amp;gt; has an h-cite of a short note:&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;&lt;br /&gt;
  &amp;lt;cite class=&amp;quot;h-cite&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;a class=&amp;quot;u-url p-name&amp;quot; href=&amp;quot;http://tantek.com/2013/104/t2/urls-readable-speakable-listenable-retypable&amp;quot;&amp;gt; &lt;br /&gt;
      URLs should be readable, speakable, listenable, and unambiguously &lt;br /&gt;
retypable, e.g. from print: tantek.com/w/ShortURLPrintExample #UX &lt;br /&gt;
    &amp;lt;/a&amp;gt; &lt;br /&gt;
   (&amp;lt;abbr class=&amp;quot;p-author h-card&amp;quot; title=&amp;quot;Tantek Çelik&amp;quot;&amp;gt;Çelik&amp;lt;/abbr&amp;gt; &lt;br /&gt;
    &amp;lt;time class=&amp;quot;dt-published&amp;quot;&amp;gt;2013-04-14&amp;lt;/time&amp;gt;)&lt;br /&gt;
  &amp;lt;/cite&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Mastodon uses h-cite by default to show threads and replies to posts [https://github.com/tootsuite/mastodon/pull/1063 added in 2017]&lt;br /&gt;
&lt;br /&gt;
See also examples documented here:&lt;br /&gt;
* https://indiewebcamp.com/h-cite#Indieweb_examples&lt;br /&gt;
&lt;br /&gt;
Real but not quite wild (used by the specification author)&lt;br /&gt;
* Every blog post on http://tantek.com has a text field for copying h-cite markup for that blog post.&lt;br /&gt;
* &amp;lt;cite class=&amp;quot;h-cite&amp;quot;&amp;gt;[http://tantek.com/2012/353/b1/why-html-classes-css-class-selectors Why you should say HTML classes, CSS class selectors, or CSS pseudo-classes, but not CSS classes]&amp;lt;/cite&amp;gt; has a couple of interesting uses of h-cite:&lt;br /&gt;
** properties used: p-name, u-url, p-author, p-publication, dt-published, dt-accessed (basically all proposed properties except p-content!)&lt;br /&gt;
** additional experimental property: p-x-translation - which refers to a nested h-cite with its own implied p-name and implied u-url.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
This work is based on how existing [[citation-formats#styles|citation format ''styles'']] (APA, MLA, TCMOS) represent references to articles on the web, and is designed to match the implied schema of those styles. The web citations proposal defines how to markup such reference representation styles in order to satisfy the use-cases above.&lt;br /&gt;
&lt;br /&gt;
=== Goal ===&lt;br /&gt;
A primary goal of the web citation effort is to both start small, and always &amp;quot;make small possible&amp;quot;, that is, no matter how it is extended, continue permitting very small meaningful citations with perhaps only 2-3 properties (e.g. date published, author, name of work).&lt;br /&gt;
&lt;br /&gt;
=== Previous Proposals ===&lt;br /&gt;
The biggest problem with all previous proposals is that they tried to do too much. They didn't design a citation ''micro''format that could be used as a building block, but rather, erred on the side of attempting to describe the myriad types of references to dead-tree resources. They were so over-designed that their authors didn't even dogfood them on their own sites. -- [[User:Tantek|Tantek]] 00:56, 7 August 2012 (UTC)&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
=== Why ===&lt;br /&gt;
''Why markup web citations? What problem does it solve?''&lt;br /&gt;
&lt;br /&gt;
A: In the simplest form, marking up a web citation URL, name, date published, author etc. allow for processing of web citations into whatever &amp;quot;style&amp;quot; or &amp;quot;format&amp;quot; (MLA vs APA etc.) a user wishes to publish them themselves.&lt;br /&gt;
&lt;br /&gt;
=== Why not just a href ===&lt;br /&gt;
''Doesn't &amp;lt;code&amp;gt;&amp;amp;lt;a href&amp;amp;gt;&amp;lt;/code&amp;gt; solve the problem of marking up citations in an article on the web that refers to other articles on the web?''&lt;br /&gt;
&lt;br /&gt;
A: No, &amp;lt;code&amp;gt;&amp;amp;lt;a href&amp;amp;gt;&amp;lt;/code&amp;gt; is necessary but insufficient for marking up &amp;lt;em&amp;gt;citations&amp;lt;/em&amp;gt; to articles on the web. &lt;br /&gt;
&lt;br /&gt;
* '''Insufficient semantic.''' &amp;lt;code&amp;gt;&amp;amp;lt;a href&amp;amp;gt;&amp;lt;/code&amp;gt; is sufficient only for providing a hyperlink (which may or may not be a citation, e.g. it may be a &amp;quot;see also&amp;quot; link rather than link to a source being cited for particular assertion or fact).&lt;br /&gt;
* '''A href only marks up article link and name''' An &amp;lt;code&amp;gt;&amp;amp;lt;a href&amp;amp;gt;&amp;lt;/code&amp;gt; can only represent the &amp;quot;url&amp;quot; and &amp;quot;name&amp;quot; of a citation. Where as [[citation-formats#styles|published web citations]] typically also include:&lt;br /&gt;
** article author name (sometimes author photo and URL)&lt;br /&gt;
** article publication date&lt;br /&gt;
** article publication name&lt;br /&gt;
** article access date (sometimes, e.g. Wikipedia citations)&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
Principles driving this proposal:&lt;br /&gt;
* '''solve a [[specific]] problem'''. In this case '''web citations''' seeks to solve a ''more'' specific problem than previous proposals, that of citations from the web to the web (more constrained than any publication to any publication).&lt;br /&gt;
* [[solve simpler problems first]]. Existing web-to-web citations contain very little information compared to generalized academic citations, thus '''web citations''' is greatly simplified compared to previous proposals by only starting with a handful of properties.&lt;br /&gt;
* [[humans first]] - '''web citations''' focuses on the human readability and writability aspects of citations in articles first and foremost, and only secondarily considers the machine readability/reusability of the data contained therein.&lt;br /&gt;
* [[reuse]] building blocks - by re-using the better designed aspects of [[citation-formats#styles|existing citation conventions]] for web resources, '''web citations''' builds on top of previous work to make citations human readable/writable, as well as what implied properties are commonly expressed by such previous work.&lt;br /&gt;
=== Focus ===&lt;br /&gt;
The &amp;lt;dfn&amp;gt;web citations&amp;lt;/dfn&amp;gt; proposal uses a smaller, [[simpler]] set of only ''eight'' properties to solve the [[specific]] problem of how to markup citations in an article &amp;lt;em&amp;gt;on the web&amp;lt;/em&amp;gt; that refers to other articles &amp;lt;em&amp;gt;on the web&amp;lt;/em&amp;gt;. Offline to offline, and online to offline references were specifically not explicitly addressed in initial design.&lt;br /&gt;
&lt;br /&gt;
== First Proposal ==&lt;br /&gt;
This design was first publicly proposed as the result of an interactive web citation design discussion during IndieWebCamp2012:&lt;br /&gt;
* &amp;lt;span class=&amp;quot;h-cite&amp;quot;&amp;gt;&amp;lt;time class=&amp;quot;dt-published&amp;quot;&amp;gt;2012-07-01&amp;lt;/time&amp;gt; &amp;lt;span class=&amp;quot;p-publisher&amp;quot;&amp;gt;IndieWebCamp2012&amp;lt;/span&amp;gt;: &amp;lt;cite class=&amp;quot;p-name&amp;quot;&amp;gt;[http://indiewebcamp.com/2012/Academic_Citations_Web Academic Citations for the Web]&amp;lt;/cite&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Draft Specifications]]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=admin-to-do&amp;diff=66828</id>
		<title>admin-to-do</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=admin-to-do&amp;diff=66828"/>
		<updated>2018-06-12T14:49:35Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* inbox */ reCAPTCHA&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;admin to-do&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
Filtered and processed [[to-do]] items specifically for [[admins]].&lt;br /&gt;
&lt;br /&gt;
Only [[admins]] should edit this page with non-minor edits.&lt;br /&gt;
&lt;br /&gt;
Please add to-do suggestions for admins to the general [[to-do#Admins|to-do page's Admins section]].  Thanks!&lt;br /&gt;
&lt;br /&gt;
Items here may list who originally suggested the item on the [[to-do]] page.&lt;br /&gt;
&lt;br /&gt;
Related: [[admin-how-to]].&lt;br /&gt;
&lt;br /&gt;
== inbox ==&lt;br /&gt;
Per GTD, here are inbox items that seem reasonable and thus have been moved here by admins from the [[to-do#Admins|to-do page's Admins section]].&lt;br /&gt;
&lt;br /&gt;
Main site home page:&lt;br /&gt;
* The microformats2 page, should also be referred from the main page of the website http://microformats.org/ like perhaps a new small right box in between &amp;quot;What are microformats?&amp;quot; and &amp;quot;Microformat specifications&amp;quot; saying something like &amp;quot;Microformat version&amp;quot; as a title and place both versions, the old one is the latest with a short description, and the new one should be imediately under the title, with the same description below.&lt;br /&gt;
** +1 agreed. We need a home page redesign with at least this, maybe also @microformats tweets. [[User:Tantek|Tantek]] 13:32, 15 September 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
ex: [http://screencast.com/t/77YHGASumqm Homepage with the right box implemented] .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wiki area suggestion:&lt;br /&gt;
*Wiki creates duplicate content by allowing duplicate pages for microformats2: the main one is http://microformats.org/wiki/microformats2 and the other one is http://microformats.org/wiki/microformats-2 .&lt;br /&gt;
&lt;br /&gt;
To eliminate this problem, the 2nd page http://microformats.org/wiki/microformats-2, in the &amp;lt;head&amp;gt; section of the source code, should contain the following line  &amp;lt;link rel=&amp;quot;canonical&amp;quot; href=&amp;quot;http://microformats.org/wiki/microformats2&amp;quot; /&amp;gt;. This will tell Search Engines that this page is a duplicate content, thus it won't be indexed.&lt;br /&gt;
&lt;br /&gt;
This implementation should be done on all other duplicate content pages of the website.&lt;br /&gt;
&lt;br /&gt;
* This sounds like a good request. Is there a MediaWiki extension/plugin for adding rel=canonical to redirect handling pages? - [[User:Tantek|Tantek]] 13:32, 15 September 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mirror server requests:&lt;br /&gt;
* Note that requests from 88.190.13.197 are for a mirror server run by [[User:Neuro|neuro]] at 88.190.224.126.&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
Admins Mailing list deliverability&lt;br /&gt;
* the last admins mailing was put in spam for kevinmarks@gmail.com by gmail for unclear reasons&lt;br /&gt;
** it was labelled: 'security:	 microformats.org did not encrypt this message link to support.google.com/mail?hl=en&amp;amp;p=tls '&lt;br /&gt;
** Authentication-Results: mx.google.com;&lt;br /&gt;
       dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=NpEH0xA1;&lt;br /&gt;
       spf=pass (google.com: best guess record for domain of microformats-admin-bounces@microformats.org designates 64.207.154.205 as permitted sender) smtp.mailfrom=microformats-admin-bounces@microformats.org&lt;br /&gt;
&lt;br /&gt;
reCAPTCHA replacement needed&lt;br /&gt;
* I had to edit out the https from  link above to get this to save.&lt;br /&gt;
&lt;br /&gt;
== next actions and projects ==&lt;br /&gt;
Per GTD, here are processed next-actions for admins, grouped by area/project&lt;br /&gt;
&lt;br /&gt;
* [[events/2008-03-10-sxsw-admins-meetup#next_actions|next-actions from 2008-03-10 sxsw admins meetup]]&lt;br /&gt;
** noted here for tracking purposes.&lt;br /&gt;
*** This was a very long time ago - we need to reprocess this item to see what is still relevant &amp;gt;5 years later! - [[User:Tantek|Tantek]] 13:33, 15 September 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== web server ===&lt;br /&gt;
* Investigate an upgrade of PHP from 5.2.&lt;br /&gt;
** PHP 5.6 active support ended 2017-01-19 and security support will end 2018-12-31 [http://php.net/supported-versions.php]. Upgrading to PHP7 might be a good idea currently. [[User:GRegorLove|gRegor]] 19:40, 9 May 2017 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== irc ===&lt;br /&gt;
* Pibb integration for the #microformats IRC channel. It is relatively simple to [http://janrain.com/blog/2007/08/08/how-to-embed-pibb/ embed the Pibb chat widget] into a webpage that bridges to the #microformats IRC channel. This would allow for greater access and transparency to the IRC discussions as well as allow people to participate using only their web browser.  [[User:Chris_Messina]] 16:50, 31 Aug 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
* maintainer for [[mfbot]]. Ryan King has indicated that he no longer has time to maintain [[mfbot]] and would like another admin to pick up the maintenance and running of mfbot.&lt;br /&gt;
&lt;br /&gt;
* The https://indieweb.org/discuss options and Loqi cover these needs currently. [[User:GRegorLove|gRegor]] 19:43, 9 May 2017 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== wiki ===&lt;br /&gt;
==== for site update to microformats2 ====&lt;br /&gt;
* about&lt;br /&gt;
** create [[about]] from updated version of http://microformats.org/about&lt;br /&gt;
** change &amp;quot;about&amp;quot; link to /wiki/about&lt;br /&gt;
&lt;br /&gt;
* get-started&lt;br /&gt;
** update [[get-started]] with info from http://microformats.org/2014/03/05/getting-started-with-microformats2&lt;br /&gt;
&lt;br /&gt;
===== update wiki skin to mf2 =====&lt;br /&gt;
See: &lt;br /&gt;
* https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Skinning&lt;br /&gt;
* update the microformats MediaWiki skin from using [[hAtom]] (e.g. 'hentry' class name) to [[h-entry]]&lt;br /&gt;
* update any other classic microformats markup in the skin to mf2&lt;br /&gt;
&lt;br /&gt;
==== more spec styling ====&lt;br /&gt;
We have [[specifications]] and [[draft specifications]] which add classnames to the body element (&amp;quot;specification&amp;quot; and &amp;quot;specification draft&amp;quot; respectively), which are then styled by the skin to look more spec-like.&lt;br /&gt;
&lt;br /&gt;
We should do the same for [[stub specifications]] and update [[process]] accordingly as well.&lt;br /&gt;
&lt;br /&gt;
==== wiki problems ====&lt;br /&gt;
Problems with the microformats wiki that an admin needs to look at and resolve:&lt;br /&gt;
===== MediaWiki needs updating =====&lt;br /&gt;
MediaWiki needs updating&lt;br /&gt;
* Last time update attempt broke the theme, didn't have time time debug and fix. - [[User:BenWard]]&lt;br /&gt;
** The IndieWeb wiki had the same problem, our resolution was to just drop the custom theme and switch to the default Vector theme. [[User:Aaronpk|Aaronpk]] 21:48, 4 December 2017 (UTC)&lt;br /&gt;
&lt;br /&gt;
===== Version looks weird =====&lt;br /&gt;
http://microformats.org/wiki/Special:Version looks weird&lt;br /&gt;
* suggested culprit from cweiske: https://github.com/microformats/mediawiki-entry-title-override (so maybe that needs debugging in this case?)&lt;br /&gt;
* suggested troubleshooting from Tom Morris: &lt;br /&gt;
** do a diff between microformats.org wiki and the old version of MW&lt;br /&gt;
** see what's different between the two, then we can see what the likely cause of the problems are&lt;br /&gt;
** perhaps document differences on our [[mediawiki customization]] page for future better troubleshooting&lt;br /&gt;
&lt;br /&gt;
===== Password reset page problems =====&lt;br /&gt;
Password reset page doesn't work:&lt;br /&gt;
* http://microformats.org/wiki/Special:PasswordReset&lt;br /&gt;
* as of 2015-06-15, this is still a problem and is now affecting users. [http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=15+Jun+2015&amp;amp;e=15+Jun+2015#c81446 relevant irc log]&lt;br /&gt;
&lt;br /&gt;
==== wiki documentation ====&lt;br /&gt;
Need more documentation about how we have the wiki setup, so more [[admins]] are able to fix/update it.&lt;br /&gt;
* Update our [[mediawiki customization]] documentation with specifically:&lt;br /&gt;
** What plug-ins/add-ons are installed?&lt;br /&gt;
** What customizations / patches have been made to MediaWiki?&lt;br /&gt;
** What special things does the microformats mediawiki theme depend on?&lt;br /&gt;
** [[User:BenWard]] likely best knows these things.&lt;br /&gt;
&lt;br /&gt;
==== wiki feature requests ====&lt;br /&gt;
===== spam fighting =====&lt;br /&gt;
* Install [https://www.mediawiki.org/wiki/Extension:AbuseFilter AbuseFilter]. This would allow admins to set up custom rules (similar to email rules like in Outlook/Thunderbird/Gmail etc.) that could be adapted to current spam on-the-fly.&lt;br /&gt;
* Install [http://www.mediawiki.org/wiki/Extension:TitleBlacklist TitleBlackList Extension] and then block creation of pages with &amp;quot;http:&amp;quot; or &amp;quot;.com&amp;quot; in the title to stop spammers from creating autolinks in the IRC logs of wiki edits.&lt;br /&gt;
* Consider additional mediawiki.org anti-spam strategies: https://www.mediawiki.org/wiki/Manual:Combating_spam (from Tom Morris)&lt;br /&gt;
** also: add reCAPTCHA setting for ConfirmEdit and SimpleAntiSpam (GPHemsley added them to the WAHTWG wiki on 2012-296)&lt;br /&gt;
&lt;br /&gt;
===== semantic requests =====&lt;br /&gt;
* Try adding https://github.com/microformats/LinkAttributes to our wiki install to permit rel and class on links in wiki pages.&lt;br /&gt;
* Add Extensions - especially those that help implement more microformats on the wiki itself!&lt;br /&gt;
** Evaluate against Wikipedia's [http://en.wikipedia.org/wiki/Special:Version Version Page] for a list of currently installed extensions on the English Wikipedia.&lt;br /&gt;
** I'd personally advise getting [http://www.mediawiki.org/wiki/Extension:Cite Cite], [http://meta.wikimedia.org/wiki/ParserFunctions ParserFunctions] --[[User:JimboJW|JimboJW]] 13:38, 25 Sep 2007 (PDT) (Syntax Highlighting is done in Wiki 2.0)&lt;br /&gt;
** [http://www.mediawiki.org/wiki/Extension:HTML_Profiles HTML Profiles] - allows people editing the wiki to add URIs to &amp;lt;code&amp;gt;&amp;amp;lt;head profile&amp;gt;&amp;lt;/code&amp;gt; [[User:TobyInk|TobyInk]] 16:52, 9 March 2009 (UTC)&lt;br /&gt;
*** +1 [[User:Tantek|Tantek]] 09:58, 25 June 2009 (UTC)&lt;br /&gt;
** [http://www.mediawiki.org/wiki/Extension:Link_Attributes Link Attributes] - allows easy-ish setting of rel/rev/class attributes on links. [[User:TobyInk|TobyInk]] 16:52, 9 March 2009 (UTC)&lt;br /&gt;
*** +1 [[User:Tantek|Tantek]] 09:58, 25 June 2009 (UTC)&lt;br /&gt;
* add a class, &amp;lt;code&amp;gt;noprint&amp;lt;/code&amp;gt; to the site's CSS, so that sections (such as &amp;quot;related pages&amp;quot; footers) can be made non- printing.&lt;br /&gt;
** ‘noprint’ isn't so semantic, but we should get a proper print stylesheet, for sure.&lt;br /&gt;
* Allow &amp;lt;kbd&amp;gt;webcal://&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;javascript:&amp;lt;/kbd&amp;gt; (for posting [[favelets]]/bookmarklets on the wiki) and  perhaps (other) x-protocols to be linkified&lt;br /&gt;
** +1 [[User:Tantek|Tantek]] 09:58, 25 June 2009 (UTC)&lt;br /&gt;
* Would be great to have a video template that embeds an object. [[User:Tantek|Tantek]] 09:58, 25 June 2009 (UTC)&lt;br /&gt;
* Can we imply &amp;lt;code&amp;gt;entry-title&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;h1&amp;lt;/code&amp;gt;? [[User:Tantek|Tantek]]&lt;br /&gt;
&lt;br /&gt;
===== misc requests =====&lt;br /&gt;
* Set up a cron job to export the wiki database (without user details), and make it available in a public location.&lt;br /&gt;
* Install creation template extension(s)(see: http://meta.wikimedia.org/wiki/Inputbox or http://www.mediawiki.org/wiki/Extension:CreateBox or http://www.mediawiki.org/wiki/Extension:CreateArticle) [[User:RobManson]] 14:00, 20 Jul 2007 (AEST)&lt;br /&gt;
* Add admins sidebar (quick ban list access)&lt;br /&gt;
* Do something to allow easy copying of sample input (e.g. add ‘Copy’ UI, or abuse &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt; element&lt;br /&gt;
* Fix MediaWiki to lowercase URLs — especially fragment identifiers generated from headings. Content ''should not'' be sub-optimally edited according to the requirements of the CMS.&lt;br /&gt;
* Update the interwiki-links table to allow for sensible linking to other wikis doing similar work. See [https://www.mediawiki.org/wiki/Manual:Interwiki help page on mediawiki.org] and [http://microformats.org/wiki/api.php?action=query&amp;amp;meta=siteinfo&amp;amp;siprop=interwikimap current interwikimap as XML from MediWiki API].&lt;br /&gt;
** some plausible interwiki links: Wikipedia and other Wikimedia sites, IndieWebCamp, W3C Wiki, WHATWG wiki.&lt;br /&gt;
&lt;br /&gt;
=== forum ===&lt;br /&gt;
In the past there have been requests (e.g. on the lists) for an online forum for microformats discussions.&lt;br /&gt;
&lt;br /&gt;
If there is an admin who's interested in helping run a forum (has the time to community manage it), take a look at:&lt;br /&gt;
&lt;br /&gt;
* consider create a new forum on microformats.org&lt;br /&gt;
** e.g. install http://vanillaforums.org/ (Geoloqi uses it successfully on https://community.geoloqi.com/ and highly recommends it)&lt;br /&gt;
&lt;br /&gt;
== ongoing ==&lt;br /&gt;
Ongoing and as neeeded duties/tasks:&lt;br /&gt;
&lt;br /&gt;
* Delete spam and block spammers from the wiki.&lt;br /&gt;
* Send emails to the microformats list(s) guiding the community per our [[mailing-lists]] guidelines.&lt;br /&gt;
* Helped out with questions on [[IRC]]&lt;br /&gt;
* Accepted / filtered comments on the blog (or posted!)&lt;br /&gt;
* Help with web server matintenence:&lt;br /&gt;
** Apache (reboot Apache if it hangs, debug Apache server problems)&lt;br /&gt;
** WordPress (including upgrading installs as needed)&lt;br /&gt;
** Mailman (clearing of internal spam queues)&lt;br /&gt;
** MediaWiki (upgrades, help package mods for resubmission back to core)&lt;br /&gt;
* Provide guidance to other admins&lt;br /&gt;
* Remove [http://microformats.org/wiki?title=Special:Whatlinkshere&amp;amp;target=delete pages awaiting deletion]&lt;br /&gt;
&lt;br /&gt;
== waiting for ==&lt;br /&gt;
Per GTD, here are next-actions for admins that are awaiting some external dependency.&lt;br /&gt;
&lt;br /&gt;
Waiting-for: &lt;br /&gt;
* Upgrade the MediaWiki to a new enough version for IndieAuth plugin to work (that is in use on indieweb.org) In order to:&lt;br /&gt;
** install and make available IndieAuth login, as a replacement for OpenID login (previously requested by a while ago from [[User:DanC]] and [[User:Chris_Messina]] (especially for comments in WordPress). [[User:Chris_Messina]] 16:50, 31 Aug 2007 (PDT))&lt;br /&gt;
&lt;br /&gt;
== someday maybe ==&lt;br /&gt;
Per GTD, here are parked and otherwise deemed low-priority next-actions and projects for admins.&lt;br /&gt;
&lt;br /&gt;
=== someday actions ===&lt;br /&gt;
* Make the edit comment UI better — textarea, not single line box. (Dev Status: Might be impossible without hacking the core)&lt;br /&gt;
&lt;br /&gt;
=== someday maybe projects ===&lt;br /&gt;
==== improved issue tracking ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Issue tracking at microformats.org is poor. The wiki is difficult to track, resolutions get lost. A proper bug tracking system is desirable: However, the adminstration overhead of our current infrastructure is too high for volunteers. Questionable whether maintain another custom install of something is the direct we want to move in.&lt;br /&gt;
* I don't think this is worth pursuing - issue tracking systems are notoriously problematic, and at least with the wiki, editing/resolving many issues at once is far more efficient - and efficiency for microformats maintainers is an important priority since all this work is all-volunteer. [[User:Tantek|Tantek]] 02:38, 10 September 2009 (UTC)&lt;br /&gt;
* I think there are a few benefits to having a tracker. The primary one is simply to track proposals and have an easy platform for people to suggest new ones. That way there is a decent place for a high-level overview of what is going on. But, all of the suggested solutions suck. If it is to be done, we should investigate a custom built tracker for our needs. [[User:Garbee|Garbee]] 00:43, 3 June 2013 (UTC)&lt;br /&gt;
* Note that a few specs have started tracking issues on GitHub, e.g. [[h-entry]] [[User:Aaronpk|Aaronpk]] 21:47, 4 December 2017 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Investigate possibility/santity of using Launchpad/Github/Google Code for spec issue tracking&lt;br /&gt;
* Wiki is excellent documentation tool. Terrible issue tracking tool.&lt;br /&gt;
* External services avoid large maintenance burden&lt;br /&gt;
* Could better handle this todo list&lt;br /&gt;
* Better handle issue resolutions&lt;br /&gt;
* Better handle issue discussions&lt;br /&gt;
&lt;br /&gt;
* Evaluate options&lt;br /&gt;
** Consider integration points with µf.org&lt;br /&gt;
** Consider open standards a plus (OpenID)&lt;br /&gt;
** Consider effort in porting existing content&lt;br /&gt;
* Copy over issues from each wiki page as standalone bugs&lt;br /&gt;
* Ensure that each spec editor is added with suitable authorities to manage issues&lt;br /&gt;
&lt;br /&gt;
=====Custom Install of Trac=====&lt;br /&gt;
* + Reliable&lt;br /&gt;
* + Well Established&lt;br /&gt;
* + Can customise to look like µf.org&lt;br /&gt;
* + Flexible milestones etc.&lt;br /&gt;
* + Hook into source repository of our choosing&lt;br /&gt;
* + OpenID support&lt;br /&gt;
* + Support whatever licensing we like&lt;br /&gt;
* - Administration overhead&lt;br /&gt;
&lt;br /&gt;
Need to check permissions structures. Can the hCard editor have control over /hcard, but not over /haudio? Do we care?&lt;br /&gt;
&lt;br /&gt;
=====Google Code=====&lt;br /&gt;
Chris Messina has ‘microformats’ on Google Code&lt;br /&gt;
&lt;br /&gt;
* + Reliably Hosted, minimal admin overhead&lt;br /&gt;
* + Very flexible milestones/tagging&lt;br /&gt;
* + SVN repository for test cases, libraries&lt;br /&gt;
* - Can't be styled to µf.org&lt;br /&gt;
* - No OpenID&lt;br /&gt;
* - Ugly as sin&lt;br /&gt;
* - No Public Domain license support&lt;br /&gt;
&lt;br /&gt;
=====Launchpad=====&lt;br /&gt;
Ben Ward has ‘microformats’ on Launchpad&lt;br /&gt;
&lt;br /&gt;
* + BZR repository for test cases, libraries&lt;br /&gt;
* + Public Domain License Support&lt;br /&gt;
* - Not instantly intuitive&lt;br /&gt;
* - Seems better suited to software than specifications&lt;br /&gt;
* - Can't style like µf.org, but, quite pretty&lt;br /&gt;
* - No OpenID&lt;br /&gt;
&lt;br /&gt;
=====Github=====&lt;br /&gt;
* + Git repository for test cases, libraries&lt;br /&gt;
* + Issue tracking is integrated&lt;br /&gt;
* - No OpenID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== related ==&lt;br /&gt;
* [[to-do]]&lt;br /&gt;
* [[admins]]&lt;br /&gt;
* [[admin-how-to]]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=admin-to-do&amp;diff=66827</id>
		<title>admin-to-do</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=admin-to-do&amp;diff=66827"/>
		<updated>2018-06-12T14:48:15Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* inbox */ add admin list deliverability issue&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;admin to-do&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
Filtered and processed [[to-do]] items specifically for [[admins]].&lt;br /&gt;
&lt;br /&gt;
Only [[admins]] should edit this page with non-minor edits.&lt;br /&gt;
&lt;br /&gt;
Please add to-do suggestions for admins to the general [[to-do#Admins|to-do page's Admins section]].  Thanks!&lt;br /&gt;
&lt;br /&gt;
Items here may list who originally suggested the item on the [[to-do]] page.&lt;br /&gt;
&lt;br /&gt;
Related: [[admin-how-to]].&lt;br /&gt;
&lt;br /&gt;
== inbox ==&lt;br /&gt;
Per GTD, here are inbox items that seem reasonable and thus have been moved here by admins from the [[to-do#Admins|to-do page's Admins section]].&lt;br /&gt;
&lt;br /&gt;
Main site home page:&lt;br /&gt;
* The microformats2 page, should also be referred from the main page of the website http://microformats.org/ like perhaps a new small right box in between &amp;quot;What are microformats?&amp;quot; and &amp;quot;Microformat specifications&amp;quot; saying something like &amp;quot;Microformat version&amp;quot; as a title and place both versions, the old one is the latest with a short description, and the new one should be imediately under the title, with the same description below.&lt;br /&gt;
** +1 agreed. We need a home page redesign with at least this, maybe also @microformats tweets. [[User:Tantek|Tantek]] 13:32, 15 September 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
ex: [http://screencast.com/t/77YHGASumqm Homepage with the right box implemented] .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wiki area suggestion:&lt;br /&gt;
*Wiki creates duplicate content by allowing duplicate pages for microformats2: the main one is http://microformats.org/wiki/microformats2 and the other one is http://microformats.org/wiki/microformats-2 .&lt;br /&gt;
&lt;br /&gt;
To eliminate this problem, the 2nd page http://microformats.org/wiki/microformats-2, in the &amp;lt;head&amp;gt; section of the source code, should contain the following line  &amp;lt;link rel=&amp;quot;canonical&amp;quot; href=&amp;quot;http://microformats.org/wiki/microformats2&amp;quot; /&amp;gt;. This will tell Search Engines that this page is a duplicate content, thus it won't be indexed.&lt;br /&gt;
&lt;br /&gt;
This implementation should be done on all other duplicate content pages of the website.&lt;br /&gt;
&lt;br /&gt;
* This sounds like a good request. Is there a MediaWiki extension/plugin for adding rel=canonical to redirect handling pages? - [[User:Tantek|Tantek]] 13:32, 15 September 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mirror server requests:&lt;br /&gt;
* Note that requests from 88.190.13.197 are for a mirror server run by [[User:Neuro|neuro]] at 88.190.224.126.&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
Admins Mailing list deliverability&lt;br /&gt;
* the last admins mailing was put in spam for kevinmarks@gmail.com by gmail for unclear reasons&lt;br /&gt;
** it was labelled: 'security:	 microformats.org did not encrypt this message link to support.google.com/mail?hl=en&amp;amp;p=tls '&lt;br /&gt;
** Authentication-Results: mx.google.com;&lt;br /&gt;
       dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=NpEH0xA1;&lt;br /&gt;
       spf=pass (google.com: best guess record for domain of microformats-admin-bounces@microformats.org designates 64.207.154.205 as permitted sender) smtp.mailfrom=microformats-admin-bounces@microformats.org&lt;br /&gt;
&lt;br /&gt;
== next actions and projects ==&lt;br /&gt;
Per GTD, here are processed next-actions for admins, grouped by area/project&lt;br /&gt;
&lt;br /&gt;
* [[events/2008-03-10-sxsw-admins-meetup#next_actions|next-actions from 2008-03-10 sxsw admins meetup]]&lt;br /&gt;
** noted here for tracking purposes.&lt;br /&gt;
*** This was a very long time ago - we need to reprocess this item to see what is still relevant &amp;gt;5 years later! - [[User:Tantek|Tantek]] 13:33, 15 September 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== web server ===&lt;br /&gt;
* Investigate an upgrade of PHP from 5.2.&lt;br /&gt;
** PHP 5.6 active support ended 2017-01-19 and security support will end 2018-12-31 [http://php.net/supported-versions.php]. Upgrading to PHP7 might be a good idea currently. [[User:GRegorLove|gRegor]] 19:40, 9 May 2017 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== irc ===&lt;br /&gt;
* Pibb integration for the #microformats IRC channel. It is relatively simple to [http://janrain.com/blog/2007/08/08/how-to-embed-pibb/ embed the Pibb chat widget] into a webpage that bridges to the #microformats IRC channel. This would allow for greater access and transparency to the IRC discussions as well as allow people to participate using only their web browser.  [[User:Chris_Messina]] 16:50, 31 Aug 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
* maintainer for [[mfbot]]. Ryan King has indicated that he no longer has time to maintain [[mfbot]] and would like another admin to pick up the maintenance and running of mfbot.&lt;br /&gt;
&lt;br /&gt;
* The https://indieweb.org/discuss options and Loqi cover these needs currently. [[User:GRegorLove|gRegor]] 19:43, 9 May 2017 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== wiki ===&lt;br /&gt;
==== for site update to microformats2 ====&lt;br /&gt;
* about&lt;br /&gt;
** create [[about]] from updated version of http://microformats.org/about&lt;br /&gt;
** change &amp;quot;about&amp;quot; link to /wiki/about&lt;br /&gt;
&lt;br /&gt;
* get-started&lt;br /&gt;
** update [[get-started]] with info from http://microformats.org/2014/03/05/getting-started-with-microformats2&lt;br /&gt;
&lt;br /&gt;
===== update wiki skin to mf2 =====&lt;br /&gt;
See: &lt;br /&gt;
* https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Skinning&lt;br /&gt;
* update the microformats MediaWiki skin from using [[hAtom]] (e.g. 'hentry' class name) to [[h-entry]]&lt;br /&gt;
* update any other classic microformats markup in the skin to mf2&lt;br /&gt;
&lt;br /&gt;
==== more spec styling ====&lt;br /&gt;
We have [[specifications]] and [[draft specifications]] which add classnames to the body element (&amp;quot;specification&amp;quot; and &amp;quot;specification draft&amp;quot; respectively), which are then styled by the skin to look more spec-like.&lt;br /&gt;
&lt;br /&gt;
We should do the same for [[stub specifications]] and update [[process]] accordingly as well.&lt;br /&gt;
&lt;br /&gt;
==== wiki problems ====&lt;br /&gt;
Problems with the microformats wiki that an admin needs to look at and resolve:&lt;br /&gt;
===== MediaWiki needs updating =====&lt;br /&gt;
MediaWiki needs updating&lt;br /&gt;
* Last time update attempt broke the theme, didn't have time time debug and fix. - [[User:BenWard]]&lt;br /&gt;
** The IndieWeb wiki had the same problem, our resolution was to just drop the custom theme and switch to the default Vector theme. [[User:Aaronpk|Aaronpk]] 21:48, 4 December 2017 (UTC)&lt;br /&gt;
&lt;br /&gt;
===== Version looks weird =====&lt;br /&gt;
http://microformats.org/wiki/Special:Version looks weird&lt;br /&gt;
* suggested culprit from cweiske: https://github.com/microformats/mediawiki-entry-title-override (so maybe that needs debugging in this case?)&lt;br /&gt;
* suggested troubleshooting from Tom Morris: &lt;br /&gt;
** do a diff between microformats.org wiki and the old version of MW&lt;br /&gt;
** see what's different between the two, then we can see what the likely cause of the problems are&lt;br /&gt;
** perhaps document differences on our [[mediawiki customization]] page for future better troubleshooting&lt;br /&gt;
&lt;br /&gt;
===== Password reset page problems =====&lt;br /&gt;
Password reset page doesn't work:&lt;br /&gt;
* http://microformats.org/wiki/Special:PasswordReset&lt;br /&gt;
* as of 2015-06-15, this is still a problem and is now affecting users. [http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=15+Jun+2015&amp;amp;e=15+Jun+2015#c81446 relevant irc log]&lt;br /&gt;
&lt;br /&gt;
==== wiki documentation ====&lt;br /&gt;
Need more documentation about how we have the wiki setup, so more [[admins]] are able to fix/update it.&lt;br /&gt;
* Update our [[mediawiki customization]] documentation with specifically:&lt;br /&gt;
** What plug-ins/add-ons are installed?&lt;br /&gt;
** What customizations / patches have been made to MediaWiki?&lt;br /&gt;
** What special things does the microformats mediawiki theme depend on?&lt;br /&gt;
** [[User:BenWard]] likely best knows these things.&lt;br /&gt;
&lt;br /&gt;
==== wiki feature requests ====&lt;br /&gt;
===== spam fighting =====&lt;br /&gt;
* Install [https://www.mediawiki.org/wiki/Extension:AbuseFilter AbuseFilter]. This would allow admins to set up custom rules (similar to email rules like in Outlook/Thunderbird/Gmail etc.) that could be adapted to current spam on-the-fly.&lt;br /&gt;
* Install [http://www.mediawiki.org/wiki/Extension:TitleBlacklist TitleBlackList Extension] and then block creation of pages with &amp;quot;http:&amp;quot; or &amp;quot;.com&amp;quot; in the title to stop spammers from creating autolinks in the IRC logs of wiki edits.&lt;br /&gt;
* Consider additional mediawiki.org anti-spam strategies: https://www.mediawiki.org/wiki/Manual:Combating_spam (from Tom Morris)&lt;br /&gt;
** also: add reCAPTCHA setting for ConfirmEdit and SimpleAntiSpam (GPHemsley added them to the WAHTWG wiki on 2012-296)&lt;br /&gt;
&lt;br /&gt;
===== semantic requests =====&lt;br /&gt;
* Try adding https://github.com/microformats/LinkAttributes to our wiki install to permit rel and class on links in wiki pages.&lt;br /&gt;
* Add Extensions - especially those that help implement more microformats on the wiki itself!&lt;br /&gt;
** Evaluate against Wikipedia's [http://en.wikipedia.org/wiki/Special:Version Version Page] for a list of currently installed extensions on the English Wikipedia.&lt;br /&gt;
** I'd personally advise getting [http://www.mediawiki.org/wiki/Extension:Cite Cite], [http://meta.wikimedia.org/wiki/ParserFunctions ParserFunctions] --[[User:JimboJW|JimboJW]] 13:38, 25 Sep 2007 (PDT) (Syntax Highlighting is done in Wiki 2.0)&lt;br /&gt;
** [http://www.mediawiki.org/wiki/Extension:HTML_Profiles HTML Profiles] - allows people editing the wiki to add URIs to &amp;lt;code&amp;gt;&amp;amp;lt;head profile&amp;gt;&amp;lt;/code&amp;gt; [[User:TobyInk|TobyInk]] 16:52, 9 March 2009 (UTC)&lt;br /&gt;
*** +1 [[User:Tantek|Tantek]] 09:58, 25 June 2009 (UTC)&lt;br /&gt;
** [http://www.mediawiki.org/wiki/Extension:Link_Attributes Link Attributes] - allows easy-ish setting of rel/rev/class attributes on links. [[User:TobyInk|TobyInk]] 16:52, 9 March 2009 (UTC)&lt;br /&gt;
*** +1 [[User:Tantek|Tantek]] 09:58, 25 June 2009 (UTC)&lt;br /&gt;
* add a class, &amp;lt;code&amp;gt;noprint&amp;lt;/code&amp;gt; to the site's CSS, so that sections (such as &amp;quot;related pages&amp;quot; footers) can be made non- printing.&lt;br /&gt;
** ‘noprint’ isn't so semantic, but we should get a proper print stylesheet, for sure.&lt;br /&gt;
* Allow &amp;lt;kbd&amp;gt;webcal://&amp;lt;/kbd&amp;gt;, &amp;lt;kbd&amp;gt;javascript:&amp;lt;/kbd&amp;gt; (for posting [[favelets]]/bookmarklets on the wiki) and  perhaps (other) x-protocols to be linkified&lt;br /&gt;
** +1 [[User:Tantek|Tantek]] 09:58, 25 June 2009 (UTC)&lt;br /&gt;
* Would be great to have a video template that embeds an object. [[User:Tantek|Tantek]] 09:58, 25 June 2009 (UTC)&lt;br /&gt;
* Can we imply &amp;lt;code&amp;gt;entry-title&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;h1&amp;lt;/code&amp;gt;? [[User:Tantek|Tantek]]&lt;br /&gt;
&lt;br /&gt;
===== misc requests =====&lt;br /&gt;
* Set up a cron job to export the wiki database (without user details), and make it available in a public location.&lt;br /&gt;
* Install creation template extension(s)(see: http://meta.wikimedia.org/wiki/Inputbox or http://www.mediawiki.org/wiki/Extension:CreateBox or http://www.mediawiki.org/wiki/Extension:CreateArticle) [[User:RobManson]] 14:00, 20 Jul 2007 (AEST)&lt;br /&gt;
* Add admins sidebar (quick ban list access)&lt;br /&gt;
* Do something to allow easy copying of sample input (e.g. add ‘Copy’ UI, or abuse &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt; element&lt;br /&gt;
* Fix MediaWiki to lowercase URLs — especially fragment identifiers generated from headings. Content ''should not'' be sub-optimally edited according to the requirements of the CMS.&lt;br /&gt;
* Update the interwiki-links table to allow for sensible linking to other wikis doing similar work. See [https://www.mediawiki.org/wiki/Manual:Interwiki help page on mediawiki.org] and [http://microformats.org/wiki/api.php?action=query&amp;amp;meta=siteinfo&amp;amp;siprop=interwikimap current interwikimap as XML from MediWiki API].&lt;br /&gt;
** some plausible interwiki links: Wikipedia and other Wikimedia sites, IndieWebCamp, W3C Wiki, WHATWG wiki.&lt;br /&gt;
&lt;br /&gt;
=== forum ===&lt;br /&gt;
In the past there have been requests (e.g. on the lists) for an online forum for microformats discussions.&lt;br /&gt;
&lt;br /&gt;
If there is an admin who's interested in helping run a forum (has the time to community manage it), take a look at:&lt;br /&gt;
&lt;br /&gt;
* consider create a new forum on microformats.org&lt;br /&gt;
** e.g. install http://vanillaforums.org/ (Geoloqi uses it successfully on https://community.geoloqi.com/ and highly recommends it)&lt;br /&gt;
&lt;br /&gt;
== ongoing ==&lt;br /&gt;
Ongoing and as neeeded duties/tasks:&lt;br /&gt;
&lt;br /&gt;
* Delete spam and block spammers from the wiki.&lt;br /&gt;
* Send emails to the microformats list(s) guiding the community per our [[mailing-lists]] guidelines.&lt;br /&gt;
* Helped out with questions on [[IRC]]&lt;br /&gt;
* Accepted / filtered comments on the blog (or posted!)&lt;br /&gt;
* Help with web server matintenence:&lt;br /&gt;
** Apache (reboot Apache if it hangs, debug Apache server problems)&lt;br /&gt;
** WordPress (including upgrading installs as needed)&lt;br /&gt;
** Mailman (clearing of internal spam queues)&lt;br /&gt;
** MediaWiki (upgrades, help package mods for resubmission back to core)&lt;br /&gt;
* Provide guidance to other admins&lt;br /&gt;
* Remove [http://microformats.org/wiki?title=Special:Whatlinkshere&amp;amp;target=delete pages awaiting deletion]&lt;br /&gt;
&lt;br /&gt;
== waiting for ==&lt;br /&gt;
Per GTD, here are next-actions for admins that are awaiting some external dependency.&lt;br /&gt;
&lt;br /&gt;
Waiting-for: &lt;br /&gt;
* Upgrade the MediaWiki to a new enough version for IndieAuth plugin to work (that is in use on indieweb.org) In order to:&lt;br /&gt;
** install and make available IndieAuth login, as a replacement for OpenID login (previously requested by a while ago from [[User:DanC]] and [[User:Chris_Messina]] (especially for comments in WordPress). [[User:Chris_Messina]] 16:50, 31 Aug 2007 (PDT))&lt;br /&gt;
&lt;br /&gt;
== someday maybe ==&lt;br /&gt;
Per GTD, here are parked and otherwise deemed low-priority next-actions and projects for admins.&lt;br /&gt;
&lt;br /&gt;
=== someday actions ===&lt;br /&gt;
* Make the edit comment UI better — textarea, not single line box. (Dev Status: Might be impossible without hacking the core)&lt;br /&gt;
&lt;br /&gt;
=== someday maybe projects ===&lt;br /&gt;
==== improved issue tracking ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Issue tracking at microformats.org is poor. The wiki is difficult to track, resolutions get lost. A proper bug tracking system is desirable: However, the adminstration overhead of our current infrastructure is too high for volunteers. Questionable whether maintain another custom install of something is the direct we want to move in.&lt;br /&gt;
* I don't think this is worth pursuing - issue tracking systems are notoriously problematic, and at least with the wiki, editing/resolving many issues at once is far more efficient - and efficiency for microformats maintainers is an important priority since all this work is all-volunteer. [[User:Tantek|Tantek]] 02:38, 10 September 2009 (UTC)&lt;br /&gt;
* I think there are a few benefits to having a tracker. The primary one is simply to track proposals and have an easy platform for people to suggest new ones. That way there is a decent place for a high-level overview of what is going on. But, all of the suggested solutions suck. If it is to be done, we should investigate a custom built tracker for our needs. [[User:Garbee|Garbee]] 00:43, 3 June 2013 (UTC)&lt;br /&gt;
* Note that a few specs have started tracking issues on GitHub, e.g. [[h-entry]] [[User:Aaronpk|Aaronpk]] 21:47, 4 December 2017 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Investigate possibility/santity of using Launchpad/Github/Google Code for spec issue tracking&lt;br /&gt;
* Wiki is excellent documentation tool. Terrible issue tracking tool.&lt;br /&gt;
* External services avoid large maintenance burden&lt;br /&gt;
* Could better handle this todo list&lt;br /&gt;
* Better handle issue resolutions&lt;br /&gt;
* Better handle issue discussions&lt;br /&gt;
&lt;br /&gt;
* Evaluate options&lt;br /&gt;
** Consider integration points with µf.org&lt;br /&gt;
** Consider open standards a plus (OpenID)&lt;br /&gt;
** Consider effort in porting existing content&lt;br /&gt;
* Copy over issues from each wiki page as standalone bugs&lt;br /&gt;
* Ensure that each spec editor is added with suitable authorities to manage issues&lt;br /&gt;
&lt;br /&gt;
=====Custom Install of Trac=====&lt;br /&gt;
* + Reliable&lt;br /&gt;
* + Well Established&lt;br /&gt;
* + Can customise to look like µf.org&lt;br /&gt;
* + Flexible milestones etc.&lt;br /&gt;
* + Hook into source repository of our choosing&lt;br /&gt;
* + OpenID support&lt;br /&gt;
* + Support whatever licensing we like&lt;br /&gt;
* - Administration overhead&lt;br /&gt;
&lt;br /&gt;
Need to check permissions structures. Can the hCard editor have control over /hcard, but not over /haudio? Do we care?&lt;br /&gt;
&lt;br /&gt;
=====Google Code=====&lt;br /&gt;
Chris Messina has ‘microformats’ on Google Code&lt;br /&gt;
&lt;br /&gt;
* + Reliably Hosted, minimal admin overhead&lt;br /&gt;
* + Very flexible milestones/tagging&lt;br /&gt;
* + SVN repository for test cases, libraries&lt;br /&gt;
* - Can't be styled to µf.org&lt;br /&gt;
* - No OpenID&lt;br /&gt;
* - Ugly as sin&lt;br /&gt;
* - No Public Domain license support&lt;br /&gt;
&lt;br /&gt;
=====Launchpad=====&lt;br /&gt;
Ben Ward has ‘microformats’ on Launchpad&lt;br /&gt;
&lt;br /&gt;
* + BZR repository for test cases, libraries&lt;br /&gt;
* + Public Domain License Support&lt;br /&gt;
* - Not instantly intuitive&lt;br /&gt;
* - Seems better suited to software than specifications&lt;br /&gt;
* - Can't style like µf.org, but, quite pretty&lt;br /&gt;
* - No OpenID&lt;br /&gt;
&lt;br /&gt;
=====Github=====&lt;br /&gt;
* + Git repository for test cases, libraries&lt;br /&gt;
* + Issue tracking is integrated&lt;br /&gt;
* - No OpenID&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== related ==&lt;br /&gt;
* [[to-do]]&lt;br /&gt;
* [[admins]]&lt;br /&gt;
* [[admin-how-to]]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-json&amp;diff=66794</id>
		<title>microformats2-json</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-json&amp;diff=66794"/>
		<updated>2018-04-23T17:27:42Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* See Also */  rel-urls&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;microformats2 JSON&amp;lt;/dfn&amp;gt; is the canonical output format of the [[microformats2-parsing|microformats2 parsing]] algorithm. As such it can be used to compare parsers and create [[test-suite|test suites]]. It is also used as the official serialisation format of microformats objects, and relied upon by specifications such as [https://micropub.net/ Micropub].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:1em;padding:1em;background:#FFDC00;font-size:smaller&amp;quot;&amp;gt;⚠️ The JSON format used is not pinned to a specific [https://indieweb.org/JSON#Specs JSON specification]. See [https://github.com/microformats/microformats2-parsing/issues/23 issue #23] for a discussion on the subject.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Parsed Document Format ==&lt;br /&gt;
&lt;br /&gt;
Parsers collect not only microformats2 objects, but also [[rel|link relationships]]. Parsing an entire document will result in an outer object with 3 members named &amp;lt;code&amp;gt;items&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
  &amp;quot;items&amp;quot;: [],&lt;br /&gt;
  &amp;quot;rels&amp;quot;: {},&lt;br /&gt;
  &amp;quot;rel-urls&amp;quot;: {}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;items&amp;lt;/code&amp;gt; is an array of [[microformats2-json#microformat2_Objects|microformats2 objects]], ordered according to their order in the source document.&lt;br /&gt;
# &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; is an object where the member names reflect all &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt;-values found in the source document.&lt;br /&gt;
# &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; is an object where the member names reflect all URLs found in the source document with &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt;-values attached.&lt;br /&gt;
&lt;br /&gt;
== microformat2 Objects ==&lt;br /&gt;
&lt;br /&gt;
The '''microformats2 object''' is an object with 2 required members named &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;properties&amp;lt;/code&amp;gt;, as well as an optional member named &amp;lt;code&amp;gt;children&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &lt;br /&gt;
  &amp;quot;type&amp;quot;: [],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {},&lt;br /&gt;
  &amp;quot;children&amp;quot;: []&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; is an array of the types that identify the microformat, ordered alphabetically.&lt;br /&gt;
# &amp;lt;code&amp;gt;properties&amp;lt;/code&amp;gt; is an object where the member names reflect all properties found for the microformat.&lt;br /&gt;
# The optional member &amp;lt;code&amp;gt;children&amp;lt;/code&amp;gt; is an array of other microformats2 objects that were found nested in the current one.&lt;br /&gt;
&lt;br /&gt;
=== type ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:1em;padding:1em;background:#7FDBFF;font-size:smaller&amp;quot;&amp;gt;ℹ️ '''This section is a stub.''' It needs an example of a microformats2 object that uses multiple types.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; member contains an alphabetically sorted array of root class names. These names express what the microformat is expressing, and are often coupled to which properties to expect through documented conventions.&lt;br /&gt;
&lt;br /&gt;
The root class names are individual strings that match the pattern &amp;lt;code&amp;gt;h-([0-9a-z]+-)?[a-z]+&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following example shows an &amp;lt;code&amp;gt;h-entry&amp;lt;/code&amp;gt; type microformats2 object, with a single property attached. The &amp;lt;code&amp;gt;h-entry&amp;lt;/code&amp;gt; type is [[h-entry|documented on the wiki]], this way types point towards documented conventions that hold true no matter what the source document was.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &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;summary&amp;quot;: [&amp;quot;A short published note.&amp;quot;]&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== properties ===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;properties&amp;lt;/code&amp;gt; member contains an object where every member name is a microformats2 property name, and every member value is an array of the found microformats2 values. Even when only one value is given, it will be inside an array.&lt;br /&gt;
&lt;br /&gt;
Valid values in the value array are one of the following:&lt;br /&gt;
&lt;br /&gt;
# a string value, the most common value,&lt;br /&gt;
# an embedded markup object, containing both a plain string value and the verbatim mark-up from the source document, or&lt;br /&gt;
# another microformat2 object.&lt;br /&gt;
&lt;br /&gt;
If a microformat2 object is used as the value of a property, it will gain the additional member &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; to express a plain string representation. If a consuming application does not understand the nested microformat2 object, it can opt to treat it as that string.&lt;br /&gt;
&lt;br /&gt;
If a microformat2 object is used as the value of a property, when the parser is also instructed to return it as an embedded markup object, it will gain the additional member &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following example shows an &amp;lt;code&amp;gt;h-entry&amp;lt;/code&amp;gt; type microformats2 object, with 3 properties to show the 3 different types of properties. The &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; is a single string, the &amp;lt;code&amp;gt;content&amp;lt;/code&amp;gt; contains verbatim HTML from the source document, and the &amp;lt;code&amp;gt;author&amp;lt;/code&amp;gt; is a nested microformat2 &amp;lt;code&amp;gt;h-card&amp;lt;/code&amp;gt; object. The &amp;lt;code&amp;gt;in-reply-to&amp;lt;/code&amp;gt; property has been added to show how one property may contain multiple valid values.&lt;br /&gt;
&lt;br /&gt;
To see what these properties mean in the context of an &amp;lt;code&amp;gt;h-entry&amp;lt;/code&amp;gt; type, see [[h-entry#Core_Properties|the Core Properties section on the type’s wiki page]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&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;name&amp;quot;: [&amp;quot;An example entry&amp;quot;],&lt;br /&gt;
    &amp;quot;content&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;html&amp;quot;: &amp;quot;&amp;lt;p&amp;gt;Ut non sit saepe porro porro est aut. Dicta ut repellat quisquam repellendus et iste consequatur.&amp;lt;/p&amp;gt;\n&amp;lt;p&amp;gt;Consequuntur repellat sed aut in et dolores. Consequatur amet quo enim.&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;Ut non sit saepe porro porro est aut. Dicta ut repellat quisquam repellendus et iste consequatur.\nConsequuntur repellat sed aut in et dolores. Consequatur amet quo enim.&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;author&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;Mx Example&amp;quot;],&lt;br /&gt;
          &amp;quot;url&amp;quot;: [&amp;quot;https://example.com/&amp;quot;]&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;Mx Example&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;in-reply-to&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;type&amp;quot;: [&amp;quot;h-cite&amp;quot;],&lt;br /&gt;
        &amp;quot;properties&amp;quot;: {&lt;br /&gt;
          &amp;quot;name&amp;quot;: [&amp;quot;Example Domain&amp;quot;],&lt;br /&gt;
          &amp;quot;author&amp;quot;: [&amp;quot;IANA&amp;quot;],&lt;br /&gt;
          &amp;quot;url&amp;quot;: [&amp;quot;https://example.org/&amp;quot;]&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;https://example.org/&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;https://example.net/&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== children ===&lt;br /&gt;
&lt;br /&gt;
The optional &amp;lt;code&amp;gt;children&amp;lt;/code&amp;gt; member is added when nested microformats are found and contains an array of microformat2 objects.&lt;br /&gt;
&lt;br /&gt;
This happens when other objects are contained with outer ones, e.g. data is marked up with microformats within the content of an &amp;lt;code&amp;gt;h-entry&amp;lt;/code&amp;gt;. Another possibility is that the outer object exists to group all its nested objects, such as an &amp;lt;code&amp;gt;[[h-feed]]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following example shows an &amp;lt;code&amp;gt;h-feed&amp;lt;/code&amp;gt; type microformats2 object with a few properties that describe the feed, and an array of &amp;lt;code&amp;gt;h-entry&amp;lt;/code&amp;gt; objects as its children.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-feed&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;author&amp;quot;: [&amp;quot;https://example.org/&amp;quot;],&lt;br /&gt;
    &amp;quot;name&amp;quot;: [&amp;quot;Example Feed&amp;quot;]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;children&amp;quot;: [&lt;br /&gt;
    {&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;name&amp;quot;: [&amp;quot;Entry 1&amp;quot;],&lt;br /&gt;
        &amp;quot;content&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;html&amp;quot;: &amp;quot;&amp;lt;p&amp;gt;Ut non sit saepe porro porro est aut.&amp;lt;/p&amp;gt;\n&amp;lt;p&amp;gt;Dicta ut repellat quisquam repellendus et iste consequatur.&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;Ut non sit saepe porro porro est aut.\nDicta ut repellat quisquam repellendus et iste consequatur.&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        ]&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    {&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;name&amp;quot;: [&amp;quot;Entry 2&amp;quot;],&lt;br /&gt;
        &amp;quot;content&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;html&amp;quot;: &amp;quot;&amp;lt;p&amp;gt;Ut non sit saepe porro porro est aut.&amp;lt;/p&amp;gt;\n&amp;lt;p&amp;gt;Dicta ut repellat quisquam repellendus et iste consequatur.&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;Ut non sit saepe porro porro est aut.\nDicta ut repellat quisquam repellendus et iste consequatur.&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        ]&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    {&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;name&amp;quot;: [&amp;quot;Entry 3&amp;quot;],&lt;br /&gt;
        &amp;quot;content&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;html&amp;quot;: &amp;quot;&amp;lt;p&amp;gt;Ut non sit saepe porro porro est aut.&amp;lt;/p&amp;gt;\n&amp;lt;p&amp;gt;Dicta ut repellat quisquam repellendus et iste consequatur.&amp;lt;/p&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;Ut non sit saepe porro porro est aut.\nDicta ut repellat quisquam repellendus et iste consequatur.&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
        ]&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== rels Object ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:1em;padding:1em;background:#7FDBFF;font-size:smaller&amp;quot;&amp;gt;ℹ️ '''This section is a stub.''' You can help the microformats.org wiki by expanding it.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== rel-urls Object ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:1em;padding:1em;background:#7FDBFF;font-size:smaller&amp;quot;&amp;gt;ℹ️ '''This section is a stub.''' You can help the microformats.org wiki by expanding it.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [https://tools.ietf.org/html/rfc8259 RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format]&lt;br /&gt;
* [https://gist.github.com/Zegnat/65ed9a9fb0546fb8c4aa0c0b790b8a40 JSON Schema for microformats2 objects], by [https://vanderven.se/martijn/ Martijn van der Ven]&lt;br /&gt;
* [https://github.com/cleverdevil/microformats2 Type- and vocabulary-aware microformats2 JSON validator in Python], by [https://cleverdevil.io/ Jonathan LaCour]&lt;br /&gt;
* [http://microformats.org/wiki/microformats2-parsing-brainstorming#more_information_for_rel-based_formats the thinking behind rels and rel-urls]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=sharelink-formats&amp;diff=66571</id>
		<title>sharelink-formats</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=sharelink-formats&amp;diff=66571"/>
		<updated>2017-09-21T12:29:44Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* examples */ bookmarklet links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;sharelink formats&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Part of the Sharelink effort. &lt;br /&gt;
&lt;br /&gt;
[https://twitter.com/cramforce/status/822184263172796416 Malte Ubl ‏@cramforce  Jan 19]&lt;br /&gt;
*specifically we’d like to propose &amp;lt;link rel=share&amp;gt; (or similar name) to provide preference of shared URL for a given page.&lt;br /&gt;
Per the microformats [[process]] this page is here to document previous formats for pages publishing share links for themselves.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
* [[rel-canonical]]&lt;br /&gt;
** [https://twitter.com/adactio/status/822253267665252356 Jeremy Keith ‏@adactio]&amp;lt;br&amp;gt; @cramforce Is this not already covered by rel=&amp;quot;canonical&amp;quot;?&lt;br /&gt;
** [https://twitter.com/cramforce/status/822254953985019904 Malte Ubl ‏@cramforce]&amp;lt;br&amp;gt; @adactio we’d fallback to that, but people want to override it for some legit and less legit reasons.&amp;lt;br&amp;gt;people sometimes use canonical to point to an entirely different publication that was the original source of the content.&amp;lt;br&amp;gt;and others want to do share tracking with #.1234 style URLs (see e.g. @Medium URLs).&lt;br /&gt;
** [https://twitter.com/kevinmarks/status/822257980049485824 Kevin Marks ‏@kevinmarks] &amp;lt;br&amp;gt; @cramforce @adactio @Medium or google inspired  &amp;amp;utm_source things&lt;br /&gt;
** [https://twitter.com/rmondello/status/910276001300488192 Ricky Mondello‏ @rmondello] &amp;lt;br&amp;gt;Safari on iOS 11 will share the canonical link for a page, which can improve the experience of sharing a &amp;quot;mobile&amp;quot; website.&lt;br /&gt;
** [http://known.kevinmarks.com/2017/day-7-to-amp-or-not-to-amp-100daysofindieweb bookmarklets for switching to or copying canonical links]&lt;br /&gt;
&lt;br /&gt;
*[http://microformats.org/wiki/h-entry#Draft_Properties u-repost-of]&lt;br /&gt;
** [https://twitter.com/kevinmarks/status/822260255652397057 Kevin Marks ‏@kevinmarks]&amp;lt;br&amp;gt; @cramforce @adactio so the page has a link to the version it wants shared. Is it like u-repost-of https://indieweb.org/repost  or rel=bookmark?&lt;br /&gt;
&lt;br /&gt;
* [[rel-bookmark]]&lt;br /&gt;
** [https://twitter.com/kevinmarks/status/822260255652397057 Kevin Marks ‏@kevinmarks]&amp;lt;br&amp;gt; @cramforce @adactio so the page has a link to the version it wants shared. Is it like u-repost-of https://indieweb.org/repost  or rel=bookmark?&amp;lt;br&amp;gt;rel-bookmark  is already in the [https://www.w3.org/TR/html51/links.html#link-type-bookmark html5 spec], and in lots of CMSs, including WordPress  …&lt;br /&gt;
** [https://twitter.com/cramforce/status/822264992992927744 Malte Ubl ‏@cramforce]  &amp;lt;br&amp;gt;@kevinmarks @adactio I think bookmark comes pretty close. Not quite the same, but close.&lt;br /&gt;
&lt;br /&gt;
* [[rel-shortlink]]&lt;br /&gt;
** https://twitter.com/voxpelli/status/822378518902239233 [Pelle Wessman ‏@voxpelli]  &amp;lt;br&amp;gt;@cramforce @kevinmarks @adactio There's also rel-shortlink which is often used for sharing + is widely supported&lt;br /&gt;
&lt;br /&gt;
*rel=self&lt;br /&gt;
** the [https://tools.ietf.org/html/rfc4287#section-4.2.7.2 Atom Link element] defines rel=&amp;quot;self&amp;quot; as &lt;br /&gt;
  The value &amp;quot;self&amp;quot; signifies that the IRI in the value of the href&lt;br /&gt;
  attribute identifies a resource equivalent to the containing&lt;br /&gt;
  element.&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[sharelink-examples]]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=rel-canonical&amp;diff=66570</id>
		<title>rel-canonical</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=rel-canonical&amp;diff=66570"/>
		<updated>2017-09-21T12:12:31Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* rel-amphtml */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;rel-canonical&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:Kevin Marks|Kevin Marks]]&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;rel=canonical&amp;lt;/dfn&amp;gt; is a link relation to indicate the canonical URL of the current page, to avoid duplicate content.&lt;br /&gt;
&lt;br /&gt;
{{cc0-owfa-license}}&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
&amp;lt;p class=&amp;quot;entry-summary&amp;quot;&amp;gt;By adding &amp;lt;code&amp;gt;rel=&amp;quot;canonical&amp;quot;&amp;lt;/code&amp;gt; to a hyperlink, a page indicates that the destination of that hyperlink {{should}} be considered the preferred or definitive version of the current page. This helps search engines avoid duplicate content, and is useful for deciding how to link to a page when citing it.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
There are many reasons for a site to serve the same content at multiple URLs, but duplicate pages are undesirable in search results. The [https://www.mattcutts.com/blog/seo-advice-url-canonicalization/ historic recommendation] was to use 301 redirects to the canonical page, but that can be jarring for users. There are many use cases for a URL to have additional information added as query parameters or fragments to indicate the navigation history for referral purposes, but would prefer a single main referent from searches. This  was codified in February 2009 as rel=canonical, and [https://webmasters.googleblog.com/2009/02/specify-your-canonical.html adopted] by [http://www.ysearchblog.com/2009/02/12/fighting-duplication-adding-more-arrows-to-your-quiver/ many] [https://blogs.msdn.microsoft.com/webmaster/archive/2009/02/12/partnering-to-help-solve-duplicate-content-issues.aspx search] [https://web-beta.archive.org/web/20091008070823/http://blog.ask.com/2009/02/ask-is-going-canonical.html engines].&lt;br /&gt;
&lt;br /&gt;
Search engines prefer &amp;lt;code&amp;gt;rel=canonical&amp;lt;/code&amp;gt; on a &amp;lt;code&amp;gt;&amp;amp;lt;link&amp;amp;gt;&amp;lt;/code&amp;gt; element, and will [https://www.mattcutts.com/blog/rel-canonical-html-head/ ignore it] on an &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; element.&lt;br /&gt;
=== Cross-domain links ===&lt;br /&gt;
Although the primary use case is links within the same domain, rel=canonical can be used [https://webmasters.googleblog.com/2009/12/handling-legitimate-cross-domain.html across domains] too. A common use case recently is from [https://www.ampproject.org/docs/guides/deploy/discovery cached AMP pages] to their original.&lt;br /&gt;
== The opposite of canonical ==&lt;br /&gt;
There are several ways of indicating non-canonical versions of a page, depending on what is intended. A non-comprehensive list&lt;br /&gt;
=== rel-syndication and u-syndication ===&lt;br /&gt;
[[rel-syndication]] and [http://microformats.org/wiki/h-entry#Core_Properties u-syndication] link to copies that the author has syndicated or shared onto other sites. The syndicated copies {{should}} have a rel-canonical link back to the original if the other site allows it.&lt;br /&gt;
=== rel-alternate===&lt;br /&gt;
[[rel-alternate]] is used to link to versions of the page in other forms, whether a different format with &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;, language with &amp;lt;code&amp;gt;hreflang&amp;lt;/code&amp;gt; or presentation medium with &amp;lt;code&amp;gt;media&amp;lt;/code&amp;gt;.&lt;br /&gt;
=== rel-amphtml ===&lt;br /&gt;
[[rel-amphtml]] is used to link to the Accelerated Mobile Pages version, a html subset limiting javascript, replacing built-in elements with custom elements and designed for caching. It is [https://www.ampproject.org/docs/guides/deploy/discovery recommended] to link back from the AMP version to the original with rel-canonical&lt;br /&gt;
&lt;br /&gt;
=== rel-shortlink ===&lt;br /&gt;
[[rel-shortlink]] is used to link to a url shortened version designed for sharing and (often) tracking.&lt;br /&gt;
=== rel-me ===&lt;br /&gt;
[[rel-me]] is explicitly saying that another domain or page  represents the same person or organisation as the current page. As such it is a different level of abstraction from rel-canonical, as it refers to the representation rather than the content.&lt;br /&gt;
=== rev-canonical ===&lt;br /&gt;
A deprecated way of linking to a short link, briefly [https://revcanonical.wordpress.com/ popular], [https://www.mnot.net/blog/2009/04/14/rev_canonical_bad disliked] and not recommended.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
* See https://github.com/whatwg/html/issues/2351&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[existing-rel-values]]&lt;br /&gt;
* https://en.wikipedia.org/wiki/Canonical_link_element&lt;br /&gt;
* [https://support.google.com/webmasters/answer/139066?hl=en  Google's canonical advice page]&lt;br /&gt;
* [http://known.kevinmarks.com/2017/day-7-to-amp-or-not-to-amp-100daysofindieweb canonical bookmarklets]&lt;br /&gt;
* [[sharelink-formats]]&lt;br /&gt;
* [https://tools.ietf.org/html/rfc6596 RFC 6596 - The Canonical Link Relation]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=sharelink-formats&amp;diff=66569</id>
		<title>sharelink-formats</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=sharelink-formats&amp;diff=66569"/>
		<updated>2017-09-21T12:10:48Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* examples */ Safari 11 sharing canonical link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;sharelink formats&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Part of the Sharelink effort. &lt;br /&gt;
&lt;br /&gt;
[https://twitter.com/cramforce/status/822184263172796416 Malte Ubl ‏@cramforce  Jan 19]&lt;br /&gt;
*specifically we’d like to propose &amp;lt;link rel=share&amp;gt; (or similar name) to provide preference of shared URL for a given page.&lt;br /&gt;
Per the microformats [[process]] this page is here to document previous formats for pages publishing share links for themselves.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
* [[rel-canonical]]&lt;br /&gt;
** [https://twitter.com/adactio/status/822253267665252356 Jeremy Keith ‏@adactio]&amp;lt;br&amp;gt; @cramforce Is this not already covered by rel=&amp;quot;canonical&amp;quot;?&lt;br /&gt;
** [https://twitter.com/cramforce/status/822254953985019904 Malte Ubl ‏@cramforce]&amp;lt;br&amp;gt; @adactio we’d fallback to that, but people want to override it for some legit and less legit reasons.&amp;lt;br&amp;gt;people sometimes use canonical to point to an entirely different publication that was the original source of the content.&amp;lt;br&amp;gt;and others want to do share tracking with #.1234 style URLs (see e.g. @Medium URLs).&lt;br /&gt;
** [https://twitter.com/kevinmarks/status/822257980049485824 Kevin Marks ‏@kevinmarks] &amp;lt;br&amp;gt; @cramforce @adactio @Medium or google inspired  &amp;amp;utm_source things&lt;br /&gt;
** [https://twitter.com/rmondello/status/910276001300488192 Ricky Mondello‏ @rmondello] &amp;lt;br&amp;gt;Safari on iOS 11 will share the canonical link for a page, which can improve the experience of sharing a &amp;quot;mobile&amp;quot; website.&lt;br /&gt;
&lt;br /&gt;
*[http://microformats.org/wiki/h-entry#Draft_Properties u-repost-of]&lt;br /&gt;
** [https://twitter.com/kevinmarks/status/822260255652397057 Kevin Marks ‏@kevinmarks]&amp;lt;br&amp;gt; @cramforce @adactio so the page has a link to the version it wants shared. Is it like u-repost-of https://indieweb.org/repost  or rel=bookmark?&lt;br /&gt;
&lt;br /&gt;
* [[rel-bookmark]]&lt;br /&gt;
** [https://twitter.com/kevinmarks/status/822260255652397057 Kevin Marks ‏@kevinmarks]&amp;lt;br&amp;gt; @cramforce @adactio so the page has a link to the version it wants shared. Is it like u-repost-of https://indieweb.org/repost  or rel=bookmark?&amp;lt;br&amp;gt;rel-bookmark  is already in the [https://www.w3.org/TR/html51/links.html#link-type-bookmark html5 spec], and in lots of CMSs, including WordPress  …&lt;br /&gt;
** [https://twitter.com/cramforce/status/822264992992927744 Malte Ubl ‏@cramforce]  &amp;lt;br&amp;gt;@kevinmarks @adactio I think bookmark comes pretty close. Not quite the same, but close.&lt;br /&gt;
&lt;br /&gt;
* [[rel-shortlink]]&lt;br /&gt;
** https://twitter.com/voxpelli/status/822378518902239233 [Pelle Wessman ‏@voxpelli]  &amp;lt;br&amp;gt;@cramforce @kevinmarks @adactio There's also rel-shortlink which is often used for sharing + is widely supported&lt;br /&gt;
&lt;br /&gt;
*rel=self&lt;br /&gt;
** the [https://tools.ietf.org/html/rfc4287#section-4.2.7.2 Atom Link element] defines rel=&amp;quot;self&amp;quot; as &lt;br /&gt;
  The value &amp;quot;self&amp;quot; signifies that the IRI in the value of the href&lt;br /&gt;
  attribute identifies a resource equivalent to the containing&lt;br /&gt;
  element.&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[sharelink-examples]]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=h-feed&amp;diff=66550</id>
		<title>h-feed</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=h-feed&amp;diff=66550"/>
		<updated>2017-09-12T23:41:53Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* Parser Compatibility */ wordpress suggestions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;h-feed&amp;lt;/entry-title&amp;gt;&lt;br /&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-feed&amp;lt;/dfn&amp;gt; is a simple, open format for publishing a stream or feed of [[h-entry]] posts, like complete posts on a home page or archive pages, or summaries or other brief lists of posts. h-feed is one of several open [[microformats|microformat]] draft standards suitable for embedding data in HTML.&lt;br /&gt;
&lt;br /&gt;
h-feed is the [[microformats2]] update to [[hAtom]], and in particular its &amp;quot;hfeed&amp;quot; root class.&lt;br /&gt;
&lt;br /&gt;
{{cc0-owfa-license}}&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
h-feed properties, inside an element with class '''h-feed'''. All properties are optional.&lt;br /&gt;
&lt;br /&gt;
root class name: h-feed&lt;br /&gt;
&lt;br /&gt;
=== Core Properties ===&lt;br /&gt;
The following ''core'' h-feed properties have broad consensus:&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;''' - name of the feed&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-author&amp;lt;/code&amp;gt;''' - author of the feed, optionally embed an [[h-card]] {{main|h-card}}&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-url&amp;lt;/code&amp;gt;''' - URL of the feed&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-photo&amp;lt;/code&amp;gt;''' - representative photo / icon for the feed&lt;br /&gt;
&lt;br /&gt;
children:&lt;br /&gt;
* nested [[h-entry]] objects representing the items of the feed&lt;br /&gt;
&lt;br /&gt;
=== Draft Properties ===&lt;br /&gt;
None currently.&lt;br /&gt;
&lt;br /&gt;
=== Proposed Properties ===&lt;br /&gt;
The following properties are proposed additions based on various observed examples in the wild, but are awaiting at least one reader / real world consuming code example to become a draft property:&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-summary&amp;lt;/code&amp;gt;''' - based on non-trivial actual content usage of &amp;quot;atom:subtitle&amp;quot; on Blogger and WordPress.com featured blogs's Atom feeds.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-entry&amp;lt;/code&amp;gt;''' - to be more consistent with the cascading of p-author or [http://microformats.org/wiki/comment-brainstorming#Proposal p-comment].&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
'''h-feed''' is a microformats.org draft specification. Public discussion on h-feed takes place on [[h-entry-feedback]] and the #microformats [[irc]] channel on irc.freenode.net.&lt;br /&gt;
&lt;br /&gt;
h-feed is ready to use and implemented in the wild, but for backwards compatibility you should also mark h-feed up as a classic [[hAtom]] &amp;quot;hfeed&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
* Named feeds&lt;br /&gt;
** IndieWeb Readers are consuming home page feeds marked up with h-feed and using the name of the h-feed in their user interfce.&lt;br /&gt;
&lt;br /&gt;
* Generate an Atom feed&lt;br /&gt;
** This seems like a legacy use-case, not sufficient to actually justify h-feed.&lt;br /&gt;
&lt;br /&gt;
* Feed per channel of content - needs a name&lt;br /&gt;
** &amp;quot;I will have a feed per tag (channel) so I want to name them.&amp;quot; - Sandeep Shetty in #indiewebcamp&lt;br /&gt;
** It appears there is some desire to create separate feeds for an indieweb site for separate subsets of content, and name them &amp;lt;em&amp;gt;explicitly&amp;lt;/em&amp;gt; accordingly. This presents a need for a container object for the h-entry elements, where the container itself can have a name. This is a potential interesting use-case for an explicit 'h-feed'.&lt;br /&gt;
&lt;br /&gt;
== Examples in the wild ==&lt;br /&gt;
Add any examples in the wild that you find to the top of this list.&lt;br /&gt;
* ...&lt;br /&gt;
* http://sandeep.io/ uses h-feed with p-name and p-author properties and child h-entry posts. In particular using h-feed on the &amp;amp;lt;html&amp;amp;gt; element allows using p-name on the &amp;amp;lt;title&amp;amp;gt; element and re-using the visible window title of the HTML page as the name of the feed, neatly avoiding a [[DRY]] violation.&lt;br /&gt;
* http://tantek.com/ uses h-feed with p-name and p-author properties and child h-entry posts.&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
=== Readers ===&lt;br /&gt;
* [https://github.com/kylewm/woodwind Woodwind]&lt;br /&gt;
* [https://github.com/barnabywalters/shrewdness Shrewdness]&lt;br /&gt;
* http://notenoughneon.com/feed.php (404 as of 2017-05-29)&lt;br /&gt;
&lt;br /&gt;
=== Proxies ===&lt;br /&gt;
* Bridgy&lt;br /&gt;
&lt;br /&gt;
=== Converters ===&lt;br /&gt;
* '''[http://unmung.com unmung]''' - will transform an RSS or Atom feed into an [[h-feed]] containing h-entries,&lt;br /&gt;
* '''[http://pipes.yahoo.com/pipes/pipe.info?_id=afc5568b4e8643bfb05436b1caaf91bc microformats to RSS]''' - a Yahoo! pipe that converts a URL containing an [[h-feed]] containing h-entries, into an [[RSS]] feed. ([http://waterpigs.co.uk/notes/4SeNi5/ 2013-10-21 blog post announcing])&lt;br /&gt;
&lt;br /&gt;
== Backward Compatibility ==&lt;br /&gt;
=== Publisher Compatibility ===&lt;br /&gt;
(this section is a stub and needs to be expanded with real world examples and minimal properties)&lt;br /&gt;
&lt;br /&gt;
=== Parser Compatibility ===&lt;br /&gt;
When &amp;lt;span id=&amp;quot;Parsing&amp;quot;&amp;gt;parsing&amp;lt;/span&amp;gt; a page for an h-feed, in addition to just following the [[microformats2-parsing]] specification, implementations may do the following for backward compatibility with existing [[hatom|hAtom]] content.&lt;br /&gt;
&lt;br /&gt;
(this section is a stub and needs review and citations to note what real world examples would each of these rules actually help parse)&lt;br /&gt;
&lt;br /&gt;
If there is no explicit &amp;quot;h-feed&amp;quot; element, implementations may:&lt;br /&gt;
* Treat the &amp;lt;code&amp;gt;&amp;amp;lt;title&amp;amp;gt;&amp;lt;/code&amp;gt; of the page or the URL of the page as the p-name&lt;br /&gt;
* Use https://indieweb.org/authorship to discover authorship of posts.&lt;br /&gt;
* Treat top level [[h-entry]] elements as items in the feed.&lt;br /&gt;
&lt;br /&gt;
If there is a &amp;quot;hfeed&amp;quot; element, implementations may:&lt;br /&gt;
* Treat site-title as p-name [wordpress has this by default, and without it implied p-name will be the whole feed]&lt;br /&gt;
* Treat site-description as p-summary [wordpress has this by default]&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
=== How do I avoid duplicating the page title ===&lt;br /&gt;
''I want to use the name (title) of my page as the name of my feed, how do I avoid duplicating the page title somewhere invisibly on the page as the feed name?''&lt;br /&gt;
&lt;br /&gt;
If you want re-use the &amp;amp;lt;title&amp;amp;gt; of your page as the name of your feed, you can do so by putting the h-feed root class name on the &amp;amp;lt;html&amp;amp;gt; element, and the p-name property class name on the &amp;amp;lt;title&amp;amp;gt; element, e.g. here's a snippet showing how those tags would look:&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;html class=&amp;quot;h-feed&amp;quot;&amp;gt;&lt;br /&gt;
  … &lt;br /&gt;
  &amp;lt;title class=&amp;quot;p-name&amp;quot;&amp;gt;sandeep.io&amp;lt;/title&amp;gt;&lt;br /&gt;
  …&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== What should a subscriber do with a page with multiple feeds ===&lt;br /&gt;
''What do I do when a user subscribes to a URL with multiple distinct h-feeds?''&lt;br /&gt;
&lt;br /&gt;
A feed reader should subscribe to the first h-feed it finds at a URL.&lt;br /&gt;
&lt;br /&gt;
Related: http://indiewebcamp.com/reader&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[h-feed-issues]]&lt;br /&gt;
* [[h-entry]]&lt;br /&gt;
* [[microformats2]]&lt;br /&gt;
* [[hAtom]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Draft Specifications]]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=plant-examples&amp;diff=66543</id>
		<title>plant-examples</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=plant-examples&amp;diff=66543"/>
		<updated>2017-09-06T12:25:24Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: Undo revision 66542 by spammer  Bendyman (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Plants Examples =&lt;br /&gt;
Proposing a microformat to describe a particular plant, classified by its latin name. Plants all have common attributes associated with them related to appearance, growing conditions, disease, pests, maintenance etc. Many websites publish information about plants, but as yet this information is not open to exchange and aggregation.&lt;br /&gt;
&lt;br /&gt;
== The Problem ==&lt;br /&gt;
To collect information on the current status of plant related information on the web. &lt;br /&gt;
&lt;br /&gt;
Here are a few possible applications:&lt;br /&gt;
&lt;br /&gt;
* Collection of distributed plant information from the web into larger plant databases. There is a lot of information currently available on the web both in large plant databases and indivual's sites, but there is no way to efficiently build a reference material on top of this.&lt;br /&gt;
* Plant catalogs can be published by retailers and the information about what can be bought where, can be easily aggregated.&lt;br /&gt;
* Building up personal catalogs of plants, so I can have a customized view on my own plants that I grow, telling me more about them.&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
* Mark Gibbons&lt;br /&gt;
== Real-World Examples ==&lt;br /&gt;
&lt;br /&gt;
=== [http://www.crocus.co.uk/findplant/ Crocus] ===&lt;br /&gt;
Crocus is an plant catalog containing listings of plants available for purchase online. Many nurseries and garden centers now offer online purchasing possibilities. There are hundreds if not thousands of similar sites currently online, both big and small. Other examples are:&lt;br /&gt;
&lt;br /&gt;
* [http://www.stokeseeds.com/cgi-bin/StokesSeeds.storefront Stokes Seeds]&lt;br /&gt;
* [http://www.gardenexpress.com.au/ Garden Express]&lt;br /&gt;
* [https://www.fernview.com.au/orderform.php Fernview]&lt;br /&gt;
* [http://www.ashridgetrees.co.uk Ashridge Hedging &amp;amp; Trees]&lt;br /&gt;
* [http://www.diggingdog.com/pages2/catalog.php Digging dog nursery]&lt;br /&gt;
* [http://www.bluegrassgardens.com/ Bluegrass Gardens Nursery]&lt;br /&gt;
&lt;br /&gt;
=== [http://growstuff.org/ Growstuff] ===&lt;br /&gt;
&lt;br /&gt;
Growstuff is one of a number of open source gardening and agriculture projects.  You can find several others listed on [http://wiki.growstuff.org/index.php/Similar_projects Growstuff's similar projects list] and [http://www.openfoodfoundation.org/document/open-source-food-projects-list-wiki Open Food Foundation's list].&lt;br /&gt;
&lt;br /&gt;
Growstuff has a [http://growstuff.org/crops crop database] of edible plants, and allows members to record what they have planted and harvested (like a garden journal), keep track of what seeds they have, etc.  Each crop page has basic information about the crop (name, scientific name(s), etc) as well as planting and growing information aggregated from members' garden journals (eg. &amp;quot;plant in full sun or semi shade&amp;quot;, &amp;quot;plant from seedling or root division&amp;quot;).  Planting information, though at present global, is intended to be offered specifically for local environments -- a crop that grows in full sun in a cool temperate climate may require shade in a warmer one.  Similarly, planting dates vary widely according to hemisphere and climate.&lt;br /&gt;
&lt;br /&gt;
One important point to note is that species identifiers are highly problematic for gardeners, especially when it comes to food crops, as many food crops share a species.  For instance, all varieties of lettuce are the same species, as are all varieties of tomato.  All chilli/pepper varieties are just 4 species, all squashes (from zucchini to giant pumpkins) share just 3 species, etc.  Even subspecies/varieties/etc don't work, as for instance kale and collard greens are both &amp;quot;Brassica oleracea var. acephela&amp;quot;.  These distinctions are important to food gardeners and cooks, though presumably not to biologists.&lt;br /&gt;
&lt;br /&gt;
=== [http://www.paghat.com/garden.html Paghat's Garden] ===&lt;br /&gt;
 &lt;br /&gt;
Paghat's garden is an individual's site, documenting the plants grown in one garden. It is a good example of a gardener sharing useful information via the website. Currently the amount of information shared on the internet by individual gardener's on there own site or via a blog is limited. Given the right tools and incentives, the sharing of information in this way will increase.&lt;br /&gt;
&lt;br /&gt;
=== [http://www.davesgarden.com/ Dave's Garden] ===&lt;br /&gt;
&lt;br /&gt;
=== [http://www.bbc.co.uk/gardening BBC Gardening] ===&lt;br /&gt;
&lt;br /&gt;
The BBC maintains a large database of plants for use in their gardening site.  Information from the &amp;quot;[http://www.bbc.co.uk/gardening/plants/plant_finder/index.shtml plant finder]&amp;quot; contains:&lt;br /&gt;
&lt;br /&gt;
*Common Name: Blue African lily&lt;br /&gt;
*Genus: Agapanthus&lt;br /&gt;
*Cultivar: 'Lilliput'&lt;br /&gt;
*Skill Level: Beginner&lt;br /&gt;
*Exposure: Full sun&lt;br /&gt;
*Hardiness: Hardy&lt;br /&gt;
*Soil type: Well-drained/light, Moist&lt;br /&gt;
*Height: 40cm&lt;br /&gt;
*Spread: 40cm&lt;br /&gt;
*Time to divide plants: March to April&lt;br /&gt;
*Flowering period: August to September&lt;br /&gt;
&lt;br /&gt;
*Description:&lt;br /&gt;
Standing at only 40cm (16in) high, 'Lilliput'is perfect for smaller gardens and patio containers. Its trumpet-shaped rich blue flowers add a touch of the exotic to displays from mid- to late summer. Grow in moist but well-drained soil in a sunny spot. In colder areas, put on a dry mulch for winter.&lt;br /&gt;
&lt;br /&gt;
([http://www.bbc.co.uk/gardening/plants/plant_finder/plant_pages/3553.shtml Blue African Lily example source])&lt;br /&gt;
&lt;br /&gt;
== Existing Practices ==&lt;br /&gt;
* Botanical names are often used as the title. More on botanical names [http://www.rhs.org.uk/rhsplantfinder/plantnaming.asp here].&lt;br /&gt;
* Common attributes are readily identifiable. Such as&lt;br /&gt;
** water requirements&lt;br /&gt;
** light requirements&lt;br /&gt;
** temperature requirements&lt;br /&gt;
** plant type (tree, shrub, perrenial)&lt;br /&gt;
** soil requirements&lt;br /&gt;
* Some of the above attributes have been standardized already such as [http://www.usna.usda.gov/Hardzone/ushzmap.html temperature requirements], others vary more, but have common features.&lt;br /&gt;
* Plant appearance is often described as free text.&lt;br /&gt;
* Images are often associated with plants.&lt;br /&gt;
* ''Other attempts to solve The Problem''&lt;br /&gt;
&lt;br /&gt;
== Proposal ==&lt;br /&gt;
* Early drafts&lt;br /&gt;
* ''Link to related pages as they become available''&lt;br /&gt;
** -brainstorming&lt;br /&gt;
** - proposal&lt;br /&gt;
** -microformat&lt;br /&gt;
== See Also ==&lt;br /&gt;
* ''Other microformats''&lt;br /&gt;
* ''Normative references for tags used''&lt;br /&gt;
* [[species]]&lt;br /&gt;
:Proposed scheme for marking up scientific names. If adopted, a plant microformat (with care regime, supplier, etc.), could contain a scientific name microformat, in the same way that an [[hCalendar]] can contain an [[hCard]].&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=faq&amp;diff=66499</id>
		<title>faq</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=faq&amp;diff=66499"/>
		<updated>2017-08-01T14:52:00Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* Q. Why don't microformats use the HTML5 data- attributes to embed data? */ update refs; typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt; Microformats FAQ &amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page document frequently asked questions about microformats.  For frequently asked questions from the [[press]], see [[press-faq]].&lt;br /&gt;
&lt;br /&gt;
If you're looking for a microformat for marking up FAQs, see [[question-answer]].&lt;br /&gt;
&lt;br /&gt;
== How To ==&lt;br /&gt;
=== What microformats should I use to markup my blog ===&lt;br /&gt;
''What microformats should I use to markup my blog?''&lt;br /&gt;
&lt;br /&gt;
A: Use a classic [[microformat]] on the body of each page.  For your index page, use an [[h-card]], since it's about you, and an [[h-feed]] for any recent updates you post there.  For your individual permalink pages, use [[h-entry]].&lt;br /&gt;
&lt;br /&gt;
For all of the data on your pages, use [[microformats2]].&lt;br /&gt;
&lt;br /&gt;
From: http://indiewebcamp.com/faq#How_should_I_markup_my_blog&lt;br /&gt;
&lt;br /&gt;
=== When should I use microformats2 over microformats1 ===&lt;br /&gt;
''On sites that don't currently have microformats, should microformats2 be utilized in favor over v1? E.g. for a rather large site.''&lt;br /&gt;
&lt;br /&gt;
A: [[microformats2]] use less markup (are even simpler) than microformats1, so in general it's preferred for adding to sites.&lt;br /&gt;
&lt;br /&gt;
However, you may want to add one v1 microformat for each page that describes the primary subject of the page.&lt;br /&gt;
&lt;br /&gt;
You can easily use both:&lt;br /&gt;
* if a page is about a '''person''' or '''company''', add an '''[[hCard]]''' (and '''[[h-card]]''') to markup the info about the person/company. &lt;br /&gt;
* Or if the page is for an '''event''', add an '''[[hCalendar]]''' (and '''[[h-event]]''')  about the event info.&lt;br /&gt;
* Similarly with a page that is a '''[[hReview|review]], [[hProduct|product]], [[hAtom|blog post]], or [[hRecipe|recipe]]'''. &lt;br /&gt;
See the [[Main_Page#Specifications|list of specs and drafts]] for more recommended top level microformats.&lt;br /&gt;
&lt;br /&gt;
For all other references to things on the page, links to or mentions of [[h-card|people]]/[[h-event|events]]/[[h-cite|citations]]/products, etc. use microformats2.&lt;br /&gt;
&lt;br /&gt;
=== What microformats should I use for backward compatibility ===&lt;br /&gt;
For backwards compatibility, e.g. with some [[search-engines]], it's sufficient to include one v1 microformat for each page that best describes what that page is about. See above '''When should I use microformats2 over microformats1''' for more details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Common Details ==&lt;br /&gt;
=== Can you mix properties and the root class name ===&lt;br /&gt;
''&amp;lt;span id=&amp;quot;nesting-properties&amp;quot;&amp;gt;Can you put properties on the same element as the root class for a microformat? E.g. span class=&amp;quot;h-card p-org&amp;quot;?&amp;lt;/span&amp;gt;''&lt;br /&gt;
* No, because property elements must be inside the root class name element.&lt;br /&gt;
&lt;br /&gt;
It will result in more confusion for parsers which may be parsing nested microformats. In this case in the question, you need two elements:&lt;br /&gt;
* WRONG: &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;h-card p-org&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* RIGHT: &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;h-card&amp;quot;&amp;gt;&amp;amp;lt;span class=&amp;quot;p-org&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The only time you can put a root class name (like &amp;quot;h-card&amp;quot;) and a property class name on the same element, is when the root class name is providing an entire object as the embedded value of that property which then belongs to some other object higher up the tree.&lt;br /&gt;
&lt;br /&gt;
E.g. using an h-card for the location of an h-event&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;h-event&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-name&amp;quot;&amp;gt;HTML5 Developer Conference&amp;lt;/span&amp;gt;, &lt;br /&gt;
  &amp;lt;time class=&amp;quot;dt-start&amp;quot;&amp;gt;2013-04-01&amp;lt;/time&amp;gt;...&amp;lt;time class=&amp;quot;dt-end&amp;quot;&amp;gt;2013-04-03&amp;lt;/time&amp;gt;, at&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-location h-card&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-name p-org&amp;quot;&amp;gt;The Palace Hotel&amp;lt;/span&amp;gt;, &lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-locality&amp;quot;&amp;gt;San Francisco&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note the &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;p-location h-card&amp;quot;&amp;gt;&amp;lt;/code&amp;gt; which specifies that the location of the outer [[h-event] is an entire [[h-card]] nested inside.&lt;br /&gt;
&lt;br /&gt;
Another example, inside an [[h-entry]], specifying the author as an h-card: &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;quot;p-author h-card&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Derived from: [[hcard-faq#Can_you_mix_properties_and_the_root_class_name]]&lt;br /&gt;
&lt;br /&gt;
== Wiki specific questions ==&lt;br /&gt;
===Q: ''How do I create a username? Why won't it let me use my preferred username?''===&lt;br /&gt;
&lt;br /&gt;
A: First, read this: http://en.wikipedia.org/wiki/Wikipedia:Username .  Second, real names are preferred to pseudonyms/handles etc.  Real names encourage better transparency and accountability.  Third, the most common problem creating a user name is forgetting to capitalize the first letter of the user name.  Try using a WikiCase version of your full name as username, e.g. RyanKing.&lt;br /&gt;
&lt;br /&gt;
== Email list ==&lt;br /&gt;
=== Why do I get You are not allowed to post to this mailing list ===&lt;br /&gt;
''' ''Q: I've tried sending email to the mailing list. Why do I get a bounce message stating: &amp;quot;You are not allowed to post to this mailing list. ...&amp;quot; ? '' '''&lt;br /&gt;
&lt;br /&gt;
A: You must first subscribe to the microformats mailing list that you are trying to post to.&lt;br /&gt;
&lt;br /&gt;
===Q: ''I've joined the discussion mailing list but am not seeing my replies anywhere. Why?''===&lt;br /&gt;
&lt;br /&gt;
A: There is no moderation on microformats-discuss, but it only accepts posts from subscribers. You MUST post to microformats-discuss using the email address you used to subscribe.&lt;br /&gt;
&lt;br /&gt;
===Q: ''What does &amp;quot;The message's content type was not explicitly allowed&amp;quot; mean?'' ===&lt;br /&gt;
&lt;br /&gt;
A: Please go read [http://microformats.org/mailinglists-policies/ mailinglists-policies]. In particular note:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''No HTML or RTF e-mail''' period, end of story, full stop. Your mail client should let you configure it so you can send plain text messages. Make use of this ability or else there are no guarantees that anyone will be able to read your email.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
The mailing lists are set up to automatically reject email that is sent as text/html.  Thus please configure your email client to send plain text (text/plain) email.&lt;br /&gt;
&lt;br /&gt;
== Basic Microformat Questions ==&lt;br /&gt;
===Q: ''Who uses microformats?'' ===&lt;br /&gt;
&lt;br /&gt;
A: See a list of [[examples-in-wild|sites using microformats]] and [[implementations|numerous tools]] that support microformats.&lt;br /&gt;
&lt;br /&gt;
===Q: ''When should I use a microformat? What are they for?''===&lt;br /&gt;
&lt;br /&gt;
A: You are writing some HTML that contains useful human-readable information (such as a piece of contact information). You say to yourself: I would like to mark this up with some classes now for styling. You look up the relevant microformat, and you&lt;br /&gt;
pull in the standard names. You don't have to make your own up, and now your page is machine-readable too. Bonus!&lt;br /&gt;
&lt;br /&gt;
Microformats are designed to make the data you already publish for humans available to machines. It allows applications as simple as cut-and-paste or as complex as a search engine to use your data effectively.&lt;br /&gt;
&lt;br /&gt;
===Q: ''Should I use microformats or microdata?'''===&lt;br /&gt;
&lt;br /&gt;
A: '''microformats''' require less markup, are easier to learn for common cases like [[hcard-authoring|people]]/[[hcalendar-authoring|events]]/[[get-started|etc.]], and are supported by more [[tools]] including [[search-engines]].&lt;br /&gt;
&lt;br /&gt;
If you're looking for minimal markup addition, just use microformats.&lt;br /&gt;
&lt;br /&gt;
If you want to use both to cover all your bases, you can do so because they don't interfere.&lt;br /&gt;
&lt;br /&gt;
===Q: ''Are microformats dependent upon (X)HTML?''===&lt;br /&gt;
&lt;br /&gt;
A: Microformats are made to be embeddable. They can be embedded in (X)HTML, RSS, Atom or anywhere (X)HTML is allowed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Q: ''Microformats sound great. How can I help?''===&lt;br /&gt;
&lt;br /&gt;
A: Take a look at [[get-started]] for how to implement microformats yourself, and the [[to-do]] list for things to help out with. See http://microformats.org/discuss to see some ways to join the conversations about microformats.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Q: ''I'd like to make a donation to the microformat cause. How can I do this?''===&lt;br /&gt;
&lt;br /&gt;
A: Thank you for your willingness to support microformats. microformats.org is an all volunteer unpaid organization, and sponsor contributions really help the community. There are several ways to support microformats with donations:&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Donate to a microformats [[open source]] effort, e.g.&lt;br /&gt;
** [https://addons.mozilla.org/en-US/firefox/addon/4106/developers DONATE to Operator] - an essential [[Firefox]] extension&lt;br /&gt;
* Sponsor a microformats [[weekly meetup]]. &lt;br /&gt;
** Watch the [[events]] page for a weekly meetup near you, participate and sponsor dinner and or drinks!&lt;br /&gt;
* Sponsor a microformatsDevCamp like the [[events/2009-07-25-dev-camp|recent devCamp in SF]].&lt;br /&gt;
** Watch the [[events]] page for upcoming devCamps, vEvents, and other similar opportunities to sponsor.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Q: ''Which microformats have been implemented?'' ===&lt;br /&gt;
&lt;br /&gt;
A: See the [[implementations]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Q: ''Which microformats should I implement?''===&lt;br /&gt;
&lt;br /&gt;
A: Chances are you that your website already has data very similar to several microformats. For example, you probably have people and/or their contact information somewhere. That information could be marked up with [[hcard|hCard]], see the [[hcard-authoring|hCard authoring]] page for step by step instructions. If you are publishing press releases, try using [[hatom|hAtom]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Q: ''Do you have any link badges I can add to my website/blog?''===&lt;br /&gt;
&lt;br /&gt;
A: There are some [[buttons]] but we can certainly use more!  Please contribute what you come up with!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Q. ''Are there any tools that support microformats?''===&lt;br /&gt;
&lt;br /&gt;
A. Yes...tons... [[implementations]].&lt;br /&gt;
&lt;br /&gt;
===Q. ''What is the 'h' for, in front of Calendar and Card?'' ===&lt;br /&gt;
''What's the meaning of the 'h' before the [[hCalendar]] and [[hCard]] microformats?''&lt;br /&gt;
&lt;br /&gt;
A. hCard and hCalendar are the &amp;lt;strong&amp;gt;H&amp;lt;/strong&amp;gt;TML versions of vCard and iCalendar, hence the replacement of the leading lowercase 'v' or 'i' with 'h'. Origins: &amp;lt;cite&amp;gt;[http://tantek.com/log/2004/09.html#d30t1725 Tantek's Thoughts: &amp;quot;Semantic XHTML&amp;quot; slides posted]&amp;lt;/cite&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
See the [[hcard-faq|hCard FAQ]] and the [[hcalendar-faq|hCalendar faq]] for more specific questions on those microformats.&lt;br /&gt;
&lt;br /&gt;
===Q. ''Is there a way to indicate that a given web page contains markup that conforms to one or more microformats?'' ===&lt;br /&gt;
&lt;br /&gt;
A. The HTML HEAD element's '&amp;lt;code&amp;gt;profile&amp;lt;/code&amp;gt;' attribute alerts applications to the potential presence of microformats. The [http://www.w3.org/TR/1999/REC-html401-19991224/struct/global.html#h-7.4.4.3 W3C HTML Specification] describes more about the profile attribute, and the [http://gmpg.org/xmdp/description XMDP description] documents how it is used.&lt;br /&gt;
&lt;br /&gt;
===Q: ''What do these specific jargon terms mean?''===&lt;br /&gt;
&lt;br /&gt;
A: See our [[glossary]].&lt;br /&gt;
&lt;br /&gt;
===Q. ''What about using new URI schemes instead of class names, e.g. for geo information?''===&lt;br /&gt;
&lt;br /&gt;
A. In general, it is more work, and less content-publisher friendly, to ask publishers to use URI schemes instead of class names.&lt;br /&gt;
&lt;br /&gt;
Authors aren't publishing links to geo information.&lt;br /&gt;
&lt;br /&gt;
They're publishing *visible text* of [[geo]] information.&lt;br /&gt;
&lt;br /&gt;
So the easiest thing to do, for the author, is to leave it as visible text.&lt;br /&gt;
&lt;br /&gt;
Thus, it makes the most sense to do the simple thing of just wrapping that&lt;br /&gt;
visible text with a little bit of markup, rather than asking the author to&lt;br /&gt;
move (or copy) it into an attribute, which may or may not require a&lt;br /&gt;
reformatting of the data as well.&lt;br /&gt;
&lt;br /&gt;
It would make sense from a usability persepective to hyperlink geo information to a maps page or something, so that clicking it actually does something.  If you forced them to use a hypothetical &amp;quot;geo:&amp;quot; protocol instead, then that would interfere, since you can only hyperlink something to one destination.&lt;br /&gt;
&lt;br /&gt;
===Q: ''Who controls microformats?''===&lt;br /&gt;
&lt;br /&gt;
A: An open community. Microformats are open standards originally licensed under Creative Commons Attribution, and placed into the [[Microformats_Wiki:Copyrights|public domain since 2007-12-29]]. Much of the work here was begun on [http://developers.technorati.com/wiki Technorati's Developer Wiki], and Technorati contributed the work done there to the microformats community when microformats.org was established. The microformats.org domain is registered to Rohit Khare (see [http://whois.uberdose.com/microformats.org Whois microformats.org]), CommerceNet is graciously hosting the servers, but claims no control over microformat standards. Anyone may follow the established [[process]] and contribute towards the development of microformat standards.&lt;br /&gt;
&lt;br /&gt;
Any required [[governance]] (and very little ''has been'' required) of the microformats [[IRC]] channel, wiki, and [[mailing lists]]  is discussed by a group of volunteer [[administrators]].&lt;br /&gt;
&lt;br /&gt;
===Q: ''Who is the registrar for microformats?''===&lt;br /&gt;
&lt;br /&gt;
A: There is no central registry. Microformats are registered in a distributed manner using profiles. For more information on profiles see http://microformats.org/wiki/profile-uris and http://gmpg.org/xmdp/&lt;br /&gt;
&lt;br /&gt;
Conflicts and interoperability are managed through social processes rather than a formal registry. Current microformat profiles can be found at http://gmpg.org,  http://w3.org, and http://microformats.org.&lt;br /&gt;
&lt;br /&gt;
===Q: ''So multiple microformats with the same name can be valid?''===&lt;br /&gt;
&lt;br /&gt;
A: Yes. The community at microformats.org can hopefully play a role in determining which is preferred by bringing interested folks together in one place and helping them resolve that question.  As long as each microformat maintains a valid profile, each can be used effectively.&lt;br /&gt;
&lt;br /&gt;
===Q: ''How do I validate my microformated content?''===&lt;br /&gt;
&lt;br /&gt;
A: See [[validators]] for a list of microformats validators.&lt;br /&gt;
&lt;br /&gt;
===Q: ''Why do microformats use English terms for property names?''===&lt;br /&gt;
A: Similar to how HTML uses English words like &amp;quot;class&amp;quot;, &amp;quot;span&amp;quot; or &amp;quot;head&amp;quot;, microformats re-uses English words for property names. As microformats property names are based on existing standards (see [[process]], and [[naming-principles]]), this is another problem that is far outside the scope of microformats. As Ryan King put it, this is a pre-existing (unsolved) &amp;quot;problem&amp;quot; with English-based HTML, the English-based CSS, the English-based HTTP and so on. Note that this is NOT about the internationalization of the content and data itself - which is of course an excellent goal, advocated and promoted by microformats and the standards they are based on (e.g. W3C, IETF). This is purely about the names of the properties (and enumerated values) in the formats. See also [[internationalization]] and the [[en-us-faq#why_not_use_other_spellings_and_languages_for_properties|en-US FAQ: why not use other spellings and languages for properties]] regarding the question of alternate (non-English) names in other (natural) languages, and mappings.&lt;br /&gt;
&lt;br /&gt;
===Q: ''How come microformats stay as drafts even though they seem usable?'' ===&lt;br /&gt;
&lt;br /&gt;
A: This was discussed at the [http://2007.sxsw.com/interactive/programming/panels/?action=show&amp;amp;id=IAP060234 The Growth and Evolution of Microformats] panel at [http://en.wikipedia.org/wiki/South_by_Southwest SXSW] 2007. The basic answer is it was important to at least have a basic software implementation -- even an experimental one -- before moving a format from Draft to Specification. It can sometimes be hard to recognize subtle inconsistencies within a format by eye; however, in the process of implementing a format-reader in code, inconsistencies (if any) can become much more noticeable (due to [[dry | DRY / Don't Repeat Yourself]], among other programming best practices). Then, once such tools have been created (in effect, confirming both the programmability of the format, and interoperability across tools), it can be considered for transition to a Specification.  Using interoperable implementations as a measure of format quality is a long-standing practice of IETF and W3C.&lt;br /&gt;
&lt;br /&gt;
== Creating and Suggesting New Microformats ==&lt;br /&gt;
&lt;br /&gt;
===Q. ''I would like to author a new microformats open standards specification for my site/business.  How do I get started?''===&lt;br /&gt;
&lt;br /&gt;
A. The first thing to do before attempting a new microformat open standard is to make as much use of [[POSH]] and existing [[microformats]] open standards as possible in whatever site you are looking to mark up with your new microformat, as a way of learning what is left to be done. That is, at a minimum first:&lt;br /&gt;
* Mark up all people and organizations as [[hcard|hCards]] and add those pages to [[hcard-examples-in-wild]]&lt;br /&gt;
* Mark up all events and time based things as [[hcalendar|hCalendar]] events and add those pages to [[hcalendar-examples-in-wild]]&lt;br /&gt;
* Mark up all reviews as [[hreview|hReviews]] and add those pages to [[hreview-examples-in-wild]]&lt;br /&gt;
* etc.&lt;br /&gt;
Then join the microformats [http://microformats.org/discuss IRC channel and discuss list], and ask folks what they think of your use of the microformats and if it can be improved.&lt;br /&gt;
&lt;br /&gt;
From that experience you will then be able to figure out what is left to be specified.  Otherwise it is too hard to approach the &amp;quot;whole problem&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Once you have completed that, take a look at the microformats [[process]] for how to walk through the steps of creating a new microformat, and note the specific problem you are trying to solve to the microformats-discuss list.  This will help you find more people to help you solve the problems you are trying to solve.&lt;br /&gt;
&lt;br /&gt;
===''Q How do I know if an idea for a Microformat has already been suggested in the past?''===&lt;br /&gt;
&lt;br /&gt;
A. Check the list of proposed and rejected microformats. &lt;br /&gt;
* [[rejected-formats]]&lt;br /&gt;
&lt;br /&gt;
===Q. ''What if I can't find real-world examples of a standard I'd like to propose?''===&lt;br /&gt;
&lt;br /&gt;
A. If we can't find real-world examples of the '''types of data''' a proposal would address, it's probably not suitable for a microformat. If we only can't find real-world examples of the '''specific markup''' a proposal would use for that data, however, that's not really a problem. It's actually the lack of such standard markup in real-world publishing around a specific problem that suggests the need for increased consensus.&lt;br /&gt;
&lt;br /&gt;
== Specific Microformat Questions ==&lt;br /&gt;
If you have a question regarding a specific microformat, you may want to check the FAQ specific to that microformat.&lt;br /&gt;
* [[hatom-faq]]&lt;br /&gt;
* [[hcalendar-faq]]&lt;br /&gt;
* [[hcard-faq]]&lt;br /&gt;
* [[hreview-faq]]&lt;br /&gt;
* [[rel-faq]]&lt;br /&gt;
* [[rel-tag-faq]]&lt;br /&gt;
* [http://gmpg.org/xfn/faq xfn-faq]&lt;br /&gt;
* [[xfolk-faq]]&lt;br /&gt;
* [[xmdp-faq]]&lt;br /&gt;
* [[xoxo-faq]]&lt;br /&gt;
&lt;br /&gt;
== Class interactions ==&lt;br /&gt;
===Q. ''Are there issues with page styling when specific class values are used?''===&lt;br /&gt;
&lt;br /&gt;
A. There might be. However, any such issues can be easily (trivially) worked around by using contextual selectors.&lt;br /&gt;
&lt;br /&gt;
===Q. ''How does the use of class values for semantics interact with the use of class values for attaching CSS styles?''===&lt;br /&gt;
&lt;br /&gt;
A. The class attribute takes a space separated set of class names [http://www.w3.org/TR/REC-html40/struct/global.html#h-7.5.2 HTML4 reference]. Thus both author and microformat defined class names may be used in the same class attribute. In addition, microformat class names provide the author with a consistent set of class names to use for styling. If the author is already using using specific class names, they can continue to do so, and include microformat class names. If the author is already using a class name that happens to also be a microformat class name, then the author may want to consider using contextual CSS class selectors to make sure that avoid any unintentional styling effects.&lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
* [http://tantek.com/log/2002/12.html#L20021216 A Touch Of Class]&lt;br /&gt;
* [http://tantek.com/log/2004/07.html#classmeaningnotshow Class For Meaning Not For Show]&lt;br /&gt;
* [http://www.meyerweb.com/eric/thoughts/2004/07/18/competent-classing Competant Classing], by Eric Meyer for discussion of choosing class names in (X)HTML&lt;br /&gt;
* [http://www.microformats.org/blog/2005/10/19/more-than-styling/ Class attributes are about more than styling] - Ryan King dispells common misconceptions about the ''HTML'' class attribute.&lt;br /&gt;
&lt;br /&gt;
===Q. ''Are class names case sensitive?'' ===&lt;br /&gt;
&lt;br /&gt;
A: Yes, HTML class names (i.e. as used in microformats) are case-sensitive. &lt;br /&gt;
&lt;br /&gt;
By [[naming-principles#Some_Details|convention]], microformats use all lowercase classnames similar to CSS's approach. This way authors never have to guess about the capitalization of microformats properties - they're always all lowercase.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;&amp;amp;lt;div&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;span&amp;amp;gt;&amp;lt;/code&amp;gt; semantics ==&lt;br /&gt;
&lt;br /&gt;
=== Q. ''Can microformats use other elements besides divs?'' ===&lt;br /&gt;
A. Yes. Markup with microformats should use the most appropriate semantic HTML. For example if the name of an organization hCard is a top level heading, then: &amp;lt;p&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=vcard&amp;amp;gt;&amp;lt;br/&amp;gt;&amp;lt;strong&amp;gt;&amp;amp;lt;h1 class=&amp;quot;fn org&amp;quot;&amp;amp;gt;ACME Co.&amp;amp;lt;/h1&amp;amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt; is more appropriate than &amp;lt;p&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;div class=vcard&amp;amp;gt;&amp;lt;br/&amp;gt;&amp;lt;strong&amp;gt;&amp;amp;lt;div class=&amp;quot;fn org&amp;quot;&amp;amp;gt;ACME Co.&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Q. ''Is it semantically meaningless to use divs?'' ===&lt;br /&gt;
&lt;br /&gt;
A. Yes, both &amp;lt;code&amp;gt;&amp;amp;lt;div&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;span&amp;amp;gt;&amp;lt;/code&amp;gt; have nearly no semantics. &amp;lt;code&amp;gt;&amp;amp;lt;div&amp;amp;gt;&amp;lt;/code&amp;gt; can be used to represent a &amp;quot;division&amp;quot; of the page content. Similarly &amp;lt;code&amp;gt;&amp;amp;lt;span&amp;amp;gt;&amp;lt;/code&amp;gt; can be used to reperesent that that &amp;quot;span&amp;quot; of text has some meaning, but the specifics of what that meaning is undefined by the &amp;lt;code&amp;gt;&amp;amp;lt;span&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Q. ''Does the use of &amp;lt;code&amp;gt;&amp;amp;lt;div&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;span&amp;amp;gt;&amp;lt;/code&amp;gt; elements add any semantics to web pages?''===&lt;br /&gt;
&lt;br /&gt;
A. According to the [http://www.w3.org/TR/REC-html40/struct/global.html#h-7.5.4 HTML 4 spec], &amp;lt;code&amp;gt;&amp;amp;lt;div&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;span&amp;amp;gt;&amp;lt;/code&amp;gt; &amp;quot;offer a generic mechanism for adding structure to documents.&amp;quot; Their only meaning is in dividing documents into sections, and as such, their presence implies that the content within has a specific, but undefined by the element markup, semantic. Thus they are nearly semantic-free.&lt;br /&gt;
&lt;br /&gt;
=== Q. ''Why do the examples on the wiki use &amp;lt;code class=&amp;quot;element&amp;quot;&amp;gt;&amp;amp;lt;span&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code class=&amp;quot;element&amp;quot;&amp;gt;&amp;amp;lt;div&amp;amp;gt;&amp;lt;/code&amp;gt; for nearly everything?''===&lt;br /&gt;
&lt;br /&gt;
A. &amp;lt;code class=&amp;quot;element&amp;quot;&amp;gt;&amp;amp;lt;span&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code class=&amp;quot;element&amp;quot;&amp;gt;&amp;amp;lt;div&amp;amp;gt;&amp;lt;/code&amp;gt; are generic elements in HTML. When you use microformats, you should pick the most specific semantic element available for the semantics you are trying to express. You might, for example, apply &amp;lt;code&amp;gt;class=&amp;quot;vevent&amp;quot;&amp;lt;/code&amp;gt; to a &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;class=&amp;quot;vcard&amp;quot;&amp;lt;/code&amp;gt; to a &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.  Here is an example using more [[semantic HTML]] with a definition list to mark-up an hCard: &lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;dl class=&amp;quot;vcard&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;dt class=&amp;quot;category&amp;quot;&amp;gt;Restaurant&amp;lt;/dt&amp;gt;&lt;br /&gt;
  &amp;lt;dd class=&amp;quot;fn org&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;a class=&amp;quot;url&amp;quot; href=&amp;quot;http://www.yelp.com/biz/crepes-n-more-fairfield&amp;quot;&amp;gt;Crepes N More&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;/dd&amp;gt;&lt;br /&gt;
 &amp;lt;dt&amp;gt;Address&amp;lt;/dt&amp;gt;&lt;br /&gt;
  &amp;lt;dd class=&amp;quot;adr&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;span class=&amp;quot;street-address&amp;quot;&amp;gt;620 Jackson st.&amp;lt;/span&amp;gt;, &lt;br /&gt;
   &amp;lt;span class=&amp;quot;locality&amp;quot;&amp;gt;Fairfield&amp;lt;/span&amp;gt;, &lt;br /&gt;
   &amp;lt;abbr class=&amp;quot;region&amp;quot; title=&amp;quot;California&amp;quot;&amp;gt;CA&amp;lt;/abbr&amp;gt;, &lt;br /&gt;
   &amp;lt;span class=&amp;quot;postal-code&amp;quot;&amp;gt;94533&amp;lt;/span&amp;gt;, &lt;br /&gt;
   &amp;lt;abbr class=&amp;quot;country-name&amp;quot; title=&amp;quot;United States of America&amp;quot;&amp;gt;USA&amp;lt;/abbr&amp;gt;&lt;br /&gt;
  &amp;lt;/dd&amp;gt;&lt;br /&gt;
  &amp;lt;dt&amp;gt;Phone&amp;lt;/dt&amp;gt;&lt;br /&gt;
   &amp;lt;dd class=&amp;quot;tel&amp;quot;&amp;gt;+1.707.428.2210&amp;lt;/dd&amp;gt;&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Class semantics ==&lt;br /&gt;
&lt;br /&gt;
===Q. ''How will microformat class names impact page size?''===&lt;br /&gt;
&lt;br /&gt;
A. You probably won't notice any impact on page size when authoring with microformats.  Our experience is that people use comparably sized class names, and [[semantic-class-names|semantic class names]] are now considered an industry best practice.  Some sites are successfully publishing millions of microformats, and we haven't heard any complaints yet.  You are more likely to gain space savings by more fully adopting [[microformats#the_microformats_principles|the principles of microformats]], and eliminating tables for layout.&lt;br /&gt;
&amp;lt;span class=&amp;quot;todo&amp;quot;&amp;gt;''TODO: Consider creating a new section for web authoring tips?  Or at least linking to another site that advocates good authorship.''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Q. ''Can an element have more than one class''===&lt;br /&gt;
&lt;br /&gt;
A. Yes, the class attribute can contain a space delimited list of classes.  For example:&lt;br /&gt;
   &amp;amp;lt;p class=&amp;amp;quot;todo idea&amp;amp;quot;&amp;amp;gt;Write high quality and simple mark-up.&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
See W3C HTML 4.01 Specification: [http://www.w3.org/TR/html401/struct/global.html#adef-class 7.5.2 Element identifiers: the id and class attributes]&lt;br /&gt;
&lt;br /&gt;
===Q. ''Does the order of class names matter?'' ===&lt;br /&gt;
A. No. The HTML class attribute is an unordered space separated set of class names. The order of classes in an class attribute do affect their meaning or use. E.g. these two divs' class names are equivalent:&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;a b&amp;quot;&amp;gt;...&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;b a&amp;quot;&amp;gt;...&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Q. ''Do (X)HTML class names have semantics?''===&lt;br /&gt;
&lt;br /&gt;
A. The HTML4 specification does not define any particular class values [http://www.w3.org/TR/REC-html40/struct/global.html#h-7.5.2 REF], nor does it define any particular semantic for class values [http://www.w3.org/TR/REC-html40/struct/global.html#h-7.5.2 REF], except that they &amp;quot;may be used for general user agent processing&amp;quot; [http://www.w3.org/TR/REC-html40/struct/global.html#h-7.5.2 REF]. However, the [http://www.w3.org/TR/WD-htmllink-970328#profile&amp;quot; draft of &amp;quot;Hypertext Links in HTML&amp;quot;], allows for a &amp;quot;profile&amp;quot; to define meanings for those classes. [http://gmpg.org/xmdp/ XMDP] is a format for defining meta data profiles for (X)HTML, and thus an XMDP profile can be used to define the meanings of class names. &lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* [http://tantek.com/log/2002/12.html#L20021216 A Touch Of Class]&lt;br /&gt;
* [http://www.w3.org/TR/WD-htmllink-970328 Hypertext Links in HTML]&lt;br /&gt;
&lt;br /&gt;
===Q. ''I thought one of the main goals of CSS was to separate data from presentation. Isn’t this sneaking presentation back into data?''===&lt;br /&gt;
&lt;br /&gt;
A. This is a quite commonly expressed objection to the way microformats uses class, but it's based on a misunderstanding of the way the class attribute in HTML was designed. Yes, class is very commonly,and appropriately used by web designers in conjunction with CSS to style pages, and in truth, it is often overused for that, but despite this, class, according to the HTML specification &amp;quot;has several roles in HTML&amp;quot;, including [http://www.w3.org/TR/html4/struct/global.html#h-7.5.2 &amp;quot;for general purpose processing by user agents&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
Microformats utilize this second aspect of the class (and id) attribute, and do so legitimately. It is not an abuse of the class or id attribute to use it to add semantic context to a document. Nor is the use of class in and of itself presentational - in fact, it is an important mechanism for separating presentation from structured content. &lt;br /&gt;
&lt;br /&gt;
For some more on using class semantically, here are some articles&lt;br /&gt;
&lt;br /&gt;
* [http://meyerweb.com/eric/thoughts/2004/07/18/competent-classing Competent Classing by Eric Meyer]&lt;br /&gt;
* [http://www.w3.org/QA/Tips/goodclassnames Use class with semantics in mind, W3C]&lt;br /&gt;
* [http://tantek.com/log/2004/07.html#d20t2359 More about the class attribute, Tantek Çelik]&lt;br /&gt;
&lt;br /&gt;
===Q. ''Should human readable data go into class names?'' ===&lt;br /&gt;
&lt;br /&gt;
A. No. We should not put human readable data into the &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; attribute, because it puts human-readable data in a spot that's no longer visible.  See the [[principles]].&lt;br /&gt;
&lt;br /&gt;
Q. Follow-up. How is that different from putting human readable data into the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute?&lt;br /&gt;
&lt;br /&gt;
A. The title attribute is displayed in tool-tips in the overwhelming majority of browsers in use and thus is quite semi-visible, and thus human verifiable by casual users.  The class attribute is not displayed in a tool-tip or any other user interface (not withstanding developer interfaces like view source).&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;abbr title='Question'&amp;gt;Q.&amp;lt;/abbr&amp;gt; Why don't microformats use the HTML5 &amp;lt;code&amp;gt;data-&amp;lt;/code&amp;gt; attributes to embed data?===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;abbr title='Answer'&amp;gt;A&amp;lt;/abbr&amp;gt;:&lt;br /&gt;
# The HTML5 &amp;lt;code&amp;gt;data-&amp;lt;/code&amp;gt; attribute specification expressly forbids the microformats use-case:&amp;lt;blockquote cite='https://www.w3.org/TR/html5/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes'&amp;gt;Custom data attributes are intended to store custom data private to the page or application, for which there are no more appropriate attributes or elements. These attributes are not intended for use by software that is independent of the site that uses the attributes. [...] It would be inappropriate, however, for the user to use generic software not associated with that music site to search for tracks of a certain length by looking at this data. This is because these attributes are intended for use by the site's own scripts, and are not a generic extension mechanism for publicly-usable metadata.&amp;lt;/blockquote&amp;gt;— &amp;lt;cite&amp;gt;[http://www.w3.org/TR/html5/semantics.html#embedding HTML5 · Embedding custom-non-visible data]&amp;lt;/cite&amp;gt;&lt;br /&gt;
# Microformats are designed around the principle that non-visible data is undesirable, harder to maintain, more prone to inaccuracy (as no-one will see the data on the page to notice errors). The &amp;lt;code&amp;gt;data-&amp;lt;/code&amp;gt; attribute is explicitly designed for non-visible data.&lt;br /&gt;
&lt;br /&gt;
== Hidden Content ==&lt;br /&gt;
Related to &amp;lt;span id=&amp;quot;Microformats_and_Spam&amp;quot;&amp;gt;microformats and spam&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Q. ''Will crawlers get data from hidden content?'' ===&lt;br /&gt;
Q: ''If I markup some content inside of a block with display:none, will crawlers get data from it anyway?''&lt;br /&gt;
&lt;br /&gt;
A. Crawlers and search engines frown upon hidden (e.g. display:none) content in general (e.g. see next FAQ about Google, hidden content, and spam). If some content doesn't fit into your visible design, then it's not worth microformatting it. Visible content is the only content you can reasonably trust/expect to be correct / up to date. Invisible content tends to rot, get out of date, fail to be checked etc., so don't waste any time publishing invisible content - it's going to die anyway.&lt;br /&gt;
&lt;br /&gt;
=== Q. ''Given that Google now looks at hidden content as potential spam, will invisible microformats be considered spam?''===&lt;br /&gt;
&lt;br /&gt;
;shortlink&lt;br /&gt;
:http://j.mp/gnohide&lt;br /&gt;
&lt;br /&gt;
A. It is advisable not to hide information in your site, regardless of whether it is microformatted or not.  Microformats provide a mechanism for marking up ''visible'' content. Any mechanism for embedding ''invisible'' or hidden content risks being considered spam due to the fact that invisible (meta)data inevitably ends up being abused.  Avoid invisible (meta)data.  Publish visible data.&lt;br /&gt;
&lt;br /&gt;
Google in particular have said: &amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;In general, Google won't display content that is not visible to the user. In other words, don't show content to users in one way, and use hidden text to mark up information separately for search engines and web applications. You should mark up the text that actually appears to your users when they visit your web pages.[http://support.google.com/webmasters/bin/answer.py?hl=en&amp;amp;answer=146897]&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The only 'hidden' data they support according to that article is specific use of the [[value class pattern]] &amp;lt;code&amp;gt;value-title&amp;lt;/code&amp;gt; empty span with machine-readable information adjacent to a human-readable equivalent.&lt;br /&gt;
&lt;br /&gt;
== Design Patterns with Abbr &amp;amp;amp; Title ==&lt;br /&gt;
=== Q. ''Why is ABBR being used when the title attribute is available on all HTML elements?''===&lt;br /&gt;
&lt;br /&gt;
In the datetime design pattern the title attribute is used for the value of the property and the node value is used as the display value. &amp;amp;lt;abbr title=&amp;quot;value-here&amp;quot;&amp;amp;gt;Display-Here&amp;amp;lt;/abbr&amp;amp;gt;. &lt;br /&gt;
&lt;br /&gt;
A. The short answer is that &amp;amp;lt;abbr&amp;amp;gt; has the correct semantics.&lt;br /&gt;
&lt;br /&gt;
The longer answer is that the value is often an abbreviated version of the formal value. Of course, if you don't want to use an &amp;amp;lt;abbr&amp;amp;gt;, you can use another element like this:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;abbr title=&amp;quot;2006-12-31T12:59:59Z&amp;quot; class=&amp;quot;dtstamp&amp;quot;&amp;amp;gt;New Year&amp;amp;lt;/abbr&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;span class=&amp;quot;dtstamp&amp;quot;&amp;amp;gt;2006-12-31T12:59:59Z&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
In addition, microformats encourage the content to be visible and thus prefer the text of an element rather than using the 'title' attribute or any other less visible alternative.  The exception is made for datetimes and abbr due to the fact that microformats are for humans first, machines second.  Thus the content of the abbr element is used to provide human visible content and the machine equivalent is placed in the less visible (but still easily verifiable) 'title' attribute.&lt;br /&gt;
&lt;br /&gt;
=== Q. ''Can I include information within the HTML element itself?'' ===&lt;br /&gt;
&lt;br /&gt;
Longer: ''Can I include information within the HTML element itself? e.g. &amp;amp;lt;span class=&amp;quot;org&amp;quot; title=&amp;quot;Foobar, Inc.&amp;quot;&amp;amp;gt;&amp;amp;lt;/span&amp;amp;gt;?'' [http://twitter.com/szarka/status/109723996223840256]&lt;br /&gt;
&lt;br /&gt;
A. You can't do that with the &amp;lt;code&amp;gt;span&amp;lt;/code&amp;gt; element because there is no specific semantic connection between the element contents and its &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; other than being [http://www.w3.org/TR/html401/struct/global.html#h-7.4.3 &amp;quot;advisory information about the element&amp;quot;]. In addition, it's bad form (and penalized by Google) to include invisible data on web pages.&lt;br /&gt;
&lt;br /&gt;
Instead, you can use the &amp;lt;code&amp;gt;abbr&amp;lt;/code&amp;gt; element and its &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; attribute to provide an expanded form of the information in cases where substituting the expanded form when reading the text in context reads correctly, e.g. inside an [[hCard]]:&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;abbr class=&amp;quot;region&amp;quot; title=&amp;quot;Connecticut&amp;quot;&amp;gt;CT&amp;lt;/abbr&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://twitter.com/microformats/status/112556548877844481]&lt;br /&gt;
&lt;br /&gt;
== Nesting of elements ==&lt;br /&gt;
=== Q. ''It seems that &amp;lt;code&amp;gt;&amp;amp;lt;span class=&amp;amp;quot;vcard fn org&amp;amp;quot; id=&amp;amp;quot;club&amp;amp;quot;&amp;amp;gt;...&amp;amp;lt;/span&amp;amp;gt;&amp;lt;/code&amp;gt; should work. Is this correct?''===&lt;br /&gt;
&lt;br /&gt;
A. No. See [[hcard-faq#nesting-properties]].&lt;br /&gt;
&lt;br /&gt;
== Usage/Verbiage ==&lt;br /&gt;
=== Q. ''Is '''Microformat''' a proper noun? Should it be capitalized?''===&lt;br /&gt;
&lt;br /&gt;
A. Since the term &amp;quot;microformat&amp;quot; was established, it has been written in lowercase.  This is a nod to its roots in the term &amp;quot;lowercase semantic web&amp;quot;, in contrast to the uppercase &amp;quot;Semantic Web&amp;quot; which has long been tied to RDF and other technologies often viewed as impractical for the open web. In a few cases in the wild(citation needed), the term has been capitalized as &amp;quot;Microformat&amp;quot;, perhaps due to proper noun capitalization conventions.&lt;br /&gt;
&lt;br /&gt;
=== Q. ''Can you use microformat as an adjective or verb, as in &amp;quot;microformatted content&amp;quot; or &amp;quot;can you please microformat that page with an hCard?&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
A. Because the word ''microformat'' is derived from the word '''format''', it makes logical sense that one can use the term as an adjective or verb, just as one would use the word '''format'''.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[misconceptions]]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=h-feed&amp;diff=66358</id>
		<title>h-feed</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=h-feed&amp;diff=66358"/>
		<updated>2017-05-19T13:57:13Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* Converters */ unmung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;h-feed&amp;lt;/entry-title&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-feed&amp;lt;/dfn&amp;gt; is a [[microformats2]] draft for marking up a stream or feed of [[h-entry]] posts, like complete posts on a home page or archive pages, or summaries or other brief lists of posts.&lt;br /&gt;
&lt;br /&gt;
h-feed is the [[microformats2]] update to [[hAtom]]'s &amp;quot;hfeed&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{{cc0-owfa-license}}&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
h-feed properties, inside an element with class '''h-feed'''. All properties are optional.&lt;br /&gt;
&lt;br /&gt;
root class name: h-feed&lt;br /&gt;
&lt;br /&gt;
=== Core Properties ===&lt;br /&gt;
The following ''core'' h-feed properties have broad consensus:&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-name&amp;lt;/code&amp;gt;''' - name of the feed&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-author&amp;lt;/code&amp;gt;''' - author of the feed, optionally embed an [[h-card]] {{main|h-card}}&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-url&amp;lt;/code&amp;gt;''' - URL of the feed&lt;br /&gt;
* '''&amp;lt;code&amp;gt;u-photo&amp;lt;/code&amp;gt;''' - representative photo / icon for the feed&lt;br /&gt;
&lt;br /&gt;
children:&lt;br /&gt;
* nested [[h-entry]] objects representing the items of the feed&lt;br /&gt;
&lt;br /&gt;
=== Draft Properties ===&lt;br /&gt;
None currently.&lt;br /&gt;
&lt;br /&gt;
=== Proposed Properties ===&lt;br /&gt;
The following properties are proposed additions based on various observed examples in the wild, but are awaiting at least one reader / real world consuming code example to become a draft property:&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-summary&amp;lt;/code&amp;gt;''' - based on non-trivial actual content usage of &amp;quot;atom:subtitle&amp;quot; on Blogger and WordPress.com featured blogs's Atom feeds.&lt;br /&gt;
* '''&amp;lt;code&amp;gt;p-entry&amp;lt;/code&amp;gt;''' - to be more consistent with the cascading of p-author or [http://microformats.org/wiki/comment-brainstorming#Proposal p-comment].&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
'''h-feed''' is a microformats.org draft specification. Public discussion on h-feed takes place on [[h-entry-feedback]] and the #microformats [[irc]] channel on irc.freenode.net.&lt;br /&gt;
&lt;br /&gt;
h-feed is ready to use and implemented in the wild, but for backwards compatibility you should also mark h-feed up as a classic [[hAtom]] &amp;quot;hfeed&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
* Named feeds&lt;br /&gt;
** IndieWeb Readers are consuming home page feeds marked up with h-feed and using the name of the h-feed in their user interfce.&lt;br /&gt;
&lt;br /&gt;
* Generate an Atom feed&lt;br /&gt;
** This seems like a legacy use-case, not sufficient to actually justify h-feed.&lt;br /&gt;
&lt;br /&gt;
* Feed per channel of content - needs a name&lt;br /&gt;
** &amp;quot;I will have a feed per tag (channel) so I want to name them.&amp;quot; - Sandeep Shetty in #indiewebcamp&lt;br /&gt;
** It appears there is some desire to create separate feeds for an indieweb site for separate subsets of content, and name them &amp;lt;em&amp;gt;explicitly&amp;lt;/em&amp;gt; accordingly. This presents a need for a container object for the h-entry elements, where the container itself can have a name. This is a potential interesting use-case for an explicit 'h-feed'.&lt;br /&gt;
&lt;br /&gt;
== Examples in the wild ==&lt;br /&gt;
Add any examples in the wild that you find to the top of this list.&lt;br /&gt;
* ...&lt;br /&gt;
* http://sandeep.io/ uses h-feed with p-name and p-author properties and child h-entry posts. In particular using h-feed on the &amp;amp;lt;html&amp;amp;gt; element allows using p-name on the &amp;amp;lt;title&amp;amp;gt; element and re-using the visible window title of the HTML page as the name of the feed, neatly avoiding a [[DRY]] violation.&lt;br /&gt;
* http://tantek.com/ uses h-feed with p-name and p-author properties and child h-entry posts.&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
=== Readers ===&lt;br /&gt;
* Shrewdness&lt;br /&gt;
* http://notenoughneon.com/feed.php&lt;br /&gt;
&lt;br /&gt;
=== Proxies ===&lt;br /&gt;
* Bridgy&lt;br /&gt;
&lt;br /&gt;
=== Converters ===&lt;br /&gt;
* '''[http://unmung.com unmung]''' - will transform an RSS or Atom feed into an [[h-feed]] containing h-entries,&lt;br /&gt;
* '''[http://pipes.yahoo.com/pipes/pipe.info?_id=afc5568b4e8643bfb05436b1caaf91bc microformats to RSS]''' - a Yahoo! pipe that converts a URL containing an [[h-feed]] containing h-entries, into an [[RSS]] feed. ([http://waterpigs.co.uk/notes/4SeNi5/ 2013-10-21 blog post announcing])&lt;br /&gt;
&lt;br /&gt;
== Parsing ==&lt;br /&gt;
When parsing a page for an h-feed, do so per [[microformats2]].&lt;br /&gt;
&lt;br /&gt;
Fallback:&lt;br /&gt;
&lt;br /&gt;
If there is no explicit &amp;quot;h-feed&amp;quot; element, implementations may:&lt;br /&gt;
* Treat the &amp;lt;code&amp;gt;&amp;amp;lt;title&amp;amp;gt;&amp;lt;/code&amp;gt; of the page or the URL of the page as the p-name&lt;br /&gt;
* Use http://indiewebcamp.com/authorship to discover authorship of posts.&lt;br /&gt;
* Treat top level [[h-entry]] elements as items in the feed.&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
=== How do I avoid duplicating the page title ===&lt;br /&gt;
''I want to use the name (title) of my page as the name of my feed, how do I avoid duplicating the page title somewhere invisibly on the page as the feed name?''&lt;br /&gt;
&lt;br /&gt;
If you want re-use the &amp;amp;lt;title&amp;amp;gt; of your page as the name of your feed, you can do so by putting the h-feed root class name on the &amp;amp;lt;html&amp;amp;gt; element, and the p-name property class name on the &amp;amp;lt;title&amp;amp;gt; element, e.g. here's a snippet showing how those tags would look:&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;html class=&amp;quot;h-feed&amp;quot;&amp;gt;&lt;br /&gt;
  … &lt;br /&gt;
  &amp;lt;title class=&amp;quot;p-name&amp;quot;&amp;gt;sandeep.io&amp;lt;/title&amp;gt;&lt;br /&gt;
  …&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== What should a subscriber do with a page with multiple feeds ===&lt;br /&gt;
''What do I do when a user subscribes to a URL with multiple distinct h-feeds?''&lt;br /&gt;
&lt;br /&gt;
A feed reader should subscribe to the first h-feed it finds at a URL.&lt;br /&gt;
&lt;br /&gt;
Related: http://indiewebcamp.com/reader&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[h-feed-issues]]&lt;br /&gt;
* [[h-entry]]&lt;br /&gt;
* [[microformats2]]&lt;br /&gt;
* [[hAtom]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Draft Specifications]]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=rel-canonical&amp;diff=65954</id>
		<title>rel-canonical</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=rel-canonical&amp;diff=65954"/>
		<updated>2017-03-28T10:58:18Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* The opposite of canonical */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;rel-canonical&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:Kevin Marks|Kevin Marks]]&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;rel=canonical&amp;lt;/dfn&amp;gt; is a link relation to indicate the canonical URL of the current page, to avoid duplicate content.&lt;br /&gt;
&lt;br /&gt;
{{cc0-owfa-license}}&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
&amp;lt;p class=&amp;quot;entry-summary&amp;quot;&amp;gt;By adding &amp;lt;code&amp;gt;rel=&amp;quot;canonical&amp;quot;&amp;lt;/code&amp;gt; to a hyperlink, a page indicates that the destination of that hyperlink {{should}} be considered the preferred or definitive version of the current page. This helps search engines avoid duplicate content, and is useful for deciding how to link to a page when citing it.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
There are many reasons for a site to serve the same content at multiple URLs, but duplicate pages are undesirable in search results. The [https://www.mattcutts.com/blog/seo-advice-url-canonicalization/ historic recommendation] was to use 301 redirects to the canonical page, but that can be jarring for users. There are many use cases for a URL to have additional information added as query parameters or fragments to indicate the navigation history for referral purposes, but would prefer a single main referent from searches. This  was codified in February 2009 as rel=canonical, and [https://webmasters.googleblog.com/2009/02/specify-your-canonical.html adopted] by [http://www.ysearchblog.com/2009/02/12/fighting-duplication-adding-more-arrows-to-your-quiver/ many] [https://blogs.msdn.microsoft.com/webmaster/archive/2009/02/12/partnering-to-help-solve-duplicate-content-issues.aspx search] [https://web-beta.archive.org/web/20091008070823/http://blog.ask.com/2009/02/ask-is-going-canonical.html engines].&lt;br /&gt;
&lt;br /&gt;
Search engines prefer &amp;lt;code&amp;gt;rel=canonical&amp;lt;/code&amp;gt; on a &amp;lt;code&amp;gt;&amp;amp;lt;link&amp;amp;gt;&amp;lt;/code&amp;gt; element, and will [https://www.mattcutts.com/blog/rel-canonical-html-head/ ignore it] on an &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; element.&lt;br /&gt;
=== Cross-domain links ===&lt;br /&gt;
Although the primary use case is links within the same domain, rel=canonical can be used [https://webmasters.googleblog.com/2009/12/handling-legitimate-cross-domain.html across domains] too. A common use case recently is from [https://www.ampproject.org/docs/guides/deploy/discovery cached AMP pages] to their original.&lt;br /&gt;
== The opposite of canonical ==&lt;br /&gt;
There are several ways of indicating non-canonical versions of a page, depending on what is intended. A non-comprehensive list&lt;br /&gt;
=== rel-syndication and u-syndication ===&lt;br /&gt;
[[rel-syndication]] and [http://microformats.org/wiki/h-entry#Core_Properties u-syndication] link to copies that the author has syndicated or shared onto other sites. The syndicated copies {{should}} have a rel-canonical link back to the original if the other site allows it.&lt;br /&gt;
=== rel-alternate===&lt;br /&gt;
[[rel-alternate]] is used to link to versions of the page in other forms, whether a different format with &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;, language with &amp;lt;code&amp;gt;hreflang&amp;lt;/code&amp;gt; or presentation medium with &amp;lt;code&amp;gt;media&amp;lt;/code&amp;gt;.&lt;br /&gt;
=== rel-amphtml ===&lt;br /&gt;
[[rel-amphtml]] is used to link to the Accelerated Mobile Pages version, a html subset limiting javascript, replacing built-in elements with custom elements and designed for caching. It is [https://www.ampproject.org/docs/guides/deploy/discovery recommended] to link back fromt he AMP version to the original with rel-canonical&lt;br /&gt;
=== rel-shortlink ===&lt;br /&gt;
[[rel-shortlink]] is used to link to a url shortened version designed for sharing and (often) tracking.&lt;br /&gt;
=== rel-me ===&lt;br /&gt;
[[rel-me]] is explicitly saying that another domain or page  represents the same person or organisation as the current page. As such it is a different level of abstraction from rel-canonical, as it refers to the representation rather than the content.&lt;br /&gt;
=== rev-canonical ===&lt;br /&gt;
A deprecated way of linking to a short link, briefly [https://revcanonical.wordpress.com/ popular], [https://www.mnot.net/blog/2009/04/14/rev_canonical_bad disliked] and not recommended.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
* See https://github.com/whatwg/html/issues/2351&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[existing-rel-values]]&lt;br /&gt;
* https://en.wikipedia.org/wiki/Canonical_link_element&lt;br /&gt;
* [https://support.google.com/webmasters/answer/139066?hl=en  Google's canonical advice page]&lt;br /&gt;
* [http://known.kevinmarks.com/2017/day-7-to-amp-or-not-to-amp-100daysofindieweb canonical bookmarklets]&lt;br /&gt;
* [[sharelink-formats]]&lt;br /&gt;
* [https://tools.ietf.org/html/rfc6596 RFC 6596 - The Canonical Link Relation]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=rel-canonical&amp;diff=65953</id>
		<title>rel-canonical</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=rel-canonical&amp;diff=65953"/>
		<updated>2017-03-28T10:35:26Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* See Also */ add RFC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;rel-canonical&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:Kevin Marks|Kevin Marks]]&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;rel=canonical&amp;lt;/dfn&amp;gt; is a link relation to indicate the canonical URL of the current page, to avoid duplicate content.&lt;br /&gt;
&lt;br /&gt;
{{cc0-owfa-license}}&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
&amp;lt;p class=&amp;quot;entry-summary&amp;quot;&amp;gt;By adding &amp;lt;code&amp;gt;rel=&amp;quot;canonical&amp;quot;&amp;lt;/code&amp;gt; to a hyperlink, a page indicates that the destination of that hyperlink {{should}} be considered the preferred or definitive version of the current page. This helps search engines avoid duplicate content, and is useful for deciding how to link to a page when citing it.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
There are many reasons for a site to serve the same content at multiple URLs, but duplicate pages are undesirable in search results. The [https://www.mattcutts.com/blog/seo-advice-url-canonicalization/ historic recommendation] was to use 301 redirects to the canonical page, but that can be jarring for users. There are many use cases for a URL to have additional information added as query parameters or fragments to indicate the navigation history for referral purposes, but would prefer a single main referent from searches. This  was codified in February 2009 as rel=canonical, and [https://webmasters.googleblog.com/2009/02/specify-your-canonical.html adopted] by [http://www.ysearchblog.com/2009/02/12/fighting-duplication-adding-more-arrows-to-your-quiver/ many] [https://blogs.msdn.microsoft.com/webmaster/archive/2009/02/12/partnering-to-help-solve-duplicate-content-issues.aspx search] [https://web-beta.archive.org/web/20091008070823/http://blog.ask.com/2009/02/ask-is-going-canonical.html engines].&lt;br /&gt;
&lt;br /&gt;
Search engines prefer &amp;lt;code&amp;gt;rel=canonical&amp;lt;/code&amp;gt; on a &amp;lt;code&amp;gt;&amp;amp;lt;link&amp;amp;gt;&amp;lt;/code&amp;gt; element, and will [https://www.mattcutts.com/blog/rel-canonical-html-head/ ignore it] on an &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; element.&lt;br /&gt;
=== Cross-domain links ===&lt;br /&gt;
Although the primary use case is links within the same domain, rel=canonical can be used [https://webmasters.googleblog.com/2009/12/handling-legitimate-cross-domain.html across domains] too. A common use case recently is from [https://www.ampproject.org/docs/guides/deploy/discovery cached AMP pages] to their original.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
* See https://github.com/whatwg/html/issues/2351&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[existing-rel-values]]&lt;br /&gt;
* https://en.wikipedia.org/wiki/Canonical_link_element&lt;br /&gt;
* [https://support.google.com/webmasters/answer/139066?hl=en  Google's canonical advice page]&lt;br /&gt;
* [http://known.kevinmarks.com/2017/day-7-to-amp-or-not-to-amp-100daysofindieweb canonical bookmarklets]&lt;br /&gt;
* [[sharelink-formats]]&lt;br /&gt;
* [https://tools.ietf.org/html/rfc6596 RFC 6596 - The Canonical Link Relation]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=rel-canonical&amp;diff=65952</id>
		<title>rel-canonical</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=rel-canonical&amp;diff=65952"/>
		<updated>2017-03-28T10:31:05Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* Cross-domain links */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;rel-canonical&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:Kevin Marks|Kevin Marks]]&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;rel=canonical&amp;lt;/dfn&amp;gt; is a link relation to indicate the canonical URL of the current page, to avoid duplicate content.&lt;br /&gt;
&lt;br /&gt;
{{cc0-owfa-license}}&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
&amp;lt;p class=&amp;quot;entry-summary&amp;quot;&amp;gt;By adding &amp;lt;code&amp;gt;rel=&amp;quot;canonical&amp;quot;&amp;lt;/code&amp;gt; to a hyperlink, a page indicates that the destination of that hyperlink {{should}} be considered the preferred or definitive version of the current page. This helps search engines avoid duplicate content, and is useful for deciding how to link to a page when citing it.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
There are many reasons for a site to serve the same content at multiple URLs, but duplicate pages are undesirable in search results. The [https://www.mattcutts.com/blog/seo-advice-url-canonicalization/ historic recommendation] was to use 301 redirects to the canonical page, but that can be jarring for users. There are many use cases for a URL to have additional information added as query parameters or fragments to indicate the navigation history for referral purposes, but would prefer a single main referent from searches. This  was codified in February 2009 as rel=canonical, and [https://webmasters.googleblog.com/2009/02/specify-your-canonical.html adopted] by [http://www.ysearchblog.com/2009/02/12/fighting-duplication-adding-more-arrows-to-your-quiver/ many] [https://blogs.msdn.microsoft.com/webmaster/archive/2009/02/12/partnering-to-help-solve-duplicate-content-issues.aspx search] [https://web-beta.archive.org/web/20091008070823/http://blog.ask.com/2009/02/ask-is-going-canonical.html engines].&lt;br /&gt;
&lt;br /&gt;
Search engines prefer &amp;lt;code&amp;gt;rel=canonical&amp;lt;/code&amp;gt; on a &amp;lt;code&amp;gt;&amp;amp;lt;link&amp;amp;gt;&amp;lt;/code&amp;gt; element, and will [https://www.mattcutts.com/blog/rel-canonical-html-head/ ignore it] on an &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; element.&lt;br /&gt;
=== Cross-domain links ===&lt;br /&gt;
Although the primary use case is links within the same domain, rel=canonical can be used [https://webmasters.googleblog.com/2009/12/handling-legitimate-cross-domain.html across domains] too. A common use case recently is from [https://www.ampproject.org/docs/guides/deploy/discovery cached AMP pages] to their original.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
* See https://github.com/whatwg/html/issues/2351&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[existing-rel-values]]&lt;br /&gt;
* https://en.wikipedia.org/wiki/Canonical_link_element&lt;br /&gt;
* [https://support.google.com/webmasters/answer/139066?hl=en  Google's canonical advice page]&lt;br /&gt;
* [http://known.kevinmarks.com/2017/day-7-to-amp-or-not-to-amp-100daysofindieweb canonical bookmarklets]&lt;br /&gt;
* [[sharelink-formats]]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=rel-canonical&amp;diff=65951</id>
		<title>rel-canonical</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=rel-canonical&amp;diff=65951"/>
		<updated>2017-03-28T10:30:33Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* See Also */ sharelink&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;rel-canonical&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:Kevin Marks|Kevin Marks]]&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;rel=canonical&amp;lt;/dfn&amp;gt; is a link relation to indicate the canonical URL of the current page, to avoid duplicate content.&lt;br /&gt;
&lt;br /&gt;
{{cc0-owfa-license}}&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
&amp;lt;p class=&amp;quot;entry-summary&amp;quot;&amp;gt;By adding &amp;lt;code&amp;gt;rel=&amp;quot;canonical&amp;quot;&amp;lt;/code&amp;gt; to a hyperlink, a page indicates that the destination of that hyperlink {{should}} be considered the preferred or definitive version of the current page. This helps search engines avoid duplicate content, and is useful for deciding how to link to a page when citing it.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
There are many reasons for a site to serve the same content at multiple URLs, but duplicate pages are undesirable in search results. The [https://www.mattcutts.com/blog/seo-advice-url-canonicalization/ historic recommendation] was to use 301 redirects to the canonical page, but that can be jarring for users. There are many use cases for a URL to have additional information added as query parameters or fragments to indicate the navigation history for referral purposes, but would prefer a single main referent from searches. This  was codified in February 2009 as rel=canonical, and [https://webmasters.googleblog.com/2009/02/specify-your-canonical.html adopted] by [http://www.ysearchblog.com/2009/02/12/fighting-duplication-adding-more-arrows-to-your-quiver/ many] [https://blogs.msdn.microsoft.com/webmaster/archive/2009/02/12/partnering-to-help-solve-duplicate-content-issues.aspx search] [https://web-beta.archive.org/web/20091008070823/http://blog.ask.com/2009/02/ask-is-going-canonical.html engines].&lt;br /&gt;
&lt;br /&gt;
Search engines prefer &amp;lt;code&amp;gt;rel=canonical&amp;lt;/code&amp;gt; on a &amp;lt;code&amp;gt;&amp;amp;lt;link&amp;amp;gt;&amp;lt;/code&amp;gt; element, and will [https://www.mattcutts.com/blog/rel-canonical-html-head/ ignore it] on an &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; element.&lt;br /&gt;
=== Cross-domain links ===&lt;br /&gt;
Although the primary use case is links wihtin the same domain, rel=canonical can be used [https://webmasters.googleblog.com/2009/12/handling-legitimate-cross-domain.html across domains] too. A common use case recently is from [https://www.ampproject.org/docs/guides/deploy/discovery cached AMP pages] to their original.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
* See https://github.com/whatwg/html/issues/2351&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[existing-rel-values]]&lt;br /&gt;
* https://en.wikipedia.org/wiki/Canonical_link_element&lt;br /&gt;
* [https://support.google.com/webmasters/answer/139066?hl=en  Google's canonical advice page]&lt;br /&gt;
* [http://known.kevinmarks.com/2017/day-7-to-amp-or-not-to-amp-100daysofindieweb canonical bookmarklets]&lt;br /&gt;
* [[sharelink-formats]]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=rel-canonical&amp;diff=65950</id>
		<title>rel-canonical</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=rel-canonical&amp;diff=65950"/>
		<updated>2017-03-28T10:29:56Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* Discussion */ cross-domain&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;rel-canonical&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:Kevin Marks|Kevin Marks]]&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;rel=canonical&amp;lt;/dfn&amp;gt; is a link relation to indicate the canonical URL of the current page, to avoid duplicate content.&lt;br /&gt;
&lt;br /&gt;
{{cc0-owfa-license}}&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
&amp;lt;p class=&amp;quot;entry-summary&amp;quot;&amp;gt;By adding &amp;lt;code&amp;gt;rel=&amp;quot;canonical&amp;quot;&amp;lt;/code&amp;gt; to a hyperlink, a page indicates that the destination of that hyperlink {{should}} be considered the preferred or definitive version of the current page. This helps search engines avoid duplicate content, and is useful for deciding how to link to a page when citing it.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
There are many reasons for a site to serve the same content at multiple URLs, but duplicate pages are undesirable in search results. The [https://www.mattcutts.com/blog/seo-advice-url-canonicalization/ historic recommendation] was to use 301 redirects to the canonical page, but that can be jarring for users. There are many use cases for a URL to have additional information added as query parameters or fragments to indicate the navigation history for referral purposes, but would prefer a single main referent from searches. This  was codified in February 2009 as rel=canonical, and [https://webmasters.googleblog.com/2009/02/specify-your-canonical.html adopted] by [http://www.ysearchblog.com/2009/02/12/fighting-duplication-adding-more-arrows-to-your-quiver/ many] [https://blogs.msdn.microsoft.com/webmaster/archive/2009/02/12/partnering-to-help-solve-duplicate-content-issues.aspx search] [https://web-beta.archive.org/web/20091008070823/http://blog.ask.com/2009/02/ask-is-going-canonical.html engines].&lt;br /&gt;
&lt;br /&gt;
Search engines prefer &amp;lt;code&amp;gt;rel=canonical&amp;lt;/code&amp;gt; on a &amp;lt;code&amp;gt;&amp;amp;lt;link&amp;amp;gt;&amp;lt;/code&amp;gt; element, and will [https://www.mattcutts.com/blog/rel-canonical-html-head/ ignore it] on an &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; element.&lt;br /&gt;
=== Cross-domain links ===&lt;br /&gt;
Although the primary use case is links wihtin the same domain, rel=canonical can be used [https://webmasters.googleblog.com/2009/12/handling-legitimate-cross-domain.html across domains] too. A common use case recently is from [https://www.ampproject.org/docs/guides/deploy/discovery cached AMP pages] to their original.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
* See https://github.com/whatwg/html/issues/2351&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[existing-rel-values]]&lt;br /&gt;
* https://en.wikipedia.org/wiki/Canonical_link_element&lt;br /&gt;
* [https://support.google.com/webmasters/answer/139066?hl=en  Google's canonical advice page]&lt;br /&gt;
* [http://known.kevinmarks.com/2017/day-7-to-amp-or-not-to-amp-100daysofindieweb canonical bookmarklets]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=rel-canonical&amp;diff=65949</id>
		<title>rel-canonical</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=rel-canonical&amp;diff=65949"/>
		<updated>2017-03-28T10:24:25Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* Discussion */ a ignore&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;rel-canonical&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:Kevin Marks|Kevin Marks]]&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;rel=canonical&amp;lt;/dfn&amp;gt; is a link relation to indicate the canonical URL of the current page, to avoid duplicate content.&lt;br /&gt;
&lt;br /&gt;
{{cc0-owfa-license}}&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
&amp;lt;p class=&amp;quot;entry-summary&amp;quot;&amp;gt;By adding &amp;lt;code&amp;gt;rel=&amp;quot;canonical&amp;quot;&amp;lt;/code&amp;gt; to a hyperlink, a page indicates that the destination of that hyperlink {{should}} be considered the preferred or definitive version of the current page. This helps search engines avoid duplicate content, and is useful for deciding how to link to a page when citing it.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
There are many reasons for a site to serve the same content at multiple URLs, but duplicate pages are undesirable in search results. The [https://www.mattcutts.com/blog/seo-advice-url-canonicalization/ historic recommendation] was to use 301 redirects to the canonical page, but that can be jarring for users. There are many use cases for a URL to have additional information added as query parameters or fragments to indicate the navigation history for referral purposes, but would prefer a single main referent from searches. This  was codified in February 2009 as rel=canonical, and [https://webmasters.googleblog.com/2009/02/specify-your-canonical.html adopted] by [http://www.ysearchblog.com/2009/02/12/fighting-duplication-adding-more-arrows-to-your-quiver/ many] [https://blogs.msdn.microsoft.com/webmaster/archive/2009/02/12/partnering-to-help-solve-duplicate-content-issues.aspx search] [https://web-beta.archive.org/web/20091008070823/http://blog.ask.com/2009/02/ask-is-going-canonical.html engines].&lt;br /&gt;
&lt;br /&gt;
Search engines prefer &amp;lt;code&amp;gt;rel=canonical&amp;lt;/code&amp;gt; on a &amp;lt;code&amp;gt;&amp;amp;lt;link&amp;amp;gt;&amp;lt;/code&amp;gt; element, and will [https://www.mattcutts.com/blog/rel-canonical-html-head/ ignore it] on an &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
* See https://github.com/whatwg/html/issues/2351&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[existing-rel-values]]&lt;br /&gt;
* https://en.wikipedia.org/wiki/Canonical_link_element&lt;br /&gt;
* [https://support.google.com/webmasters/answer/139066?hl=en  Google's canonical advice page]&lt;br /&gt;
* [http://known.kevinmarks.com/2017/day-7-to-amp-or-not-to-amp-100daysofindieweb canonical bookmarklets]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=rel-canonical&amp;diff=65948</id>
		<title>rel-canonical</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=rel-canonical&amp;diff=65948"/>
		<updated>2017-03-28T10:22:31Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: copypasta error&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;rel-canonical&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:Kevin Marks|Kevin Marks]]&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;rel=canonical&amp;lt;/dfn&amp;gt; is a link relation to indicate the canonical URL of the current page, to avoid duplicate content.&lt;br /&gt;
&lt;br /&gt;
{{cc0-owfa-license}}&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
&amp;lt;p class=&amp;quot;entry-summary&amp;quot;&amp;gt;By adding &amp;lt;code&amp;gt;rel=&amp;quot;canonical&amp;quot;&amp;lt;/code&amp;gt; to a hyperlink, a page indicates that the destination of that hyperlink {{should}} be considered the preferred or definitive version of the current page. This helps search engines avoid duplicate content, and is useful for deciding how to link to a page when citing it.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
There are many reasons for a site to serve the same content at multiple URLs, but duplicate pages are undesirable in search results. The [https://www.mattcutts.com/blog/seo-advice-url-canonicalization/ historic recommendation] was to use 301 redirects to the canonical page, but that can be jarring for users. There are many use cases for a URL to have additional information added as query parameters or fragments to indicate the navigation history for referral purposes, but would prefer a single main referent from searches. This  was codified in February 2009 as rel=canonical, and [https://webmasters.googleblog.com/2009/02/specify-your-canonical.html adopted] by [http://www.ysearchblog.com/2009/02/12/fighting-duplication-adding-more-arrows-to-your-quiver/ many] [https://blogs.msdn.microsoft.com/webmaster/archive/2009/02/12/partnering-to-help-solve-duplicate-content-issues.aspx search] [https://web-beta.archive.org/web/20091008070823/http://blog.ask.com/2009/02/ask-is-going-canonical.html engines].&lt;br /&gt;
&lt;br /&gt;
Search engines prefer &amp;lt;code&amp;gt;rel=canonical&amp;lt;/code&amp;gt; on a &amp;lt;code&amp;gt;&amp;amp;lt;link&amp;amp;gt;&amp;lt;/code&amp;gt; element, and will ignore it on an &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
* See https://github.com/whatwg/html/issues/2351&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[existing-rel-values]]&lt;br /&gt;
* https://en.wikipedia.org/wiki/Canonical_link_element&lt;br /&gt;
* [https://support.google.com/webmasters/answer/139066?hl=en  Google's canonical advice page]&lt;br /&gt;
* [http://known.kevinmarks.com/2017/day-7-to-amp-or-not-to-amp-100daysofindieweb canonical bookmarklets]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=rel-canonical&amp;diff=65947</id>
		<title>rel-canonical</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=rel-canonical&amp;diff=65947"/>
		<updated>2017-03-28T10:21:37Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* Abstract */ typo&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:Kevin Marks|Kevin Marks]]&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;rel=canonical&amp;lt;/dfn&amp;gt; is a link relation to indicate the canonical URL of the current page, to avoid duplicate content.&lt;br /&gt;
&lt;br /&gt;
{{cc0-owfa-license}}&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
&amp;lt;p class=&amp;quot;entry-summary&amp;quot;&amp;gt;By adding &amp;lt;code&amp;gt;rel=&amp;quot;canonical&amp;quot;&amp;lt;/code&amp;gt; to a hyperlink, a page indicates that the destination of that hyperlink {{should}} be considered the preferred or definitive version of the current page. This helps search engines avoid duplicate content, and is useful for deciding how to link to a page when citing it.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
There are many reasons for a site to serve the same content at multiple URLs, but duplicate pages are undesirable in search results. The [https://www.mattcutts.com/blog/seo-advice-url-canonicalization/ historic recommendation] was to use 301 redirects to the canonical page, but that can be jarring for users. There are many use cases for a URL to have additional information added as query parameters or fragments to indicate the navigation history for referral purposes, but would prefer a single main referent from searches. This  was codified in February 2009 as rel=canonical, and [https://webmasters.googleblog.com/2009/02/specify-your-canonical.html adopted] by [http://www.ysearchblog.com/2009/02/12/fighting-duplication-adding-more-arrows-to-your-quiver/ many] [https://blogs.msdn.microsoft.com/webmaster/archive/2009/02/12/partnering-to-help-solve-duplicate-content-issues.aspx search] [https://web-beta.archive.org/web/20091008070823/http://blog.ask.com/2009/02/ask-is-going-canonical.html engines].&lt;br /&gt;
&lt;br /&gt;
Search engines prefer &amp;lt;code&amp;gt;rel=canonical&amp;lt;/code&amp;gt; on a &amp;lt;code&amp;gt;&amp;amp;lt;link&amp;amp;gt;&amp;lt;/code&amp;gt; element, and will ignore it on an &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
* See https://github.com/whatwg/html/issues/2351&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[existing-rel-values]]&lt;br /&gt;
* https://en.wikipedia.org/wiki/Canonical_link_element&lt;br /&gt;
* [https://support.google.com/webmasters/answer/139066?hl=en  Google's canonical advice page]&lt;br /&gt;
* [http://known.kevinmarks.com/2017/day-7-to-amp-or-not-to-amp-100daysofindieweb canonical bookmarklets]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=rel-canonical&amp;diff=65946</id>
		<title>rel-canonical</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=rel-canonical&amp;diff=65946"/>
		<updated>2017-03-28T10:21:09Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: flesh out to be more spec-like&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:Kevin Marks|Kevin Marks]]&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;rel=canonical&amp;lt;/dfn&amp;gt; is a link relation to indicate the canonical URL of the current page, to avoid duplicate content.&lt;br /&gt;
&lt;br /&gt;
{{cc0-owfa-license}}&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
&amp;lt;p class=&amp;quot;entry-summary&amp;quot;&amp;gt;By adding &amp;lt;code&amp;gt;rel=&amp;quot;caconical&amp;quot;&amp;lt;/code&amp;gt; to a hyperlink, a page indicates that the destination of that hyperlink {{should}} be considered the preferred or definitive version of the current page. This helps search engines avoid duplicate content, and is useful for deciding how to link to a page when citing it.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
There are many reasons for a site to serve the same content at multiple URLs, but duplicate pages are undesirable in search results. The [https://www.mattcutts.com/blog/seo-advice-url-canonicalization/ historic recommendation] was to use 301 redirects to the canonical page, but that can be jarring for users. There are many use cases for a URL to have additional information added as query parameters or fragments to indicate the navigation history for referral purposes, but would prefer a single main referent from searches. This  was codified in February 2009 as rel=canonical, and [https://webmasters.googleblog.com/2009/02/specify-your-canonical.html adopted] by [http://www.ysearchblog.com/2009/02/12/fighting-duplication-adding-more-arrows-to-your-quiver/ many] [https://blogs.msdn.microsoft.com/webmaster/archive/2009/02/12/partnering-to-help-solve-duplicate-content-issues.aspx search] [https://web-beta.archive.org/web/20091008070823/http://blog.ask.com/2009/02/ask-is-going-canonical.html engines].&lt;br /&gt;
&lt;br /&gt;
Search engines prefer &amp;lt;code&amp;gt;rel=canonical&amp;lt;/code&amp;gt; on a &amp;lt;code&amp;gt;&amp;amp;lt;link&amp;amp;gt;&amp;lt;/code&amp;gt; element, and will ignore it on an &amp;lt;code&amp;gt;&amp;amp;lt;a&amp;amp;gt;&amp;lt;/code&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
* See https://github.com/whatwg/html/issues/2351&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[existing-rel-values]]&lt;br /&gt;
* https://en.wikipedia.org/wiki/Canonical_link_element&lt;br /&gt;
* [https://support.google.com/webmasters/answer/139066?hl=en  Google's canonical advice page]&lt;br /&gt;
* [http://known.kevinmarks.com/2017/day-7-to-amp-or-not-to-amp-100daysofindieweb canonical bookmarklets]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=rel-nofollow&amp;diff=65945</id>
		<title>rel-nofollow</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=rel-nofollow&amp;diff=65945"/>
		<updated>2017-03-28T09:23:27Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* additional lists of issues */ archive link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;rel=&amp;quot;nofollow&amp;quot;&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Specification 2005-01-10 ==&lt;br /&gt;
&lt;br /&gt;
=== Editors ===&lt;br /&gt;
* [http://tantek.com/ Tantek Çelik] ([http://technorati.com Technorati, Inc.])&lt;br /&gt;
* [http://epeus.blogspot.com/ Kevin Marks] ([http://technorati.com Technorati, Inc.])&lt;br /&gt;
&lt;br /&gt;
=== Concept ===&lt;br /&gt;
* [http://www.google.com/googleblog/ Matt Cutts] ([http://google.com Google, Inc])&lt;br /&gt;
* [http://www.shellen.com/ Jason Shellen] ([http://www.blogger.com Blogger]/[http://www.google.com Google])&lt;br /&gt;
&lt;br /&gt;
=== Copyright ===&lt;br /&gt;
{{MicroFormatCopyrightStatement2005}}&lt;br /&gt;
* [[User:Tantek|Tantek]]: I release all my contributions to this specification into the public domain and I encourage the other authors to do so as well.&lt;br /&gt;
* [[User:Kevin Marks|Kevin Marks]]: I release all my contributions to this specification into the public domain and I encourage the other authors to do so as well.&lt;br /&gt;
** When all authors/editors have done so, we can remove the MicroFormatCopyrightStatement template reference and replace it with the MicroFormatPublicDomainContributionStatement.&lt;br /&gt;
&lt;br /&gt;
=== Patents ===&lt;br /&gt;
{{MicroFormatPatentStatement}}&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
&amp;lt;p class=&amp;quot;entry-summary&amp;quot;&amp;gt;RelNoFollow is an [[elemental-microformat|elemental microformat]], one of several [[microformats|microformat]] open standards. By adding &amp;lt;code&amp;gt;rel=&amp;quot;nofollow&amp;quot;&amp;lt;/code&amp;gt; to a hyperlink, a page 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). Typical use cases include links created by 3rd party commenters on blogs, or links the author wishes to point to, but avoid endorsing.  For more specific endorsement (or lack thereof) semantics, see [[vote-links|VoteLinks]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== XMDP profile ==&lt;br /&gt;
The following is an [http://gmpg.org/xmdp/ XMDP] profile for the [[rel-nofollow]] specification.&lt;br /&gt;
&lt;br /&gt;
=== URLs ===&lt;br /&gt;
This profile is hosted as a separate XMDP file on microformats.org:&lt;br /&gt;
* http://microformats.org/profile/rel-nofollow&lt;br /&gt;
* shortURL: http://ufs.cc/x/rel-nofollow&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
Profiles are referenced in (X)HTML files in the &amp;amp;lt;HEAD&amp;amp;gt; tag, e.g.:&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;head profile='http://microformats.org/profile/rel-nofollow'&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Profile ===&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;dl class=&amp;quot;profile&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;dt id=&amp;quot;rel&amp;quot;&amp;gt;rel&amp;lt;/dt&amp;gt;&lt;br /&gt;
 &amp;lt;dd&amp;gt;&amp;lt;p&amp;gt;&lt;br /&gt;
   &amp;lt;a rel=&amp;quot;help&amp;quot; href=&amp;quot;http://www.w3.org/TR/html401/struct/links.html#adef-rel&amp;quot;&amp;gt;&lt;br /&gt;
     HTML4 definition of the 'rel' attribute.&amp;lt;/a&amp;gt;  &lt;br /&gt;
   Here is an additional value as defined in the&lt;br /&gt;
   &amp;lt;a rel=&amp;quot;help start&amp;quot; href=&amp;quot;http://microformats.org/wiki/rel-nofollow&amp;quot;&amp;gt;&lt;br /&gt;
   rel-nofollow specification&amp;lt;/a&amp;gt; &lt;br /&gt;
   .&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;dl&amp;gt;&lt;br /&gt;
   &amp;lt;dt id=&amp;quot;nofollow&amp;quot;&amp;gt;nofollow&amp;lt;/dt&amp;gt;&lt;br /&gt;
   &amp;lt;dd&amp;gt;Indicates that the referred resource was not necessarily linked to &lt;br /&gt;
       by the author of the page, and thus said reference should not afford &lt;br /&gt;
       the referred resource any additional weight or ranking by user agents.&lt;br /&gt;
   &amp;lt;/dd&amp;gt;&lt;br /&gt;
  &amp;lt;/dl&amp;gt;&lt;br /&gt;
 &amp;lt;/dd&amp;gt;&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== examples in the wild ==&lt;br /&gt;
This section is informative.&lt;br /&gt;
Note: There are numerous uses of rel-nofollow in the wild, this is very much an incomplete list. If your site marked up with rel-nofollow, feel free to add it to the top of this list. Once the list grows too big, we'll make a separate wiki page ([[rel-nofollow-examples-in-wild]]).&lt;br /&gt;
* [http://www.netd.it/sviluppo/ Netdesign Developers Network] uses the rel-nofollow attribute to make search engines don't follow the &amp;quot;off-topic&amp;quot; links.&lt;br /&gt;
* [http://funadvice.com FunAdvice] supports using the rel-nofollow tag to prevent users posting content simply for the search engine benefit, to improve the quality of the advice giving community.&lt;br /&gt;
* [http://petfoodtalk.com/dogfoodcoupons/ Dog Food Coupons] provides a dog food coupon collection service for dog owners.  rel-nofollow is used to instruct search engine agents to '''not''' further execute link analysis and avoid endorsement of the actual merchant coupon links.&lt;br /&gt;
* [http://petmoz.com/dogfoodcoupons Pet Food Coupons] While listing coupons in our Dog Food Coupons section why use the rel-nofollow tag to make sure that search engines specifically Google do not follow any links we believe have no value to the visitor.&lt;br /&gt;
&lt;br /&gt;
== bad examples in the wild ==&lt;br /&gt;
This section is informative.&lt;br /&gt;
There are now numerous abuses of rel-nofollow, in particular, where it is used on *2nd party* links, rather than the original intention of *3rd party* links such as in blog comments. The primary abusers of rel-nofollow are content hosting / social network sites.&lt;br /&gt;
* [http://flickr.com/ Flickr] puts &amp;quot;nofollow&amp;quot; on comments by the content publisher themselves (should only be on 3rd party comments), e.g. http://www.flickr.com/photos/tantek/2344425887/ as well as on profile links e.g. website: http://www.flickr.com/people/microformats/&lt;br /&gt;
* [http://twitter.com/ Twitter] puts &amp;quot;nofollow&amp;quot; on account holders' profile links,  in the &amp;quot;description&amp;quot; and &amp;quot;web site&amp;quot; fields, e.g. http://twitter.com/indiewebcamp (links in posts do not have &amp;quot;nofollow&amp;quot; yet are wrapped with &amp;quot;t.co&amp;quot; URLs).&lt;br /&gt;
* ... nearly every other content hosting / publishing site - please add more specific examples with direct URLs to pages abusing &amp;quot;nofollow&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== exceptions ===&lt;br /&gt;
It may seem odd to explicitly list *non* examples in an examples in the wild section, but such non-examples may be useful to help convince the bad examples in the wild to change their behavior:&lt;br /&gt;
* [http://blogspot.com/ Blogspot] does NOT put &amp;quot;nofollow&amp;quot; on content publisher links, e.g. http://epeus.blogspot.com/2012/03/when-youre-merchandise-not-customer.html&lt;br /&gt;
* [http://tumblr.com/ Tumblr] does NOT put &amp;quot;nofollow&amp;quot; on content publisher links, e.g. http://adactio.tumblr.com/post/27135731578/the-web-unusually-came-with-a-view-source&lt;br /&gt;
* ... (let's hope we find more such non-examples)&lt;br /&gt;
&lt;br /&gt;
== normative references ==&lt;br /&gt;
* [http://gmpg.org/xmdp/ XMDP]&lt;br /&gt;
* http://googleblog.blogspot.com/2005/01/preventing-comment-spam.html&lt;br /&gt;
&lt;br /&gt;
== informative references ==&lt;br /&gt;
* VoteLinks can be used by an author to explicitly state their support for or against, or neutrality toward the destination of a link.  Implementers implementing rel=&amp;quot;nofollow&amp;quot; and VoteLinks should similarly not afford any additional weight or ranking to links with either &amp;lt;code&amp;gt;rev=&amp;quot;vote-abstain&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;rev=&amp;quot;vote-against&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Contributed from http://developers.technorati.com/wiki/RelNoFollow&lt;br /&gt;
&lt;br /&gt;
== open issues ==&lt;br /&gt;
These are open issues that have been raised about rel=&amp;quot;nofollow&amp;quot; that have been raised in various forums, in particular, on the public [http://lists.w3.org/Archives/Public/www-html W3C www-html mailing list].  Once the list grows too big, we'll make a separate wiki page ([[rel-nofollow-issues]]). The issues have been grouped into four areas.&lt;br /&gt;
&lt;br /&gt;
* '''Definition'''. nofollow indicates a behavior rather than a relationship from which the behavior should be inferred as appropriate for the useragent. rel values should be nouns that indicates what the resource being referenced is in relation to the source.&lt;br /&gt;
* '''Name'''. nofollow is a bad name.&lt;br /&gt;
** overloading. does not mean the same as robots exclusion standards (robots.txt, meta robots) nofollow.&lt;br /&gt;
** does not mean what it says. does not mean &amp;quot;do not follow this link&amp;quot;, rather it means &amp;quot; do not add weight from this link&amp;quot;. [http://www.w3.org/mid/opsk3cccj9lo81gp@quark Asbjørn Ulsberg]&lt;br /&gt;
** not a noun. see above.&lt;br /&gt;
** suggested alternatives:&lt;br /&gt;
*** noendorse - [http://lists.w3.org/Archives/Public/www-html/2005Jan/0046.html Micah Dubinko]&lt;br /&gt;
*** none&lt;br /&gt;
*** noweight&lt;br /&gt;
*** unendorsed - [http://lists.w3.org/Archives/Public/www-html/2005Jan/0057.html Lachlan Hunt]&lt;br /&gt;
*** unrelated - [http://lists.w3.org/Archives/Public/www-html/2005Jan/0049.html Jens Meiert]&lt;br /&gt;
*** untrusted&lt;br /&gt;
*** nonauth - [http://www.mnot.net/blog/2003/12/29/comment_spam_and_google Mark Baker]&lt;br /&gt;
*** norank - [http://www.digitalburg.com/ Ben Pierce]&lt;br /&gt;
*** notally - [http://www.eenmanierom.nl/google-penalty/ Patrick Mackaaij]&lt;br /&gt;
* '''Efficacy'''.  nofollow will not affect spamming behavior.&lt;br /&gt;
* '''Collateral Damage'''. If tools automatically add nofollow to all 3rd party links, then many legitimate non-spam links will be ignored or given reduced weight, and thus the destination of such links will be unfortunate casualties.&lt;br /&gt;
&lt;br /&gt;
=== additional lists of issues ===&lt;br /&gt;
Additional lists of issues raised against rel=&amp;quot;nofollow&amp;quot; can be found at the following site(s):&lt;br /&gt;
* [https://web-beta.archive.org/web/20061205020420/http://nonofollow.net/index.php?title=Main_Page nonofollow.net]&lt;br /&gt;
Matt Cutts Says No to Nofollow On Internal Links:&lt;br /&gt;
* http://www.techzene.com/seo/rel-nofollow-seo-disadvantages/&lt;br /&gt;
&lt;br /&gt;
[[Category:Specifications]]&lt;br /&gt;
[[Category:rel-nofollow]]&lt;br /&gt;
&lt;br /&gt;
== articles ==&lt;br /&gt;
When this section gets too big, we can move it to [[rel-nofollow-articles]].&lt;br /&gt;
* [http://searchenginewatch.com/3633972 2009-06-03 Search Engine Watch: Google Changes Course on Nofollow]&lt;br /&gt;
* [http://reference.sitepoint.com/html/rel-mf#rel__nofollow SitePoint reference: rel- Microformats / nofollow] by Ian Lloyd&lt;br /&gt;
* Auto Chevrolet [https://giaxeotochevrolet.com/]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=sharelink-formats&amp;diff=65868</id>
		<title>sharelink-formats</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=sharelink-formats&amp;diff=65868"/>
		<updated>2017-01-21T02:45:08Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* examples */ atom rel-self&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;sharelink formats&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Part of the Sharelink effort. &lt;br /&gt;
&lt;br /&gt;
[https://twitter.com/cramforce/status/822184263172796416 Malte Ubl ‏@cramforce  Jan 19]&lt;br /&gt;
*specifically we’d like to propose &amp;lt;link rel=share&amp;gt; (or similar name) to provide preference of shared URL for a given page.&lt;br /&gt;
Per the microformats [[process]] this page is here to document previous formats for pages publishing share links for themselves.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
* [[rel-canonical]]&lt;br /&gt;
** [https://twitter.com/adactio/status/822253267665252356 Jeremy Keith ‏@adactio]&amp;lt;br&amp;gt; @cramforce Is this not already covered by rel=&amp;quot;canonical&amp;quot;?&lt;br /&gt;
** [https://twitter.com/cramforce/status/822254953985019904 Malte Ubl ‏@cramforce]&amp;lt;br&amp;gt; @adactio we’d fallback to that, but people want to override it for some legit and less legit reasons.&amp;lt;br&amp;gt;people sometimes use canonical to point to an entirely different publication that was the original source of the content.&amp;lt;br&amp;gt;and others want to do share tracking with #.1234 style URLs (see e.g. @Medium URLs).&lt;br /&gt;
** [https://twitter.com/kevinmarks/status/822257980049485824 Kevin Marks ‏@kevinmarks] &amp;lt;br&amp;gt; @cramforce @adactio @Medium or google inspired  &amp;amp;utm_source things&lt;br /&gt;
&lt;br /&gt;
*[http://microformats.org/wiki/h-entry#Draft_Properties u-repost-of]&lt;br /&gt;
** [https://twitter.com/kevinmarks/status/822260255652397057 Kevin Marks ‏@kevinmarks]&amp;lt;br&amp;gt; @cramforce @adactio so the page has a link to the version it wants shared. Is it like u-repost-of https://indieweb.org/repost  or rel=bookmark?&lt;br /&gt;
&lt;br /&gt;
* [[rel-bookmark]]&lt;br /&gt;
** [https://twitter.com/kevinmarks/status/822260255652397057 Kevin Marks ‏@kevinmarks]&amp;lt;br&amp;gt; @cramforce @adactio so the page has a link to the version it wants shared. Is it like u-repost-of https://indieweb.org/repost  or rel=bookmark?&amp;lt;br&amp;gt;rel-bookmark  is already in the [https://www.w3.org/TR/html51/links.html#link-type-bookmark html5 spec], and in lots of CMSs, including WordPress  …&lt;br /&gt;
** [https://twitter.com/cramforce/status/822264992992927744 Malte Ubl ‏@cramforce]  &amp;lt;br&amp;gt;@kevinmarks @adactio I think bookmark comes pretty close. Not quite the same, but close.&lt;br /&gt;
&lt;br /&gt;
* [[rel-shortlink]]&lt;br /&gt;
** https://twitter.com/voxpelli/status/822378518902239233 [Pelle Wessman ‏@voxpelli]  &amp;lt;br&amp;gt;@cramforce @kevinmarks @adactio There's also rel-shortlink which is often used for sharing + is widely supported&lt;br /&gt;
&lt;br /&gt;
*rel=self&lt;br /&gt;
** the [https://tools.ietf.org/html/rfc4287#section-4.2.7.2 Atom Link element] defines rel=&amp;quot;self&amp;quot; as &lt;br /&gt;
  The value &amp;quot;self&amp;quot; signifies that the IRI in the value of the href&lt;br /&gt;
  attribute identifies a resource equivalent to the containing&lt;br /&gt;
  element.&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[sharelink-examples]]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=sharelink-formats&amp;diff=65867</id>
		<title>sharelink-formats</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=sharelink-formats&amp;diff=65867"/>
		<updated>2017-01-21T02:33:49Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* examples */ link u-repost-of&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;sharelink formats&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Part of the Sharelink effort. &lt;br /&gt;
&lt;br /&gt;
[https://twitter.com/cramforce/status/822184263172796416 Malte Ubl ‏@cramforce  Jan 19]&lt;br /&gt;
*specifically we’d like to propose &amp;lt;link rel=share&amp;gt; (or similar name) to provide preference of shared URL for a given page.&lt;br /&gt;
Per the microformats [[process]] this page is here to document previous formats for pages publishing share links for themselves.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
* [[rel-canonical]]&lt;br /&gt;
** [https://twitter.com/adactio/status/822253267665252356 Jeremy Keith ‏@adactio]&amp;lt;br&amp;gt; @cramforce Is this not already covered by rel=&amp;quot;canonical&amp;quot;?&lt;br /&gt;
** [https://twitter.com/cramforce/status/822254953985019904 Malte Ubl ‏@cramforce]&amp;lt;br&amp;gt; @adactio we’d fallback to that, but people want to override it for some legit and less legit reasons.&amp;lt;br&amp;gt;people sometimes use canonical to point to an entirely different publication that was the original source of the content.&amp;lt;br&amp;gt;and others want to do share tracking with #.1234 style URLs (see e.g. @Medium URLs).&lt;br /&gt;
** [https://twitter.com/kevinmarks/status/822257980049485824 Kevin Marks ‏@kevinmarks] &amp;lt;br&amp;gt; @cramforce @adactio @Medium or google inspired  &amp;amp;utm_source things&lt;br /&gt;
&lt;br /&gt;
*[http://microformats.org/wiki/h-entry#Draft_Properties u-repost-of]&lt;br /&gt;
** [https://twitter.com/kevinmarks/status/822260255652397057 Kevin Marks ‏@kevinmarks]&amp;lt;br&amp;gt; @cramforce @adactio so the page has a link to the version it wants shared. Is it like u-repost-of https://indieweb.org/repost  or rel=bookmark?&lt;br /&gt;
&lt;br /&gt;
* [[rel-bookmark]]&lt;br /&gt;
** [https://twitter.com/kevinmarks/status/822260255652397057 Kevin Marks ‏@kevinmarks]&amp;lt;br&amp;gt; @cramforce @adactio so the page has a link to the version it wants shared. Is it like u-repost-of https://indieweb.org/repost  or rel=bookmark?&amp;lt;br&amp;gt;rel-bookmark  is already in the [https://www.w3.org/TR/html51/links.html#link-type-bookmark html5 spec], and in lots of CMSs, including WordPress  …&lt;br /&gt;
** [https://twitter.com/cramforce/status/822264992992927744 Malte Ubl ‏@cramforce]  &amp;lt;br&amp;gt;@kevinmarks @adactio I think bookmark comes pretty close. Not quite the same, but close.&lt;br /&gt;
&lt;br /&gt;
* [[rel-shortlink]]&lt;br /&gt;
** https://twitter.com/voxpelli/status/822378518902239233 [Pelle Wessman ‏@voxpelli]  &amp;lt;br&amp;gt;@cramforce @kevinmarks @adactio There's also rel-shortlink which is often used for sharing + is widely supported&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[sharelink-examples]]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=sharelink-formats&amp;diff=65866</id>
		<title>sharelink-formats</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=sharelink-formats&amp;diff=65866"/>
		<updated>2017-01-21T02:30:48Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* examples */ copy in twitter discussion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;sharelink formats&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Part of the Sharelink effort. &lt;br /&gt;
&lt;br /&gt;
[https://twitter.com/cramforce/status/822184263172796416 Malte Ubl ‏@cramforce  Jan 19]&lt;br /&gt;
*specifically we’d like to propose &amp;lt;link rel=share&amp;gt; (or similar name) to provide preference of shared URL for a given page.&lt;br /&gt;
Per the microformats [[process]] this page is here to document previous formats for pages publishing share links for themselves.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
* [[rel-canonical]]&lt;br /&gt;
** [https://twitter.com/adactio/status/822253267665252356 Jeremy Keith ‏@adactio]&amp;lt;br&amp;gt; @cramforce Is this not already covered by rel=&amp;quot;canonical&amp;quot;?&lt;br /&gt;
** [https://twitter.com/cramforce/status/822254953985019904 Malte Ubl ‏@cramforce]&amp;lt;br&amp;gt; @adactio we’d fallback to that, but people want to override it for some legit and less legit reasons.&amp;lt;br&amp;gt;people sometimes use canonical to point to an entirely different publication that was the original source of the content.&amp;lt;br&amp;gt;and others want to do share tracking with #.1234 style URLs (see e.g. @Medium URLs).&lt;br /&gt;
** [https://twitter.com/kevinmarks/status/822257980049485824 Kevin Marks ‏@kevinmarks] &amp;lt;br&amp;gt; @cramforce @adactio @Medium or google inspired  &amp;amp;utm_source things&lt;br /&gt;
&lt;br /&gt;
* u-repost-of&lt;br /&gt;
** [https://twitter.com/kevinmarks/status/822260255652397057 Kevin Marks ‏@kevinmarks]&amp;lt;br&amp;gt; @cramforce @adactio so the page has a link to the version it wants shared. Is it like u-repost-of https://indieweb.org/repost  or rel=bookmark?&lt;br /&gt;
&lt;br /&gt;
* [[rel-bookmark]]&lt;br /&gt;
** [https://twitter.com/kevinmarks/status/822260255652397057 Kevin Marks ‏@kevinmarks]&amp;lt;br&amp;gt; @cramforce @adactio so the page has a link to the version it wants shared. Is it like u-repost-of https://indieweb.org/repost  or rel=bookmark?&amp;lt;br&amp;gt;rel-bookmark  is already in the [https://www.w3.org/TR/html51/links.html#link-type-bookmark html5 spec], and in lots of CMSs, including WordPress  …&lt;br /&gt;
** [https://twitter.com/cramforce/status/822264992992927744 Malte Ubl ‏@cramforce]  &amp;lt;br&amp;gt;@kevinmarks @adactio I think bookmark comes pretty close. Not quite the same, but close.&lt;br /&gt;
&lt;br /&gt;
* [[rel-shortlink]]&lt;br /&gt;
** https://twitter.com/voxpelli/status/822378518902239233 [Pelle Wessman ‏@voxpelli]  &amp;lt;br&amp;gt;@cramforce @kevinmarks @adactio There's also rel-shortlink which is often used for sharing + is widely supported&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[sharelink-examples]]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=sharelink-formats&amp;diff=65865</id>
		<title>sharelink-formats</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=sharelink-formats&amp;diff=65865"/>
		<updated>2017-01-21T02:13:41Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: space for examples&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;sharelink formats&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Part of the Sharelink effort. &lt;br /&gt;
&lt;br /&gt;
[https://twitter.com/cramforce/status/822184263172796416 Malte Ubl ‏@cramforce  Jan 19]&lt;br /&gt;
*specifically we’d like to propose &amp;lt;link rel=share&amp;gt; (or similar name) to provide preference of shared URL for a given page.&lt;br /&gt;
Per the microformats [[process]] this page is here to document previous formats for pages publishing share links for themselves.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
* …&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[sharelink-examples]]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=sharelink-examples&amp;diff=65864</id>
		<title>sharelink-examples</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=sharelink-examples&amp;diff=65864"/>
		<updated>2017-01-21T01:56:01Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: initial examples of sharelinks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;sharelink examples&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Part of the Sharelink effort. &lt;br /&gt;
&lt;br /&gt;
[https://twitter.com/cramforce/status/822184263172796416 Malte Ubl ‏@cramforce  Jan 19]&lt;br /&gt;
*specifically we’d like to propose &amp;lt;link rel=share&amp;gt; (or similar name) to provide preference of shared URL for a given page.&lt;br /&gt;
Per the microformats [[process]] this page is here to document existing real world visible web publishing examples of pages publishing share links for themselves.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
== examples ==&lt;br /&gt;
* Twitter has a &amp;quot;copy link&amp;quot; dropdown with javascript, no rel on the tweet link.&lt;br /&gt;
* Medium changes the address bar link&lt;br /&gt;
* giphy under the advanced tab has multiple links, displayed as text input fields to copy&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;advanced-action-group&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;action clearfix&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p class=&amp;quot;action-note&amp;quot;&amp;gt;Giphy links preview in Facebook and Twitter. HTML5 links autoselect optimized format.&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;action-label&amp;quot;&amp;gt;Giphy Link&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;action-field&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;input type=&amp;quot;text&amp;quot; value=&amp;quot;http://gph.is/2dmmt6J&amp;quot; data-copy=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;action clearfix&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;action-label&amp;quot;&amp;gt;HTML5 Video&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;action-field&amp;quot;&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
            &amp;lt;input type=&amp;quot;text&amp;quot; value=&amp;quot;https://giphy.com/gifs/lC86xNTUs7CM0/html5&amp;quot; data-copy=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;action clearfix&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;action-label&amp;quot;&amp;gt;Gif Download&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;action-field has-button&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;input type=&amp;quot;text&amp;quot; value=&amp;quot;http://i.giphy.com/lC86xNTUs7CM0.gif&amp;quot; data-copy=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;a class=&amp;quot;action-button button blue&amp;quot; href=&amp;quot;https://media.giphy.com/media/lC86xNTUs7CM0/giphy.gif&amp;quot; download=&amp;quot;giphy.gif&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Download&amp;lt;/a&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* svgshare has multiple URLs to copy as well:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ul id=&amp;quot;shares&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&amp;lt;h3&amp;gt;Image Link (chat, IM, email)&amp;lt;/h3&amp;gt;&lt;br /&gt;
  &amp;lt;input readonly value=&amp;quot;http://svgshare.com/s/Xe&amp;quot; type=&amp;quot;text&amp;quot; &amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&amp;lt;h3&amp;gt;Direct Link (chat, IM, email)&amp;lt;/h3&amp;gt;&lt;br /&gt;
  &amp;lt;input readonly value=&amp;quot;http://svgshare.com/i/Xe.svg&amp;quot; type=&amp;quot;text&amp;quot; &amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&amp;lt;h3&amp;gt;HTML (website, blog)&amp;lt;/h3&amp;gt;&lt;br /&gt;
  &amp;lt;input readonly value=&amp;quot;&amp;amp;lt;a href='http://svgshare.com/s/Xe' &amp;amp;gt;&amp;amp;lt;img src='http://svgshare.com/i/Xe.svg' title='' /&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt;&amp;quot; type=&amp;quot;text&amp;quot; &amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&amp;lt;h3&amp;gt;HTML iframe (website, blog)&amp;lt;/h3&amp;gt;&lt;br /&gt;
  &amp;lt;input readonly value=&amp;quot;&amp;amp;lt;iframe src='http://svgshare.com/f/Xe' width=100% height=100% &amp;amp;gt;&amp;amp;lt;/iframe&amp;amp;gt;&amp;quot; type=&amp;quot;text&amp;quot; &amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&amp;lt;h3&amp;gt;Hash resolver&amp;lt;/h3&amp;gt;&lt;br /&gt;
  &amp;lt;input readonly value=&amp;quot;http://svgshare.com/getbyhash/sha1-S0gBndRX/ONq105EfF1/tF8h9Lo=&amp;quot; type=&amp;quot;text&amp;quot; &amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* …&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[sharelink-formats]]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=block-list-formats&amp;diff=65807</id>
		<title>block-list-formats</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=block-list-formats&amp;diff=65807"/>
		<updated>2016-12-14T01:09:43Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* Block Chain list */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;block list formats&amp;lt;/h1&amp;gt;&lt;br /&gt;
{{TOC-right}}&lt;br /&gt;
Previous attempts at [[block list]] formats.  Part of the effort to enable greater [[social network portability]].&lt;br /&gt;
&lt;br /&gt;
== formats ==&lt;br /&gt;
=== rn kill file === &lt;br /&gt;
Usenet/netnews [http://en.wikipedia.org/wiki/Kill_file kill files]. For details of the kill file implemented by the &amp;quot;rn&amp;quot; news reading program, see the [http://www.faqs.org/faqs/killfile-faq/ killfile faq].&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
Rn and trn&lt;br /&gt;
==========&lt;br /&gt;
5. What is the general syntax of a KILL file entry?&lt;br /&gt;
  The general style for building a kill line is:&lt;br /&gt;
&lt;br /&gt;
		/pattern/modifiers:command&lt;br /&gt;
&lt;br /&gt;
  The &amp;lt;pattern&amp;gt; is the pattern to use to pick articles.  This is a regular&lt;br /&gt;
expression, like those used in grep.  You can use any case in the pattern; &lt;br /&gt;
t won't matter, unless you use a modifier to make rn case-sensitive.&lt;br /&gt;
  The &amp;lt;modifiers&amp;gt; tell rn where to look for the pattern - the subject&lt;br /&gt;
(default), one of the other header lines, or the entire article, as examples&lt;br /&gt;
of the usual modifiers used.&lt;br /&gt;
  The command tells what to do with the article once it's been selected.&lt;br /&gt;
This is usually either to kill it or to mark it unread.&lt;br /&gt;
&lt;br /&gt;
  If no modifier appears before the colon, only the subject line of the&lt;br /&gt;
article is searched.  More than one command can be performed by using&lt;br /&gt;
the style:&lt;br /&gt;
&lt;br /&gt;
		/pattern/modifier:command:command &lt;br /&gt;
&lt;br /&gt;
Thus, for instance, you can use j and = together to see the exact subject&lt;br /&gt;
lines being killed.  (See below for the explanation of j and =.)&lt;br /&gt;
&lt;br /&gt;
6. What are the available modifiers and commands?&lt;br /&gt;
&lt;br /&gt;
  The modifiers and commands are all explained in the rn man page, but here&lt;br /&gt;
are some of them:&lt;br /&gt;
	Modifiers:&lt;br /&gt;
	   a: all, look through the entire article for the pattern&lt;br /&gt;
	   h: look through the header of the article for the pattern&lt;br /&gt;
	   f: look at only the 'From:' header (trn 3.0)&lt;br /&gt;
	   c: Make the pattern case sensitive&lt;br /&gt;
	   H: added in trn 3.1, this expands the f: above to any header&lt;br /&gt;
	Commands:&lt;br /&gt;
	   m   mark as unread&lt;br /&gt;
	   j   mark as read&lt;br /&gt;
	   =   show subject line&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
7. How do I kill a specific subject?&lt;br /&gt;
&lt;br /&gt;
  The easiest way to kill a subject line is to kill it from within the&lt;br /&gt;
newsgroup.  When the subject line comes up that you want to kill, instead&lt;br /&gt;
of using 'n' to skip that article or 'k' to kill the subject for that &lt;br /&gt;
session, type 'K'.  The subject line will then be entered into your KILL&lt;br /&gt;
file for that group.  If you want to put that line into your global KILL&lt;br /&gt;
file, you'll have to do that yourself.&lt;br /&gt;
&lt;br /&gt;
  To kill a general subject, ie any 'test' messages, put in the pattern:&lt;br /&gt;
&lt;br /&gt;
			/test/:j&lt;br /&gt;
&lt;br /&gt;
This will kill anything with the word 'test' in the subject line.&lt;br /&gt;
&lt;br /&gt;
8. How do I kill postings from a specific person?&lt;br /&gt;
&lt;br /&gt;
  To kill articles from a single poster, you need to know the userid and&lt;br /&gt;
nodename of the poster; for this example we'll use noone@anywhere.all.&lt;br /&gt;
&lt;br /&gt;
		/^From:.*noone@anywhere\.all/h:j&lt;br /&gt;
&lt;br /&gt;
This searches the entire header for any line starting with 'From:', anything&lt;br /&gt;
at all, and then 'noone@anywhere.all' in it.  This is faster than if the&lt;br /&gt;
beginning-of-line character (^) had been left out:&lt;br /&gt;
&lt;br /&gt;
		/From:.*noone@anywhere\.all/h:j&lt;br /&gt;
&lt;br /&gt;
If this were used, something like 'Subject: Re: Articles from:&lt;br /&gt;
noone@anywhere.all' would also get killed.&lt;br /&gt;
&lt;br /&gt;
9. How do I kill articles from a specific site?&lt;br /&gt;
&lt;br /&gt;
  For articles from a particular site, just remove the 'noone' from the&lt;br /&gt;
previous lines, and articles from the machine 'anywhere.all' will be killed.&lt;br /&gt;
So, the line would be:&lt;br /&gt;
&lt;br /&gt;
		/^From:.*@anywhere\.all/h:j&lt;br /&gt;
&lt;br /&gt;
10. How do I kill followups?&lt;br /&gt;
&lt;br /&gt;
  To kill anything that is a followup to any article, use this pattern:&lt;br /&gt;
&lt;br /&gt;
		/Re:/:j&lt;br /&gt;
&lt;br /&gt;
This kills anything with 'Re:' in it.  (This includes articles of the form&lt;br /&gt;
'Subject: X (Was Re: Y)'.)&lt;br /&gt;
&lt;br /&gt;
  If you just want to kill the direct followups, without the changes in&lt;br /&gt;
subject, you have to make it clear where the Re: is in the line:&lt;br /&gt;
&lt;br /&gt;
		/^Subject: Re:/:j&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== trn kill file features === &lt;br /&gt;
Again from the [http://www.faqs.org/faqs/killfile-faq/ killfile faq].&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
Trn&lt;br /&gt;
===&lt;br /&gt;
15. What's different about trn?&lt;br /&gt;
&lt;br /&gt;
  Trn, being a threaded version of rn, has a few extra enhancements to&lt;br /&gt;
deal with those.  Because rn is no longer being improved, there are also&lt;br /&gt;
extensions that have been made that could, but are not, be integrated into&lt;br /&gt;
the base rn killfiles.&lt;br /&gt;
  One of the additions to trn is the f modifier, meaning the From: line.&lt;br /&gt;
This line gets used so much it seemed appropriate to add a modifier in&lt;br /&gt;
specifically for it.&lt;br /&gt;
  So, now, killing or marking articles can be done on the basis of the&lt;br /&gt;
From: line quite easily, now:&lt;br /&gt;
&lt;br /&gt;
		/noone@anywhere\.all/f:j&lt;br /&gt;
		/noone@anywhere\.all/f:m&lt;br /&gt;
&lt;br /&gt;
It looks just like the Subject: line, except with the addition of the 'f'&lt;br /&gt;
in the modifier position.&lt;br /&gt;
&lt;br /&gt;
  However, the `f' modifier *may* not work exactly in the same manner as&lt;br /&gt;
the subject-based criteria if trn is configured to use thread files.&lt;br /&gt;
Specifically, if thread files are used only the 'Real Name' portion of the&lt;br /&gt;
from line can be guaranteed to be matched.  To ensure that your match will&lt;br /&gt;
work on an address, you need to change the above lines to:&lt;br /&gt;
&lt;br /&gt;
              /noone@anywhere\.all/Hfrom:j&lt;br /&gt;
              /noone@anywhere\.all/Hfrom:m&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Score file ===&lt;br /&gt;
&lt;br /&gt;
Many USENET newsreaders including [http://gnus.org Gnus], slrn and others implement score-file functionality, which lets you provide scoring rules that end up giving a post an integer value from -9999 to 9999. Here are some examples from [User:TomMorris|Tom Morris]' score file that was generated by slrn:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[*]&lt;br /&gt;
Score: =-9999&lt;br /&gt;
%Expires: &lt;br /&gt;
        Subject: =\?windows-1252*&lt;br /&gt;
%EOS&lt;br /&gt;
&lt;br /&gt;
%BOS&lt;br /&gt;
%Score created by slrn on Fri Nov  7 16:24:33 2008&lt;br /&gt;
&lt;br /&gt;
[*]&lt;br /&gt;
Score: =-9999&lt;br /&gt;
%Expires: &lt;br /&gt;
        Subject: CREDIT CARD SERVISES&lt;br /&gt;
        From: MEGAL &amp;lt;megal47@yahoo\.com&amp;gt;&lt;br /&gt;
        References: &amp;lt;43cd6752-09e2-4284-a296-b9f7eb4d1b98@a29g2000pra\.googlegroups\.com&amp;gt;&lt;br /&gt;
%       Xref: uni-berlin\.de comp\.lang\.ruby:298844 comp\.lang\.php:173405 comp\.soft-sys\.sas:281663 comp\.lang\.lisp:     261578 comp\.arch\.embedded:269623&lt;br /&gt;
%       Newsgroup: comp\.lang\.ruby&lt;br /&gt;
%EOS&lt;br /&gt;
&lt;br /&gt;
%BOS&lt;br /&gt;
%Score created by slrn on Fri Nov  7 20:26:07 2008&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
The rules have the following features:&lt;br /&gt;
* the first line (with the '*') is where the rule applies - the asterisk refers to it being applicable to all newsgroups&lt;br /&gt;
* the Expires: line allows you to specify a yyyy-mm-dd expiry date for the rule. In slrn, you are prompted with:&lt;br /&gt;
:: &amp;quot;Expires (MM/DD/YYYY, DD-MM-YYYY, +NN (days) or leave blank):&amp;quot;&lt;br /&gt;
:which is, of course, not ISO 8601 and needs to be rejiggled. ;)&lt;br /&gt;
* all the headers can be marked using wildcards. If you just want to filter one conversation, the References: allows you to do so. You can also filter messages originating with particular servers (googlegroups being one that is particularly spammy) by using a filter like &amp;quot;References: *googlegroups*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[http://gnus.org/ Gnus], the Emacs newsreader, supports scoring posts both positively and negatively -- as such, its [http://gnus.org/manual/gnus_234.html#SEC234 scoring functionality] is a superset of just killing. The file format is an emacs lisp expression, described in the [http://gnus.org/manual/gnus_238.html#SEC238 score file format] section of the Gnus manual.&lt;br /&gt;
&lt;br /&gt;
See [http://slrn.sourceforge.net/docs/slrn-FAQ-4.html slrn FAQ] and [http://en.wikipedia.org/wiki/Scorefile Scorefile on Wikipedia].&lt;br /&gt;
&lt;br /&gt;
=== Block Chain list ===&lt;br /&gt;
&lt;br /&gt;
The [https://chrome.google.com/webstore/detail/twitter-block-chain/dkkfampndkdnjffkleokegfnibnnjfah browser plugin Block Chain] exports Twitter [https://github.com/satsukitv/twitter-block-chain/blob/master/js/blockchain.js#L179 followers] in a JSON list of &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;{id: user_id, name: user_name}&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[block-list]]&lt;br /&gt;
* [[block-list-examples]]&lt;br /&gt;
* [[block-list-brainstorming]]&lt;br /&gt;
* [[social-network-portability]]&lt;br /&gt;
&lt;br /&gt;
== references ==&lt;br /&gt;
* [http://www.faqs.org/faqs/killfile-faq/ killfile faq]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-parsing-brainstorming&amp;diff=65687</id>
		<title>microformats2-parsing-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-parsing-brainstorming&amp;diff=65687"/>
		<updated>2016-07-19T01:50:25Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* img alt thoughts */ specific alt makes sense&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;microformats2 parsing brainstorming&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page is for brainstorming, discussion, and other questions and explorations about [[microformats2]] parsing.&lt;br /&gt;
&lt;br /&gt;
For the microformats2 parsing algorithm, see:&lt;br /&gt;
* [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
For filing issues / problems with microformats2-parsing, see:&lt;br /&gt;
* [[microformats2-parsing-issues]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Parse img alt ==&lt;br /&gt;
Per https://github.com/microformats/microformats2-parsing/issues/2 currently any u-* property (e.g. u-photo, u-featured) that extracts a 'src' attr from an img tag loses any associated 'alt' text alternative, and if at some point the consuming application wants to display that u-* property as an img, they have to either omit or synthesize a fake text alternative.&lt;br /&gt;
&lt;br /&gt;
It is desirable to somehow maintain that image src and alt association from the original markup, through the parsing process, up until a consuming application wishes to re-present the image with the text alternative.&lt;br /&gt;
&lt;br /&gt;
There are a number of possibilities / approaches here worth brainstorming:&lt;br /&gt;
&lt;br /&gt;
=== Include alt property in parent object ===&lt;br /&gt;
# explicit authoring: require the author to use a new 'p-alt' property on the image to cause parsing and extraction of the text alternative.&lt;br /&gt;
#* Problem(s): fails for multiple images, some of which may or may not have alt attrs or corresponding p-alt properties (and fragile, forgetting one p-alt throws off the parallel lists of u-* and p-alt).&lt;br /&gt;
# implicit p-alt: for every img that is parsed for a u-* property, the parse could generate a p-alt property with value.&lt;br /&gt;
#* Problem(s): fragile again for similar reasons, not all u-*s may be on img elements, or may not have alt attrs for all imgs in the source.&lt;br /&gt;
# implicit p-alt only for implied u-photo&lt;br /&gt;
#* This is better since there can only be one implied u-photo, and thus if there is a p-alt, it must be associated with the one u-photo&lt;br /&gt;
#* Problem(s): does not work for other u-* image properties e.g. u-featured&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;div class=&amp;quot;h-entry&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;http://example.com/photo.jpg&amp;quot; alt=&amp;quot;Example&amp;quot; class=&amp;quot;u-photo p-alt&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{&amp;quot;type&amp;quot;:[&amp;quot;h-entry&amp;quot;],&amp;quot;properties&amp;quot;:{&amp;quot;photo&amp;quot;:[&amp;quot;http://example.com/photo.jpg&amp;quot;],&amp;quot;alt&amp;quot;:[&amp;quot;Example&amp;quot;]}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Make photo property an object ===&lt;br /&gt;
1. use &amp;quot;h-image&amp;quot; on any u-* on img elements to imply a structure with paired photo and 'name' text alternative, e.g. &amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;img src=&amp;quot;a.jpg&amp;quot; alt=&amp;quot;text about a&amp;quot; class=&amp;quot;u-featured h-image&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt; which would result in a u-featured property with one value, a structure of an h-image with itself having implied properties of a u-photo of &amp;quot;a.jpg&amp;quot; and a p-name of the &amp;quot;text about a&amp;quot;. Similarly the author can use the object tag for the same result: &amp;lt;blockquote&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;object data=&amp;quot;a.jpg&amp;quot; class=&amp;quot;u-featured h-image&amp;quot;&amp;gt;text about a&amp;lt;/object&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt; In either case, the same microformats JSON would be generated, which is correct, as in both cases, there is an image with a fallback text alternative. The specific HTML used should not matter. The semantic of pairing the image with the text alternative is communicated the same way for both.&lt;br /&gt;
&lt;br /&gt;
* Challenge: requires author use of additional classname &amp;quot;h-image&amp;quot;.&lt;br /&gt;
* Benefit: does not require a change to the parsing algorithm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;img src=&amp;quot;http://example.com/eg.jpg&amp;quot; alt=&amp;quot;Photo of an example&amp;quot; class=&amp;quot;u-featured h-image&amp;quot;&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;
{&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;featured&amp;quot;:[{&lt;br /&gt;
    &amp;quot;type&amp;quot;:[&amp;quot;h-image&amp;quot;],&lt;br /&gt;
    &amp;quot;properties&amp;quot;:{&lt;br /&gt;
      &amp;quot;photo&amp;quot;:[&amp;quot;http://example.com/eg.jpg&amp;quot;],&lt;br /&gt;
      &amp;quot;name&amp;quot;:[&amp;quot;Photo of an example&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
  }]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt; [http://pin13.net/mf2/?id=20160719001154920]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. have u-* on an &amp;amp;lt;img&amp;gt; automatically create an object if there is a non-empty 'alt' attribute. &amp;lt;br/&amp;gt;If a u-* property is parsed on an &amp;amp;lt;img&amp;gt; element with a 'alt' attribute, then: &amp;lt;br/&amp;gt;&lt;br /&gt;
Create a structure similar to the e-content nested structure that provides the &amp;quot;value&amp;quot; as the URL, and an &amp;quot;alt&amp;quot; as the text alternative.&lt;br /&gt;
&lt;br /&gt;
* Advantage: no additional microformats markup needed from author&lt;br /&gt;
* Challenge: Many (most?) existing published u-photo properties will now return an object instead of a string, and consuming applications may not be expecting an object for a photo&lt;br /&gt;
** Mitigation: If this is done as an explicit parser library upgrade, consuming applications may decide when to take this parser upgrade and thus fix their u-photo handling to look for string or object before upgrading their microformats2 parsing library instance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;img src=&amp;quot;http://example.com/eg.jpg&amp;quot; alt=&amp;quot;Photo of an example&amp;quot; class=&amp;quot;u-featured&amp;quot;&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;
{&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;featured&amp;quot;:[{&lt;br /&gt;
    &amp;quot;value&amp;quot;:&amp;quot;http://example.com/eg.jpg&amp;quot;,&lt;br /&gt;
    &amp;quot;alt&amp;quot;:&amp;quot;Photo of an example&amp;quot;&lt;br /&gt;
  }]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
... more brainstorming needed&lt;br /&gt;
&lt;br /&gt;
=== img alt thoughts ===&lt;br /&gt;
Thoughts about img alt brainstorm proposals. Feel free to offer counterpoints with nested items and/or alternative preferences/opinions with (potentially multiple) top level items!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Tantek: I am '''leaning towards &amp;quot;Make photo property an object&amp;quot; brainstorm &amp;quot;2.&amp;quot;''' because it feels more &amp;quot;automatic&amp;quot; and thus provides lower friction to more accessibility. Less (author) work for &amp;quot;alt&amp;quot; information to get passed through to the JSON result, and thus more potentially re-usable by consuming applications that want to preserve or re-emit the pairing of a photo and its fallback text alternative.  -- [[User:Tantek|Tantek]] 00:53, 19 July 2016 (UTC)&lt;br /&gt;
* Aaron: I am leaning towards ''2'' because it takes less work on the part of publishers as well as consumers. From the publisher POV, if they add the alt attribute, that should be all they need to do, it seems odd to make them do additional work to make that show up in the parsed result. From the consumer side, some implementations will not need changing since when looking for a string value, they already use either the string directly or look for the &amp;quot;value&amp;quot; of the property if it's an object. Making consumers handle a new h- object just to read alt text seems overkill.&lt;br /&gt;
* Kevin: 2 makes sense to me as well, as this is a very specific need. If we want an image object with more substructure as 1 implies, that should be a new object type that follows the [[process]] - there is a case for that based on usage of figure/figcaption etc. but caption is not alt, and using name for it implies that it is. [[User:Kevin Marks|Kevin Marks]] 01:50, 19 July 2016 (UTC)&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When it looks like thoughts are naturally converging, we should take that emergent convergence back to the github thread for proper back/forth discussion and figuring out of details.&lt;br /&gt;
&lt;br /&gt;
https://github.com/microformats/microformats2-parsing/issues/2&lt;br /&gt;
&lt;br /&gt;
== Parse language information ==&lt;br /&gt;
Raised by [[User:VoxPelli|VoxPelli]] 18:04, 23 July 2015 (UTC)&lt;br /&gt;
* 2016-060: Update: and parse &amp;quot;id&amp;quot; attribute. [[User:Tantek|Tantek]] 16:39, 29 February 2016 (UTC) (see Additionally below)&lt;br /&gt;
* 2016-07-13: Update: created [https://github.com/microformats/microformats2-parsing/issues/3 GitHub issue] for this brainstorm [[User:VoxPelli|VoxPelli]] 14:34, 13 July 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
Currently there’s no way to tell the language of parsed microformats even if those microformats has been marked up with HTML &amp;quot;lang&amp;quot;-attributes.&lt;br /&gt;
&lt;br /&gt;
There are examples in the wild of people marking up pages in such a way:&lt;br /&gt;
&lt;br /&gt;
* [http://voxpelli.com/ VoxPelli.com] has a &amp;quot;lang&amp;quot;-attribute on the h-entry of his [http://voxpelli.com/2011/03/sista-dagen-p-good-old/ swedish articles] to signify that the article is swedish even though the rest of the site is english.&lt;br /&gt;
* Stephanie [http://climbtothestars.org/archives/2013/09/17/basic-bilingual-1-0-plugin-for-wordpress-blog-in-more-than-one-language/ uses a WordPress plugin] that adds summaries of other languages at the start of her content.&lt;br /&gt;
&lt;br /&gt;
Proposal is to add a new &amp;quot;lang&amp;quot; keyword to h-* and e-* objects so that the following example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot; lang=&amp;quot;sv&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name&amp;quot;&amp;gt;En svensk titel&amp;lt;/h1&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;e-content&amp;quot; lang=&amp;quot;en&amp;quot;&amp;gt;With an &amp;lt;em&amp;gt;english&amp;lt;/em&amp;gt; summary&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;e-content&amp;quot;&amp;gt;Och &amp;lt;em&amp;gt;svensk&amp;lt;/em&amp;gt; huvudtext&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;
Would be parsed into something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-entry&amp;quot;],&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;sv&amp;quot;,&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: [&amp;quot;En svensk titel&amp;quot;],&lt;br /&gt;
    &amp;quot;content&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;lang&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
        &amp;quot;html&amp;quot;: &amp;quot;With an &amp;lt;em&amp;gt;english&amp;lt;/em&amp;gt; summary&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;With an english summary&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;html&amp;quot;: &amp;quot;Och &amp;lt;em&amp;gt;svensk&amp;lt;/em&amp;gt; huvudtext&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;Och svensk huvudtext&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;
This was [http://indiewebcamp.com/irc/2015-07-23#t1437667712078 brainstormed on the IndieWebCamp IRC-channel] where the mentioned example came up.&lt;br /&gt;
&lt;br /&gt;
* Pull request for implementation in microformat-node added 2015-07-23 https://github.com/glennjones/microformat-node/pull/23&lt;br /&gt;
** Closed 2015-09-08 because the library has changed and parsing is now handled by microformat-shiv. New issue opened there: https://github.com/glennjones/microformat-shiv/issues/22&lt;br /&gt;
* Issue around implementation in php-mf2 added 2016-05-07 https://github.com/indieweb/php-mf2/issues/96&lt;br /&gt;
&lt;br /&gt;
Additionally: consider the same for &amp;quot;id&amp;quot; attributes (use-case: rel=feed local discovery of a nested h-feed on the home page), specifically, parsing the first instance of any &amp;quot;id&amp;quot; attribute (ignoring latter duplicate id attribute values on any subsequent elements).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And alternatively: consider parsing as &amp;quot;html-id&amp;quot; and &amp;quot;html-lang&amp;quot; prefixed properties in the parsed result, e.g.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=html4strict&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;h-entry&amp;quot; lang=&amp;quot;sv&amp;quot; id=&amp;quot;postfrag123&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1 class=&amp;quot;p-name&amp;quot;&amp;gt;En svensk titel&amp;lt;/h1&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;e-content&amp;quot; lang=&amp;quot;en&amp;quot;&amp;gt;With an &amp;lt;em&amp;gt;english&amp;lt;/em&amp;gt; summary&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;e-content&amp;quot;&amp;gt;Och &amp;lt;em&amp;gt;svensk&amp;lt;/em&amp;gt; huvudtext&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;
Would be parsed into something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-entry&amp;quot;],&lt;br /&gt;
  &amp;quot;html-id&amp;quot;: &amp;quot;postfrag123&amp;quot;,&lt;br /&gt;
  &amp;quot;html-lang&amp;quot;: &amp;quot;sv&amp;quot;,&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: [&amp;quot;En svensk titel&amp;quot;],&lt;br /&gt;
    &amp;quot;content&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;html-lang&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
        &amp;quot;html&amp;quot;: &amp;quot;With an &amp;lt;em&amp;gt;english&amp;lt;/em&amp;gt; summary&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;With an english summary&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;html&amp;quot;: &amp;quot;Och &amp;lt;em&amp;gt;svensk&amp;lt;/em&amp;gt; huvudtext&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;Och svensk huvudtext&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;
=== Language inheritance ===&lt;br /&gt;
&lt;br /&gt;
If the &amp;quot;lang&amp;quot; attribute is not specified for a particular element, it is inherited from the nearest parent (or from the HTTP Content-Language header)&lt;br /&gt;
&lt;br /&gt;
HTML5: https://www.w3.org/TR/html5/dom.html#the-lang-and-xml:lang-attributes&amp;lt;br&amp;gt;&lt;br /&gt;
HTML4: https://www.w3.org/TR/html4/struct/dirlang.html#h-8.1.2&lt;br /&gt;
&lt;br /&gt;
Proposal: Determine and include the inherited &amp;quot;lang&amp;quot; value on *every* microformat object that directly specifies a lang or that has an ancestor that does, e.g. if &amp;amp;lt;html lang=&amp;quot;en&amp;quot;&amp;amp;gt;, then every object in the output will have &amp;quot;lang&amp;quot;: &amp;quot;en&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Pronouns in different languages ===&lt;br /&gt;
&lt;br /&gt;
Language is also useful context when defining [[pronouns]], discussed a bit here[https://github.com/idno/Known/pull/1426#issuecomment-217626923].&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; lang=&amp;quot;en&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-possessive&amp;quot;&amp;gt;him&amp;lt;/span&amp;gt; /&lt;br /&gt;
  &amp;lt;span class=&amp;quot;p-x-pronoun-oblique&amp;quot;&amp;gt;his&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
would parse as &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-card&amp;quot;],&lt;br /&gt;
  &amp;quot;lang&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;x-pronoun-nominative&amp;quot;: [&amp;quot;he&amp;quot;],&lt;br /&gt;
    &amp;quot;x-pronoun-possessive&amp;quot;: [&amp;quot;him&amp;quot;],&lt;br /&gt;
    &amp;quot;x-pronoun-oblique&amp;quot;: [&amp;quot;his&amp;quot;]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It could also be useful to specify multiple languages within a single h-card (pardon me if I butcher Swedish pronouns)&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;span lang=&amp;quot;en&amp;quot; class=&amp;quot;p-x-pronoun-nominative&amp;quot;&amp;gt;he&amp;lt;/span&amp;gt; /&lt;br /&gt;
  &amp;lt;span lang=&amp;quot;en&amp;quot; class=&amp;quot;p-x-pronoun-possessive&amp;quot;&amp;gt;him&amp;lt;/span&amp;gt; /&lt;br /&gt;
  &amp;lt;span lang=&amp;quot;en&amp;quot; class=&amp;quot;p-x-pronoun-oblique&amp;quot;&amp;gt;his&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;span lang=&amp;quot;sv&amp;quot; class=&amp;quot;p-x-pronoun-nominative&amp;quot;&amp;gt;han&amp;lt;/span&amp;gt; /&lt;br /&gt;
  &amp;lt;span lang=&amp;quot;sv&amp;quot; class=&amp;quot;p-x-pronoun-possessive&amp;quot;&amp;gt;hans&amp;lt;/span&amp;gt; /&lt;br /&gt;
  &amp;lt;span lang=&amp;quot;sv&amp;quot; class=&amp;quot;p-x-pronoun-oblique&amp;quot;&amp;gt;honom&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which might parse as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;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;x-pronoun-nominative&amp;quot;: [{&amp;quot;lang&amp;quot;: &amp;quot;en&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;he&amp;quot;}, {&amp;quot;lang&amp;quot;: &amp;quot;sv&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;han&amp;quot;}],&lt;br /&gt;
    &amp;quot;x-pronoun-possessive&amp;quot;: [{&amp;quot;lang&amp;quot;: &amp;quot;en&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;him&amp;quot;}, {&amp;quot;lang&amp;quot;: &amp;quot;sv&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;hans&amp;quot;}],&lt;br /&gt;
    &amp;quot;x-pronoun-oblique&amp;quot;: [{&amp;quot;lang&amp;quot;: &amp;quot;en&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;his&amp;quot;}, {&amp;quot;lang&amp;quot;: &amp;quot;sv&amp;quot;, &amp;quot;value&amp;quot;: &amp;quot;honom&amp;quot;}]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or alternatively, we could introduce a new microformat h-x-pronoun to wrap a set of pronouns&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;div class=&amp;quot;p-x-pronoun h-x-pronoun&amp;quot; lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-nominative&amp;quot;&amp;gt;he&amp;lt;/span&amp;gt; /&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-possessive&amp;quot;&amp;gt;him&amp;lt;/span&amp;gt; /&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-oblique&amp;quot;&amp;gt;his&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;p-x-pronoun h-x-pronoun&amp;quot; lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-nominative&amp;quot;&amp;gt;han&amp;lt;/span&amp;gt; /&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-possessive&amp;quot;&amp;gt;hans&amp;lt;/span&amp;gt; /&lt;br /&gt;
    &amp;lt;span class=&amp;quot;p-oblique&amp;quot;&amp;gt;honom&amp;lt;/span&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;
&lt;br /&gt;
parsed as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=javascript&amp;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;x-pronoun&amp;quot;: [{&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-x-pronoun&amp;quot;],&lt;br /&gt;
      &amp;quot;lang&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;nominative&amp;quot;: [&amp;quot;he&amp;quot;],&lt;br /&gt;
        &amp;quot;possessive&amp;quot;: [&amp;quot;him&amp;quot;],&lt;br /&gt;
        &amp;quot;oblique&amp;quot;: [&amp;quot;his&amp;quot;]&lt;br /&gt;
      }&lt;br /&gt;
    }, {&lt;br /&gt;
      &amp;quot;type&amp;quot;: [&amp;quot;h-x-pronoun&amp;quot;],&lt;br /&gt;
      &amp;quot;lang&amp;quot;: &amp;quot;sv&amp;quot;,&lt;br /&gt;
      &amp;quot;properties&amp;quot;: {&lt;br /&gt;
        &amp;quot;nominative&amp;quot;: [&amp;quot;han&amp;quot;],&lt;br /&gt;
        &amp;quot;possessive&amp;quot;: [&amp;quot;hans&amp;quot;],&lt;br /&gt;
        &amp;quot;oblique&amp;quot;: [&amp;quot;honom&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;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Discussion:&lt;br /&gt;
* [[User:Kylewm|Kylewm]] Including the &amp;quot;lang&amp;quot; attribute in h- and e- properties makes a ton of sense to me.&lt;br /&gt;
* [[User:Kylewm|Kylewm]] I like the idea of introducing an h-x-pronoun container that can define all the different pronoun forms for a particular language&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Canonicalization of datetime output ==&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience.&lt;br /&gt;
&lt;br /&gt;
It would be useful to choose a (more) uniform output format for datetimes to make it easier for users of the parser to consume datetimes. Microformats2 parsers already do sophisticated pattern matching to recognize date vs. time vs. datetimes, so converting this to any specific format should not add overhead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
Specifically: &lt;br /&gt;
* Choose either 'T' or space as the date/time separator.&lt;br /&gt;
** Prefer space as it is more human friendly/readable, which matters even for syntaxes/formats, as human still develop, debug them. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
* Choose either +XXYY or +XX:YY as the timezone specification (and convert 'Z' to +0000).&lt;br /&gt;
** Would appreciate some study / input here as to which timezone offset syntax is more human friendly. I lean slightly toward +/-NNNN (without the colon) because in the context of seeing a time, leaving out the colon makes it less likely the offset will be confused for a time. E.g. &amp;quot;07:00-08:00&amp;quot; looks like 7-8am, even if it meant 07:00 in PST. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** Space is fine - consensus [[2015-01-20]] meetup.&lt;br /&gt;
* Parsers should ''not'' attempt make datetimes more exact than specified. They should not add time, seconds, or timezone if omitted in the original. [[User:Kylewm|Kylewm]] 04:02, 14 May 2014 (UTC)&lt;br /&gt;
** Agreed. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** or month, day per Tom Morris&lt;br /&gt;
** consensus [[2015-01-20]] meetup&lt;br /&gt;
&lt;br /&gt;
* Counterpoint: PHP's builtin date parsing does not require strict formatting. And the equivalent functionality for Python is provided by the widely used python-dateutil library. [[User:Kylewm|Kylewm]] 19:02, 14 May 2014 (UTC)&lt;br /&gt;
** However we cannot (must not) depend on either PHP or Python's &amp;quot;smart&amp;quot; &amp;quot;fixing&amp;quot; or Postelian &amp;quot;liberal handling&amp;quot;, or any other language/framework's for that matter, as they all differ in how &amp;quot;intelligent&amp;quot; they are. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Perhaps just provide a guideline for these based on the above consensus.&lt;br /&gt;
&lt;br /&gt;
== Add meta http-equiv to microformats2 parsing model ==&lt;br /&gt;
Status: disagreement, awaiting implementation attempt/experience.&lt;br /&gt;
&lt;br /&gt;
Similar to document level parsing of &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes, it makes sense simultaneously to parse &amp;lt;code&amp;gt;&amp;amp;lt;meta http-equiv&amp;amp;gt;&amp;lt;/code&amp;gt; elements, perhaps treating &amp;quot;Status&amp;quot; in a special way (only using first number (sequence of digits) for its &amp;quot;value&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Use case: IndieWeb &amp;quot;deleted&amp;quot; indication inline in content for static file services that don't support HTTP return codes.&lt;br /&gt;
* http://indiewebcamp.com/deleted#HTML_meta_http-equiv_for_status&lt;br /&gt;
&lt;br /&gt;
HTTP Header example:&lt;br /&gt;
* &amp;lt;samp&amp;gt;Content-Type: text/html; charset=utf-8&amp;lt;/samp&amp;gt;&lt;br /&gt;
HTML equivalent: &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=utf-8&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Related:&lt;br /&gt;
* https://www.w3.org/International/O-HTTP-charset&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Interesting thought. Are you suggesting a top level &amp;quot;http-equivs:&amp;quot; collection similar to &amp;quot;rels:&amp;quot; in the parsed output? Should we consider &amp;quot;metas:&amp;quot; instead or in addition? [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
* What's the use case for this? Also, http-equiv on its own is useless. http-equiv is only a supplement to the data stored in headers. And headers aren't always there: what happens in the context of someone debugging a page who pastes the source into the textarea of an mf2 parser? Without a compelling use case for including headers (and then over-riding some of them with http-equivs), I'm not sure why an implementor want to do this. —[[User:TomMorris|Tom Morris]] 00:25, 8 May 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E.g. from https://gist.github.com/aaronpk/10297489&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;Status&amp;quot; content=&amp;quot;410 GONE&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&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;rels&amp;quot;: {},&lt;br /&gt;
 &amp;quot;http&amp;quot;: {&lt;br /&gt;
 &amp;quot;status&amp;quot;: 410&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;
* Maybe make this an optional pass in the parser? - Tom Morris [[2015-01-20]]&lt;br /&gt;
* For now, don't bother with metas until someone provides a use-case. Tom Morris&lt;br /&gt;
* Agreed on both counts. [[User:Tantek|Tantek]] 06:56, 21 January 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==MIME type==&lt;br /&gt;
See [[microformats2-mime-type]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Other Interpretation Parsing Notes==&lt;br /&gt;
Note: most of these need to be written up as separate [[microformats2-parsing-issues]]&lt;br /&gt;
&lt;br /&gt;
Author: [[User:BenWard|Ben Ward]]&lt;br /&gt;
&lt;br /&gt;
[[microformats-2|Microformats 2]] proposes a new, all encompassing syntax modification of [[microformats-2-prefixes|prefixes]] that will allow microformats to be parsed from pages by processors without prior knowledge of a vocabulary. The core components of this model are quite simple, are quite simple to implement, but there are a number of conflicts that emerge with the functionality of existing microformats parsers that need to be handled. This page documents a proposed model to separate these concerns clearly in a way that can be applied to the documentation of generic microformats parsing rules, and the documentation of individual vocabularies.&lt;br /&gt;
&lt;br /&gt;
Collection of other unresolved parsing issues in a generic model:&lt;br /&gt;
&lt;br /&gt;
This is good material for documenting as [[microformats-2-issues]], [[microformats-2-faq]], and perhaps some of the more technical details in [[microformats-2-parsing-faq]].&lt;br /&gt;
&lt;br /&gt;
* The include pattern references other elements from elsewhere in a document. A generic parser needs to track IDs and fill them in after walking the DOM. (also, &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; if adopted.)&lt;br /&gt;
** The current thinking per [[microformats-2-brainstorming]] is to adopt &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; and drop the [[include-pattern]]. [[User:Tantek|Tantek]]&lt;br /&gt;
* Will &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; always map to an &amp;lt;code&amp;gt;item&amp;lt;/code&amp;gt; property name?&lt;br /&gt;
** No, &amp;lt;code&amp;gt;itemref&amp;lt;/code&amp;gt; maps to one or more elements by ids, and their children. Those referenced elements may have property class names themselves, or they may contain elements that do. [[User:Tantek|Tantek]]&lt;br /&gt;
* [[hAtom]] implies &amp;lt;code&amp;gt;author&amp;lt;/code&amp;gt; from an hCard in a page that uses an &amp;lt;code&amp;gt;address&amp;lt;/code&amp;gt; element. This requires format knowledge, but a generic parser does not currently track the element type of a property node. Should it?&lt;br /&gt;
** It should not. element-specific handling (e.g. using &amp;quot;alt&amp;quot; from img, and &amp;quot;title&amp;quot; from abbr) is completely done at parse time. The JSON data model does not reflect which element type or attribute the value came from. Additionally, [[hAtom]] is an example where we created far too many vocabulary-specific rules, in practice they're not necessary, and only complicate the microformat for both publisher understanding and parser implementation. [[User:Tantek|Tantek]]&lt;br /&gt;
* [[hAtom]] defines that the highest level heading within an entry implies &amp;lt;code&amp;gt;entry-title&amp;lt;/code&amp;gt;. This particular optimisation might be better off dead.&lt;br /&gt;
** Agreed, this is gone in microformats 2. [[User:Tantek|Tantek]]&lt;br /&gt;
* [[hAtom]] defines that permalinks be parsed from &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; attributes, not &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;&lt;br /&gt;
** In practice this has been one of the more problematic/error prone aspects of hAtom implementations, and it's also inconsistent with other microformats (although [[hReview]] tried to use both rel permalinks and &amp;quot;url&amp;quot;). The dependence upon [[rel-bookmark]] for permalinks is dropped in h-atom in preference to re-using &amp;quot;u-url&amp;quot; and &amp;quot;u-uid&amp;quot;. [[User:Tantek|Tantek]]&lt;br /&gt;
* [[XFN]] is entirely built on &amp;lt;code&amp;gt;rel&amp;lt;/code&amp;gt; (although, has various other differences from structural microformats, as do vote-links, so perhaps are excluded from this discussion and will always be handled by dedicated parsers/queries regardless?)&lt;br /&gt;
** The best (easiest and most reliable) use of 'rel' microformats in practice is when they are orthogonal to 'class' microformats. This is true both with [[XFN]] and some newer [[existing-rel-values|rel values]] like [[rel-author]]. In addition, it was very clear at the recent [[schema.org]] workshop's syntax session that RDFa's decision to apparently arbitrarily mix use of 'rel' and 'property' attributes for specifying different types of properties (it wasn't clear to people in the room when you use which for what) has caused a high degree of confusion among publishers and thus high error-rates. Thus if anything we should learn from both the mistakes of RDFa and our own experiences with even very deliberate/specific mixing of rel microformats in class microformats, and keep them defined as separate orthogonal building blocks that work together, but don't depend on each other. [[User:Tantek|Tantek]]&lt;br /&gt;
*** Relatedly to this: &amp;lt;code&amp;gt;rel-tag&amp;lt;/code&amp;gt; in hAtom. --[[User:BenWard|BenWard]] 06:50, 5 October 2011 (UTC)&lt;br /&gt;
**** Yes, and two related things here. First, despite my (and others') objection and (past) interoperable post/entry-specific treatment by Technorati and Ice Rocket, Hixie has redefined rel-tag in [[HTML5]] to mean applying to the whole page, not a single post. Second, I've explicitly added 'p-category' to the draft 'h-atom' vocabulary in [[microformats-2]]. [[User:Tantek|Tantek]] 07:12, 5 October 2011 (UTC)&lt;br /&gt;
* HTML's &amp;lt;code&amp;gt;time&amp;lt;/code&amp;gt; element includes an optional &amp;lt;code&amp;gt;pubdate&amp;lt;/code&amp;gt; attribute. Simply: We should parse this as &amp;lt;code&amp;gt;dt-published&amp;lt;/code&amp;gt;. --[[User:BenWard|BenWard]] 06:12, 10 October 2011 (UTC)&lt;br /&gt;
** *If* there is even some reasonable data on actual use of the &amp;quot;pubdate&amp;quot; attribute (I don't think there is, frankly, especially with the removal of the algorithm to produce Atom from HTML5), then we could consider parsing &amp;quot;pubdate&amp;quot; as backwards compatible option for &amp;quot;dt-published&amp;quot;. As a general rule, however, it is bad (demonstrably/experienced) design to depend on additional attributes (c.f. RDFa confusion over &amp;quot;property&amp;quot; vs. &amp;quot;rel&amp;quot;), especially for an instance where no additional attribute is necessary. I would leave this out for now until there is non-trivial (more than just test pages or folks who've written HTML5 books, ahem) use in the wild. When there is such use in the wild, it should be documented on a wiki page. We don't want to encourage more complex (additional attribute) publishing as a result of supporting it. [[User:Tantek|Tantek]] 12:12, 10 October 2011 (UTC)&lt;br /&gt;
* [[value-class-pattern]]: In microformats-2, since there are no sub-properties, there will presumably no-longer be a 'value' property in any parsed model. Properties such as 'tel &amp;gt; type' in hCard are, as I recall, deprecated due to underuse anyway, so 'tel &amp;gt; value' becomes redundant. (There's also potentially some clarification around 'price &amp;gt; value' in hListing, whereby value was used in a pattern. So, what does this mean for value class parsing, with regard to value-title patterns and date separation patterns. Are we looking for a 'p-value' and 'p-value-title' classname, but treating them specially (excluding them from regular property parsing.) Or, are we giving them a special prefix (v-text, v-title? That seems confusing, but could be a concept.) I'm fine with p- for both, and just having the parser ignore them since they're special, but need clarification and naming confirmation. --[[User:BenWard|BenWard]] 09:35, 10 October 2011 (UTC)&lt;br /&gt;
** A few things:&lt;br /&gt;
*** 1. Yes, no more subproperties. 'tel' becomes just 'p-tel'. If there is demand for a structured 'tel' value, then we can use that demand (and research into publishing in practice) to brainstorm and create an 'h-tel' structured telephone number (with perhaps fields like 'type', 'extension', some indication of it being local dialing (an extra 0 in some countries) or international dialing, etc.) Or, we address the different 'tel' types as their own flat properties (again as justified by research), e.g. perhaps 'p-tel-fax', or 'p-tel-mobile'. Something for hcard-2-brainstorming.&lt;br /&gt;
*** 2. For prices, e.g. hListing, either we're going to need to encode how to parse monetary amounts including monetary symbols, or consider creating an 'h-price' structured price. Not sure what the right answer is here, again, will need to be informed by analysis of documented actual price publication practices.&lt;br /&gt;
*** 3. We should avoid introducing a new prefix 'v-' just for value-class-pattern. As we've noted elsewhere, each new prefix adds complexity and should be avoided without substantial advantage.&lt;br /&gt;
*** 4. Using 'p-value-title' is strange, as it would be an exception to 'p-' parsing, since it would get the value from the 'title' attribute whereas 'p-' properties don't normally do that (exception: abbr).&lt;br /&gt;
*** 5. Using 'p-value' is also strange, as it wouldn't generate a 'value' property in the JSON data model.&lt;br /&gt;
*** 6. Class name 'value-title' is already sufficiently prefixed - we've found or even heard of no collisions in practice.&lt;br /&gt;
*** 7. Class name 'value' can, by its simpler naming nature, be expected to potentially collide with other web designer class name usage though we have no documentation/mention thereof. We could consider a renaming, or providing of alternative, such as 'value-string', or 'value-content', etc. However, let's keep that as a backup plan to use only if/when evidence is presented that we need to.&lt;br /&gt;
** Conclusions: for now, in microformats-2, keep using 'value' and 'value-title' as defined in the [[value-class-pattern]], and add the additional (obvious) interpretation that [[value-class-pattern#Date_and_time_parsing|value class pattern: date and time parsing]] applies to all 'dt-' properties. - [[User:Tantek|Tantek]] 12:12, 10 October 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== incorporated 2015-05-28 ==&lt;br /&gt;
The following brainstorms were incorporated 2015-05-28.&lt;br /&gt;
&lt;br /&gt;
== more information for alternates ==&lt;br /&gt;
Raised 2015-04-24 by [[User:Kevin Marks|Kevin Marks]]&lt;br /&gt;
&lt;br /&gt;
The existing &amp;lt;code&amp;gt;alternate&amp;lt;/code&amp;gt; parsing is omitting &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; - that should be added.  The &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; would make sense to add here too.&lt;br /&gt;
&lt;br /&gt;
Use-case: labels for presenting alternates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* +1 Makes sense. [[User:Tantek|Tantek]] 03:41, 25 April 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== more information for rel-based formats ==&lt;br /&gt;
Raised 2015-04-18 by [[User:Kevin Marks|Kevin Marks]]&lt;br /&gt;
&lt;br /&gt;
Related github test suite issue: https://github.com/microformats/tests/issues/16&lt;br /&gt;
&lt;br /&gt;
Several rel-based formats have additional information that is useful beyond the link itself, which is all we capture at the moment. As I am trying to update the Universal feedparser to support mf2 based I will show examples from the [https://github.com/kevinmarks/feedparser/tree/365623a9470e99246f393a8c1f49a0db567826b8/feedparser/tests/microformats testcases] there.&lt;br /&gt;
&lt;br /&gt;
The main change is to add a &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; entry for more information about the attributes and text of the urls pointed to by rel's in the document&lt;br /&gt;
&lt;br /&gt;
A fork of mf2py that implements these changes is at https://github.com/kevinmarks/mf2py&lt;br /&gt;
=== rel-tag ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;tag&amp;quot; href=&amp;quot;http://del.icio.us/tag/tech&amp;quot;&amp;gt;Technology&amp;lt;/a&amp;gt; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
currently parses to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;{&amp;quot;rels&amp;quot;: {&amp;quot;tag&amp;quot;: [&amp;quot;http://del.icio.us/tag/tech&amp;quot;]}, &amp;quot;items&amp;quot;: []} &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This loses the link text, which is useful as a label. &lt;br /&gt;
&lt;br /&gt;
We add a &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; element to the parsed output with this extra data that can be looked up from the rels, which doesn't break backward compatibility and works better with xfn (see below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;tag&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://del.icio.us/tag/tech&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://del.icio.us/tag/tech&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;tag&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;Technology&amp;quot;&lt;br /&gt;
        }&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;
=== xfn ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;coworker&amp;quot; href=&amp;quot;http://example.com/johndoe&amp;quot;&amp;gt;John Doe&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
currently parses to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;{&amp;quot;rels&amp;quot;: {&amp;quot;coworker&amp;quot;: [&amp;quot;http://example.com/johndoe&amp;quot;]}, &amp;quot;items&amp;quot;: []}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This loses the link text, which is the person's name. Suggested output using the urls object:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;coworker&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/johndoe&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://example.com/johndoe&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;coworker&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;John Doe&amp;quot;&lt;br /&gt;
        }&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;
with multiple xfn values &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;coworker friend&amp;quot; href=&amp;quot;http://example.com/johndoe&amp;quot;&amp;gt;John Doe&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
we get this: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;coworker&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/johndoe&amp;quot;&lt;br /&gt;
        ], &lt;br /&gt;
        &amp;quot;friend&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/johndoe&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://example.com/johndoe&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;coworker&amp;quot;, &lt;br /&gt;
                &amp;quot;friend&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;John Doe&amp;quot;&lt;br /&gt;
        }&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;
=== rel-enclosure ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;enclosure&amp;quot; href=&amp;quot;http://example.com/movie.mp4&amp;quot; type=&amp;quot;video/mpeg&amp;quot; title=&amp;quot;real title&amp;quot;&amp;gt;my movie&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
currently parses to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;'{&amp;quot;rels&amp;quot;: {&amp;quot;enclosure&amp;quot;: [&amp;quot;http://example.com/movie.mp4&amp;quot;]}, &amp;quot;items&amp;quot;: []}'&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This loses the link text,  which is the title and the attributes which give type. Suggested output:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;rels&amp;quot;: {&lt;br /&gt;
        &amp;quot;enclosure&amp;quot;: [&lt;br /&gt;
            &amp;quot;http://example.com/movie.mp4&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }, &lt;br /&gt;
    &amp;quot;items&amp;quot;: [], &lt;br /&gt;
    &amp;quot;rel-urls&amp;quot;: {&lt;br /&gt;
        &amp;quot;http://example.com/movie.mp4&amp;quot;: {&lt;br /&gt;
            &amp;quot;rels&amp;quot;: [&lt;br /&gt;
                &amp;quot;enclosure&amp;quot;&lt;br /&gt;
            ], &lt;br /&gt;
            &amp;quot;text&amp;quot;: &amp;quot;my movie&amp;quot;, &lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;video/mpeg&amp;quot;, &lt;br /&gt;
            &amp;quot;title&amp;quot;: &amp;quot;real title&amp;quot;&lt;br /&gt;
        }&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;
This generalises to other rel's too, such as [[rel-feed]] and [[rel-alternate]] that have type, lang etc attributes.&lt;br /&gt;
&lt;br /&gt;
(updated to include changes from feedback below) [[User:Kevin Marks|Kevin Marks]] 22:13, 26 April 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== attributes parsed ===&lt;br /&gt;
Attributes currently parsed are:&lt;br /&gt;
* &amp;lt;code&amp;gt;hreflang&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
* &amp;lt;code&amp;gt;media&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
* &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
* &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; for alternate and enclosure&lt;br /&gt;
&lt;br /&gt;
Attributes we may consider parsing if we have a use case are &lt;br /&gt;
* &amp;lt;code&amp;gt;sizes&amp;lt;/code&amp;gt; for icon - need use-case documentation&lt;br /&gt;
* &amp;lt;code&amp;gt;coords&amp;lt;/code&amp;gt; for area - possibly for people tagging - no examples yet, and unnecessary as people-tagging requires using h-* microformats&lt;br /&gt;
* &amp;lt;code&amp;gt;shape&amp;lt;/code&amp;gt; for area - possibly for people tagging - no examples yet, and unnecessary as people-tagging requires using h-* microformats&lt;br /&gt;
&lt;br /&gt;
In addition there is a special attribute &amp;lt;s&amp;gt;&amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; &amp;lt;/s&amp;gt;&amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; which is the text contents of the link, which is useful in rel-tag rel-enclosure and xfn, and in alternate when used for feeds. It's also clarifying for rel-me links. &lt;br /&gt;
&lt;br /&gt;
Tantek [http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=today#c79057 suggests] we use &amp;lt;code&amp;gt;textContent&amp;lt;/code&amp;gt; for this instead, and make it a single string, not a list as &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; is elsewhere in mf2 parsing&lt;br /&gt;
* Update: &amp;quot;text&amp;quot; is good enough, and &amp;quot;textContent&amp;quot; is ugly camelCase. [[User:Tantek|Tantek]] 04:39, 29 May 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== feedback on more rel info ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;quot;name&amp;quot; is bad because it misleadingly conflates with use of &amp;quot;name&amp;quot; elsewhere in microformats2.&lt;br /&gt;
#* Suggested alternative: [https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent textContent] - since that's literally what is being returned there. [[User:Tantek|Tantek]] 02:35, 25 April 2015 (UTC)&lt;br /&gt;
#** as all other mf2 keys are lowercase-with-hyphens, [http://logs.glob.uno/?c=freenode%23microformats&amp;amp;s=today#c79101 Tantek suggests] 'text' as that isn't going to be an html [[User:Kevin Marks|Kevin Marks]] 07:28, 25 April 2015 (UTC)&lt;br /&gt;
# no need for array for &amp;quot;name&amp;quot;/textContent - since there is always only one at most&lt;br /&gt;
#* E.g. should be &amp;quot;textContent&amp;quot;: &amp;quot;my movie&amp;quot; [[User:Tantek|Tantek]] 02:35, 25 April 2015 (UTC)&lt;br /&gt;
#* Update: &amp;quot;text&amp;quot;: &amp;quot;my movie&amp;quot; [[User:Tantek|Tantek]] 04:39, 29 May 2015 (UTC)&lt;br /&gt;
# &amp;quot;urls&amp;quot; key is misleading - implies all URLs in the document, which is neither true, nor desired (takes much more parsing time and work and code)&lt;br /&gt;
#* Suggested alternative: &amp;quot;rel-urls&amp;quot;. And open to better alternatives too. [[User:Tantek|Tantek]] 02:35, 25 April 2015 (UTC)&lt;br /&gt;
#** If we are trying to extend the number of properties retuned from a rel without breaking the old structure why don't we call the new structure something like &amp;quot;rels-extended&amp;quot; [[User:GlennJones|Glenn Jones]] 12:29, 1 June 2015 (UTC)&lt;br /&gt;
#*** Extension is not the point, but rather to use them complementary. One structure for look-up of any rel value, hence &amp;quot;rels&amp;quot;, which returns you a list of URLs. Then you can lookup those URLs in the new mapping, by URL, hence it is called &amp;quot;rel-urls&amp;quot; - that's the point to use them in conjunction and that's why rel-urls is named what it is. [[User:Tantek|Tantek]] 22:03, 1 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
# Why is the structure of  &amp;quot;rel-urls&amp;quot; different to the &amp;quot;alternates&amp;quot; structure. Should the &amp;quot;url&amp;quot; not just be added as a property and not as a key. Creating two data structures for one type of object seems inconsistent. It adds cognitive load to anyone trying to understand the JSON structure [[User:GlennJones|Glenn Jones]] 12:29, 1 June 2015 (UTC)&lt;br /&gt;
#* I was trying to avoid breaking the existing &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; structure and use of it - I did implement a variant that put the structure inside rels, and it became cumbersome and repetitive where there were multiple rels on a url (xfn cases). Denormalising as properties of the URL made more sense. It also dedupes if there is repetitive linking to the same URL, eg a series of posts with rel-author on each. [[User:Kevin Marks|Kevin Marks]] 20:05, 1 June 2015 (UTC)&lt;br /&gt;
# If the rel is a &amp;quot;tag&amp;quot; then the main value we need to return should be the last path component of the URL, not the link text? Should we add another output property ie &amp;quot;tag&amp;quot; [[User:GlennJones|Glenn Jones]] 12:29, 1 June 2015 (UTC)&lt;br /&gt;
#* No need to return last path segment of the URL, because the URL is already there - and that's just a library/framework utility function to get the last path segment of a URL. [[User:Tantek|Tantek]] 22:03, 1 June 2015 (UTC)&lt;br /&gt;
# As currently described, the URL from &amp;lt;code&amp;gt;alternates&amp;lt;/code&amp;gt; is repeated in the &amp;lt;code&amp;gt;rel-urls&amp;lt;/code&amp;gt; structure. If we are doing this, surely &amp;lt;code&amp;gt;alternate&amp;lt;/code&amp;gt; should be in &amp;lt;code&amp;gt;rels&amp;lt;/code&amp;gt; too? I assumed a mapping between them. [[User:Kevin Marks|Kevin Marks]] 20:05, 1 June 2015 (UTC)&lt;br /&gt;
## edit showing this variant: http://microformats.org/wiki/index.php?title=microformats2-parsing&amp;amp;oldid=65021#parse_a_hyperlink_element_for_rel_microformats&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
#* Yes it makes sense to drop &amp;quot;alternates&amp;quot; assuming the backcompat impact is low, put alternates in &amp;quot;rels&amp;quot; along with everything else, and direct people to use rels and rel-urls for alternates functionality. Evidence this is an acceptable even preferable approach.[http://indiewebcamp.com/irc/2015-06-01/line/1433195247005] Will add an issue accordingly. [[User:Tantek|Tantek]] 22:03, 1 June 2015 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Incorporated 2015-06-06 ==&lt;br /&gt;
&lt;br /&gt;
== Nested h-* objects' &amp;quot;value&amp;quot; property ==&lt;br /&gt;
Status: resolved, resolution iterated, one real world implementation proven implementability, incorporated&lt;br /&gt;
* 2015-06-06 incorporated into [[microformats2-parsing]]&lt;br /&gt;
&lt;br /&gt;
Raised 2015-01-06 by [[User:Kylewm]];&lt;br /&gt;
&lt;br /&gt;
If a child element has a microformat (h-*) and is a property element (p-*, u-*, dt-*, e-*), the parser will add a &amp;quot;value&amp;quot; property to the resulting object. The value should attempt to be a useful representation of the object for consumers that do not have semantic knowledge of the particular h-* type. Ref: [[microformats2-parsing#parse_an_element_for_class_microformats]].&lt;br /&gt;
&lt;br /&gt;
To determine the &amp;quot;value&amp;quot;, we parse the property element simply (as if it did not have a h-* class), which works well for simple h-* objects, e.g. &amp;lt;code&amp;gt;&amp;lt;a class=&amp;quot;u-like-of h-cite&amp;quot; href=&amp;quot;...&amp;quot;&amp;gt;...&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* To handle more complex microformats, I propose that &amp;quot;value&amp;quot; for a p-* property element take on the first explicit &amp;quot;name&amp;quot; property of the nested microformat, and for a u-* property, the first explicit &amp;quot;url&amp;quot; property. Parsing will fall back on the current rules if an explicit property does not exist.&lt;br /&gt;
** This makes sense to me, and fits with the use-cases and examples I've seen. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** A similar (possibly simpler?) formulation would use the implied name and url rules to determine the &amp;quot;value&amp;quot; for p-* and u-* properties respectively&lt;br /&gt;
*** I don't think that's needed, as there are already implied rules on a property that should handle that. I'd start with just the &amp;quot;first explicit&amp;quot; scoping to be more conservative, and then see if we find any use-cases that (and existing implied rules) don't/doesn't catch. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
**** Agreement at [[2015-01-20]] meetup.&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
&lt;br /&gt;
For example:&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;div class=&amp;quot;u-in-reply-to h-cite&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;a class=&amp;quot;p-author h-card&amp;quot; href=&amp;quot;http://example.com&amp;quot;&amp;gt;Example Author&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;a class=&amp;quot;p-name u-url&amp;quot; href=&amp;quot;http://example.com/post&amp;quot;&amp;gt;Example Post&amp;lt;/a&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;
The nested u-in-reply-to object would parse as&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;quot;in-reply-to&amp;quot;: [{ &lt;br /&gt;
  &amp;quot;type&amp;quot;: [&amp;quot;h-cite&amp;quot;],&lt;br /&gt;
  &amp;quot;properties&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: [&amp;quot;Example Post&amp;quot;],&lt;br /&gt;
    &amp;quot;url&amp;quot;: [&amp;quot;http://example.com/post&amp;quot;],&lt;br /&gt;
    &amp;quot;author&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;url&amp;quot;: [&amp;quot;http://example.com&amp;quot;], &lt;br /&gt;
        &amp;quot;name&amp;quot;: [&amp;quot;Example Author&amp;quot;]&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;value&amp;quot;: &amp;quot;Example Author&amp;quot;&lt;br /&gt;
    }],&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;value&amp;quot;: &amp;quot;http://example.com/post&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;
where the outer &amp;quot;value&amp;quot; gets the in-reply-to h-cite's u-url property, and the inner &amp;quot;value&amp;quot; gets the author's p-name property.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;discussion&amp;quot;&amp;gt;&lt;br /&gt;
* Because there are no implied properties of the dt-* and e-* types, and no obvious defaults, the value rules for these types would not change.&lt;br /&gt;
** A possibility for dt-* h-*: The dt-* could take either the first dt-* of the h-*, or (perhaps if no dt-* in the h-*,) the first &amp;lt;code&amp;gt;&amp;amp;lt;time&amp;amp;gt;&amp;lt;/code&amp;gt; element inside. [[User:Tantek|Tantek]] 19:31, 6 January 2015 (UTC)&lt;br /&gt;
** First dt-* seems reasonable, predictable, and usable. Consensus at [[2015-01-20]] meetup.&lt;br /&gt;
** Update 2015-05-29: no known use-cases for first dt-* or first e-*, and implementing that &amp;quot;would require some refactoring&amp;quot; (in mf2py at least per kylewm), thus until there's a use-case for first dt-*/e-* inside, let's treat &amp;quot;dt-* h-*&amp;quot; and &amp;quot;e-* h-*&amp;quot; as before. [[User:Tantek|Tantek]] . In particular:&lt;br /&gt;
*** p-* h-* - value from first &amp;quot;name&amp;quot; as proposed above&lt;br /&gt;
*** u-* h-* - value from first &amp;quot;url&amp;quot; as proposed above&lt;br /&gt;
*** e-* h-* - value is already defined for e-* parsing, nothing special here&lt;br /&gt;
*** dt-* h-* - value from normal dt-* parsing - nothing special.&lt;br /&gt;
*** +1 totally agree, let's wait for use cases of e-* dt-* [[User:Kylewm|Kylewm]] 19:44, 29 May 2015 (UTC)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Implemented in mf2py 2015-06-01 https://github.com/tommorris/mf2py/commit/edc895ef5a780bcee654e6644a688688934517b0&lt;br /&gt;
* Added to microformats test suite (experimental) 2015-06-01 https://github.com/microformats/tests/commit/90c8a7d8e96c7160036a298e13f16d9ddaec218e&lt;br /&gt;
&lt;br /&gt;
== see also ==&lt;br /&gt;
* [[microformats2]]&lt;br /&gt;
* [[microformats2-brainstorming]]&lt;br /&gt;
* [[microformats2-prefixes]]&lt;br /&gt;
* [[microformats2-faq]]&lt;br /&gt;
* [[microformats2-issues]]&lt;br /&gt;
* [[microformats2-parsing-faq]]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=h-card&amp;diff=65642</id>
		<title>h-card</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=h-card&amp;diff=65642"/>
		<updated>2016-06-27T23:10:16Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* dt-bday */&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;
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;http://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;http://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;http://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;http://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;
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;''' - universally unique identifier, typically 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 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;
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]] and the #microformats [[irc]] channel on irc.freenode.net.&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 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, 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;
=== 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;
* 1985-04 for April 1985&lt;br /&gt;
* 1985 for the year 1985&lt;br /&gt;
* --0412 for April 12th without specifying a year.&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;
* [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;
* [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;
* '''[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;
== Additions ==&lt;br /&gt;
We've tried very hard with h-card to stay compatible with vCard4, 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>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65467</id>
		<title>microformats2-parsing-issues</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65467"/>
		<updated>2016-04-12T19:09:01Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* issues */ add img fallback issue&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;
=== img fallback in p- ===&lt;br /&gt;
Trying to make an author h-card without too many extra elements I first did:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;div class=&amp;quot;p-author h-card&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;/&amp;quot; class=&amp;quot;p-org p-name&amp;quot;&amp;gt;&amp;lt;img class=&amp;quot;u-logo&amp;quot; src=&amp;quot;/static/logo.jpg&amp;quot; &amp;gt;mention.tech&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
rather than:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;div class=&amp;quot;p-author h-card&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;/&amp;quot; class=&amp;quot;p-org p-name&amp;quot;&amp;gt;&amp;lt;img class=&amp;quot;u-logo&amp;quot; src=&amp;quot;/static/logo.jpg&amp;quot; alt=&amp;quot;&amp;quot;&amp;gt;mention.tech&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I was surprised that the p-name and p-org  took the src and the plaintext and concatenated them giving &amp;lt;code&amp;gt;http://mention-tech.appspot.com/static/logo.jpgmention.tech&amp;lt;/code&amp;gt;, though that is the current spec (a separate php-mf2 bug ignored the empty alt when I added it).&lt;br /&gt;
&lt;br /&gt;
While this is what the spec says, I can't think of a scenario where concatenating a string to a URL gives a useful result. Instead, if we fallback on the src of an img due to it having no alt I propose we put a space on beginning and end. As whitespace is stripped from beginning and end of p- values, this should still give the url in the simplest case, but avoid creating nonsensical URLs in cases like this.&lt;br /&gt;
&lt;br /&gt;
=== de-dupe URLs? ===&lt;br /&gt;
Currently, Known templates end up linking to the author's url in the h-card twice. This leads to duplicate URLs in the parsed output, which make jf2 conversion insert a children element.&lt;br /&gt;
Should we be deduping URLs? Or is this a GIGO issue?&lt;br /&gt;
&lt;br /&gt;
=== unicode generation in JSON ===&lt;br /&gt;
Currently we will convert HTML entities into unicode as part of the parsing process. However, these and other non-asciicharacters can be output as escaped unicode in the generated JSON&lt;br /&gt;
Broadly this is OK, as we assume JSON parsers should be able to handle this accordingly.&lt;br /&gt;
However, it does mean the text is somewhat ambiguous, and unclear, especially when complex unicode codepoints like emoji are involved.&lt;br /&gt;
&lt;br /&gt;
Secondarily, when the parsed output of an e- element is presented, having \u escaped text in the HTML is not really valid, and utf8 would be preferred. That way the JSON output could safely pass through a naive string concatenation model as well as a valid unicode decoder (some languages do not cope with astral plane unicode well, yet utf8 safely encodes them).&lt;br /&gt;
&lt;br /&gt;
See https://github.com/tommorris/mf2py/issues/65 for further discussion of this.&lt;br /&gt;
&lt;br /&gt;
I have tweaked unmung to output utf8 instead for inline data entry, eg: [http://www.unmung.com/?url=&amp;amp;html=%3Cdiv+class%3D%22h-entry%22%3E%3Cspan+class%3D%22e-name%22%3EEntity+%26mdash%3B+emdash%3C%2Fspan%3E%3C%2Fdiv%3E%0D%0A%3Cdiv+class%3D%22h-entry%22%3E%3Cspan+class%3D%22e-name%22%3Eunicode+%E2%80%94+emdash+%E2%AD%90%EF%B8%8F%E2%9A%A1%EF%B8%8F%3C%2Fspan%3E%3C%2Fdiv%3E&amp;amp;pretty=on this case]&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 this twitter markup]&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;
** +1 Totally agree with narrowing the proposal. All the problems I've had with script and style tags come from plaintext properties, and agree that they may even be useful to some consumers of the HTML properties (e.g. an embedded YouTube video) [[User:Kylewm|Kylewm]] 23:40, 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?&lt;br /&gt;
&lt;br /&gt;
Should &amp;quot;p-name&amp;quot; still be implied if another explicit class is already provided?&lt;br /&gt;
&lt;br /&gt;
Here is a somewhat contrived &amp;quot;u-url&amp;quot; related example, 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;
*** -0 failed consensus, this proposal is rejected. - [[User:Tantek|Tantek]] 22:11, 1 April 2016 (UTC)&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&lt;br /&gt;
**** though if there is an img with u-featured but not u-photo, it's likely that was an explicit author decision (e.g. for an article) - [[User:Tantek|Tantek]] 22:11, 1 April 2016 (UTC)&lt;br /&gt;
*** Especially difficult to make a case 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;
**** Yet over-implied p-names appear to cause problems with many Bridgy webmention consuming use-cases[https://indiewebcamp.com/irc/2016-04-01/line/1459530869915], that's a good case - [[User:Tantek|Tantek]] 22:11, 1 April 2016 (UTC)&lt;br /&gt;
**** may need a broader rule, like any explicit p-* property on an element stops implied p-name. - [[User:Tantek|Tantek]] 22:11, 1 April 2016 (UTC)&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>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65453</id>
		<title>microformats2-parsing-issues</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65453"/>
		<updated>2016-03-20T23:59:56Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* dedupe URLs? */&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;
=== de-dupe URLs? ===&lt;br /&gt;
Currently, Known templates end up linking to the author's url in the h-card twice. This leads to duplicate URLs in the parsed output, which make jf2 conversion insert a children element.&lt;br /&gt;
Should we be deduping URLs? Or is this a GIGO issue?&lt;br /&gt;
&lt;br /&gt;
=== unicode generation in JSON ===&lt;br /&gt;
Currently we will convert HTML entities into unicode as part of the parsing process. However, these and other non-asciicharacters can be output as escaped unicode in the generated JSON&lt;br /&gt;
Broadly this is OK, as we assume JSON parsers should be able to handle this accordingly.&lt;br /&gt;
However, it does mean the text is somewhat ambiguous, and unclear, especially when complex unicode codepoints like emoji are involved.&lt;br /&gt;
&lt;br /&gt;
Secondarily, when the parsed output of an e- element is presented, having \u escaped text in the HTML is not really valid, and utf8 would be preferred. That way the JSON output could safely pass through a naive string concatenation model as well as a valid unicode decoder (some languages do not cope with astral plane unicode well, yet utf8 safely encodes them).&lt;br /&gt;
&lt;br /&gt;
See https://github.com/tommorris/mf2py/issues/65 for further discussion of this.&lt;br /&gt;
&lt;br /&gt;
I have tweaked unmung to output utf8 instead for inline data entry, eg: [http://www.unmung.com/?url=&amp;amp;html=%3Cdiv+class%3D%22h-entry%22%3E%3Cspan+class%3D%22e-name%22%3EEntity+%26mdash%3B+emdash%3C%2Fspan%3E%3C%2Fdiv%3E%0D%0A%3Cdiv+class%3D%22h-entry%22%3E%3Cspan+class%3D%22e-name%22%3Eunicode+%E2%80%94+emdash+%E2%AD%90%EF%B8%8F%E2%9A%A1%EF%B8%8F%3C%2Fspan%3E%3C%2Fdiv%3E&amp;amp;pretty=on this case]&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 this twitter markup]&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;
** +1 Totally agree with narrowing the proposal. All the problems I've had with script and style tags come from plaintext properties, and agree that they may even be useful to some consumers of the HTML properties (e.g. an embedded YouTube video) [[User:Kylewm|Kylewm]] 23:40, 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>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65451</id>
		<title>microformats2-parsing-issues</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65451"/>
		<updated>2016-03-19T07:33:20Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* ignore u-camelCase properties */ hide too-long URL&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;
=== unicode generation in JSON ===&lt;br /&gt;
Currently we will convert HTML entities into unicode as part of the parsing process. However, these and other non-asciicharacters can be output as escaped unicode in the generated JSON&lt;br /&gt;
Broadly this is OK, as we assume JSON parsers should be able to handle this accordingly.&lt;br /&gt;
However, it does mean the text is somewhat ambiguous, and unclear, especially when complex unicode codepoints like emoji are involved.&lt;br /&gt;
&lt;br /&gt;
Secondarily, when the parsed output of an e- element is presented, having \u escaped text in the HTML is not really valid, and utf8 would be preferred. That way the JSON output could safely pass through a naive string concatenation model as well as a valid unicode decoder (some languages do not cope with astral plane unicode well, yet utf8 safely encodes them).&lt;br /&gt;
&lt;br /&gt;
See https://github.com/tommorris/mf2py/issues/65 for further discussion of this.&lt;br /&gt;
&lt;br /&gt;
I have tweaked unmung to output utf8 instead for inline data entry, eg: [http://www.unmung.com/?url=&amp;amp;html=%3Cdiv+class%3D%22h-entry%22%3E%3Cspan+class%3D%22e-name%22%3EEntity+%26mdash%3B+emdash%3C%2Fspan%3E%3C%2Fdiv%3E%0D%0A%3Cdiv+class%3D%22h-entry%22%3E%3Cspan+class%3D%22e-name%22%3Eunicode+%E2%80%94+emdash+%E2%AD%90%EF%B8%8F%E2%9A%A1%EF%B8%8F%3C%2Fspan%3E%3C%2Fdiv%3E&amp;amp;pretty=on this case]&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 this twitter markup]&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;
** +1 Totally agree with narrowing the proposal. All the problems I've had with script and style tags come from plaintext properties, and agree that they may even be useful to some consumers of the HTML properties (e.g. an embedded YouTube video) [[User:Kylewm|Kylewm]] 23:40, 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>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65450</id>
		<title>microformats2-parsing-issues</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65450"/>
		<updated>2016-03-19T07:32:22Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* add unicode generation issue */&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;
=== unicode generation in JSON ===&lt;br /&gt;
Currently we will convert HTML entities into unicode as part of the parsing process. However, these and other non-asciicharacters can be output as escaped unicode in the generated JSON&lt;br /&gt;
Broadly this is OK, as we assume JSON parsers should be able to handle this accordingly.&lt;br /&gt;
However, it does mean the text is somewhat ambiguous, and unclear, especially when complex unicode codepoints like emoji are involved.&lt;br /&gt;
&lt;br /&gt;
Secondarily, when the parsed output of an e- element is presented, having \u escaped text in the HTML is not really valid, and utf8 would be preferred. That way the JSON output could safely pass through a naive string concatenation model as well as a valid unicode decoder (some languages do not cope with astral plane unicode well, yet utf8 safely encodes them).&lt;br /&gt;
&lt;br /&gt;
See https://github.com/tommorris/mf2py/issues/65 for further discussion of this.&lt;br /&gt;
&lt;br /&gt;
I have tweaked unmung to output utf8 instead for inline data entry, eg: [http://www.unmung.com/?url=&amp;amp;html=%3Cdiv+class%3D%22h-entry%22%3E%3Cspan+class%3D%22e-name%22%3EEntity+%26mdash%3B+emdash%3C%2Fspan%3E%3C%2Fdiv%3E%0D%0A%3Cdiv+class%3D%22h-entry%22%3E%3Cspan+class%3D%22e-name%22%3Eunicode+%E2%80%94+emdash+%E2%AD%90%EF%B8%8F%E2%9A%A1%EF%B8%8F%3C%2Fspan%3E%3C%2Fdiv%3E&amp;amp;pretty=on this case]&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;
** +1 Totally agree with narrowing the proposal. All the problems I've had with script and style tags come from plaintext properties, and agree that they may even be useful to some consumers of the HTML properties (e.g. an embedded YouTube video) [[User:Kylewm|Kylewm]] 23:40, 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>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=rel-webmention&amp;diff=65324</id>
		<title>rel-webmention</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=rel-webmention&amp;diff=65324"/>
		<updated>2015-11-25T23:47:30Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: link to webmention spec&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;rel=webmention&amp;lt;/code&amp;gt; is a way to link to a [[webmention]] endpoint.&lt;br /&gt;
&lt;br /&gt;
[https://indiewebcamp.com/Webmention Webmention] is a simple way to notify any URL when you link to it on your site. From the receiver's perspective, it's a way to request notifications when other sites link to it. Webmention is a modern update to Pingback, using only HTTP and x-www-form-urlencoded content rather than XMLRPC requests. Webmention supersedes Pingback.&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=existing-rel-values&amp;diff=65323</id>
		<title>existing-rel-values</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=existing-rel-values&amp;diff=65323"/>
		<updated>2015-11-25T23:44:56Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* HTML5 link type extensions */ fix webmention spec url&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt; existing rel values &amp;lt;/entry-title&amp;gt;&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 ([http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#other-link-types][http://www.w3.org/TR/html5/links.html#other-link-types]). 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;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| the referenced person is a child of the person represented by the current document&lt;br /&gt;
| [[XFN]]&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;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| the referenced person is a parent of the person represented by the current document&lt;br /&gt;
| [[XFN]]&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;
&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;
| [[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;
| [http://www.sitemorse.com/rel-archived.html 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;
| [[WPVL_PRETTYPHOTO_REL]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Open lightbox with video&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;
| [http://indiewebcamp.com/distributed-indieauth  distributed IndieAuth documentation]&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-clearbox|clearbox]]&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Img Pop-Up&lt;br /&gt;
| Images (or any other content, depending on href link) with this attribute are displayed in a larger way than embedded in a website (or how you specified it) when clicked (with installed &amp;quot;Clearbox v3&amp;quot;). When adding [gallery] to rel=&amp;quot;clearbox&amp;quot; all images get a clickable button for next/prev; insert into &amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;clearbox[gallery=Name of the gallery comes here]&amp;quot;&amp;gt; href=&amp;quot;http:example.com/img.jpg&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;http:example.com/img.jpg&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://www.kreaturamedia.com/clearbox/ Clearbox 3]&lt;br /&gt;
|&lt;br /&gt;
| proposed&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-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;
|-&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-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;
|&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]&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-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-indieauth|indieauth]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| the IndieAuth server for the relying party to contact for IndieAuth authentication&lt;br /&gt;
| [http://spec.indieauth.com/ IndieAuth specification]&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-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-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;
| [https://developer.apple.com/library/prerelease/mac/releasenotes/General/WhatsNewInSafari/Articles/Safari_9.html#//apple_ref/doc/uid/TP40014305-CH9-SW20 What is new in Safari 9.0]&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-indieauth|micropub]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| the micropub endpoint for creating new posts&lt;br /&gt;
| [http://indiewebcamp.com/micropub  Micropub scecification]&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-prettyPhoto|prettyPhoto]]&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 &lt;br /&gt;
| [http://www.no-margin-for-errors.com/projects/prettyphoto-jquery-lightbox-clone/documentation/ PrettyPhoto]&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-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-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-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;
| [http://indiewebcamp.com/token-endpoint token endpoint documentation]&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://indiewebcamp.com/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;
== 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;
&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]) || &amp;amp;hellip; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-lightbox|lightbox[group_name]]] || Used by lightbox scripts to group different sets of images together.  Images from one group will not appear in another group's lightbox.  See also &amp;quot;lightbox&amp;quot;. || [http://lokeshdhakar.com/projects/lightbox2/#how Lightbox 2] || &amp;amp;hellip; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-prettyPhoto|prettyPhoto]] || See also &amp;quot;lightbox&amp;quot; || ([http://www.google.fr/search?q=rel%3D%22prettyphoto%22 Google search for rel=&amp;quot;prettyphoto&amp;quot; in the wild]) || &amp;amp;hellip; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-clearbox|clearbox]] || See also &amp;quot;lightbox&amp;quot; || ([http://www.google.fr/search?q=rel%3D%22clearbox%22 Google search for rel=&amp;quot;clearbox&amp;quot; in the wild]) || &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]] || &amp;amp;hellip; || &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;begin&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]&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;
| synonym for &amp;lt;code&amp;gt;end&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-up|up]]&lt;br /&gt;
|When the document forms part of a hierarchy, this link references the immediate parent of the current document.&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>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=jf2&amp;diff=65285</id>
		<title>jf2</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=jf2&amp;diff=65285"/>
		<updated>2015-10-29T19:43:08Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* Name Candidates */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;dfn&amp;gt;jf2&amp;lt;/dfn&amp;gt;''' is a working name for a simplified more minimal JSON representation of [[microformats2]].&lt;br /&gt;
&lt;br /&gt;
== Basic Example ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;entry&amp;quot;,&lt;br /&gt;
  &amp;quot;author&amp;quot;: {&lt;br /&gt;
     &amp;quot;type&amp;quot;: &amp;quot;card&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;http:\/\/tantek.com\/&amp;quot;,&lt;br /&gt;
     &amp;quot;photo&amp;quot;: &amp;quot;http:\/\/tantek.com\/photo.jpg&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;published&amp;quot;: &amp;quot;2015-10-21T12:34-0700&amp;quot;,&lt;br /&gt;
  &amp;quot;category&amp;quot;: [&amp;quot;simple&amp;quot;, &amp;quot;example&amp;quot;],&lt;br /&gt;
  &amp;quot;content&amp;quot;: &amp;quot;Example of a simple note&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
* [[microformats2]] JSON&lt;br /&gt;
&lt;br /&gt;
== Prior Simplifications ==&lt;br /&gt;
Output from:&lt;br /&gt;
&lt;br /&gt;
=== [http://webmention.io webmention.io] ===&lt;br /&gt;
This service outputs a list of webmentions received for a post. It recognizes when a post is a reply, like, repost, invitation, RSVP, and mention. Example JSON output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;source&amp;quot;: &amp;quot;http://tantek.com/2013/112/t2/milestone-show-indieweb-comments-h-entry-pingback&amp;quot;,&lt;br /&gt;
      &amp;quot;verified&amp;quot;: true,&lt;br /&gt;
      &amp;quot;verified_date&amp;quot;: &amp;quot;2013-04-25T17:09:33-07:00&amp;quot;,&lt;br /&gt;
      &amp;quot;id&amp;quot;: 900,&lt;br /&gt;
      &amp;quot;data&amp;quot;: {&lt;br /&gt;
        &amp;quot;author&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;http://tantek.com/&amp;quot;,&lt;br /&gt;
          &amp;quot;photo&amp;quot;: &amp;quot;http://tantek.com/logo.jpg&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;Another milestone: @eschnou automatically shows #indieweb comments with h-entry sent via pingback http://eschnou.com/entry/testing-indieweb-federation-with-waterpigscouk-aaronpareckicom-and--62-24908.html&amp;quot;,&lt;br /&gt;
        &amp;quot;content&amp;quot;: &amp;quot;Another milestone: &amp;lt;a class=\&amp;quot;auto-link h-x-username\&amp;quot; href=\&amp;quot;https:\/\/twitter.com\/eschnou\&amp;quot;&amp;gt;@eschnou&amp;lt;\/a&amp;gt; automatically shows #indieweb comments with h-entry sent via pingback &amp;lt;a class=\&amp;quot;auto-link\&amp;quot; href=\&amp;quot;http:\/\/eschnou.com\/entry\/testing-indieweb-federation-with-waterpigscouk-aaronpareckicom-and--62-24908.html\&amp;quot;&amp;gt;http:\/\/eschnou.com\/entry\/testing-indieweb-federation-with-waterpigscouk-aaronpareckicom-and--62-24908.html&amp;lt;\/a&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;published&amp;quot;: &amp;quot;2013-04-22T15:03:00-07:00&amp;quot;,&lt;br /&gt;
        &amp;quot;published_ts&amp;quot;: 1366668180,&lt;br /&gt;
        &amp;quot;url&amp;quot;: &amp;quot;http://tantek.com/2013/112/t2/milestone-show-indieweb-comments-h-entry-pingback&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== webmention.herokuapp.com ===&lt;br /&gt;
This site outputs in multiple formats, based on receiving webmentions, parsing them for microformats and consolidating into a single feed. Live examples for kevinmarks.com:&lt;br /&gt;
*[https://webmention.herokuapp.com/api/mentions?site=kevinmarks.com&amp;amp;format=html HTML mf2 markup]&lt;br /&gt;
&amp;lt;source lang=html4strict&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://waterpigs.co.uk/&amp;quot; class=&amp;quot;p-author h-card&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;http://waterpigs.co.uk/photo.jpg&amp;quot; alt=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
    Barnaby Walters&lt;br /&gt;
  &amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;p-summary p-name&amp;quot;&amp;gt;@kevinmarks awesome demos as always! Thanks for live posting! #indiewebcampsf&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;footer&amp;gt;&lt;br /&gt;
    &amp;lt;time class=&amp;quot;dt-published&amp;quot; datetime=&amp;quot;2014-04-01T14:25:14.000Z&amp;quot; pubdate=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;a class=&amp;quot;u-url u-uid&amp;quot; href=&amp;quot;http://waterpigs.co.uk/notes/4VMERE/&amp;quot;&amp;gt;2 years ago&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;/time&amp;gt;&lt;br /&gt;
     mentioning &amp;lt;a href=&amp;quot;http://kevinmarks.com/&amp;quot;&amp;gt;http://kevinmarks.com/&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;/footer&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*[http://www.unmung.com/mf2?url=https%3A%2F%2Fwebmention.herokuapp.com%2Fapi%2Fmentions%3Fsite%3Dkevinmarks.com%26format%3Dhtml&amp;amp;html=&amp;amp;pretty=on parsed JSON form of the HTML]&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&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;uid&amp;quot;: [&amp;quot;http://waterpigs.co.uk/notes/4VMERE/&amp;quot;], &lt;br /&gt;
    &amp;quot;author&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;url&amp;quot;: [&amp;quot;http://waterpigs.co.uk/&amp;quot;], &lt;br /&gt;
                &amp;quot;photo&amp;quot;: [&amp;quot;http://waterpigs.co.uk/photo.jpg&amp;quot;], &lt;br /&gt;
                &amp;quot;name&amp;quot;: [&amp;quot;&amp;quot;]&lt;br /&gt;
            }, &lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;Barnaby Walters&amp;quot;&lt;br /&gt;
        }], &lt;br /&gt;
    &amp;quot;url&amp;quot;: [&amp;quot;http://waterpigs.co.uk/notes/4VMERE/&amp;quot;], &lt;br /&gt;
    &amp;quot;summary&amp;quot;: [&amp;quot;@kevinmarks awesome demos as always! Thanks for live posting! #indiewebcampsf&amp;quot;], &lt;br /&gt;
    &amp;quot;published&amp;quot;: [&amp;quot;2014-04-01T14:25:14Z&amp;quot;], &lt;br /&gt;
    &amp;quot;name&amp;quot;: [ &amp;quot;@kevinmarks awesome demos as always! Thanks for live posting! #indiewebcampsf&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
*[https://webmention.herokuapp.com/api/mentions?site=kevinmarks.com&amp;amp;format=json simplified JSON] (whitespace added)&lt;br /&gt;
&amp;lt;source lang=javascript&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;url&amp;quot;:&amp;quot;http://waterpigs.co.uk/notes/4VMERE/&amp;quot;,&lt;br /&gt;
  &amp;quot;name&amp;quot;:null,&lt;br /&gt;
  &amp;quot;published&amp;quot;:1396362314000,&lt;br /&gt;
  &amp;quot;summary&amp;quot;:&amp;quot;@kevinmarks awesome demos as always! Thanks for live posting! #indiewebcampsf&amp;quot;,&lt;br /&gt;
  &amp;quot;author&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;:&amp;quot;Barnaby Walters&amp;quot;,&lt;br /&gt;
    &amp;quot;photo&amp;quot;:&amp;quot;http://waterpigs.co.uk/photo.jpg&amp;quot;,&lt;br /&gt;
    &amp;quot;url&amp;quot;:&amp;quot;http://waterpigs.co.uk/&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;interactions&amp;quot;: [&amp;quot;http://www.kevinmarks.com/indiewebsfdemowrapup.html&amp;quot;],&lt;br /&gt;
  &amp;quot;targets&amp;quot;:[&amp;quot;http://kevinmarks.com/&amp;quot;],&lt;br /&gt;
  &amp;quot;type&amp;quot;:&amp;quot;reply&amp;quot;,&lt;br /&gt;
  &amp;quot;interactionTarget&amp;quot;:false&lt;br /&gt;
},&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/indieweb/php-comments php-comments] library ===&lt;br /&gt;
This library takes HTML and converts it to a simple PHP data structure. Example post:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;  &lt;br /&gt;
  $result = array(&lt;br /&gt;
    'type' =&amp;gt; 'reply',&lt;br /&gt;
    'author' =&amp;gt; array(&lt;br /&gt;
      'name' =&amp;gt; 'Aaron Parecki',&lt;br /&gt;
      'photo' =&amp;gt; 'http://aaronparecki.com/images/aaronpk.png',&lt;br /&gt;
      'url' =&amp;gt; 'http://aaronparecki.com/'&lt;br /&gt;
    ),&lt;br /&gt;
    'published' =&amp;gt; '2014-02-16T18:48:17-0800',&lt;br /&gt;
    'name' =&amp;gt; 'Example Note',&lt;br /&gt;
    'text' =&amp;gt; 'this text is displayed as the comment',&lt;br /&gt;
    'url' =&amp;gt; 'http://aaronparecki.com/post/1'&lt;br /&gt;
  );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Name Candidates ==&lt;br /&gt;
As 'jf2' is only a working name let's collect alternatives:&lt;br /&gt;
&lt;br /&gt;
;JFDI&lt;br /&gt;
:Backronym: JSON For Data Interchange&lt;br /&gt;
;jf2&lt;br /&gt;
:Minimal JSON for mf2&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://github.com/w3c-social/Social-Syntax-Brainstorming/wiki/Minimal-Activity-Stream github.com/w3c-social/Social-Syntax-Brainstorming/wiki/Minimal-Activity-Stream] - Primary development&lt;br /&gt;
* [https://github.com/dissolve/socialstream github.com/dissolve/socialstream] - Sample php code to convert MF2 -&amp;gt; JS2&lt;br /&gt;
* [http://stream.thatmustbe.us/?url=ben.thatmustbe.me/feed stream.thatmustbe.us/?url=ben.thatmustbe.me/feed] - Service running the socialstream code&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[json]]&lt;br /&gt;
* [[microformats2]]&lt;br /&gt;
* [[microformats2-parsing]]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=h-card-brainstorming&amp;diff=65279</id>
		<title>h-card-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=h-card-brainstorming&amp;diff=65279"/>
		<updated>2015-10-27T16:38:53Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* Pronouns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;entry-title&amp;gt;h-card Brainstorming &amp;lt;/entry-title&amp;gt;&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;
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;
==== Pronouns Prior Art ====&lt;br /&gt;
* MediaWiki preferences, e.g. https://www.w3.org/wiki/Special:Preferences (when logged in) has a radio button group from you can choose your nominative pronoun (or none).&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
How do you prefer to be described?	&lt;br /&gt;
(*) (I prefer not to say)&lt;br /&gt;
( ) She edits wiki pages&lt;br /&gt;
( ) He edits wiki pages&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&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>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=xoxo-sample-code&amp;diff=65278</id>
		<title>xoxo-sample-code</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=xoxo-sample-code&amp;diff=65278"/>
		<updated>2015-10-26T03:45:25Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: add github link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= XOXO Sample Code =&lt;br /&gt;
&lt;br /&gt;
A whole bunch of open source ([http://creativecommons.org/licenses/by/2.0/ CC-by-2.0], [http://www.apache.org/licenses/LICENSE-2.0 Apache 2.0]) sample code to read and write [[xoxo]] files in Python and Java (with Perl, PHP, ... to follow).&lt;br /&gt;
&lt;br /&gt;
Also on [https://github.com/microformats/xoxo github]&lt;br /&gt;
== Python ==&lt;br /&gt;
See [[xoxo-sample-code-python]]&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
See [[xoxo-sample-code-java]]&lt;br /&gt;
&lt;br /&gt;
== PHP ==&lt;br /&gt;
See [[xoxo-sample-code-php]]&lt;br /&gt;
&lt;br /&gt;
== other implementations ==&lt;br /&gt;
* [http://boxtheweb.mihopa.net/code/apis/xoxo2array.php.txt xoxo2array.php]&lt;br /&gt;
* [http://boxtheweb.mihopa.net/code/apis/array2xoxo.php.txt array2xoxo.php]&lt;br /&gt;
* [http://boxtheweb.mihopa.net/code/apis/#outlineclasses Outline Classes]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=jf2&amp;diff=65273</id>
		<title>jf2</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=jf2&amp;diff=65273"/>
		<updated>2015-10-21T20:17:31Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* Prior Simplifications */ webmention example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;dfn&amp;gt;jf2&amp;lt;/dfn&amp;gt;''' is a working name for a simplified more minimal JSON representation of [[microformats2]].&lt;br /&gt;
&lt;br /&gt;
== Basic Example ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;entry&amp;quot;,&lt;br /&gt;
  &amp;quot;author&amp;quot;: {&lt;br /&gt;
     &amp;quot;type&amp;quot;: &amp;quot;card&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;http:\/\/tantek.com\/&amp;quot;,&lt;br /&gt;
     &amp;quot;photo&amp;quot;: &amp;quot;http:\/\/tantek.com\/photo.jpg&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;published&amp;quot;: &amp;quot;2015-10-21T12:34-0700&amp;quot;,&lt;br /&gt;
  &amp;quot;category&amp;quot;: [&amp;quot;simple&amp;quot;, &amp;quot;example&amp;quot;],&lt;br /&gt;
  &amp;quot;content&amp;quot;: &amp;quot;Example of a simple note&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
* [[microformats2]] JSON&lt;br /&gt;
&lt;br /&gt;
== Prior Simplifications ==&lt;br /&gt;
Output from:&lt;br /&gt;
* webmention.io&lt;br /&gt;
(need specific examples from this)&lt;br /&gt;
=== webmention.herokuapp.com ===&lt;br /&gt;
This site outputs in multiple formats, based on receiving webmentions, parsing them for microformats and consolidating into a single feed. Live examples for kevinmarks.com:&lt;br /&gt;
*[https://webmention.herokuapp.com/api/mentions?site=kevinmarks.com&amp;amp;format=html HTML mf2 markup]&lt;br /&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://waterpigs.co.uk/&amp;quot; class=&amp;quot;p-author h-card&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;http://waterpigs.co.uk/photo.jpg&amp;quot; alt=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
    Barnaby Walters&lt;br /&gt;
  &amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;p-summary p-name&amp;quot;&amp;gt;@kevinmarks awesome demos as always! Thanks for live posting! #indiewebcampsf&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;footer&amp;gt;&lt;br /&gt;
    &amp;lt;time class=&amp;quot;dt-published&amp;quot; datetime=&amp;quot;2014-04-01T14:25:14.000Z&amp;quot; pubdate=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;a class=&amp;quot;u-url u-uid&amp;quot; href=&amp;quot;http://waterpigs.co.uk/notes/4VMERE/&amp;quot;&amp;gt;2 years ago&amp;lt;/a&amp;gt;&lt;br /&gt;
    &amp;lt;/time&amp;gt;&lt;br /&gt;
     mentioning &amp;lt;a href=&amp;quot;http://kevinmarks.com/&amp;quot;&amp;gt;http://kevinmarks.com/&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;/footer&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*[http://www.unmung.com/mf2?url=https%3A%2F%2Fwebmention.herokuapp.com%2Fapi%2Fmentions%3Fsite%3Dkevinmarks.com%26format%3Dhtml&amp;amp;html=&amp;amp;pretty=on parsed JSON form of the HTML]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&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;uid&amp;quot;: [&amp;quot;http://waterpigs.co.uk/notes/4VMERE/&amp;quot;], &lt;br /&gt;
    &amp;quot;author&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;url&amp;quot;: [&amp;quot;http://waterpigs.co.uk/&amp;quot;], &lt;br /&gt;
                &amp;quot;photo&amp;quot;: [&amp;quot;http://waterpigs.co.uk/photo.jpg&amp;quot;], &lt;br /&gt;
                &amp;quot;name&amp;quot;: [&amp;quot;&amp;quot;]&lt;br /&gt;
            }, &lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;Barnaby Walters&amp;quot;&lt;br /&gt;
        }], &lt;br /&gt;
    &amp;quot;url&amp;quot;: [&amp;quot;http://waterpigs.co.uk/notes/4VMERE/&amp;quot;], &lt;br /&gt;
    &amp;quot;summary&amp;quot;: [&amp;quot;@kevinmarks awesome demos as always! Thanks for live posting! #indiewebcampsf&amp;quot;], &lt;br /&gt;
    &amp;quot;published&amp;quot;: [&amp;quot;2014-04-01T14:25:14Z&amp;quot;], &lt;br /&gt;
    &amp;quot;name&amp;quot;: [ &amp;quot;@kevinmarks awesome demos as always! Thanks for live posting! #indiewebcampsf&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*[https://webmention.herokuapp.com/api/mentions?site=kevinmarks.com&amp;amp;format=json simplified JSON]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&amp;quot;url&amp;quot;:&amp;quot;http://waterpigs.co.uk/notes/4VMERE/&amp;quot;,&lt;br /&gt;
&amp;quot;name&amp;quot;:null,&lt;br /&gt;
&amp;quot;published&amp;quot;:1396362314000,&lt;br /&gt;
&amp;quot;summary&amp;quot;:&amp;quot;@kevinmarks awesome demos as always! Thanks for live posting! #indiewebcampsf&amp;quot;,&lt;br /&gt;
&amp;quot;author&amp;quot;:&lt;br /&gt;
  {&amp;quot;name&amp;quot;:&amp;quot;Barnaby Walters&amp;quot;,&lt;br /&gt;
   &amp;quot;photo&amp;quot;:&amp;quot;http://waterpigs.co.uk/photo.jpg&amp;quot;,&lt;br /&gt;
   &amp;quot;url&amp;quot;:&amp;quot;http://waterpigs.co.uk/&amp;quot;},&lt;br /&gt;
&amp;quot;interactions&amp;quot;: [&amp;quot;http://www.kevinmarks.com/indiewebsfdemowrapup.html&amp;quot;],&lt;br /&gt;
&amp;quot;targets&amp;quot;:[&amp;quot;http://kevinmarks.com/&amp;quot;],&lt;br /&gt;
&amp;quot;type&amp;quot;:&amp;quot;reply&amp;quot;,&lt;br /&gt;
&amp;quot;interactionTarget&amp;quot;:false},&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Name Candidates ==&lt;br /&gt;
As 'jf2' is only a working name let's collect alternatives:&lt;br /&gt;
&lt;br /&gt;
;JDFI&lt;br /&gt;
:Backronym: JSON For Data Interchange&lt;br /&gt;
;jf2&lt;br /&gt;
:Minimal JSON for mf2&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[json]]&lt;br /&gt;
* [[microformats2]]&lt;br /&gt;
* [[microformats2-parsing]]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=jf2&amp;diff=65270</id>
		<title>jf2</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=jf2&amp;diff=65270"/>
		<updated>2015-10-21T19:57:52Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: name bikeshedding seecion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;dfn&amp;gt;jf2&amp;lt;/dfn&amp;gt;''' is a working name for a simplified more minimal JSON representation of [[microformats2]].&lt;br /&gt;
&lt;br /&gt;
== Basic Example ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;entry&amp;quot;,&lt;br /&gt;
  &amp;quot;author&amp;quot;: {&lt;br /&gt;
     &amp;quot;type&amp;quot;: &amp;quot;card&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;http:\/\/tantek.com\/&amp;quot;,&lt;br /&gt;
     &amp;quot;photo&amp;quot;: &amp;quot;http:\/\/tantek.com\/photo.jpg&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;published&amp;quot;: &amp;quot;2015-10-21T12:34-0700&amp;quot;,&lt;br /&gt;
  &amp;quot;category&amp;quot;: [&amp;quot;simple&amp;quot;, &amp;quot;example&amp;quot;],&lt;br /&gt;
  &amp;quot;content&amp;quot;: &amp;quot;Example of a simple note&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Prior Work ==&lt;br /&gt;
* [[microformats2]] JSON&lt;br /&gt;
&lt;br /&gt;
== Prior Simplifications ==&lt;br /&gt;
Output from:&lt;br /&gt;
* webmention.io&lt;br /&gt;
* webmention.herokuapp.com&lt;br /&gt;
&lt;br /&gt;
(need specific examples from those two)&lt;br /&gt;
&lt;br /&gt;
== Obligatory Name Bikeshedding ==&lt;br /&gt;
Why not call it JFDI instead? Backronym: JSON For Data Interchange&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[json]]&lt;br /&gt;
* [[microformats2]]&lt;br /&gt;
* [[microformats2-parsing]]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=existing-rel-values&amp;diff=65246</id>
		<title>existing-rel-values</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=existing-rel-values&amp;diff=65246"/>
		<updated>2015-10-08T22:23:12Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* HTML5 link type extensions */ fix html5 link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt; existing rel values &amp;lt;/entry-title&amp;gt;&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 ([http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#other-link-types][http://www.w3.org/TR/html5/links.html#other-link-types]). 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;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| the referenced person is a child of the person represented by the current document&lt;br /&gt;
| [[XFN]]&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;
| not allowed&lt;br /&gt;
| external relation&lt;br /&gt;
| the referenced person is a parent of the person represented by the current document&lt;br /&gt;
| [[XFN]]&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;
&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;
| [[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;
| [http://www.sitemorse.com/rel-archived.html 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;
| [[WPVL_PRETTYPHOTO_REL]]&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Hyperlink&lt;br /&gt;
| Open lightbox with video&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;
| [http://indiewebcamp.com/distributed-indieauth  distributed IndieAuth documentation]&lt;br /&gt;
|&lt;br /&gt;
| proposed&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-canonical|canonical]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&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-clearbox|clearbox]]&lt;br /&gt;
| Not allowed&lt;br /&gt;
| Img Pop-Up&lt;br /&gt;
| Images (or any other content, depending on href link) with this attribute are displayed in a larger way than embedded in a website (or how you specified it) when clicked (with installed &amp;quot;Clearbox v3&amp;quot;). When adding [gallery] to rel=&amp;quot;clearbox&amp;quot; all images get a clickable button for next/prev; insert into &amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;clearbox[gallery=Name of the gallery comes here]&amp;quot;&amp;gt; href=&amp;quot;http:example.com/img.jpg&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;http:example.com/img.jpg&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| [http://www.kreaturamedia.com/clearbox/ Clearbox 3]&lt;br /&gt;
|&lt;br /&gt;
| proposed&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-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;
|-&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-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;
|&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]&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-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-indieauth|indieauth]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| the IndieAuth server for the relying party to contact for IndieAuth authentication&lt;br /&gt;
| [http://spec.indieauth.com/ IndieAuth specification]&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-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-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-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-indieauth|micropub]]&lt;br /&gt;
| External Resource&lt;br /&gt;
| Not allowed&lt;br /&gt;
| the micropub endpoint for creating new posts&lt;br /&gt;
| [http://indiewebcamp.com/micropub  Micropub scecification]&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-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-prettyPhoto|prettyPhoto]]&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 &lt;br /&gt;
| [http://www.no-margin-for-errors.com/projects/prettyphoto-jquery-lightbox-clone/documentation/ PrettyPhoto]&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-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-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-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;
| [http://indiewebcamp.com/token-endpoint token endpoint documentation]&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;
| [http://webmention.org/ 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;
== 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-preconnect|preconnect]] || 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.|| [https://igrigorik.github.io/resource-hints/#preconnect resource hints draft]&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;
&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]) || &amp;amp;hellip; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-lightbox|lightbox[group_name]]] || Used by lightbox scripts to group different sets of images together.  Images from one group will not appear in another group's lightbox.  See also &amp;quot;lightbox&amp;quot;. || [http://lokeshdhakar.com/projects/lightbox2/#how Lightbox 2] || &amp;amp;hellip; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-prettyPhoto|prettyPhoto]] || See also &amp;quot;lightbox&amp;quot; || ([http://www.google.fr/search?q=rel%3D%22prettyphoto%22 Google search for rel=&amp;quot;prettyphoto&amp;quot; in the wild]) || &amp;amp;hellip; &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[rel-clearbox|clearbox]] || See also &amp;quot;lightbox&amp;quot; || ([http://www.google.fr/search?q=rel%3D%22clearbox%22 Google search for rel=&amp;quot;clearbox&amp;quot; in the wild]) || &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]] || &amp;amp;hellip; || &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;begin&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]&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;
| synonym for &amp;lt;code&amp;gt;end&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-up|up]]&lt;br /&gt;
|When the document forms part of a hierarchy, this link references the immediate parent of the current document.&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>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-experimental-properties&amp;diff=65124</id>
		<title>microformats2-experimental-properties</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-experimental-properties&amp;diff=65124"/>
		<updated>2015-07-11T16:48:00Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* nickname? */&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;
== 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;
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;
&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>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65116</id>
		<title>microformats2-parsing-issues</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65116"/>
		<updated>2015-07-11T09:07:15Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* u- parsing iframe srcdoc */&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;
=== Empty properties overridden by implied rules against user expectation === &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;
* +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)&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;
&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;
* -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)&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;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== uf2 children inside a classic microformats root class name ===&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience. &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;
* ++ 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;
=== 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. [[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;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== backcompat classic microformats should only see backcompat properties ===&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience. &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 behavior 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;
* ++ 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;
=== microformats2 root class names should only see microformats2 properties ===&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience. &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;
* ++ 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;
=== implied properties on backcompat parsing unlikely to be intended ===&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience. &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;
&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;
** 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;
=== 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;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== link elements and u- parsing ===&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience. &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: resolved, warning in specification, awaiting implementations to drop&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;
=== 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 the 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;
== see also ==&lt;br /&gt;
* [[microformats2-parsing]]&lt;br /&gt;
* [[microformats2]]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=rel-tag-faq&amp;diff=65083</id>
		<title>rel-tag-faq</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=rel-tag-faq&amp;diff=65083"/>
		<updated>2015-06-29T23:50:14Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* rel-tag in Link elements */ visible metadata&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= rel-tag frequently asked questions = &lt;br /&gt;
&lt;br /&gt;
This document serves to answer and discuss frequently asked questions specifically about the [[rel-tag]] microformat. You may want to read the [[rel-faq]] first as it answers many common questions about the HTML4 &amp;quot;rel&amp;quot; and &amp;quot;rev&amp;quot; attributes, and their linktype values.  If you have a new question to ask, first consider asking on 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;
=== Where does a tagging link belong? === &lt;br /&gt;
*Does the tagging link only need to appear in my Web feed (RSS / Atom)?  Does the tagging link need to appear on the page where my specific blog entry lies?  Does the tagging link need to appear everywhere that I can possibly imagine?&lt;br /&gt;
** In short, tagging links belong in all the places and formats in which you published tagged content. The Web page is the primary location where users read content and where search engines index. Thus the Web page is a place where you should absolutely include your [[rel-tag]] links. To tag your blog posts, put the [[rel-tag]] links inside them, visibly. The Web feeds are simply alternate ways of publishing your blog posts, and thus should include the full content of your blog posts, [[rel-tag]] links intact.&lt;br /&gt;
=== Where shouldn't I use rel-tag? ===&lt;br /&gt;
* rel-tag expresses a particular relationship (a) between the page you are on and (b) the target of a link. If you're not asserting this relationship, don't use rel-tag. In particular:&lt;br /&gt;
** don't use rel-tag in [http://en.wikipedia.org/wiki/Tag_cloud Tag Clouds]&lt;br /&gt;
** don't use rel-tag to refer to the pages http://www.technorati.com/tag/xyz, http://del.icio.us/tag/xyz, http://www.flickr.com/photos/tags/xyz/ (and so forth) if you're not asserting &amp;quot;this page is tagged 'xyz'&amp;quot;&lt;br /&gt;
=== Path with a . in ===&lt;br /&gt;
*The format specifies that the tag must &amp;quot;come after the last / in the path&amp;quot;. Will something like &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.com/index.php/TAG&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; work?  Or does it have to be a &amp;quot;real&amp;quot; directory or [http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html mod_rewrite]? -- [[User:Singpolyma|singpolyma]] 23:51, 24 Jan 2006 (PST)&lt;br /&gt;
** The key is the URL. Whether that URL is generated from a database or a directory does not matter. The URL matters.&lt;br /&gt;
*** My question, however, was about whether that URL form ( &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.com/index.php/TAG&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ) would be valid, since there is the dot in &amp;quot;index.php&amp;quot;.&lt;br /&gt;
**** Yes, the URL in the example is valid (or legal or conformant or whatever you want to call it to minimize confusion). The dot (period, full stop, U+002E) is free to appear in most places in a URL, even in the middle of a path-segment that is not the last path-segment. (The latest specification for URLs, &amp;quot;[http://gbiv.com/protocols/uri/rfc/rfc3986.html Uniform Resource Identifier (URI): Generic Syntax]&amp;quot;, is RFC 3986.)&lt;br /&gt;
=== Using Apache mod_rewrite ===&lt;br /&gt;
* ''I'm developing a web application which uses tagging, and so of course I want to use [[rel-tag]]. For this application, I want nice, clean URLs. I was planning to use [http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html mod_rewrite] to map a clean URL onto my underlying scripts. How do I use Apache's [http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html mod_rewrite] to map &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.org/~user/app/tag/car&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.org/~user/app/script.php?tag=car&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ?''&lt;br /&gt;
** One solution involves changing the script to inspect the path for the tag (via the variable &amp;quot;PATH_INFO&amp;quot;), rather than inspecting the query:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;Directory &amp;quot;/home/user/public_html/app/&amp;gt;&lt;br /&gt;
    RewriteEngine On&lt;br /&gt;
    RewriteRule ^tag/([^/]+)$ script.php/$1 [last]&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
** For people who can edit the server's main configuration file, the following untested configuration code may work. Corrections are welcome.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;RewriteEngine On&lt;br /&gt;
RewriteMap tag int:escape&lt;br /&gt;
RewriteRule ^/~user/app/tag/([^/]+)$ /~user/app/script.php?tag=${tag:$1} [last]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
** The following configuration code, left over from a previous contribution to this document, does a poor job according to tests. The following code fails to enforce the [[rel-tag]] rules about the tag corresponding to the last non-empty path-segment. The following code fails to transcode the tag for safe use in the URL query. Consider that a request on &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.org/~user/app/tag/&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; would map internally to a request on &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.org/~user/app/script.php?tag=&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; . Consider that a request on &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.org/~user/app/tag/not-a-tag/the-tag&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; would map internally to a request on &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.org/~user/app/script.php?tag=not-a-tag/the-tag&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; . Consider that a request on &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.org/~user/app/tag/the-tag/&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; would map internally to a request on &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.org/~user/app/script.php?tag=the-tag/&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; . Consider that a request on &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.org/~user/app/tag/attack&amp;amp;intent=destroy&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; would map internally to a request on &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.org/~user/app/script.php?tag=attack&amp;amp;intent=destroy&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; .&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;Directory &amp;quot;/home/user/public_html/app/&amp;gt;&lt;br /&gt;
    RewriteEngine On&lt;br /&gt;
    RewriteRule ^tag/(.*)$ script.php?tag=$1&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Does a rel tag still have meaning if the link redirects? ===&lt;br /&gt;
* If the HTTP server returns a 302 status code, does the rel-tag have meaning? Is there a formal rule that indexers should follow the link to the final, resolved destination? Or is there a formal rule that a rel tag should be ignored if URL of its link does not return a status code of 200?''&lt;br /&gt;
** Only the linked URL is important. The document specified by the URL, including any HTTP headers it contains are irrelevant. The whole point of rel-tag is that user-agents can figure out the name of the tag from the URL without having to make a request for the page linked to. [[User:TobyInk|TobyInk]] 03:56, 10 Aug 2007 (PDT)&lt;br /&gt;
=== rel-tag in Link elements===&lt;br /&gt;
*What is the rationale of rel-tag not being allowed in link elements, as long as rel-category is? Shouldn't the two have similar behaviours?&lt;br /&gt;
** The goal of rel-tag was to encourage visible, clickable links for tags, that are indexed by all search crawlers, not invisible metadata. See [http://microformats.org/wiki/rel-tag#Tags_Are_Visible_Metadata Tags Are Visible Metadata]&lt;br /&gt;
&lt;br /&gt;
===CSS selector===&lt;br /&gt;
*How do you write a CSS selector for rel-tag?&lt;br /&gt;
** &amp;lt;code&amp;gt;a[rel~=&amp;quot;tag&amp;quot;] { color: green }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Are tags case sensitive?===&lt;br /&gt;
*Are tags case sensitive. Is &amp;quot;Dog&amp;quot; the same tag as &amp;quot;dog&amp;quot; and &amp;quot;DOG&amp;quot;? &lt;br /&gt;
**{{AwaitingAnswer}}&lt;br /&gt;
**That's a conscious design decision for your site.  Sites like Flickr intentionally normalize the tag name to reduce the possibility of multiple tags that mean the same thing.  The name of the tag is more important than how it is displayed.&lt;br /&gt;
&lt;br /&gt;
===Multi-word tags===&lt;br /&gt;
*How should a multi-word tag be made? For instance, if using Wikipedia as a name space, a page about a Black Redstart (a bird) would be tagged '''Black_Redstart''', with an underscore [http://en.wikipedia.org/wiki/Black_Redstart]. Is there any way of aliasing alternatives (&amp;quot;BlackRedstart&amp;quot;, &amp;quot;Black-Redstart&amp;quot;, etc.)? Is any particular format preferable?&lt;br /&gt;
** Existing bevavior&lt;br /&gt;
*** delicious supports combined tags&lt;br /&gt;
*** flickr supports multi-word tags with spaces but collapses spaces when searching&lt;br /&gt;
*** ma.gnolia supports multi-word tags with spaces&lt;br /&gt;
*** technorati supports multi-word tags with spaces&lt;br /&gt;
**{{AwaitingAnswer}}&lt;br /&gt;
&lt;br /&gt;
===Tags with file extensions===&lt;br /&gt;
*Is &amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;tag&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://example.com/cheese.htm&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;gt;cheese&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt; a valid tag for &amp;quot;cheese&amp;quot;? Ditto &amp;quot;.asp&amp;quot; or &amp;quot;.php&amp;quot; variants? If not, why not?&lt;br /&gt;
&lt;br /&gt;
Any file-name extension in the last path segment is part of the tag value:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;http://example.com/cheese.htm&amp;lt;/nowiki&amp;gt; ⇒ cheese.htm&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;http://example.com/cheese.asp&amp;lt;/nowiki&amp;gt; ⇒ cheese.asp&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;http://example.com/cheese.php&amp;lt;/nowiki&amp;gt; ⇒ cheese.php&lt;br /&gt;
&lt;br /&gt;
The [[rel-tag|rel-tag specification]] is clear on how to extract a tag from a URL. Special treatment for file-name extensions is not part of the extraction. Brian Suda gave an [http://microformats.org/discuss/mail/microformats-discuss/2007-February/008538.html explanation on the microformats-discuss list]. Consider the following URLs, the tags that the following URLs give under the current specification, and the effect of requiring special treatment for file-name extensions on the tags that the following URLs give.&lt;br /&gt;
&lt;br /&gt;
*http://en.wikipedia.org/wiki/.htaccess&lt;br /&gt;
*http://en.wikipedia.org/wiki/.Net&lt;br /&gt;
*http://en.wikipedia.org/wiki/India.Arie&lt;br /&gt;
*http://en.wikipedia.org/wiki/ASN.1&lt;br /&gt;
*[http://en.wikipedia.org/wiki/L.I.E. http://en.wikipedia.org/wiki/L.I.E.]&lt;br /&gt;
&lt;br /&gt;
===What about Scope?===&lt;br /&gt;
Since rel-tag is a feature used in many other microformats, the question often arises: &amp;quot;What is the scope of the tag?&amp;quot; For instance, a rel-tag may appear inside of an [[xfolk xFolk]] entry and on first glance it may appear that the tag should only apply to that entry. However, current publishing practice seems to indicate anything appearing on a page is likely related to the content of the page. Therefore, the interpretation is that not only does the rel-tag apply its direct container but to all containers and to the document as a whole; it contains the xFolk entry. This is a departure from strict knowledge theory in favor of real-world usage.&lt;br /&gt;
&lt;br /&gt;
As another example, you may link to your friend Joe with XFN and hCard, indicating in his categories that Joe is interested in swimming, which you loathe. Since the article is primarily about you and not about Joe's hobbies and because the rel-tag is inside an hCard, you may expect that the rel-tag does not apply to the document; however, the document does contain information about swimming,  albeit tiny, namely that your friend likes it. In this way, rel-tag is binary: it indicates direction (yes or no) but not magnitude. This equivalent to a free-text search sans [[http://en.wikipedia.org/wiki/tf-idf tf-idf]]; i.e. without a notion of term relevance.&lt;br /&gt;
&lt;br /&gt;
The upshot of this is that rel-tags can have downward scope but not upward scope.&lt;br /&gt;
&lt;br /&gt;
===Encoding and decoding the tag text in JavaScript===&lt;br /&gt;
If you want to get the text of the tag using JavaScript, you should use decodeURIComponent() to get a text representation of the tag, not escape. decodeURIComponent will properly handle UTF-8.&lt;br /&gt;
&lt;br /&gt;
==Related pages==&lt;br /&gt;
{{rel-tag-related-pages}}&lt;br /&gt;
**{{AwaitingAnswer}}&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=rel-tag-faq&amp;diff=65082</id>
		<title>rel-tag-faq</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=rel-tag-faq&amp;diff=65082"/>
		<updated>2015-06-29T23:46:00Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: clean up indenting for better ToC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= rel-tag frequently asked questions = &lt;br /&gt;
&lt;br /&gt;
This document serves to answer and discuss frequently asked questions specifically about the [[rel-tag]] microformat. You may want to read the [[rel-faq]] first as it answers many common questions about the HTML4 &amp;quot;rel&amp;quot; and &amp;quot;rev&amp;quot; attributes, and their linktype values.  If you have a new question to ask, first consider asking on 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;
=== Where does a tagging link belong? === &lt;br /&gt;
*Does the tagging link only need to appear in my Web feed (RSS / Atom)?  Does the tagging link need to appear on the page where my specific blog entry lies?  Does the tagging link need to appear everywhere that I can possibly imagine?&lt;br /&gt;
** In short, tagging links belong in all the places and formats in which you published tagged content. The Web page is the primary location where users read content and where search engines index. Thus the Web page is a place where you should absolutely include your [[rel-tag]] links. To tag your blog posts, put the [[rel-tag]] links inside them, visibly. The Web feeds are simply alternate ways of publishing your blog posts, and thus should include the full content of your blog posts, [[rel-tag]] links intact.&lt;br /&gt;
=== Where shouldn't I use rel-tag? ===&lt;br /&gt;
* rel-tag expresses a particular relationship (a) between the page you are on and (b) the target of a link. If you're not asserting this relationship, don't use rel-tag. In particular:&lt;br /&gt;
** don't use rel-tag in [http://en.wikipedia.org/wiki/Tag_cloud Tag Clouds]&lt;br /&gt;
** don't use rel-tag to refer to the pages http://www.technorati.com/tag/xyz, http://del.icio.us/tag/xyz, http://www.flickr.com/photos/tags/xyz/ (and so forth) if you're not asserting &amp;quot;this page is tagged 'xyz'&amp;quot;&lt;br /&gt;
=== Path with a . in ===&lt;br /&gt;
*The format specifies that the tag must &amp;quot;come after the last / in the path&amp;quot;. Will something like &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.com/index.php/TAG&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; work?  Or does it have to be a &amp;quot;real&amp;quot; directory or [http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html mod_rewrite]? -- [[User:Singpolyma|singpolyma]] 23:51, 24 Jan 2006 (PST)&lt;br /&gt;
** The key is the URL. Whether that URL is generated from a database or a directory does not matter. The URL matters.&lt;br /&gt;
*** My question, however, was about whether that URL form ( &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.com/index.php/TAG&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ) would be valid, since there is the dot in &amp;quot;index.php&amp;quot;.&lt;br /&gt;
**** Yes, the URL in the example is valid (or legal or conformant or whatever you want to call it to minimize confusion). The dot (period, full stop, U+002E) is free to appear in most places in a URL, even in the middle of a path-segment that is not the last path-segment. (The latest specification for URLs, &amp;quot;[http://gbiv.com/protocols/uri/rfc/rfc3986.html Uniform Resource Identifier (URI): Generic Syntax]&amp;quot;, is RFC 3986.)&lt;br /&gt;
=== Using Apache mod_rewrite ===&lt;br /&gt;
* ''I'm developing a web application which uses tagging, and so of course I want to use [[rel-tag]]. For this application, I want nice, clean URLs. I was planning to use [http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html mod_rewrite] to map a clean URL onto my underlying scripts. How do I use Apache's [http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html mod_rewrite] to map &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.org/~user/app/tag/car&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.org/~user/app/script.php?tag=car&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ?''&lt;br /&gt;
** One solution involves changing the script to inspect the path for the tag (via the variable &amp;quot;PATH_INFO&amp;quot;), rather than inspecting the query:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;Directory &amp;quot;/home/user/public_html/app/&amp;gt;&lt;br /&gt;
    RewriteEngine On&lt;br /&gt;
    RewriteRule ^tag/([^/]+)$ script.php/$1 [last]&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
** For people who can edit the server's main configuration file, the following untested configuration code may work. Corrections are welcome.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;RewriteEngine On&lt;br /&gt;
RewriteMap tag int:escape&lt;br /&gt;
RewriteRule ^/~user/app/tag/([^/]+)$ /~user/app/script.php?tag=${tag:$1} [last]&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
** The following configuration code, left over from a previous contribution to this document, does a poor job according to tests. The following code fails to enforce the [[rel-tag]] rules about the tag corresponding to the last non-empty path-segment. The following code fails to transcode the tag for safe use in the URL query. Consider that a request on &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.org/~user/app/tag/&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; would map internally to a request on &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.org/~user/app/script.php?tag=&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; . Consider that a request on &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.org/~user/app/tag/not-a-tag/the-tag&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; would map internally to a request on &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.org/~user/app/script.php?tag=not-a-tag/the-tag&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; . Consider that a request on &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.org/~user/app/tag/the-tag/&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; would map internally to a request on &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.org/~user/app/script.php?tag=the-tag/&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; . Consider that a request on &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.org/~user/app/tag/attack&amp;amp;intent=destroy&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; would map internally to a request on &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.org/~user/app/script.php?tag=attack&amp;amp;intent=destroy&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; .&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;Directory &amp;quot;/home/user/public_html/app/&amp;gt;&lt;br /&gt;
    RewriteEngine On&lt;br /&gt;
    RewriteRule ^tag/(.*)$ script.php?tag=$1&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Does a rel tag still have meaning if the link redirects? ===&lt;br /&gt;
* If the HTTP server returns a 302 status code, does the rel-tag have meaning? Is there a formal rule that indexers should follow the link to the final, resolved destination? Or is there a formal rule that a rel tag should be ignored if URL of its link does not return a status code of 200?''&lt;br /&gt;
** Only the linked URL is important. The document specified by the URL, including any HTTP headers it contains are irrelevant. The whole point of rel-tag is that user-agents can figure out the name of the tag from the URL without having to make a request for the page linked to. [[User:TobyInk|TobyInk]] 03:56, 10 Aug 2007 (PDT)&lt;br /&gt;
=== rel-tag in Link elements===&lt;br /&gt;
*What is the rationale of rel-tag not being allowed in link elements, as long as rel-category is? Shouldn't the two have similar behaviours?''&lt;br /&gt;
&lt;br /&gt;
===CSS selector===&lt;br /&gt;
*How do you write a CSS selector for rel-tag?&lt;br /&gt;
** &amp;lt;code&amp;gt;a[rel~=&amp;quot;tag&amp;quot;] { color: green }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Are tags case sensitive?===&lt;br /&gt;
*Are tags case sensitive. Is &amp;quot;Dog&amp;quot; the same tag as &amp;quot;dog&amp;quot; and &amp;quot;DOG&amp;quot;? &lt;br /&gt;
**{{AwaitingAnswer}}&lt;br /&gt;
**That's a conscious design decision for your site.  Sites like Flickr intentionally normalize the tag name to reduce the possibility of multiple tags that mean the same thing.  The name of the tag is more important than how it is displayed.&lt;br /&gt;
&lt;br /&gt;
===Multi-word tags===&lt;br /&gt;
*How should a multi-word tag be made? For instance, if using Wikipedia as a name space, a page about a Black Redstart (a bird) would be tagged '''Black_Redstart''', with an underscore [http://en.wikipedia.org/wiki/Black_Redstart]. Is there any way of aliasing alternatives (&amp;quot;BlackRedstart&amp;quot;, &amp;quot;Black-Redstart&amp;quot;, etc.)? Is any particular format preferable?&lt;br /&gt;
** Existing bevavior&lt;br /&gt;
*** delicious supports combined tags&lt;br /&gt;
*** flickr supports multi-word tags with spaces but collapses spaces when searching&lt;br /&gt;
*** ma.gnolia supports multi-word tags with spaces&lt;br /&gt;
*** technorati supports multi-word tags with spaces&lt;br /&gt;
**{{AwaitingAnswer}}&lt;br /&gt;
&lt;br /&gt;
===Tags with file extensions===&lt;br /&gt;
*Is &amp;lt;code&amp;gt;&amp;lt;a rel=&amp;quot;tag&amp;quot; href=&amp;quot;&amp;lt;nowiki&amp;gt;http://example.com/cheese.htm&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;gt;cheese&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt; a valid tag for &amp;quot;cheese&amp;quot;? Ditto &amp;quot;.asp&amp;quot; or &amp;quot;.php&amp;quot; variants? If not, why not?&lt;br /&gt;
&lt;br /&gt;
Any file-name extension in the last path segment is part of the tag value:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;http://example.com/cheese.htm&amp;lt;/nowiki&amp;gt; ⇒ cheese.htm&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;http://example.com/cheese.asp&amp;lt;/nowiki&amp;gt; ⇒ cheese.asp&lt;br /&gt;
*&amp;lt;nowiki&amp;gt;http://example.com/cheese.php&amp;lt;/nowiki&amp;gt; ⇒ cheese.php&lt;br /&gt;
&lt;br /&gt;
The [[rel-tag|rel-tag specification]] is clear on how to extract a tag from a URL. Special treatment for file-name extensions is not part of the extraction. Brian Suda gave an [http://microformats.org/discuss/mail/microformats-discuss/2007-February/008538.html explanation on the microformats-discuss list]. Consider the following URLs, the tags that the following URLs give under the current specification, and the effect of requiring special treatment for file-name extensions on the tags that the following URLs give.&lt;br /&gt;
&lt;br /&gt;
*http://en.wikipedia.org/wiki/.htaccess&lt;br /&gt;
*http://en.wikipedia.org/wiki/.Net&lt;br /&gt;
*http://en.wikipedia.org/wiki/India.Arie&lt;br /&gt;
*http://en.wikipedia.org/wiki/ASN.1&lt;br /&gt;
*[http://en.wikipedia.org/wiki/L.I.E. http://en.wikipedia.org/wiki/L.I.E.]&lt;br /&gt;
&lt;br /&gt;
===What about Scope?===&lt;br /&gt;
Since rel-tag is a feature used in many other microformats, the question often arises: &amp;quot;What is the scope of the tag?&amp;quot; For instance, a rel-tag may appear inside of an [[xfolk xFolk]] entry and on first glance it may appear that the tag should only apply to that entry. However, current publishing practice seems to indicate anything appearing on a page is likely related to the content of the page. Therefore, the interpretation is that not only does the rel-tag apply its direct container but to all containers and to the document as a whole; it contains the xFolk entry. This is a departure from strict knowledge theory in favor of real-world usage.&lt;br /&gt;
&lt;br /&gt;
As another example, you may link to your friend Joe with XFN and hCard, indicating in his categories that Joe is interested in swimming, which you loathe. Since the article is primarily about you and not about Joe's hobbies and because the rel-tag is inside an hCard, you may expect that the rel-tag does not apply to the document; however, the document does contain information about swimming,  albeit tiny, namely that your friend likes it. In this way, rel-tag is binary: it indicates direction (yes or no) but not magnitude. This equivalent to a free-text search sans [[http://en.wikipedia.org/wiki/tf-idf tf-idf]]; i.e. without a notion of term relevance.&lt;br /&gt;
&lt;br /&gt;
The upshot of this is that rel-tags can have downward scope but not upward scope.&lt;br /&gt;
&lt;br /&gt;
===Encoding and decoding the tag text in JavaScript===&lt;br /&gt;
If you want to get the text of the tag using JavaScript, you should use decodeURIComponent() to get a text representation of the tag, not escape. decodeURIComponent will properly handle UTF-8.&lt;br /&gt;
&lt;br /&gt;
==Related pages==&lt;br /&gt;
{{rel-tag-related-pages}}&lt;br /&gt;
**{{AwaitingAnswer}}&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=about&amp;diff=65067</id>
		<title>about</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=about&amp;diff=65067"/>
		<updated>2015-06-19T02:54:47Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: Undo revision 65066 by Johnukony (Talk) undo spam&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;entry-title&amp;gt;About microformats&amp;lt;/entry-title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[about|About microformats]] | [[about/thanks|Thanks]] | [[about/people|People]] | [[about/colophon|Colophon]]&lt;br /&gt;
&lt;br /&gt;
Designed for humans first and machines second, microformats are a set of simple, open data formats built upon existing and widely adopted standards. Instead of throwing away what works today, microformats intend to solve simpler problems first by adapting to current behaviors and usage patterns.&lt;br /&gt;
&lt;br /&gt;
== Microformats are ==&lt;br /&gt;
* A way of thinking about data&lt;br /&gt;
* Design principles for formats&lt;br /&gt;
* Adapted to current behaviors and usage patterns (“[http://ifindkarma.typepad.com/relax/2004/12/microformats.html Pave the cow paths].”)&lt;br /&gt;
* Highly correlated with semantic XHTML, AKA the [http://www.tantek.com/presentations/2004etech/realworldsemanticspres.html real world semantics, AKA lowercase semantic web], AKA lossless HTML&lt;br /&gt;
* A set of simple open data format standards that many are actively developing and implementing for more/better structured blogging and web microcontent publishing in general.&lt;br /&gt;
* “[http://theryanking.com/blog/archives/2005/04/07/an-evolutionary-revolution/ An evolutionary revolution]”&lt;br /&gt;
* All the above.&lt;br /&gt;
&lt;br /&gt;
== Microformats are not ==&lt;br /&gt;
* A new language&lt;br /&gt;
* Infinitely extensible and open-ended (though [[microformats2]] is a bit more extensible)&lt;br /&gt;
* An attempt to get everyone to change their behavior and rewrite their tools&lt;br /&gt;
* A whole new approach that throws away what already works today&lt;br /&gt;
* A panacea for all taxonomies, ontologies, and other such abstractions&lt;br /&gt;
* Defining the whole world, or even just boiling the ocean&lt;br /&gt;
* Any of the above&lt;br /&gt;
&lt;br /&gt;
== The microformats principles ==&lt;br /&gt;
* Solve a specific problem&lt;br /&gt;
* [[start-simple|Start as simple]] as possible&lt;br /&gt;
* Design for humans first, machines second&lt;br /&gt;
* [[Reuse]] building blocks from widely adopted standards&lt;br /&gt;
* Modularity / embeddability&lt;br /&gt;
* Enable and encourage decentralized development, content, services&lt;br /&gt;
&lt;br /&gt;
== historical ==&lt;br /&gt;
This page is largely historical, and acts as a wiki editable replacement for http://microformats.org/about.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[microformats]]&lt;br /&gt;
* [[microformats2]]&lt;br /&gt;
* [[principles]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Return to [[Main_Page]]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65037</id>
		<title>microformats2-parsing-issues</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65037"/>
		<updated>2015-06-02T23:51:12Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* deduping of rels */ close div&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;
=== deduping of rels ===&lt;br /&gt;
2015-06-02 by [[User:Kevin Marks|Kevin Marks]] &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;
&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;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== drop alternates collection and include them in rels ===&lt;br /&gt;
2015-06-01 by [[Tantek]], per inconsistency noted by Kevin Marks.&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;
* 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;.&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 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;
=== 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 the 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;
&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;
=== uf2 children inside a classic microformats root class name ===&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience. &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;
* ++ 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;
=== 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. [[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;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== backcompat classic microformats should only see backcompat properties ===&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience. &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 behavior 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;
* ++ 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;
=== microformats2 root class names should only see microformats2 properties ===&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience. &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;
* ++ 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;
=== implied properties on backcompat parsing unlikely to be intended ===&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience. &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;
&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;
** 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;
=== 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;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== link elements and u- parsing ===&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience. &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;
=== 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;
&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;
== see also ==&lt;br /&gt;
* [[microformats2-parsing]]&lt;br /&gt;
* [[microformats2]]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65036</id>
		<title>microformats2-parsing-issues</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=microformats2-parsing-issues&amp;diff=65036"/>
		<updated>2015-06-02T23:49:35Z</updated>

		<summary type="html">&lt;p&gt;Kevin Marks: /* deduping of rels */ implementation to try&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;
=== deduping of rels ===&lt;br /&gt;
2015-06-02 by [[User:Kevin Marks|Kevin Marks]] &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;
&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;
&lt;br /&gt;
=== drop alternates collection and include them in rels ===&lt;br /&gt;
2015-06-01 by [[Tantek]], per inconsistency noted by Kevin Marks.&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;
* 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;.&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 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;
=== 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 the 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;
&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;
=== uf2 children inside a classic microformats root class name ===&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience. &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;
* ++ 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;
=== 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. [[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;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== backcompat classic microformats should only see backcompat properties ===&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience. &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 behavior 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;
* ++ 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;
=== microformats2 root class names should only see microformats2 properties ===&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience. &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;
* ++ 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;
=== implied properties on backcompat parsing unlikely to be intended ===&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience. &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;
&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;
** 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;
=== 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;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== link elements and u- parsing ===&lt;br /&gt;
Status: resolved, awaiting implementation attempt/experience. &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;
=== 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;
&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;
== see also ==&lt;br /&gt;
* [[microformats2-parsing]]&lt;br /&gt;
* [[microformats2]]&lt;/div&gt;</summary>
		<author><name>Kevin Marks</name></author>
	</entry>
</feed>