9

我正在尝试通过 W3C 验证器传递一个页面。站点地图上的验证失败,我将其包括在内:

<link rel="sitemap" type="application/xml" title="Sitemap" href="../sitemap.xml" />

我得到的错误是:

元素链接上属性 rel 的错误值站点地图:不是绝对的 IRI。字符串站点地图不是注册的关键字或绝对 URL。

我一直在尝试修复它,但我尝试的任何方法似乎都不起作用,而且这是 Google 和 Html5 Boilerplate 推荐的布局。

我的语法有什么问题吗?似乎是正确的,但为什么它没有通过?

4

5 回答 5

12

简短的回答是你不能。

HTML 5 定义了您可以使用的值,relsitemap不是验证器识别的值之一。

错误消息确实表明您可以在 wiki 上注册新的链接类型,但站点地图已经存在,因此您只需等待验证器开发人员更新验证器以反映 wiki 的新状态(假设没有人删除条目)。

(这里的基本问题是让规范使用 wiki 页面作为规范资源是疯狂的,HTML 5 仍然是草案,并且 HTML 5 验证器仍然被认为是实验性的)。

于 2012-11-11T01:13:13.410 回答
8

来自未来(2021 年 6 月)。

入口:

<link rel="sitemap" type="application/xml" title="Sitemap" href="/sitemap.xml">

现在被W3 HTML5 Validator接受

也就是说:

rel="sitemap"

现在是一个有效的属性 + 值

验证以下 HTML 文件:

<!DOCTYPE html>
<html lang="en-gb">
<head>
<meta charset="utf-8">
<title>My Rel Sitemap Test</title>
<link rel="sitemap" type="application/xml" title="Sitemap" href="/sitemap.xml">
</head>

<body>
<h1>My Rel Sitemap Test</h1>
<p>This is my Rel Sitemap Test.</p>
<p>The document passes.</p>
<p>This document is valid HTML5 + ARIA + SVG 2 + MathML 3.0</p>
</body>
</html>

这里:https ://validator.w3.org/nu/

返回响应:

文件检查完成。没有要显示的错误或警告。

于 2021-06-24T14:46:31.893 回答
3

如果您只需要 w3c 验证器通过,也许您可​​以检测其用户代理并修改应用程序的输出以使其通过。我认为严格验证更多的是一种营销利益,而不是像这样的小问题。如果其他开发人员使用 w3c 验证器说您的客户的网站充满错误,那就很烦人。

您可以检查 HTTP_USER_AGENT 是否包含“W3C_Validator”并删除非标准代码。

在 CFML 中,我编写了这样的代码,以使我的 Google Authorship 链接仍然能够在 w3c 验证器上进行验证:

<cfif cgi.HTTP_USER_AGENT CONTAINS "W3C_Validator">data-</cfif>rel="publisher"

我刚刚在谷歌论坛上发布了一个问题,他们是否可以开始支持 data-rel,或者他们是否可以确认谷歌搜索是否已经支持它。他们提供的结构化数据测试工具我刚才测试的时候并没有解析data-rel。 http://www.google.com/webmasters/tools/richsnippets

希望有人会跟进: https ://groups.google.com/a/googleproductforums.com/d/msg/webmasters/-/g0RDfpFwmqAJ

于 2013-02-24T17:59:29.850 回答
0

字符串站点地图不是注册关键字或绝对 URL

你的问题就在这里:

href="../sitemap.xml" 

您正在使用相对URL来指示您的站点地图在哪里。试着放这样的东西:

<link rel="sitemap" type="application/xml" title="Sitemap" href="/myfolder/sitemap.xml" />

编辑

由于机器人首先在您的根目录中爬行,因此最好的方法确实是sitemap.xml在您的根目录中使用您的文件:

<link rel="sitemap" type="application/xml" title="Sitemap" href="/sitemap.xml" />

或者

<link rel="sitemap" type="application/xml" title="Sitemap" href="http://yoursite.com/sitemap.xml" /> <!-- No www -->

还,

确保link的标签是您的标签的子head标签

于 2012-11-11T00:42:17.540 回答
-2

尝试这个!

<link rel="alternate" type="application/xml" title="Site Map" href="http://yoursite.com/sitemap.xml" />

RSS 和 ATOM 提要也可以识别 rel 属性替代。我个人将它用于所有 xml 文档。

于 2016-06-26T22:16:06.377 回答