我在LocalBusiness列表中有这个片段(基于this example):

<div itemscope itemtype="http://schema.org/LocalBusiness">
    <div itemprop="image" itemscope="" itemtype="http://schema.org/ImageObject">
        <img itemprop="contentUrl" src="/images/trouwlocatiefotos/medium/315_24_83_Veranda-005.jpg">
    </div>
</div>

但是Google's structured data testing tool抛出一个错误:
image
image字段的值是必需的。
为什么它会抛出错误?
直接测试URL:https://search.google.com/structured-data/testing-tool#url=https%3A%2F%2Fwww.wonderweddings.com%2Fweddingvenues%2F315%2Fbeachclub-sunrise
html - SDTT:“必须提供图像字段的值”-LMLPHP

最佳答案

您发布的标记段没有给出引用的错误。所以你的实际标记可能做的事情不同。
似乎您的image属性没有嵌套在LocalBusiness项下:
第396行:<div itemscope itemtype="http://schema.org/LocalBusiness">
第372行:<div itemprop='image' itemscope itemtype='http://schema.org/ImageObject'>
不涉及。
所以您的itemref项实际上没有LocalBusiness属性。相反,image属性似乎是在没有任何父项(image的情况下指定的,这是无效的。
Google的SDTT可能会忽略这个错误,并将itemscope作为顶级项进行解析,这就是为什么它会自己列出(在ImageObjectLocalBusiness旁边)。
怎么解决这个问题?
如果不能移动元素来嵌套它们(如示例片段中所示),可以使用微数据的BreadcrumbList属性:

<div itemscope itemtype="http://schema.org/LocalBusiness" itemref="business-image"></div>

<div itemprop='image' itemscope itemtype='http://schema.org/ImageObject' id="business-image"></div>

07-24 09:54