HTML5微数据:span内容?

时间:2014-11-23 12:25:01

标签: html5 microdata

我已阅读the HTML5 specificationthe microdata specificationthe WHATWG HTML5 (with microdata) specification。这些都写得很好,也很容易理解。

但现在我读了schema.org Book specification,并遇到了以下代码段:

<span itemprop="price" content="6.99">$6.99</span>
<span itemprop="inLanguage" content="en">English-language</span>
<span itemprop="name" content="Tolkien, J. R. R. (John Ronald Reuel)">
  J. R. R. Tolkien</span>

显然(与JSON版本相比),这些微数据属性的值是content元素的span属性的值。 (当然,如果没有content属性,则该值将是textContents元素的span。)

但我在HTML和微数据规范中找不到任何对此做法的支持。事实上,我甚至找不到任何证据表明content元素都有span属性!

  • 微观数据规范在为values提供规则时,对span content属性没有任何说明。 [除非&#39;元素&#39; textContent&#39;被content属性覆盖,但我也找不到任何支持。]

  • 甚至完整的WHATWG HTML5 +微数据规范也不支持content上有span属性的声明(请参阅The span elementGlobal attributes)。< / p>

因此,我认为schema.org示例不符合要求。但这也是错误的吗?如果不是,这种做法来自何处,以及它是如何被接受的?

2 个答案:

答案 0 :(得分:6)

是的,这是错误的。 Microdata和HTML5都没有为content元素定义span属性。

有些人想要使用它,例如参见这些问题中的代码:

我不确定这种混乱究竟来自哪里。

(Google的结构化数据测试工具错误地使用content属性而非元素内容没有帮助;但至少所有other Microdata parsers似乎都正确地执行了此操作。)

也许有些人感到困惑,因为RDFa(但不是Microdata)定义并允许span @vocab。请参阅HTML + RDFa的content attribute

  

为避免疑义,HTML5内容模型中的所有元素都允许使用以下RDFa属性:@typeof@property@resource@prefix,{{ 1}},@content@about@rel@rev@datatype@inlist

答案 1 :(得分:2)

(抱歉,我没有足够的声誉发表评论。)

我们现在在2017年底。不知何故,MDN webdocs(https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/itemprop) 模式文档(http://schema.org/telephone)仍然建议使用微数据在content上使用span属性。当然,没有html5验证器会接受这个。