Declaração de namespace Open Graph: HTML com XMLNS ou prefixo de cabeçalho?

129

Vi informações conflitantes sobre como melhor implementar os namespaces do Open Graph. Especificamente, o site do Open Graph usa alguns métodos diferentes, e os exemplos do Facebook Open Graph usam outros métodos.

Exemplo de site aberto do Graph (usando o atributo de prefixo HTML):

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

Código-fonte do site Open Graph (usando o atributo XML XMLNS):

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

Documentação do Facebook Open Graph (usando o atributo de prefixo HEAD):

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

Documentação do Facebook Open Graph # 2 (usando o atributo XML XMLNS):

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

Qual é o método recomendado ou isso nem importa?

Matt Beckman
fonte
9
Estou acompanhando internamente na FB para obter a resposta certa para você.
Simon Cruz
7
@SimonCross, anos mais tarde (Nov / 2017) ainda estamos esperando a resposta ...;)
Helmut Granda

Respostas:

73

Eles são todos equivalentes e irão funcionar.

Use o prefixo, pois é a nova maneira recomendada e possui menos caracteres.

Vou atualizar toda a nossa documentação para o prefixo.

Paul Tarjan
fonte
4
Você pode explicar por que usar alguma coisa? Que tal eu simplesmente deixar esta declaração? algo vai quebrar se eu fizer isso?
andrewrk
3
Nada vai quebrar agora, mas depender de padrões raramente é uma boa idéia quando você pode ser explícito. Se dois anos depois mudarmos os padrões, seu site será interrompido. Além disso, se você declarar seus namespaces diretamente, ele ajudará outros analisadores, não apenas o Facebook.
Paul Tarjan
1
Paul, notei que os documentos não são atualizados desde novembro. Por que usar o novo modo é melhor, se os dois modos serão suportados por todos os navegadores existentes no futuro próximo? A adoção de algo novo se o suporte não estiver disponível (entre agentes do usuário, analisadores etc.) parece um risco desnecessário, a menos que haja alguma diferença real entre os dois. Não consegui encontrar nenhum recurso que diga isso.
AndrewF
3
@PaulTarjan Here ! Esse tem um exemplo usando xmlns. Além disso, deve prefixser usado htmlou headmarcado? Seria bom de qualquer maneira? Qual é recomendado?
its_me
9
Oh, esses documentos são antigos. A coisa amarela no topo diz isso. Não queríamos tocá-los porque eles são muito referenciados. Coloque prefixo head. Ele funciona nos dois, mas mais perto das tags é melhor.
Paul Tarjan
4

Tentei seguir a resposta de @Paul Tarjan de usar o prefixo na cabeça. No entanto, eu tenho algum problema no Internet Explorer 8 . Então, no final, ainda uso a maneira xmlns para o namespace 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
fonte
3

Isso nem importa. O RDFa Core Initial Context reconhece og como um prefixo de vocabulário amplamente usado:

Os usuários do RDFa podem usar esses prefixos sem ter a obrigação de definir os prefixos no código HTML. A mesma lista de prefixos também foi definida para JSON-LD como um contexto JSON-LD no URI http://www.w3.org/2013/json-ld-context/rdfa11; Usuários JSON-LD podem usar a @contextchave com esse URI como atalho para usar os mesmos prefixos.

Ênfase adicionada para maior clareza.

Portanto, você não precisa adicionar um espaço para nome aos seus documentos HTML. Mais informações aqui .

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

Existe a melhor maneira de validar.

Егор Щапов
fonte
1

O atributo prefix / xmlns é útil para definir atalhos. rdf é da linhagem xml, portanto, a notação xmlns deve funcionar independentemente dos detalhes do tipo de documento. O rdfa estende o html com atributos, incluindo o prefixo, conforme fornecido por http://www.w3.org/TR/rdfa-in-html/#extensions-to-the-html5-syntax No entanto, isso requer aderir ao http: // dev. w3.org/html5/rdfa/rdfa-module.html Além disso, o suporte de ferramenta para rel = "profile", conforme mencionado, ainda é aguardado. Até então, a escolha é entre o uso de doctypes mais antigos ou a colocação manual de rdf: para fins de validação ou aguarde o validador e essas ferramentas serem atualizadas. O lugar certo para fazer a declaração é qualquer tag de abertura de elemento que seja ancestral de onde a notação abreviada será usada. Especificamente para o caso do prefixo og, é predefinido pelo contexto inicial do RDFa Core http://www.w3.org/2011/rdfa-context/rdfa-1.1.html, portanto, ignorá-lo completamente para novos tipos de documento é bom. E especificamente para html5, o contexto inicial do RDFa http://www.w3.org/2011/rdfa-context/html-rdfa-1.1 é carregado somente após o contexto inicial do RDFa mencionado anteriormente.

Chawathe Vipul S
fonte