{"id":3693,"date":"2011-06-26T22:06:32","date_gmt":"2011-06-26T20:06:32","guid":{"rendered":"http:\/\/notizblog.org\/?p=3693"},"modified":"2018-03-06T00:01:51","modified_gmt":"2018-03-05T23:01:51","slug":"microdata-wie-microformats-blos-besser-teil-2","status":"publish","type":"post","link":"https:\/\/notiz.blog\/2011\/06\/26\/microdata-wie-microformats-blos-besser-teil-2\/","title":{"rendered":"Microdata \u2013 wie Microformats blo\u00df besser\u2026 (Teil 2)"},"content":{"rendered":"\n<p><strong><a href=\"https:\/\/notiz.blog\/2009\/08\/10\/microdata-wie-microformats-bloss-besser-teil-1\/\">Microdata \u2013 wie Microformats blo\u00df besser\u2026 (Teil 1)<\/a>: \u00fcber abbr-design-pattern, value-class-pattern und Meta-Informationen<\/strong><\/p>\n\n\n\n<p>Knapp zwei Jahre nach dem ersten Teil, komme ich endlich mal zu Nummer 2 \ud83d\ude42 Nach den ganzen <a href=\"https:\/\/notiz.blog\/2011\/06\/02\/websemantics-google-yahoo-und-bing-einigen-sich-auf-einen-standard\/\">Diskussionen um schema.org<\/a> und <a href=\"https:\/\/notiz.blog\/2011\/06\/21\/pfefferles-openweb-microformats-v2\/\">Microformats V2<\/a> ist es mal wieder an der Zeit, am Image von Microdata zu arbeiten.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Namenskollisionen und <em>Namespaces<\/em><\/h3>\n\n\n\n<p><code>class<\/code>-Attribute werden in erster Linie zum Gestalten (CSS) und f\u00fcr JS benutzt! Laut &quot;<em><a href=\"http:\/\/www.webdirections.org\/sotw10\">The State of Web Development 2010<\/a><\/em>&quot; setzen nur <a href=\"http:\/\/www.webdirections.org\/sotw10\/markup\/#semantics\">knapp 35% aller Befragten<\/a> Microformats ein, das hei\u00dft mehr als 65% haben keine Ahnung von Mikroformaten oder setzten sie nicht ein. Das kann zu zwei Problemen f\u00fchren:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n    <li>Microformats werden oft durch Re-Designs zerst\u00f6rt. Facebook ist wohl das prominenteste Beispiel, nach einem Re-Design verschwanden alle Microformats von den Profilseiten.<\/li>\n    <li>Es werden f\u00e4lschlicherweise <code>class<\/code>-Attribute interpretiert die gar nichts mit Microformats zu tun haben nur zuf\u00e4llig den passenden Namen tragen. Anf\u00e4llige Klassen sind z.B. <code>url<\/code> (hCard), <code>photo<\/code> (hCard), <code>summary<\/code> (hReview), <code>description<\/code> (hReview) oder <code>author<\/code> (hAtom).<\/li>\n<\/ol>\n\n\n\n<p>Um diesem Problem Herr zu werden denkt <del>die Community<\/del> Tantek \u00c7elik \u00fcber eine Art <a href=\"http:\/\/microformats.org\/wiki\/microformats-2#ADVANTAGES\"><em>Namespace<\/em>-Erweiterung<\/a> nach.<\/p>\n\n\n\n<p><strong>Microformats<\/strong><\/p>\n\n\n\n<p>So k\u00f6nnten Microformtas demn\u00e4chst folgenderma\u00dfen aussehen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"h-card\"<\/span>&gt;<\/span>\n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">span<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"p-fn\"<\/span>&gt;<\/span>Max Mustermann<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">span<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Dabei steht:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n    <li>&quot;h-*&quot; f\u00fcr die <em>root-names<\/em>, z.B. &quot;h-card&quot;, &quot;h-event&quot;, &quot;h-entry&quot;<\/li>\n    <li>und &quot;p-*&quot; f\u00fcr &quot;simple&quot; (Text) Properties, z.B. &quot;p-fn&quot;, &quot;p-summary&quot;<\/li>\n<\/ul>\n\n\n\n<p>&#8230;und es gibt noch eine reihe weiterer <em>Prefixes<\/em>. Das ist zwar sch\u00f6n und gut und verhindert sicherlich einen Gro\u00dfteil der Namenskollisionen und man kann seinen Entwicklern sicherlich auch eintrichtern, alle <code>x-<\/code> Klassen in ruhe zu lassen&#8230; aber man mach damit jegliche Semantik kaputt. Nix mehr mit <em><a href=\"http:\/\/microformats.org\/wiki\/posh\">Plain Old Semantic HTML<\/a><\/em> (POSH):<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n    <p>POSH encapsulates the best practices of using semantic HTML to author web pages. Semantic HTML is the subset of HTML 4.01 (or XHTML 1.0) elements and attributes that are semantic rather than presentational. The best way to learn and understand POSH is to do it.<\/p>\n<\/blockquote>\n\n\n\n<p>&#8230;und <em><a href=\"http:\/\/www.w3.org\/QA\/Tips\/goodclassnames\">semantic class names<\/a><\/em>:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n    <p>Think about why you want something to look a certain way, and not really about how it should look. Looks can always change, but the reasons for giving something a look stay the same.<\/p>\n<\/blockquote>\n\n\n\n<p>Au\u00dferdem verkompliziert man das, jetzt noch so einfach zu nutzende, Format unn\u00f6tig. Wann ist etwas eine id (<code>i-*<\/code>) oder eine Nummer (<code>n-*<\/code>) und was ist mit Attributen, die sowohl aus auch sein k\u00f6nnen?<\/p>\n\n\n\n<p><strong>Microdata<\/strong><\/p>\n\n\n\n<p>Der Microdata Teil ist relativ schnell abgehandelt&#8230; Durch die Trennung von <em>Semantik<\/em> und <em>Design<\/em> kommt es bei Mircodata per se zu keinen Kollisionen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">itemtype<\/span>=<span class=\"hljs-string\">\"http:\/\/microformats.org\/profile\/hcard\"<\/span> <span class=\"hljs-attr\">itemscope<\/span>&gt;<\/span>\n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">span<\/span> <span class=\"hljs-attr\">itemprop<\/span>=<span class=\"hljs-string\">\"fn\"<\/span>&gt;<\/span>Max Mustermann<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">span<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Informationen Referenzieren<\/h3>\n\n\n\n<p>Informationen stehen auf Webseiten nicht immer so nahe beieinander, so dass es oftmals schwer ist, alle Daten mit einem HTML Attribut zu umschlie\u00dfen.<\/p>\n\n\n\n<p><strong>Microformats<\/strong><\/p>\n\n\n\n<p>Je komplizierter das Format oder der Anwendungsfall, desto mehr st\u00f6\u00dft man mit Microformats an die grenzen des machbaren. HTML 4 bietet keinerlei Mechanismen, den oben angesprochenen Problem zu l\u00f6sen, deshalb greift die Microformtas-Community zu einer recht Kreativen L\u00f6sung: dem <em><a href=\"http:\/\/microformats.org\/wiki\/include-pattern\">include-pattern<\/a><\/em>.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"vcard\"<\/span>&gt;<\/span>\n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">a<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"include\"<\/span> <span class=\"hljs-attr\">href<\/span>=<span class=\"hljs-string\">\"#author-name\"<\/span>&gt;<\/span><span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">a<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\n\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">span<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"fn n\"<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\">\"author-name\"<\/span>&gt;<\/span>Max Mustermann<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">span<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>oder:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"vcard\"<\/span>&gt;<\/span>\n <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">object<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"include\"<\/span> <span class=\"hljs-attr\">data<\/span>=<span class=\"hljs-string\">\"#author-name\"<\/span>&gt;<\/span><span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">object<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\n\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">span<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"fn n\"<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\">\"author-name\"<\/span>&gt;<\/span>Max Mustermann<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">span<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Nette Idee mit etlichen Unsch\u00f6nheiten:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n    <li>Leere HTML-Elemente<\/li>\n    <li>Zweckentfremdung von Object- bzw. Link-Element<\/li>\n    <li>Die Nutzung von <code>&lt;object \/&gt;<\/code> f\u00fchrt zu einigen Problem bei einigen Versionen von Internet Explorer, Safari und Firefox<\/li>\n<\/ul>\n\n\n\n<p><strong>Microdata<\/strong><\/p>\n\n\n\n<p>Microdata l\u00f6st das Problem mit dem <code>itemref<\/code>-Attribut:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div<\/span> <span class=\"hljs-attr\">itemscope<\/span>\n     <span class=\"hljs-attr\">itemtype<\/span>=<span class=\"hljs-string\">\"http:\/\/microformats.org\/profile\/hcard\"<\/span>\n     <span class=\"hljs-attr\">itemref<\/span>=<span class=\"hljs-string\">\"author-name\"<\/span>&gt;<\/span>\n ...\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">div<\/span>&gt;<\/span>\n\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">span<\/span> <span class=\"hljs-attr\">itemprop<\/span>=<span class=\"hljs-string\">\"fn n\"<\/span> <span class=\"hljs-attr\">id<\/span>=<span class=\"hljs-string\">\"author-name\"<\/span>&gt;<\/span>Max Mustermann<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">span<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Viel mehr gibt es dazu eigentlich nicht zu sagen \ud83d\ude42<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Fazit<\/h3>\n\n\n\n<p>Als Fazit, passt hier sehr gut ein Satz den ich auch als Fazit im aktuellen <a href=\"https:\/\/notiz.blog\/2011\/06\/21\/pfefferles-openweb-microformats-v2\/\">Webstandards-Magazin<\/a> verwende:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n    <p>Microformats sind und bleiben Plain Old Semantic HTML und man sollte auch in Zukunft keinesfalls darauf verzichten sie einzusetzen, selbst mit dem Risiko einer fehlerhaften Implementierungen oder Namenskollisionen, \u201eerzieht\u201c die Nutzung von Microformats einen jeden Webentwickler dazu \u201esch\u00f6nen\u201c und \u201esprechenden\u201c HTML-Code zu schreiben.<\/p>\n<\/blockquote>\n\n\n\n<p>&#8230;um HTML-Code aber wirklich maschinenlesbar zu machen, wird es Zeit auf Microdata und RDFa zu setzen. Microformats haben den Weg f\u00fcr bessere und native L\u00f6sungen geebnet und haben weiterhin ihre Daseinsberechtigung aber man sollte nicht mehr als dem Format machen, als es leisten kann.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Microdata \u2013 wie Microformats blo\u00df besser\u2026 (Teil 1): \u00fcber abbr-design-pattern, value-class-pattern und Meta-Informationen Knapp zwei Jahre nach dem ersten Teil, komme ich endlich mal zu Nummer 2 \ud83d\ude42 Nach den ganzen Diskussionen um schema.org und Microformats V2 ist es mal wieder an der Zeit, am Image von Microdata zu arbeiten. Namenskollisionen und Namespaces class-Attribute werden [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"webmentions_disabled_pings":false,"webmentions_disabled":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[2],"tags":[830,815,164,937],"class_list":{"0":"post-3693","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-web","7":"tag-include-pattern","8":"tag-microdata","9":"tag-microformats","10":"tag-namespaces","11":"h-entry","12":"hentry"},"_links":{"self":[{"href":"https:\/\/notiz.blog\/wp-api\/wp\/v2\/posts\/3693","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/notiz.blog\/wp-api\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/notiz.blog\/wp-api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/notiz.blog\/wp-api\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/notiz.blog\/wp-api\/wp\/v2\/comments?post=3693"}],"version-history":[{"count":0,"href":"https:\/\/notiz.blog\/wp-api\/wp\/v2\/posts\/3693\/revisions"}],"wp:attachment":[{"href":"https:\/\/notiz.blog\/wp-api\/wp\/v2\/media?parent=3693"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/notiz.blog\/wp-api\/wp\/v2\/categories?post=3693"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/notiz.blog\/wp-api\/wp\/v2\/tags?post=3693"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}