Declaración de espacio de nombres de gráfico abierto: HTML con XMLNS o prefijo de cabeza?

129

He visto información contradictoria sobre cómo implementar mejor los espacios de nombres Open Graph. Específicamente, el sitio web de Open Graph usa algunos métodos diferentes, y los ejemplos de Facebook Open Graph usan otros métodos.

Ejemplo de sitio web Open Graph (usando el atributo de prefijo HTML):

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

Código fuente del sitio web de Open Graph (usando el atributo HTML XMLNS):

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

Documentación de Open Graph de Facebook (usando el atributo de prefijo HEAD):

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

Documentación de Facebook Open Graph # 2 (usando el atributo HTML XMLNS):

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

¿Cuál es el método recomendado o ni siquiera importa?

Matt Beckman
fuente
9
Estoy siguiendo internamente en FB para obtener la respuesta correcta para usted.
Simon Cross
77
@SimonCross, años después (noviembre / 2017) todavía estamos esperando la respuesta ...;)
Helmut Granda

Respuestas:

73

Todos son equivalentes y todos funcionarán.

Utilice el prefijo, ya que es la nueva forma recomendada y tiene menos caracteres.

Obtendré toda nuestra documentación actualizada al prefijo.

Paul Tarjan
fuente
44
¿Puedes explicar por qué usar algo? ¿Qué tal si acabo de dejar esta declaración? ¿Se romperá algo si hago eso?
andrewrk
3
Nada se romperá en este momento, pero confiar en los valores predeterminados rara vez es una buena idea cuando puede ser explícito. Si 2 años más tarde cambiamos los valores predeterminados, su sitio se romperá. Además, si declara sus espacios de nombres directamente, ayudará a otros analizadores no solo a Facebook.
Paul Tarjan
1
Paul, he notado que los documentos no se han actualizado desde noviembre. ¿Por qué está utilizando la nueva forma mejor, si ambas formas serán compatibles con todos los navegadores existentes en el futuro previsible? Adoptar algo nuevo si no hay todo el soporte (entre agentes de usuario, analizadores, etc.) parece un riesgo innecesario a menos que haya una diferencia real entre los dos. No he podido encontrar ningún recurso que lo diga.
AndrewF
3
@PaulTarjan Aquí ! Ese tiene un ejemplo usando xmlns. Además, ¿se prefixdebe usar htmlo headetiquetar? ¿Estaría bien de cualquier manera? ¿Cuál es recomendado?
its_me
9
Oh, esos documentos son viejos. La cosa amarilla en la parte superior lo dice. No queríamos tocarlos porque se los menciona mucho. Pon el prefixen el head. Funciona en ambos, pero más cerca de las etiquetas es mejor.
Paul Tarjan
4

Intenté seguir la respuesta de @Paul Tarjan de usar el prefijo en la cabeza. Sin embargo , tuve un problema con Internet Explorer 8 . Así que al final todavía uso la forma xmlns para el espacio de nombres 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
fuente
3

Ni siquiera importa. RDFa Core Initial Context reconoce og como un prefijo de vocabulario ampliamente utilizado:

Los usuarios de RDFa pueden usar estos prefijos sin tener la obligación de definir los prefijos en el código HTML. La misma lista de prefijos también se ha definido para JSON-LD como contexto JSON-LD en el URI http://www.w3.org/2013/json-ld-context/rdfa11; Los usuarios de JSON-LD pueden usar la @contextclave con ese URI como abreviatura para usar los mismos prefijos.

Énfasis agregado para mayor claridad.

Por lo tanto, no necesita agregar un espacio de nombres a sus documentos HTML. Más información aquí .

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

Hay la mejor manera de validar.

Егор Щапов
fuente
1

El atributo prefix / xmlns es útil para definir abreviatura. rdf es de linaje xml, por lo que se debe esperar que la notación xmlns funcione independientemente de los detalles del doctype. rdfa extiende html con atributos que incluyen el prefijo dado por http://www.w3.org/TR/rdfa-in-html/#extensions-to-the-html5-syntax Sin embargo, esto requiere adherirse a http: // dev. w3.org/html5/rdfa/rdfa-module.html Además, el soporte de herramientas para rel = "profile" como se menciona allí todavía está pendiente. Hasta entonces, la elección es entre usar doctypes más antiguos o colocar manualmente rdf: para fines de validación o esperar a que el validador y esas herramientas se pongan al día. El lugar correcto para hacer una declaración es cualquier etiqueta de apertura de elemento que sea ancestro de donde se use la notación abreviada. Específicamente para el caso del prefijo og, está predefinido por el contexto inicial de RDFa Core http://www.w3.org/2011/rdfa-context/rdfa-1.1.html, por lo que omitirlo por completo para los doctypes más nuevos está bien. Y específicamente para html5, el contexto inicial de RDFa http://www.w3.org/2011/rdfa-context/html-rdfa-1.1 se carga solo después del contexto inicial de RDFa mencionado anteriormente.

Chawathe Vipul S
fuente