Microdata 是结构化数据的轻量表达方式,不改变渲染而为HTML元素添加机器可读属性;必须用itemscope开启作用域,itemprop依附其内,itemtype应指向schema.org标准URL,嵌套类型需逐层声明,适合遗留系统渐进增强。
HTML 本身从来不是“无结构化标记”——、、 都在表达语义。但搜索引擎和爬虫无法仅靠这些推断“这是一篇食谱,作者叫张三,用时45分钟”。Microdata 解决的正是这个缺口:它不改变渲染,只在已有标签上叠加机器可读的属性。
常见错误是直接写 苹果派,但没声明父容器是某个类型(如 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 更容易 p

atch:只需在现有 上加 itemprop,在包裹 上加 itemscope 即可。但要注意:
- 不要混用 Microdata 和 RDFa(尤其
property 和 itemprop 冲突)
-
content 属性仅对空元素或元数据有效(如 ),不可用于可见文本节点
- 值为空白字符(空格、换行)的
itemprop 元素会被解析为 null,不是空字符串
真正难的不是写对语法,而是持续维护 schema.org 类型层级关系——比如 AggregateRating 必须嵌套在 itemReviewed 下,这种约束在 HTML 层面没有任何报错提示。