开放图名称空间声明:具有XMLNS或标头前缀的HTML?


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年11月),我们仍在等待答案...;)
Helmut Granda

Answers:


73

它们都是等效的,并且都将起作用。

请使用前缀,因为这是推荐的新方法,并且字符数更少。

我将所有文档更新为前缀。


4
你能解释为什么根本不使用任何东西吗?我只是放弃这个声明怎么样?如果这样做,有什么要破坏的吗?
andrewrk

3
现在什么都不会中断,但是如果可以明确的话,依靠默认值很少是一个好主意。如果2年后我们更改默认设置,则您的网站将崩溃。另外,如果直接声明名称空间,则将不仅帮助Facebook,还帮助其他解析器。
Paul Tarjan 2012年

1
保罗,我注意到自11月以来,文档尚未更新。如果在可预见的将来所有现有浏览器都支持这两种方式,那么为什么最好使用这种新方式呢?如果没有足够的支持(在用户代理,解析器等之间),则采用新的东西似乎是不必要的风险,除非两者之间存在实际差异。我还找不到任何这样的资源。
AndrewF 2012年

3
@PaulTarjan 在这里!那个有一个使用的例子xmlns。另外,应该prefixhtmlhead标签上使用吗?两种方法都可以吗?推荐哪个?
its_me 2012年

9
哦,那些文档太旧了。顶部的黄色是这样说的。我们不想触摸它们,因为它们被引用很多。放在prefixhead。它对两个都有效,但是离标签越近越好。
Paul Tarjan

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#">

3

没关系。RDFa核心初始上下文 识别 og为广泛使用的词汇前缀:

RDFa用户可以使用这些前缀,而不必在HTML代码中定义前缀。还为JSON-LD定义了相同的前缀列表,作为URI处的JSON-LD上下文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表示法独立于doctype细节工作。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因此,对于较新的doctype,完全跳过它是可以的。特别是对于html5,仅在前面提到的RDFa初始上下文之后才加载RDFa初始上下文http://www.w3.org/2011/rdfa-context/html-rdfa-1.1

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.