property
属性来自RDFa,itemprop
属性来自Microdata,而name
属性则来自普通的HTML。
使用itemprop
和property
属性是可以同时进行的,但是Microdata 不允许在带有itemprop
属性的元素上使用name
属性(尽管RDFa允许),因此您可以使用两个元素:
<meta property="og:image" name="twitter:image" content="http://example.com/image.jpg" />
<meta itemprop="image" content="http://example.com/image.jpg" />
<meta name="twitter:image" content="http://example.com/image.jpg" />
<meta itemprop="image" property="og:image" content="http://example.com/image.jpg" />
作为Schema.org还可以与RDFa一起使用,您可以省略Microdata(除非您需要支持不支持RDFa的消费者):
<meta property="og:image image" name="twitter:image" content="http://example.com/image.jpg" />
<!
为什么这些无效?因为如果值是URI,必须使用
link
元素而不是
meta
元素。然而,在实践中,这会带来问题,因为:
-
twitter:url
被定义为
meta扩展,而不是
链接类型(但由于值是URL,它
应该是链接类型)
- Facebook似乎只识别
meta
,而不是
link
(我没有测试过,但在回答关于此问题的问题时,我多次阅读到这一点--例如,请参见:
应该将og:image和og:url放在还是中?)
因此,尽管Twitter Cards和Facebook的OGP建议使用(并可能仅支持)无效标记,但这不一定适用于Schema.org消费者。因此,您可能希望结合无效和有效的方式:
<meta name="twitter:image" property="og:image" content="http://example.com/image.jpg" /> <!
<link property="image" href="http://example.com/image.jpg" /> <!
(请注意,所有包含Schema.org的
image
属性的片段都需要一个带有的父元素。如果您没有提供它,那么
image
属性属于哪个词汇表就不清楚了。如果您无法提供,您应该使用
schema:image
代替。)