我试图理解存在两个属性背后的原因,而不仅仅是让持有'itemtype'的元素成为包含该项目范围的元素。
在一个元素上使用'itemtype'属性和在其他元素中使用'itemscope'属性是否有效?像这样:
<section itemtype="http://data-vocabulary.org/Person">
<div itemscope>
<span itemprop="name">Alonso Torres</span>
</div>
</section>
如果这种情况无效那么为什么存在'itemscope'属性呢?为什么规范没有提出让持有'itemtype'属性的元素成为设置范围的元素的想法。这对我来说很有意义。
答案 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为元素,而不是属性,随后更改了一些内容。)