'itemprop'没有父'itemscope'有效吗?它会创建一个项目吗?

时间:2014-01-26 21:47:33

标签: microdata

在以下示例中,Microdata的itemref属性用于将email属性添加到Person项目(均来自虚构的微数据词汇表)。

<body>

 <div itemscope itemtype="http://example.org/Person" itemref="orphan">
   <span itemprop="name">Alice</span>
 </div>

 <div id="orphan" itemprop="email">
   alice@example.com
 </div>

</body>

这是有效的微数据吗?

如果我正确理解"Associating names with items" algorithm,则“itemref ed”属性不会移动已复制,这会留下“孤儿”没有项目父项的itemprop

three valid cases for itemprop values。以下似乎最接近:

  

如果该项不是类型项:不包含“。”的字符串。 (U + 002E)字符,没有“:”(U + 003A)字符。

(这意味着孤立属性不是“已定义的属性名称”,即它不再属于虚构词汇表(只有“复制”属性才有)。)

但是:有no "item" involved, as there is no itemscope

因此,如果没有家长itemprop,您就无法指定itemscopeDoesn‘t seem so

  

每个HTML元素都可以指定itemprop属性[...]

我在Microdata规范中缺少什么?

没有itemprop父级的itemscope是否会创建

2 个答案:

答案 0 :(得分:1)

  1. 这是有效的微数据吗?
    • 是的!
  2. 没有itemcope父级的itemprop是否会创建项目?
    • 不,不是!

  3. 项目由itemscope属性创建。使用或不使用属性,它是您将其声明为项目的项目。 itemprop声明了一个项的属性,它永远不会创建它。在“孤儿”上声明的itemprop属性仍然是有效的html,html中的属性没有依赖,就像元素一样。

    http://www.w3.org/TR/2011/WD-microdata-20110405/#the-basic-syntax 9:该示例描述了主题位。

    我经常使用这些类型的提取。我设计软件的方法是查找每个项目的根,即声明范围的位置。然后,如果声明了引用,我会扩展范围。我从不寻找范围之外的属性,这是无关紧要的。

答案 1 :(得分:1)

规范要求只是在至少一个项目中使用了 。没有任何迹象表明我可以看到被itemref引用不构成用法,也没有复制itemprop,并且它是使用的副本而不是原始版本。所以我认为规范要求已经完成,微数据有效。

此外,请考虑规范的意图。一个基本的想法是,任何项目都没有使用的itemprop是没有意义的 - 浪费打字 - 因此必须是一个创作错误。这足以使加价被视为无效。由于这不是这种情况,因此没有理由使这样的构造无效。