<p>cite 属性不能用于 <table> 或 <tr> 元素,仅允许出现在 <blockquote>、<q>、<ins>、<del> 上;表格数据来源应使用 <figure>+<figcaption> 等语义化方式标注,而非 cite 或 data-* 属性。</p>

cite 属性不能用于 <table> 或 <tr> 元素
cite 是 HTML 中的全局属性,但它的语义和浏览器支持有明确限制:它只被规范允许出现在 <blockquote>、<q>、<ins>、<del> 这四类元素上。直接写 <table cite="https://example.com/data"> 在 HTML5 中是**无效标记**,浏览器会忽略该属性,且 W3C 验证器会报错。
如果你看到某些文档里这么写了,大概率是作者误用了语义,或依赖自定义 JS 解析——这不是标准用法,也不具备可访问性或 SEO 价值。
表格数据来源的合法标注方式
要表明表格数据出处,应使用语义正确、可读性强、支持辅助技术的方式:
- 在表格上方或下方添加
<p>或<figcaption>(若表格嵌套在<figure>内),明确写出来源,例如:<figure> <table>...</table> <figcaption>数据来源:<a href="https://example.com/data">国家统计局 2023 年度报告</a></figcaption> </figure>
- 对整张表的引用,优先用
<figure>+<figcaption>组合,这是 HTML5 中唯一为“带标题的独立内容块”设计的语义结构; - 如果只需标注某一行或某一单元格的数据来源(比如某列数值来自第三方 API),可用
<td>内嵌<small>或<abbr title="来源说明">,配合title属性提供悬停提示; - 避免把来源信息塞进
<caption>里充数——<caption>的作用是描述表格“是什么”,不是“从哪来”。
为什么不用 data-* 自定义属性替代 cite?
你可以写 <table data-source="https://example.com/data">,技术上完全合法,浏览器也不会报错。但它只是个“存储槽”,不会自动产生任何语义效果:
立即学习“前端免费学习笔记(深入)”;
- 屏幕阅读器不会朗读
data-source; - 搜索引擎不索引这类属性;
- 除非你自己写 JS 去读取并渲染成可见文本或 aria-label,否则用户根本看不到来源;
- 这增加了维护成本,且违背了“用原生语义优先”的原则。
真要程序化管理来源,更稳妥的做法是:把来源信息存在 JSON 文件或 CMS 字段中,服务端渲染时输出到 <figcaption> 或 <aside> 区域。
兼容性与可访问性实际影响
试图用 cite 标注表格来源,本质是混淆了「引用内容」和「数据归属」两个不同概念。前者(如引述一段话)需要 <q cite>,后者(如表格统计口径说明)需要的是清晰、可见、可链接的上下文。
最常被忽略的一点:很多团队在导出 PDF 或做无障碍审计时才发现,藏在 data- 属性或注释里的来源信息,压根不会进入 PDF 文本流,也进不了屏幕阅读器的默认遍历路径——而 <figcaption> 里的文字,天然支持两者。



















