使用HTML5微数据时,'itemscope'和'itemtype'是否应始终用于同一元素?

时间:2011-02-25 23:56:40

标签: html5 syntax microdata

我试图理解存在两个属性背后的原因,而不仅仅是让持有'itemtype'的元素成为包含该项目范围的元素。

在一个元素上使用'itemtype'属性和在其他元素中使用'itemscope'属性是否有效?像这样:

<section itemtype="http://data-vocabulary.org/Person">
    <div itemscope>
        <span itemprop="name">Alonso Torres</span>
    </div>
</section>

如果这种情况无效那么为什么存在'itemscope'属性呢?为什么规范没有提出让持有'itemtype'属性的元素成为设置范围的元素的想法。这对我来说很有意义。

3 个答案:

答案 0 :(得分:9)

你是对的,itemscope属性似乎是多余的。其他人在W3C的HTML邮件列表中指出了这一点:http://lists.w3.org/Archives/Public/public-html-bugzilla/2011Jan/0517.html

答案(http://lists.w3.org/Archives/Public/public-html-bugzilla/2011Jan/0523.html)是:

  

HTML规范编辑器进行了用户测试   以前的功能,如果我   回想一下,几个测试   受试者发现它更容易   是一个明确的指标   容器,而不是它   由于类型隐含。

换句话说,对于属性而言,具有单个明确定义比使用多个隐含定义更好。不确定我同意,但这是官方观点。

答案 1 :(得分:1)

如果在同一元素上使用itemscope

itemtype是强制性的

您显示的示例无效。 spec已更新为包含此内容:

  

不得在未指定itemtype属性的元素上指定itemscope属性。

此处,“绝不能”解释为RFC2119“该定义绝对禁止使用规范”

答案 2 :(得分:0)

我不认为将itemtype属性放在任何位置但与itemscope属性位于同一元素上是有用的。 spec说:

  

项目的类型为   item上的itemtype属性的值   与itemcope相同的元素   属性。

我还不清楚需要两个属性的原因。从语义上讲,它们用于不同的目的,因此为了清晰起见,它可能看起来更合理。为了简单使用,可以使用itemscope创建项目而不给它类型。这意味着itemscope是一个布尔属性,而itemtype是一个字符串值。在HTML中,如果一个属性在没有值的情况下使用时表现为布尔值,并且在与一个字符串一起使用时表示字符串,那么单独的属性是有意义的。

我知道Google在宣布Microdata标记之前就做了一项可用性研究,因此很可能会在那里解决这些问题并且单独的属性是首选结果。 (尽管该研究还导致首选itemref为元素,而不是属性,随后更改了一些内容。)