我见过有关如何最好地实现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">
建议的方法是什么,或者甚至不重要?
答案 0 :(得分:72)
它们都是等效的,都会起作用。
使用前缀,因为它是新推荐的方式,字符数较少。
我会将所有文档更新为前缀。
答案 1 :(得分:5)
我试着关注@Paul Tarjan在头部使用前缀的答案。但是I got some Internet Explorer 8 issue。所以最后我仍然使用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#">
答案 2 :(得分:3)
<html xmlns="http://www.w3.org/1999/xhtml" prefix="og: http://ogp.me/ns# fb:
http://www.facebook.com/2008/fbml"> <head>
有最好的验证方法。
答案 3 :(得分:1)
前缀/ xmlns属性可用于定义简写。 rdf来自xml谱系,因此xmlns表示法应该独立于doctype细节而工作。 rdfa使用http://www.w3.org/TR/rdfa-in-html/#extensions-to-the-html5-syntax给出的包含前缀的属性扩展html 但是,这需要遵守http://dev.w3.org/html5/rdfa/rdfa-module.html 此外,还在等待其中提到的rel =“profile”的工具支持。到那时,选择是使用较旧的doctypes,还是手动放置rdf:用于验证目的或等待验证器&amp;赶上这样的工具。声明的正确位置是任何元素开始标记,它是使用简写符号的地方的祖先。特别是对于og前缀的情况,它由RDFa Core http://www.w3.org/2011/rdfa-context/rdfa-1.1.html的初始上下文预定义,因此对于较新的doctypes完全跳过它是正常的。特别是对于html5,RDFa初始上下文http://www.w3.org/2011/rdfa-context/html-rdfa-1.1仅在前面提到的RDFa初始上下文之后加载。
答案 4 :(得分:1)
甚至没有关系。 RDFa核心初始上下文 recognizes og
作为广泛使用的词汇前缀:
RDFa用户可以使用这些前缀,而不必在HTML代码中定义前缀。在URI
http://www.w3.org/2013/json-ld-context/rdfa11
处,还为JSON-LD定义了相同的前缀列表作为JSON-LD Context; JSON-LD用户可以使用带有该URI的@context
键作为简写来使用相同的前缀。
为清楚起见添加了重点。
因此,您不需要在HTML文档中添加名称空间。更多信息here。