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

Microdata 不是 HTML5 的“新功能”,而是结构化数据的轻量表达方式
HTML 本身从来不是“无结构化标记”——<h1></h1>、<article></article>、<nav></nav> 都在表达语义。但搜索引擎和爬虫无法仅靠这些推断“这是一篇食谱,作者叫张三,用时45分钟”。Microdata 解决的正是这个缺口:它不改变渲染,只在已有标签上叠加机器可读的属性。
itemprop 必须依附于有 itemscope 的元素,否则无效
常见错误是直接写 <p itemprop="name">苹果派</p>,但没声明父容器是某个类型(如 Recipe)。这会导致所有 itemprop 被忽略。
-
itemscope是开关,必须出现在包裹性元素(如<div> 或 <code><article></article>)上 -
itemtype应指向标准词汇表,推荐用https://schema.org/Recipe这类 URL,而非自定义字符串 -
itemid可选,但若提供,必须是全局唯一 URI(比如https://example.com/recipe/apple-pie),不能是相对路径或 ID
<article itemscope itemtype="https://schema.org/Recipe">
<h2 itemprop="name">苹果派</h2>
<p>作者:<span itemprop="author">张三</span></p><div class="aritcle_card flexRow">
<div class="artcardd flexRow">
<a class="aritcle_card_img" href="/xiazai/skill10411" title="Programmatic SEO Auditor Lite"><img
src="https://img.php.cn/upload/skill/001/246/273/6adaf20cf0281539.jpg" alt="Programmatic SEO Auditor Lite" ></a>
<div class="aritcle_card_info flexColumn">
<a href="/xiazai/skill10411" title="Programmatic SEO Auditor Lite">Programmatic SEO Auditor Lite</a>
<p>基础程序化SEO审计——分析页面模板、爬虫预算问题和索引健康状况。免费版包含模板分析、爬虫预算检查...</p>
</div>
<a href="/xiazai/skill10411" title="Programmatic SEO Auditor Lite" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a>
</div>
</div>
<meta itemprop="totalTime" content="PT45M">
</article>
与 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类型,就必须再套一层<span itemscope itemtype="https://schema.org/Person"><span itemprop="name">张三</span></span>
Microdata 的真实价值在遗留系统和渐进增强场景
如果你正在维护一个老 PHP 模板站,没法改整体架构,又需要快速上线结构化数据,Microdata 就比 JSON-LD 更容易 patch:只需在现有 <h1></h1> 上加 itemprop,在包裹 <div> 上加 <code>itemscope 即可。但要注意:
- 不要混用 Microdata 和 RDFa(尤其
property和itemprop冲突) -
content属性仅对空元素或元数据有效(如<meta itemprop="datePublished" content="2024-03-15">),不可用于可见文本节点 - 值为空白字符(空格、换行)的
itemprop元素会被解析为 null,不是空字符串
真正难的不是写对语法,而是持续维护 schema.org 类型层级关系——比如 AggregateRating 必须嵌套在 itemReviewed 下,这种约束在 HTML 层面没有任何报错提示。


















