如何在页面头中创建站点地图链接通过W3C验证器?

时间:2012-11-11 00:38:02

标签: html sitemap w3c-validation html-head

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

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

我得到的错误是:

  

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

我一直在努力修复它,但我正在尝试的任何东西似乎都没有用,加上这是Google和Html5 Boilerplate推荐的布局。

我的语法有什么问题吗?似乎没错,但为什么不通过呢?

5 个答案:

答案 0 :(得分:10)

简短的回答是,你不能。

HTML 5定义了允许在rel中使用的值,sitemap不是验证者可识别的值之一。

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

(这里的基本问题是规范使用维基页面作为规范资源是坚定的,HTML 5仍然是草案,HTML 5验证器仍然被认为是实验性的。)

答案 1 :(得分: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

答案 2 :(得分:0)

来自未来(2021 年 6 月)。

条目:

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

现在被 W3 HTML5 验证器接受

验证以下 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/

返回响应:

<块引用>

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

答案 3 :(得分:-1)

  

字符串sitemap不是已注册的关键字或绝对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代码的子代

答案 4 :(得分:-1)

试试这个! 对于RSS和ATOM源,还可以识别rel属性备用。我个人将它用于所有xml文档。