9

我试图理解存在两个属性背后的原因,而不是仅仅使包含“itemtype”的元素成为包装项目范围的元素。

在一个元素上具有“itemtype”属性而在另一个元素上具有“itemscope”属性是否有效?像这样:

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

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

4

3 回答 3

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)是:

The HTML spec editor did user-testing of the feature earlier, and if I recall correctly, several of the test subjects found it much easier if there was an explicit indicator of the container, rather than it being implicit due to the type.

In other words, it's better for attributes to have a single clear definition than multiple implied definitions. Not sure I agree but that's the official view.

于 2011-03-01T01:22:41.193 回答
1

itemscope is mandatory if itemtype is used on the same element

The example you show is invalid. The spec has been updated to include this:

The itemtype attribute must not be specified on elements that do not have an itemscope attribute specified.

在这里,“不得”被解释为RFC2119中的:“定义是对规范的绝对禁止”

于 2013-01-10T14:20:42.610 回答
0

我不认为将 itemtype 属性放置在与 itemscope 属性相同的元素上之外的任何地方都有用。规范说:

项目的类型作为与 itemscope 属性相同的元素上的 itemtype 属性的值给出。

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

我知道谷歌在宣布之前对微数据标记进行了可用性研究,因此很可能在那里解决了这些问题,并且单独的属性是首选结果。(尽管该研究还导致 itemref 成为元素而非属性的偏好,但随后发生了变化。)

于 2011-02-26T11:06:44.333 回答