Deklaracja przestrzeni nazw Open Graph: HTML z XMLNS czy prefiks head?

131

Widziałem sprzeczne informacje dotyczące najlepszego sposobu implementacji przestrzeni nazw Open Graph. W szczególności witryna Open Graph wykorzystuje kilka różnych metod, a przykłady Open Graph Facebooka wykorzystują inne metody.

Przykład witryny Open Graph (z użyciem atrybutu prefiksu HTML):

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

Kod źródłowy witryny Open Graph (przy użyciu atrybutu HTML XMLNS):

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

Dokumentacja Facebook Open Graph (przy użyciu atrybutu prefiksu HEAD):

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

Dokumentacja Facebook Open Graph nr 2 (przy użyciu atrybutu HTML XMLNS):

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

Jaka jest zalecana metoda, czy to w ogóle nie ma znaczenia?

Matt Beckman
źródło
9
Śledzę wewnętrznie na FB, aby uzyskać dla Ciebie właściwą odpowiedź.
Simon Cross
7
@SimonCross, lata później (listopad / 2017) wciąż czekamy na odpowiedź ...;)
Helmut Granda

Odpowiedzi:

74

Wszystkie są równoważne i będą działać.

Użyj przedrostka, ponieważ jest to nowy zalecany sposób i zawiera mniej znaków.

Zaktualizuję całą naszą dokumentację do prefiksu.

Paul Tarjan
źródło
4
Czy możesz wyjaśnić, dlaczego w ogóle czegoś używać? Może po prostu zostawię tę deklarację? czy coś się zepsuje, jeśli to zrobię?
andrewrk
3
W tej chwili nic się nie zepsuje, ale poleganie na domyślnych ustawieniach rzadko jest dobrym pomysłem, gdy można to powiedzieć wprost. Jeśli za 2 lata zmienimy ustawienia domyślne, Twoja witryna ulegnie awarii. Ponadto, jeśli zadeklarujesz swoje przestrzenie nazw bezpośrednio, pomoże to innym parserom, nie tylko Facebookowi.
Paul Tarjan
1
Paul, zauważyłem, że dokumenty nie były aktualizowane od listopada. Dlaczego nowy sposób jest najlepszy, skoro oba sposoby będą obsługiwane przez wszystkie istniejące przeglądarki w dającej się przewidzieć przyszłości? Przyjęcie czegoś nowego, jeśli wsparcie nie obejmuje wszystkich (między programami użytkownika, parserami itp.) Wydaje się niepotrzebnym ryzykiem, chyba że istnieje jakaś rzeczywista różnica między nimi. Nie udało mi się znaleźć żadnego źródła, które to mówi.
AndrewF
3
@PaulTarjan tutaj ! Ten ma przykład użycia xmlns. Czy powinien prefixbyć również używany na htmllub headtag? Czy i tak byłoby dobrze? Co jest zalecane?
its_me
9
Och, te dokumenty są stare. Tak mówi żółta rzecz na górze. Nie chcieliśmy ich dotykać, ponieważ często się do nich odwołuje. Umieścić prefixna head. Działa na obu, ale bliżej tagów jest lepsze.
Paul Tarjan,
5

Próbowałem podążać za odpowiedzią @Paul Tarjan, używając przedrostka w głowie. Jednak mam problem z Internet Explorerem 8 . Więc ostatecznie nadal używam sposobu xmlns dla przestrzeni nazw fb:

<!DOCTYPE HTML>
<html xmlns:fb="http://ogp.me/ns/fb#">
  <head prefix="og: http://ogp.me/ns# object: http://ogp.me/ns/object#">
lulalala
źródło
3

To nawet nie ma znaczenia. Podstawowy kontekst początkowy RDFa rozpoznaje og jako powszechnie używany przedrostek słownictwa:

Użytkownicy RDFa mogą używać tych prefiksów bez konieczności definiowania ich w kodzie HTML. Ta sama lista prefiksów została również zdefiniowana dla JSON-LD jako kontekstu JSON-LD w URI http://www.w3.org/2013/json-ld-context/rdfa11; Użytkownicy JSON-LD mogą używać @contextklucza z tym identyfikatorem URI jako skrótu do używania tych samych prefiksów.

Podkreślenie dodane dla jasności.

Dlatego nie musisz dodawać przestrzeni nazw do dokumentów HTML. Więcej informacji tutaj .

Josh Habdas
źródło
2
<html xmlns="http://www.w3.org/1999/xhtml" prefix="og: http://ogp.me/ns# fb:
http://www.facebook.com/2008/fbml"> <head>

Jest najlepszy sposób weryfikacji.

Егор Щапов
źródło
1

atrybut prefix / xmlns jest przydatny do definiowania krótkiej ręki. rdf pochodzi z linii xml, więc notacja xmlns powinna działać niezależnie od szczegółów typu dokumentu. rdfa rozszerza html o atrybuty, w tym przedrostek podany przez http://www.w3.org/TR/rdfa-in-html/#extensions-to-the-html5-syntax Jednak wymaga to przestrzegania http: // dev. w3.org/html5/rdfa/rdfa-module.html Oczekiwano również na obsługę narzędzia dla rel = "profile", jak tam wspomniano. Do tego czasu wybór polega na używaniu starszych typów dokumentów lub ręcznym umieszczaniu rdf: w celu walidacji lub czekaniu, aż walidator i inne narzędzia nadrobią zaległości. Właściwym miejscem do złożenia deklaracji jest dowolny znacznik otwierający element, który jest przodkiem wszędzie tam, gdzie będzie używana notacja skrócona. Szczególnie w przypadku przedrostka og, jego predefiniowany przez początkowy kontekst RDFa Core http://www.w3.org/2011/rdfa-context/rdfa-1.1.html, więc całkowite pominięcie go w przypadku nowszych typów dokumentów jest w porządku. Szczególnie w przypadku html5 kontekst początkowy RDFa http://www.w3.org/2011/rdfa-context/html-rdfa-1.1 jest ładowany dopiero po wspomnianym wcześniej kontekście początkowym RDFa.

Chawathe Vipul S.
źródło