首页 > 解决方案 > 没有 `name` 属性的RDFa ` ` 是否与 HTML5 兼容?

问题描述

RDFa为元素引入了一个property属性<meta>,W3C 甚至推荐将其作为 HTML5 的扩展。例如,Facebook 的Open Graphproperty协议使用了这样的 RDFa 属性(来自 Open Graph 站点的示例):

<html prefix="og: http://ogp.me/ns#">
<head>
<title>The Rock (1996)</title>
<meta property="og:title" content="The Rock" />
<meta property="og:type" content="video.movie" />
<meta property="og:url" content="http://www.imdb.com/title/tt0117500/" />
<meta property="og:image" content="http://ia.media-imdb.com/images/rock.jpg" />
…

然而,HTML5 规范似乎禁止这种用法。我不是在谈论它是否允许该property属性;我指的是它明确禁止content没有元素属性name属性:<meta>

如果指定了namehttp-equiv,则content还必须指定属性。否则,必须省略。

这与当前 RDFa 的使用(例如在 Open Graph 中)不是直接冲突吗?HTML5 规范似乎也要求name此处存在属性。

标签: htmlfacebook-opengraphrdfa

解决方案


W3C 建议“HTML+RDFa 1.1”扩展了 HTML 规范(您可以在 W3C 注释中找到所有扩展)。

meta此扩展更改了 HTML 对元素的一致性要求:

如果元素上存在RDFa@property属性,则、和属性都不是必需的,并且必须指定属性。meta@name@http-equiv@charset@content


所以,这两个 HTML+RDFa 元素是有效的:

<meta property="og:title" content="The Rock" />
<meta property="og:type" content="video.movie" />

(其他两个meta元素无效,因为它们具有 URL 值,必须使用link元素代替。)


推荐阅读