微数据允许使用itemprop
但没有父itemscope
的元素,只要它们被页面上某处的itemref
引用即可。 (参见我的问题Is 'itemprop' without parent 'itemscope' valid? Does it create an item?)。
所以这个例子应该是有效的:
<body>
<div itemprop="email" id="orphan">
alice@example.com
</div>
<div itemscope itemtype="http://example.org/Person" itemref="orphan">
<span itemprop="name">Alice</span>
</div>
</body>
现在,当有人使用Schema.org词汇表时(在itemtype
值中将“example”替换为“schema”),我的理解是此示例将不再有效,因为在{{ 3}}它说:
隐式假设每个网页都被声明为WebPage类型,因此可以使用该网页的各种属性,例如
breadcrumb
。如果指定了这些属性,我们建议使用显式声明,但如果在itemscope之外找到它们,则会假定它们与页面有关
因此,这意味着将创建以下项目和名称 - 值对:
Item <http://schema.org/Person>
name: Alice
email: alice@example.com
Item <http://schema.org/WebPage>
email: alice@example.com
但是http://schema.org/WebPage不能拥有email
属性,因此这是无效的微数据,在本例中为http://schema.org/WebPage
[...]根据定义项目相关类型的规范,在此情况下允许的已定义属性名称
因此,the itemprop
value has to be上的此声明,如果消费者和实施者尊重,如果itemprop
的元素没有itemscope
父和的话,则会导致无效的微数据em> WebPage
上不允许使用该属性。
这是正确的还是我错过了什么?
我该如何处理?忽略这个陈述? AFAIK Microdata不要求遵循这些“非正式规则”,对吗?
答案 0 :(得分:1)
这些术语并不经常讨论,但有效性是一个相对的概念。根据特定规范的要求,文档有效或无效 。
在这种情况下,微数据规范没有说明WebPage,因此在隐式WebPage项中包含itemprop对文档的有效性没有影响Microdata规范。
另一方面,对于schema.org WebPage规范,您的文档或至少其中的WebPage项将无效。
这对您来说是否重要是您的选择。实际上只有两个实际结果。页面微数据的使用者可以创建WebPage项,也可以不创建WebPage项。消费者极不可能拒绝创建WebPage项目,因为存在额外的模式外迭代,否则它将创建WebPage项目。
这最终是有效性的。它是建立一种文档的生产者和消费者都理解的共同语言。如果消费者理解生产者提供的信息,那么对任何特定规范的有效性规则的技术违反都不会产生什么影响。