You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

schema.org验证器无法识别meta/link内Dublin Core元数据咨询

问题原因说明
  • 既不是你写的DC元数据语义有问题,也不是验证器出了bug,核心原因是你参考的2001/2008版DC嵌入HTML的规范早就过时了。现在主流的结构化数据、RDFa验证器已经不再兼容旧规范里的两种写法:一是靠<head>标签的profile属性声明DC命名空间,二是用DC.xxx格式的name属性在<meta>标签里写元数据。
  • 你写的<td rel="dc:date" content="2017-02-10">能正常识别,是因为直接用了带dc:前缀的标准RDFa属性,验证器可以直接按通用RDF规则解析。但你在<meta>、<link>里写的name="DC.date"是旧版DC-HTML规范的私有写法,不在当前RDFa/微数据的标准解析逻辑里,所以两个验证器都识别不出来。
  • 你后来加的xmlns:dc声明放在<link>标签上也没用:哪怕用XHTML语法,验证器也不会从非根节点的xmlns属性读取RDF前缀声明,旧规范里的rel="schema.DC"写法也早就被废弃了,没有主流验证器还兼容这个逻辑。
可正常通过验证的写法

要让<meta>、<link>里的DC元数据被正常识别,直接按现行RDFa 1.1规范在根节点<html>上声明前缀就行,参考代码如下:

<!DOCTYPE html>
<html prefix="dc: http://purl.org/dc/elements/1.1/">
<head>
  <meta charset="utf-8">
  <title>测试页面</title>
  <!-- meta标签内的DC元数据,用property属性替换旧写法的name属性 -->
  <meta property="dc:date" content="2007-05-05">
  <!-- link标签内的DC元数据写法一致 -->
  <link property="dc:publisher" href="/publisher">
</head>
<body>
  <td property="dc:date" content="2017-02-10">10 February 2017</td>
</body>
</html>

核心改两个点就行:

  1. 直接在<html>标签加prefix属性声明dc前缀对应的命名空间,别再用旧的profile、rel="schema.DC"写法
  2. <meta>、<link>标签里的DC字段用property="dc:xxx",不要用旧规范的name="DC.xxx"
校验工具说明
  • 你现在用的schema.org官方验证器、W3C pyRdfa验证器本身就支持DC元数据校验,只要按上面的标准RDFa格式编写,不需要找专门的特殊工具就能正常识别。
  • 如果要单独确认DC元数据的解析结果,直接用W3C的RDFa解析工具提取页面的RDF三元组,检查对应dc前缀的字段是否正常输出即可。

补充:2008年之后更新的DC-HTML规范已经明确废弃了旧的profile+DC.name写法,全面对齐W3C RDFa标准。现在网上能搜到的很多DC元数据写法都是基于2001年的老规范,没跟进后续的标准更新,才会出现按照示例写却过不了验证的情况。

内容的提问来源于stack exchange,提问作者llama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 12:31:01