Microdata 是结构化数据的轻量表达方式,不改变渲染而为HTML元素添加机器可读属性;必须用itemscope开启作用域,itemprop依附其内,itemtype应指向schema.org标准URL,嵌套类型需逐层声明,适合遗留系统渐进增强。

Microdata 不是 HTML5 的“新功能”,而是结构化数据的轻量表达方式
HTML 本身从来不是“无结构化标记”——、、 都在表达语义。但搜索引擎和爬虫无法仅靠这些推断“这是一篇食谱,作者叫张三,用时45分钟”。Microdata 解决的正是这个缺口:它不改变渲染,只在已有标签上叠加机器可读的属性。
itemprop 必须依附于有 itemscope 的元素,否则无效
常见错误是直接写 苹果派,但没声明父容器是某个类型(如 Recipe)。这会导致所有 itemprop 被忽略。
-
itemscope是开关,必须出现在包裹性元素(如或)上itemtype应指向标准词汇表,推荐用https://schema.org/Recipe这类 URL,而非自定义字符串itemid可选,但若提供,必须是全局唯一 URI(比如https://example.com/recipe/apple-pie),不能是相对路径或 ID苹果派
作者:张三
与 JSON-LD 相比,Microdata 更易出错但更贴近 DOM 流程
JSON-LD 是当前 Google 推荐的主流方案,因为它是独立 script 块,不干扰 HTML 结构。而 Microdata 的优势在于:修改某段内容时,结构化数据能随 DOM 同步更新(比如用 JS 动态插入
itemprop元素),适合 CMS 输出或服务端模板直出。立即学习“前端免费学习笔记(深入)”;
-
浏览器原生支持
document.getItems()(但兼容性差,Chrome 仅曾短暂支持后移除) - SEO 效果与 JSON-LD 一致,只要语法合法,Google Structured Data Testing Tool 都能识别
- 嵌套复杂时极易漏掉
itemscope—— 比如author是Person类型,就必须再套一层张三
Microdata 的真实价值在遗留系统和渐进增强场景
如果你正在维护一个老 PHP 模板站,没法改整体架构,又需要快速上线结构化数据,Microdata 就比 JSON-LD 更容易 patch:只需在现有
上加itemprop,在包裹上加itemscope即可。但要注意:- 不要混用 Microdata 和 RDFa(尤其
property和itemprop冲突) -
content属性仅对空元素或元数据有效(如),不可用于可见文本节点 - 值为空白字符(空格、换行)的
itemprop元素会被解析为 null,不是空字符串
真正难的不是写对语法,而是持续维护 schema.org 类型层级关系——比如
AggregateRating必须嵌套在itemReviewed下,这种约束在 HTML 层面没有任何报错提示。










