itemtype必须是完整HTTPS URL且与itemscope成对出现在同一元素上,大小写、协议、路径均需严格匹配schema.org定义;错误写法(如HTTP、缩写、小写类型)会导致结构化数据完全失效。

itemtype必须是完整 HTTPS URL,不能缩写或拼错
浏览器和结构化数据测试工具(比如 Google Rich Results Test)会直接拒绝解析 itemtype 值,只要它不是可访问的、协议正确的绝对 URL。这不是“建议”,而是硬性校验规则。
- ✅ 正确:
itemtype="https://schema.org/Person"(注意:必须是https,且域名、路径、大小写全部匹配 schema.org 官方定义) - ❌ 错误:
itemtype="http://schema.org/Person"(HTTP 协议被主流解析器明确拒绝) - ❌ 错误:
itemtype="Person"或itemtype="./Person"(不是 URL,完全无效) - ❌ 错误:
itemtype="https://schema.org/person"(小写person不是合法类型,schema.org 区分大小写)
验证方式很简单:把 itemtype 的值粘贴到浏览器地址栏,回车——如果返回 200 状态页(哪怕只是 HTML),说明 URL 可访问;如果 404、连接失败或跳转到首页,那这个 itemtype 就不可用。
itemtype必须与itemscope成对出现,且不能嵌套错层
itemscope 是作用域开关,itemtype 是该作用域的类型契约。两者缺一不可,而且必须写在同一个元素上——不能一个在 div,另一个在子元素里。
- ❌ 错误:外层
<div itemscope>,内层<span itemtype="https://schema.org/Person">→ 解析器找不到类型定义,整块失效 - ❌ 错误:在
<div itemscope itemtype="https://schema.org/Article">内部,又写了<div itemscope><p itemprop="author">...</p></div>,但没给内层加itemtype→ 子对象无类型,itemprop="author"无法关联到 Person 实体 - ✅ 正确:每个需要被识别为独立实体的容器,都必须同时带
itemscope和itemtype,例如:<div itemscope itemtype="https://schema.org/Person"><span itemprop="name">张三</span></div>
特别注意:嵌套时,父级 itemprop 指向子级 itemscope,二者必须紧邻,中间不能插无关 wrapper 元素(比如额外的 <div class="wrapper">)。
立即学习“前端免费学习笔记(深入)”;
使用 PptxGenJS 和 Python 解析,将结构化的 HTML/CSS 幻灯片内容转换为原生、可编辑的 PowerPoint(.pptx)演示文稿。
schema.org 类型必须匹配属性约束,否则报错
itemtype 不只是“起个名字”,它绑定了该实体下哪些 itemprop 是合法的。Google Structured Data Testing Tool 会严格检查属性是否属于该类型定义范围。
- ❌ 错误:在
itemtype="https://schema.org/Person"下写itemprop="price"→ 报错 “Property price is not a valid property of Person” - ❌ 错误:在
itemtype="https://schema.org/Offer"下漏掉itemprop="price",却写了itemprop="review"→ 若未嵌套 Review 实体,也会被警告 - ✅ 正确做法:查 schema.org 对应类型的文档页(如 https://schema.org/Offer),只使用其明确列出的属性名;多值属性(如
keywords)必须拆成多个独立元素,不能逗号拼接
常见陷阱是把 image 属性直接写在 <img src="..."> 上——itemprop="image" 要求值是 URL 字符串,正确写法是 <link itemprop="image" href="logo.jpg"> 或 <meta itemprop="image" content="logo.jpg">。
内容提取受文本纯净度影响,空格和 HTML 标签会污染值
itemprop 默认提取元素的 textContent,任何隐藏字符、HTML 实体、嵌套标签都会原样进入结构化数据,导致解析失败或被 Google 拒绝。
- ❌ 错误:
<div itemprop="price">¥ 89.00</div>→ 提取值为"¥ 89.00"(含不间断空格 U+00A0),Google 不认作有效价格 - ❌ 错误:
<div itemprop="name">iPhone <sup>15</sup></div>→ 提取值为"iPhone <sup>15</sup>",含标签字符串,非纯文本 - ✅ 推荐:用
content属性显式指定机器可读值,例如:<div itemprop="price" content="89.00">¥89.00</div>;日期类优先用<time itemprop="datePublished" datetime="2024-05-20">
真正容易被忽略的是:你修复了 itemtype URL 和嵌套,但因为价格里混了个看不见的 Unicode 字符,整个富媒体结果就卡在审核不通过——这种问题不会报错,只会静默失效。


















