itemtype嵌套必须用独立itemscope包裹子类型,不能在父标签重复声明itemtype;正确做法是父元素用itemscope itemtype声明主体,子对象属性(如address)需另起带itemscope itemtype的容器,并确保itemprop与itemscope itemtype同标签。

itemtype嵌套必须用itemscope包裹子类型,不能直接写在父级标签上
很多人以为在同一个
itemtype就能实现嵌套,比如:<div itemscope itemtype="https://schema.org/Restaurant" itemtype="https://schema.org/PostalAddress">——这完全无效。itemtype只认紧贴的itemscope,且一个元素只能声明一个itemtype。真正嵌套靠的是“容器套容器”:父实体用itemscope itemtype,子属性值本身是另一个实体时,必须另起一层带itemscope itemtype的标签包住它。
地址、联系人、营业时间这些字段必须独立声明itemscope
像address、contactPoint、openingHoursSpecification在Schema.org里都是对象类型,不是字符串。如果只写itemprop="address">北京市朝阳区建国路88号</div>,搜索引擎会当作文本提取,丢失结构。
正确做法是:
- 用
<div itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">包裹地址内容 - 内部再用
itemprop="streetAddress"、itemprop="addressLocality"等细分字段 -
postalCode和addressCountry不能漏,否则LocalBusiness标记可能被降权或地图功能失效
同一页面多个itemtype共存时,主类型要明确,避免语义冲突
比如企业官网首页既要描述公司主体,又要展示最新新闻、联系方式、门店地址。这时不能全塞进一个itemscope itemtype="https://schema.org/Organization"里完事。
立即学习“前端免费学习笔记(深入)”;
实际应分层处理:
- 主容器用
itemtype="https://schema.org/WebPage"或更具体的CollectionPage - 公司信息块单独用
itemscope itemtype="https://schema.org/Organization" - 每条新闻用
itemscope itemtype="https://schema.org/Article" - 门店列表项各自用
itemscope itemtype="https://schema.org/LocalBusiness"(或子类如Restaurant)
混用会导致解析器无法区分上下文,尤其Google富媒体结果对主类型识别非常敏感。
嵌套层级错位是静默失败,调试时容易忽略
最隐蔽的坑是itemprop没绑定到任何itemscope。例如:
<div itemprop="author"> <div itemscope itemtype="https://schema.org/Person">张三</div> </div>
这个itemprop="author"在外部div上,但那个div没加itemscope,所以整个嵌套块会被Google直接丢弃——不报错,也不显示在结构化数据测试工具里。
必须写成:
<div itemprop="author" itemscope itemtype="https://schema.org/Person">张三</div>
也就是说,itemprop和itemscope itemtype必须出现在**同一个开始标签内**,否则就断链。



















