Объявление пространства имен Open Graph: HTML с префиксом XMLNS или заголовком?

129

Я видел противоречивую информацию о том, как лучше всего реализовать пространства имен Open Graph. В частности, веб-сайт Open Graph использует несколько различных методов, а примеры Facebook Open Graph используют другие методы.

Пример веб-сайта Open Graph (с использованием атрибута префикса HTML):

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

Исходный код веб-сайта Open Graph (с использованием атрибута HTML XMLNS):

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

Документация Facebook Open Graph (с использованием атрибута префикса HEAD):

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

Документация Facebook Open Graph №2 (с использованием атрибута HTML XMLNS):

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

Какой метод рекомендуется использовать или это вообще не имеет значения?

Мэтт Бекман
источник
9
Я слежу за внутренними вопросами в FB, чтобы найти для вас правильный ответ.
Саймон Кросс
7
@SimonCross, годы спустя (ноябрь / 2017) мы все еще ждем ответа ...;)
Гельмут Гранда

Ответы:

73

Все они эквивалентны и все будут работать.

Используйте префикс, так как это новый рекомендуемый способ, в котором меньше символов.

Я обновлю всю нашу документацию до префикса.

Пол Тарджан
источник
4
Вы можете объяснить, зачем вообще что-то использовать? Как насчет того, чтобы я просто оставил это заявление? что-нибудь сломается, если я это сделаю?
andrewrk
3
Сейчас ничего не сломается, но полагаться на значения по умолчанию редко бывает хорошей идеей, если вы можете быть откровенным. Если через 2 года мы изменим настройки по умолчанию, ваш сайт сломается. Кроме того, если вы напрямую объявляете свои пространства имен, это поможет другим анализаторам, а не только Facebook.
Пол Тарджан
1
Пол, я заметил, что документы не обновлялись с ноября. Почему лучше всего использовать новый способ, если в обозримом будущем оба способа будут поддерживаться всеми существующими браузерами? Внедрение чего-то нового, если поддержка отсутствует (среди пользовательских агентов, парсеров и т. Д.), Кажется ненужным риском, если между ними нет какой-то реальной разницы. Я не смог найти ни одного ресурса, который бы это сказал.
AndrewF
3
@PaulTarjan Здесь ! У этого есть пример использования xmlns. Кроме того, следует prefixиспользовать тег htmlили head? В любом случае все будет хорошо? Что рекомендуется?
its_me
9
О, эти документы старые. Об этом говорит желтый предмет наверху. Мы не хотели их трогать, потому что на них много ссылаются. Положите prefixна head. Он работает на обоих, но лучше ближе к тегам.
Пол Тарджан
4

Я пробовал следовать ответу @Paul Tarjan об использовании префикса в голове. Однако у меня возникла проблема с Internet Explorer 8 . Итак, в конце концов, я все еще использую способ xmlns для пространства имен 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
источник
3

Это даже не имеет значения. Исходный контекст RDFa Core распознает og как широко используемый префикс словаря:

Пользователи RDFa могут использовать эти префиксы без обязательства определять префиксы в коде HTML. Тот же список префиксов был также определен для JSON-LD в качестве контекста JSON-LD в URI http://www.w3.org/2013/json-ld-context/rdfa11; Пользователи JSON-LD могут использовать @contextключ с этим URI в качестве сокращения для использования тех же префиксов.

Выделение добавлено для ясности.

Следовательно, вам не нужно добавлять пространство имен в ваши HTML-документы. Больше информации здесь .

Джош Хабдас
источник
2
<html xmlns="http://www.w3.org/1999/xhtml" prefix="og: http://ogp.me/ns# fb:
http://www.facebook.com/2008/fbml"> <head>

Есть лучший способ проверить.

Егор Щапов
источник
1

Атрибут prefix / xmlns полезен для определения сокращений. rdf взят из линии xml, поэтому следует ожидать, что нотация xmlns будет работать независимо от деталей типа документа. rdfa расширяет html с помощью атрибутов, включая префикс, указанный в http://www.w3.org/TR/rdfa-in-html/#extensions-to-the-html5-syntax. Однако для этого необходимо придерживаться http: // dev. w3.org/html5/rdfa/rdfa-module.html Кроме того, пока ожидается поддержка инструмента для rel = "profile", как упомянуто в нем. До этого момента можно выбирать между использованием старых типов документов или размещением rdf: вручную для целей проверки или дождаться, пока валидатор и такие инструменты наверстают упущенное. Правильным местом для объявления является любой открывающий тег элемента, который является предком того места, где будет использоваться сокращенная запись. В частности, в случае префикса og он предопределен исходным контекстом RDFa Core http://www.w3.org/2011/rdfa-context/rdfa-1.1.html, поэтому его можно полностью пропустить для новых типов доктринов. В частности, для html5 начальный контекст RDFa http://www.w3.org/2011/rdfa-context/html-rdfa-1.1 загружается только после упомянутого ранее начального контекста RDFa.

Чават Випул С
источник