【问题标题】:Is RDFa `<meta>` without a `name` attribute compatible with HTML5?没有 `name` 属性的 RDFa `<meta>` 是否与 HTML5 兼容?
【发布时间】:2020-04-09 03:27:00
【问题描述】:

RDFa 为&lt;meta&gt; 元素引入了property attribute,W3C 甚至为recommends this as an extension to HTML5。例如,Facebook 的 Open Graph 协议使用 RDFa property 属性,如下所示(来自 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 属性;我指的是它明确禁止没有name 属性的content 属性the &lt;meta&gt; element

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

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

【问题讨论】:

    标签: html facebook-opengraph rdfa


    【解决方案1】:

    W3C 建议“HTML+RDFa 1.1”extends HTML 规范(您可以在 W3C 注释中找到all extensions)。

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

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


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

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

    (其他两个meta 元素无效,因为它们有URL 值,the link element must be used instead。)

    【讨论】:

    • 我了解扩展规范的概念,但我不明白如何更改规范的绝对要求(“必须省略”);否则,无法根据规范进行验证,因为任何“扩展”都可能更改规范的任何部分。这就像一个 Java 类,指示 fooBar() 方法具有 public 可见性,然后出现一个子类并试图用可见性 private 覆盖该方法(请参阅LSP)。 “延期”可以撤销禁令吗?
    • @GarretWilson:HTML 消费者(例如,一致性检查器)不需要支持扩展。如果他们确实支持扩展,他们会完全适应一致性要求;如果他们不支持扩展,他们将认为该文档无效,即使它具有property 属性,无论是否还指定了name 属性。 -- 扩展可以理解为对整个 HTML 规范的可选更改,为此决定(例如,出于组织/可用性/稳定性的原因)最好将它们放在单独的文档中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    • 2012-08-18
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    • 2013-07-28
    • 1970-01-01
    相关资源
    最近更新 更多