Open Graph-Namespace-Deklaration: HTML mit XMLNS oder Kopfpräfix?


129

Ich habe widersprüchliche Informationen darüber gesehen, wie Open Graph-Namespaces am besten implementiert werden können. Insbesondere verwendet die Open Graph-Website einige verschiedene Methoden, und die Facebook Open Graph-Beispiele verwenden andere Methoden.

Beispiel für eine Open Graph-Website (unter Verwendung des HTML-Präfixattributs):

<html prefix="og: http://ogp.me/ns#">

Quellcode der Open Graph-Website (unter Verwendung des HTML XMLNS-Attributs):

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#">

Facebook Open Graph-Dokumentation (unter Verwendung des HEAD-Präfixattributs):

<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb#">

Facebook Open Graph-Dokumentation Nr. 2 (unter Verwendung des HTML-XMLNS-Attributs):

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" 
      xmlns:fb="https://www.facebook.com/2008/fbml">

Was ist die empfohlene Methode oder spielt es keine Rolle?


9
Ich verfolge intern bei FB, um die richtige Antwort für Sie zu erhalten.
Simon Cross

7
@ SimonCross, Jahre später (Nov / 2017) warten wir immer noch auf die Antwort ...;)
Helmut Granda

Antworten:


73

Sie sind alle gleichwertig und werden alle funktionieren.

Verwenden Sie das Präfix, da dies die neue empfohlene Methode ist und weniger Zeichen enthält.

Ich werde unsere gesamte Dokumentation auf das Präfix aktualisieren.


4
Können Sie erklären, warum Sie überhaupt etwas verwenden sollten? Wie wäre es, wenn ich diese Erklärung einfach weglasse? Wird irgendetwas kaputt gehen, wenn ich das tue?
Andrewrk

3
Im Moment wird nichts kaputt gehen, aber es ist selten eine gute Idee, sich auf Standardeinstellungen zu verlassen, wenn Sie explizit sein können. Wenn wir 2 Jahre später die Standardeinstellungen ändern, wird Ihre Website beschädigt. Wenn Sie Ihre Namespaces direkt deklarieren, hilft dies auch anderen Parsern, nicht nur Facebook.
Paul Tarjan

1
Paul, mir ist aufgefallen, dass die Dokumente seit November nicht mehr aktualisiert wurden. Warum ist es am besten, den neuen Weg zu verwenden, wenn beide Wege auf absehbare Zeit von allen vorhandenen Browsern unterstützt werden? Die Einführung von etwas Neuem, wenn nicht nur Support vorhanden ist (zwischen Benutzeragenten, Parsern usw.), scheint ein unnötiges Risiko zu sein, es sei denn, es besteht ein tatsächlicher Unterschied zwischen beiden. Ich konnte keine Ressource finden, die dies sagt.
AndrewF

3
@ PaulTarjan hier ! Das hat ein Beispiel mit xmlns. Sollte das prefixauch auf htmloder headtag verwendet werden? Wäre es so oder so in Ordnung? Welches wird empfohlen?
its_me

9
Oh, diese Dokumente sind alt. Das gelbe Ding oben sagt es. Wir wollten sie nicht berühren, weil sie häufig referenziert werden. Setzen Sie die prefixauf head. Es funktioniert auf beiden, aber näher an den Tags ist besser.
Paul Tarjan

4

Ich habe versucht, @Paul Tarjans Antwort zu folgen, ein Präfix im Kopf zu verwenden. Allerdings habe ich einige Internet Explorer 8 Problem . Am Ende verwende ich also immer noch die xmlns-Methode für den fb-Namespace:

<!DOCTYPE HTML>
<html xmlns:fb="http://ogp.me/ns/fb#">
  <head prefix="og: http://ogp.me/ns# object: http://ogp.me/ns/object#">

3

Es ist nicht einmal wichtig. Der anfängliche RDFa-Kernkontext erkennt og als weit verbreitetes Vokabularpräfix:

RDFa-Benutzer können diese Präfixe verwenden, ohne die Präfixe im HTML-Code definieren zu müssen. Dieselbe Liste von Präfixen wurde auch für JSON-LD als JSON-LD-Kontext am URI definiert http://www.w3.org/2013/json-ld-context/rdfa11. JSON-LD-Benutzer können den @contextSchlüssel mit diesem URI als Abkürzung verwenden, um dieselben Präfixe zu verwenden.

Hervorhebung zur Klarheit hinzugefügt.

Daher müssen Sie Ihren HTML-Dokumenten keinen Namespace hinzufügen. Weitere Informationen hier .


2
<html xmlns="http://www.w3.org/1999/xhtml" prefix="og: http://ogp.me/ns# fb:
http://www.facebook.com/2008/fbml"> <head>

Es gibt den besten Weg zur Validierung.


1

Das Präfix / xmlns-Attribut ist nützlich, um Kurzschrift zu definieren. rdf stammt aus der xml-Abstammung, daher sollte erwartet werden, dass die xmlns-Notation unabhängig von den Details des Doctype funktioniert. rdfa erweitert HTML um Attribute einschließlich des Präfixes, wie von http://www.w3.org/TR/rdfa-in-html/#extensions-to-the-html5-syntax angegeben. Dies erfordert jedoch die Einhaltung von http: // dev. w3.org/html5/rdfa/rdfa-module.html Auch die darin erwähnte Werkzeugunterstützung für rel = "profile" wird noch erwartet. Bis dahin haben Sie die Wahl zwischen der Verwendung älterer Doctypes oder der manuellen Platzierung von rdf: zu Validierungszwecken oder warten Sie, bis der Validator und solche Tools aufholen. Der richtige Ort, um eine Deklaration abzugeben, ist jedes Elementöffnungs-Tag, das Vorfahr dessen ist, wo immer die Kurzschreibweise verwendet wird. Speziell für den Fall des og-Präfixes ist es durch den ursprünglichen Kontext von RDFa Core vordefiniert,http://www.w3.org/2011/rdfa-context/rdfa-1.1.html Es ist also in Ordnung, es für neuere Doctypes insgesamt zu überspringen. Und speziell für HTML5 wird der RDFa-Anfangskontext http://www.w3.org/2011/rdfa-context/html-rdfa-1.1 erst nach dem zuvor erwähnten RDFa-Anfangskontext geladen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.