Open Graph命名空间声明:带有XMLNS或头部前缀的HTML?

Mat*_*man 127 facebook xml-namespaces opengraph

我已经看到有关如何最好地实现Open Graph命名空间的相互矛盾的信息.具体来说,Open Graph网站使用了一些不同的方法,而Facebook Open Graph示例则使用其他方法.

Open Graph网站示例(使用HTML前缀属性):

<html prefix="og: http://ogp.me/ns#">
Run Code Online (Sandbox Code Playgroud)

Open Graph网站源代码(使用HTML XMLNS属性):

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#">
Run Code Online (Sandbox Code Playgroud)

Facebook Open Graph文档(使用HEAD前缀属性):

<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb#">
Run Code Online (Sandbox Code Playgroud)

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">
Run Code Online (Sandbox Code Playgroud)

什么是推荐的方法或甚至不重要?

Pau*_*jan 72

它们都是等价的,都会起作用.

使用前缀,因为它是新推荐的方式,并且字符较少.

我会将所有文档更新为前缀.

  • 哦,那些文件很旧.顶部的黄色东西是这样说的.我们不想触摸它们,因为它们被引用了很多.把`prefix`放在`head`上.它适用于两者,但更接近标签更好. (9认同)
  • 你能解释一下*为什么*要使用任何东西?我刚刚放弃这个宣言怎么样?如果我这样做会有什么打破? (3认同)
  • 现在什么都不会破坏,但是当你明确时,依赖默认值很少是一个好主意.如果我们在未来两年更改默认设置,您的网站将会中断.此外,如果直接声明命名空间,它将帮助其他解析器而不仅仅是Facebook. (3认同)
  • @PaulTarjan [这里](http://developers.facebook.com/docs/opengraphprotocol/)!那个人有一个使用`xmlns`的例子.另外,``prefix`应该用在'html`或`head`标签上吗?它会没问题吗?推荐哪个? (3认同)

Jos*_*das 6

这根本不重要。RDFa 核心初始上下文 识别 og为广泛使用的词汇前缀:

RDFa 用户可以使用这些前缀,而无需在 HTML 代码中定义前缀。还为 JSON-LD 定义了相同的前缀列表作为URI 处的JSON-LD 上下文http://www.w3.org/2013/json-ld-context/rdfa11;JSON-LD 用户可以使用@context带有该 URI 的密钥作为简写来使用相同的前缀。

为了清楚起见,添加了重点。

因此,您不需要向 HTML 文档添加命名空间。更多信息请参见此处


lul*_*ala 5

我尝试遵循@Paul Tarjan 在头部使用前缀的回答。但是我遇到了一些 Internet Explorer 8 问题。所以最后我还是对 fb 命名空间使用了 xmlns 的方式:

<!DOCTYPE HTML>
<html xmlns:fb="http://ogp.me/ns/fb#">
  <head prefix="og: http://ogp.me/ns# object: http://ogp.me/ns/object#">
Run Code Online (Sandbox Code Playgroud)