Der Inhalt wurde an die neusten Änderungen der Microdata-Spezifikation angepasst. Letztes Update 30.01.2010. Microdata – wie Microformats bloß besser… (Teil 2): über „Namenskollisionen und Namespaces“ und „Informationen Referenzieren“

Wie schon erwähnt, vereint Microdata die Vorzüge von RDFa und Microformats in einem Standard… aber nicht nur das, Microdata (in Verbindung mit HTML5) bietet auch einige schicke Lösungen für diverse Microformats-Problemchen.

Das abbr-design-pattern oder das value-class-pattern

Microformats:

Das abbr-design-pattern ist bisher wohl das umstrittenste Pattern im Microformats-Wiki. Grund für die Kritik an dem Pattern ist die etwas unorthodoxe Verwendung des <abbr> Tags um maschinenlesbare Meta-Informationen bereit zu stellen.

<div class="vevent">
  <abbr class="dtstart" title="2007-10-05">October 5</abbr>
  ...
</div>Code-Sprache: HTML, XML (xml)

Eine erste Alternative aus der Microformats-Community ist das value-class-pattern, das zwar das Accessibility-Problem „behebt“ aber noch lange keine Perfekte Lösung bietet.

<div class="vevent">
  <span class='dtstart'>
    <span class='value-title' title='2007-10-05'> </span>
    October 5
  </span>
  ...
</div>Code-Sprache: HTML, XML (xml)

Der HTML-Code wird durch weitere Elemente unnötig aufgeblasen und das Pattern basiert auf teilweise leeren Elementen.

Microdata/HTML5:

In HTML5 gibt es dagegen ein spezielles Tag um Zeit und Datum sowohl user als auch maschinenlesbar zu machen.

<div itemscope
  itemtype="http://microformats.org/profile/hcalendar">
  <time itemprop="dtstart" datetime="2007-10-05">October 5</time>
  ...
</div>Code-Sprache: HTML, XML (xml)

Reine Meta-Informationen

Microformats:

Eigentlich spricht es gegen die Prinzipien der Microformats-Idee, reine Metadaten zu verwenden:

Visible data = more accurate data. By designing for humans first and making the data presentable (thus viewed and verified by humans), the data is inevitably more accurate, not only to begin with (as errors are easily/quickly noticed by those viewing the pages/sites), but over time as well; in that changes are noticed, and if data becomes out-of-date or obsolete, that’s more likely to be noticed as well. This is in direct contrast to „side files“ and invisible data like that contained in <meta> tags.
Tantek Çelik

…aber GEO-Daten sind z.B. Informationen die der Benutzer nicht unbedingt sehen muss.

<div class="geo">
 <span class="latitude">37.386013</span>
 <span class="longitude">-122.082932</span>
</div>Code-Sprache: HTML, XML (xml)

Microdata/HTML5:

In HTML5 gibt es für dieses Problem eine recht schicke Lösung: Laut der Spezifikation sind <meta />-Tags im kompletten Quellcode (auch im body) erlaubt.

<div itemscope 
 itemtype="http://microformats.org/profile/hcard#geo">
 <meta itemprop="latitude" content="37.386013" />
 <meta itemprop="longitude" content="-122.082932" />
</div>Code-Sprache: HTML, XML (xml)

Fazit

Selbst wenn sich Microdata (item und itemprop) nicht durchsetzen sollte, sind <meta> und <time> schon ein echter „Segen“ für die Microformats-Community 🙂

Im zweiten Teil nehm‘ ich mir das include-pattern und das Problem der möglichen NamensKollisionen vor. Microdata – wie Microformats bloß besser… (Teil 2): über „Namenskollisionen und Namespaces“ und „Informationen Referenzieren“

Manu Sporny und die RDFa Task Force haben es doch noch nicht geschafft, Ian Hickson davon zu überzeugen RDFa in HTML5 zu integrieren und versuchen es jetzt im Alleingang. Es gibt auch schon einen ersten Editors Draft von HTML5+RDFa.

Besonders spannend finde ich folgenden Abschnitt aus Manu Spornys Blogpost zu dem neuen Draft:

I specifically did not remove the Microdata section from the HTML5+RDFa specification because it provides competition for RDFa – competition is a good thing. It forces the RDFa Task Force to re-think some assumptions we’ve made and to see if we can provide both backwards-compatibility and some of the features provided via Microformats as well as Ian’s Microdata proposal.

Ich versteh das jetzt mal so, dass endlich beide Parteien verstanden haben die RDFa Task Force verstanden hat dass sowohl RDFa als auch Microformats ihre Daseinsberechtigung haben und Microdata die Vorteile beider Standards schön vereint.

Mal schaun ob ich die Tage mal etwas Zeit finde, die einzelnen Standards nochmal detaillierter Vorzustellen bzw. zu Vergleichen und nochmal zu beschreiben warum die Idee hinter Microdata so großartig ist!

via Manu Sporny

Das hab ich ja noch gar nicht erzählt…

webstandards-wuerze.jpg

…ich habe habe eine Kolumne im Webstandards-Magazin 🙂

Den ersten Versuch findet ihr in der zweiten (also aktuellen) Ausgabe. Themen sind, wie der Name schon sagt Webstandards, nur sehr viel weiter gefasst. Eigentlich könnte man auch Open Web Kolumne sagen. Es geht also um alles worum es auch hier im Blog geht… nur eben kolumnenmäßig 😉

Der Inhalt wure an die neusten Änderungen der Microdata-Spezifikation angepasst. Letztes Update 30.01.2010.

In dem Punkt, dass HTML semantischer werden muss, ist sich die Web-Welt einig, nur das „Wie“ ist noch nicht ganz klar. Aus verschiedenen Gründen (die alle sehr, sehr technisch sind) ist die WHATWG-Community bzw. Ian Hickson im speziellen, nicht sehr begeistert von dem bisherigen De-facto-Standard RDFa und hat deshalb vor ein paar Wochen Microdata als eine mögliche Alternative vorgestellt.

Microdata-Objekte bestehen eigentlich nur aus einer Vielzahl von Key/Value-Paaren. Ein Object wird durch einen umschließenden HTML-Tag mit einem itemscope-Attribut gekennzeichnet und hat mehrere Properties ausgezeichnet durch itemprop-Attribute.

<div itemscope>
 <p>Mein Name ist <span itemprop="name">Matthias</span>.</p>
</div>Code-Sprache: HTML, XML (xml)

Microdata ist für mich die gelungene Weiterentwicklung der Microformats-Idee unter Berücksichtigung von RDFa und prinzipiell lassen sich auch beide Standards mit Microdata umsetzen. Wie generell von HTML5 gewohnt, kann man auch Microdata auf viele verschiedene Weisen benutzen ohne den Standard zu verletzen.

Microdata im Microformats-Stil

Um z.B. eine hCard mit Microdata abzubilden muss man eigentlich nur die bisher verwendeten class durch itemprop-Attribute zu ersetzen und mit itemtype das Format festlegen.

<div itemscope itemtype="http://microformats.org/profile/hcard">
 <span itemprop="fn">Matthias Pfefferle</span>
 <img itemprop="photo" src="avatar.png" alt="Avatar" />
</div>Code-Sprache: HTML, XML (xml)

HTML5 und Microdata bieten außerdem eine ganze Reihe weiterer Tags und Attribute die alle bisherigen Microformats-Probleme beheben sollten. Aber darauf werde ich in einem extra Artikel noch detaillierter darauf eingehen.

Microdata im RDFa-Stil

item und itemprop können aber auch durch URIs (ähnlich wie RDFa) ausgezeichnet werden und würden sich dadurch relativ leicht (durch z.B. GRDDL) in klassisches RDF konvertieren lassen.

<div itemscope itemtype="http://www.w3.org/2001/vcard-rdf/3.0#">
  <span itemprop="http://www.w3.org/2001/vcard-rdf/3.0#fn">
    Matthias Pfefferle
  </span>
  <img itemprop="http://www.w3.org/2001/vcard-rdf/3.0#photo"
       src="avatar.png" alt="Avatar" />
</div>Code-Sprache: HTML, XML (xml)

Fazit

Trotz anfänglicher Skepsis bin ich immer begeisterter von dem neuen HTML5 Draft! Microdata fühlt sich einfach viel mehr nacht HTML an…

<div itemscope itemtype="http://microformats.org/profile/hcard">
  <a itemprop="url" href="https://notiz.blog">
    <span itemprop="fn">Matthias Pfefferle</span>
  </a>
</div>Code-Sprache: HTML, XML (xml)

…als RDFa.

<div xmlns:foaf="http://xmlns.com/foaf/0.1/">
  <span typeof="foaf:Person">
    <a property="foaf:name" rel="foaf:homepage" href="https://notiz.blog">
      Matthias
    </a>
  </span>
</div>Code-Sprache: HTML, XML (xml)

Trotzdem hoffe ich, dass man sich doch noch irgendwie einigen kann und sich vielleicht in der Mitte trifft. Zwei neue HTML-Spezifikationen (XHTML2 & (X)HTML5) sind schon verwirrend genug, da brauchen wir nicht auch noch zwei unterschiedliche Semantik-HTML-Standards

Jetpack ist das jüngste Baby der Mozilla Labs und bietet eine Art API, die es Entwicklern ermöglicht, den Firefox mit klassischen Web-Techniken (HTML, JavaScript und CSS) zu erweitern. Statt mit XUL kann man seine Firefox Addons demnächst vielleicht wirklich mit HTML und CSS gestalten. Großartige Idee!

Hier klicken, um den Inhalt von Vimeo anzuzeigen.
Erfahre mehr in der Datenschutzerklärung von Vimeo.

Übrigens unterstützt Jetpack, wie auch Ubiquity, die ab der Version 3 in Firefox nativ implementierte Microformats API. Der folgende Code zeigt, wie man die Microformats API in Jetpack-Skripte integrieren kann. Das Beispiel zählt z.B. alle hCards der Seite, auf der man sich gerade befindet und zeigt das Ergebnis per Info-Message an:

Components.utils.import("resource://gre/modules/Microformats.js");
// count hCards
jetpack.tabs.onFocus(function() {
  // load HTML
  var doc = jetpack.tabs.focused.contentDocument;
  // count microformats 
  var uFcount = Microformats.count('hCard', doc);
  // load notifier
  jetpack.notifications.show({
    title: 'hCards',
    body: 'number of hCards on this website: ' + uFcount,
    icon: 'http://microformats.org/favicon.ico'
  });
});Code-Sprache: JavaScript (javascript)

Nachtrag:

Unter Windows und Linux scheinen die Messages nicht so ganz zu funktionieren, deshalb gibt’s hier nochmal nen Beispiel wo der Counter in der Statusbar ausgegeben wird:

Components.utils.import("resource://gre/modules/Microformats.js");
jetpack.statusBar.append({
  html: '<img src="http://microformats.org/favicon.ico"> hCards: <span id="hcard-count">0</span>',
  onReady: function(jetpackWidget) {
    function counthCard(){
      //load HTML
      var doc = jetpack.tabs.focused.contentDocument;
      // count microformats
      var uFcount = Microformats.count('hCard', doc);
      if (uFcount > 0) {
        $(jetpackWidget).find('#hcard-count').html(uFcount);
      }
    }
    jetpack.tabs.onFocus(counthCard);
  }
});Code-Sprache: JavaScript (javascript)

Mal schaun ob mir demnächst noch etwas sinnvolleres Einfällt 😉

Was Microformats.org für HTML-Semantiken ist, soll Microsyntax.org für Twitter-Grammatiken werden.

Vor knapp zwei Jahren gab es schon mal einen Trend, Tweets mit „Meta Informationen“ anzureichern (und Chris Messina (wer sonst!) hatte sogar schon 2006 eine ganz ähnliche Idee). Leider haben die so genannten Nanoformats sich, bis auf einige Ausnahmen (@replies und ), nicht wirklich durchgesetzt.
Trotzdem entstanden ein paar ganz nette Tools:

Das gestern von Stowe Boyd gestartete Microsyntax.org soll das ganze Thema jetzt nochmal neu aufrollen, Ordnung in das Microsyntax Chaos bringen (was ich schon mal sehr befürworte) und eine Plattform für neue Formate bieten.

By microsyntax I mean various ways to embed structured information right into the text of Twitter messages. The most well-known sort of microsyntax are the retweet convention (or ‘RT’) and hashtags (or twitter tags).

[…]

As a result of all this activity, and the potential for collective action in these efforts, we are launching a new non-profit, Microsyntax.org, with the purpose of investigating the various ways that individuals and tool vendors are trying to innovate around this sort of microsyntax, trying to define reference use cases that illuminate the ways they may be used or interpreted, and to create a forum where alternative approaches can be discussed and evaluated. We may even get involved in the development of proof-of-concept implementations that can act as reference architectures for microsyntactic extensions to the Twitter grammar emerging in the real time stream.

Prinzipiell finde ich die Idee ganz spannend und freue mich auf die erste Ergebnisse… und hoffen wir mal dass die zukünftigen Tweets nicht ausschließlich aus Meta-Informationen bestehen:

RT @pfefferle ich bin gerade in /berlin angekommen und freue mich aufs !barcamp.

(naja, eigentlich sieht ja jetzt schon jeder zweite Tweet so aus 😉 )

In einem kürzlich veröffentlichten Interview für das Web Standards Project (kurz WaSP) hat Ian Hickson (Editor der HTML5 Spezifikation) die Hoffnung RDFa würde auch von HTML5 unterstützt werden, endgültig zu nichte gemacht.

Auf die Frage, wie es denn mit Microformats/RDFa in HTML5 aussehe antwortet Hickson:

Microformats is natively supported in HTML5, just like it was in HTML 4, because Microformats use the built-in extension mechanisms of HTML.

We considered RDFa long and hard (in fact this is an issue that’s a hot topic right now), but at the end of the day, while some people really like it, I don’t think it strikes the right balance between power and ease of authoring. For example, it uses namespaces and prefixes, which by and large confuse authors to no end. Just recently though I proposed something of a compromise which takes some of RDFa’s better ideas and puts them into HTML 5, so hopefully that will take care of the main needs that caused people to invent RDFa. We’ll see.

Die erwähnte Alternative (die ich mir gerade zu Gemühte führe) lautet übrigens Microdata, welche RDFa so sehr ähnelt, dass man eigentlich auch gleich RDFa hätte einsetzen können… Schade!

Das bisher wohl größte Problem bei der Verwendung von Microformats ist (oder besser wahr) die Accessibility durch die etwas zweckentfremdete Verwendung des <abbr />-Tags.

Das so genanntes abbr-design-pattern diente hauptsächlich dazu (es gibt noch einige andere Anwendungsfälle), ein für den Menschen lesbares Datum auch für die Maschine lesbar zu machen und ist Bestandteil von Mikroformaten wie z.B. hCalendar, hAtom oder hReview.

Ein Beispiel: <abbr class="dtstart" title="2009-05-12">heute</abbr>

SelfHTML über das abbr-Element:

zeichnet einen Text aus mit der Bedeutung „dies ist eine Abkürzung“

Selbst wenn man davon ausgeht, dass das Wort heute eine Abkürzung für das volle Datum 2009-05-12 ist, gibt es ein großes Problem mit Screen-Readern. Die meisten Screen-Reader sind so konfiguriert, dass sie statt der Abkürzung, das im title-Attribut angegebene, vollständige Wort lesen.
Im Falle der abbr-design-pattern im oben genannten Beispiel wäre das 2009-05-12 (gelesen „Zweitausendneun minus Fünf minus Zwölf“), also viel missverständlicher als heute.

Das gerade angekündigte value-class-pattern soll dieses (und einige andere) Problem jetzt beheben.

Ein Datum, wie im Beispiel oben, würde mit dem value-class-pattern folgendermaßen aussehen:

<span class='dtstart'>
  <span class='value-title' title='2009-05-12'> </span>
  heute
</span>Code-Sprache: HTML, XML (xml)

Erklärung:

  • dtstart gibt immer noch an, dass es sich bei dem folgenden um ein Datum handelt
  • Die folgende Klasse: value-title gibt an, dass sich dtstart auf das title-Attribut des spans bezieht
  • Im title steht der maschinen-lesbare text

Das neue Pattern beschreibt aber noch eine ganze Reihe an anderen Anwendungsfällen, am besten ihr überfliegt die Seite einfach mal selbst: http://microformats.org/wiki/value-class-pattern

…es sind übrigens alle Microformats-Nutzer aufgerufen, ihre Seiten und Parser auf das neue Pattern umzustellen, also viel Spaß dabei 🙂

Der Begriff POSH (ein Acronym für Plain Old Semantic HTML) geistert ja schon eine ganze Weile durch die Microformats-Community, aber dass es für POSH eine richtige Definition gibt und dass man zwischen POSHFormats und Microformats unterscheidet wahr mir neu…

Der Unterschied:

poshformats are data formats constructed from the use of semantic class names.

microformats are the proper subset of poshformats which have been developed via the microformats process and principles.

POSHFormats sind also alle Formate die zwar auf semantischem HTML basieren, aber nicht den Microformats-Prozess durchlaufen haben. Beispiele: Pavatar, hDOAP oder die MicroID.

Für diese armen Formate, die zwar teilweise echt großartig sind trotzdem aber keine Microformats sein dürfen, hat Toby Inkster jetzt mit poshformats.org ein eigenes Zuhause geschaffen.

(Ich musste schon ein klein wenig schmunzeln 🙂 )