Вот решение для отказа от замены типа документа:
Как предложено zerkms, добавление пространства имен "fb" применимо только к атрибутам "fb:". Атрибут «свойство» метатега остается недействительным XHTML.
Как вы знаете, Facebook основан на соответствии RDFa, поэтому вы можете использовать следующий тип документа:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
Использование RDFa в большинстве случаев приносит больше проблем, чем простое исправление FB.
, как предложил _timm, динамическая запись мета-тегов в dom не имеет никакого смысла. Одним из основных применений этих метатегов fb является синтаксический анализ FB-ботом целевой страницы «Поделиться» или «Мне нравится» (страница действий) для предоставления настраиваемых заголовков, изображений и меток привязки для автопопуляции постов в фейсбок. Учитывая этот факт и тот факт, что facebook наверняка использует простое извлечение страниц для чтения в доставленном html-ответе без какой-либо возможности синтаксического анализа связанного мета-тега, введенного посредством javascript, предполагаемая функциональность просто потерпит неудачу.
Теперь есть довольно простое исправление, обеспечивающее компромисс между проверкой XHTML и успешным анализом через facebook: оберните мета-страницу facebook в html-комментарии. Это обходит анализатор w3c, и facebook по-прежнему распознает метатеги, потому что он игнорирует комментарий.
<!--
<meta property="og:image" content="myimage.jpg" />
<meta property="og:title" content="my custom title for facebook" />
-->