Validation HTML5:什么是;“正确”;验证未注册数据的行为<;meta>;标签?

Validation HTML5:什么是;“正确”;验证未注册数据的行为<;meta>;标签?,validation,html,metadata,Validation,Html,Metadata,根据以下规定,以下为有效的“HTML 4.01过渡版”: 除了它没有像现在应该的那样进行验证 问题:W3文档没有将meta-标记的限制列为HTML5的一项新“功能”,但它们不像之前在HTML4.01中那样进行验证 更新:虽然确实没有限制name属性的字段值,但提到了新的限制(与“差异”指南不同)。基于SEO参数,建议不要使用meta-标记,但是meta-标记在缓存控制、文档和存储方面有很多公共和内部用途。难道没有一种方法可以将有效的HTML4代码转换为有效的HTML5代码,而不依赖数百万元解析器

根据以下规定,以下为有效的“HTML 4.01过渡版”:

除了它没有像现在应该的那样进行验证

问题:W3文档没有将
meta
-标记的限制列为HTML5的一项新“功能”,但它们不像之前在HTML4.01中那样进行验证

更新:虽然确实没有限制
name
属性的字段值,但提到了新的限制(与“差异”指南不同)。基于SEO参数,建议不要使用
meta
-标记,但是
meta
-标记在缓存控制、文档和存储方面有很多公共和内部用途。难道没有一种方法可以将有效的HTML4代码转换为有效的HTML5代码,而不依赖数百万元解析器自动重写它们自己吗


问题:在实践中我们应该怎么做?

在实践中,只需保持元标记不变即可。即使验证器抱怨,这对使用您网站的任何人都没有任何影响。

谢谢您的建议。我对它不太满意的原因是,验证确实有一个目的——我可以依赖于一个网页在浏览器中的可预测呈现。我可能会意外地在特定页面上引入真正的错误;通过适当的验证,此类问题被检测到的几率更高。因此,您可能知道,如果已经有1)用于过滤w3validator输出中“无效”错误的解析器,或者2)只关注并报告相关信息的替代验证程序,那么“我可以依赖浏览器中可预测呈现的网页。”-绝对和绝对不是这种情况。验证不能保证这一点,而且从来没有。验证是根据HTML的正式定义对页面进行的技术检查,它与浏览器的怪癖或错误无关。有一些无效页面保证在所有浏览器中都能正确显示,还有一些有效页面存在跨浏览器兼容性问题,从轻微到严重。验证可能“与浏览器的怪癖或错误无关”,但它确实与正确的浏览器行为有一定的关系。虽然我同意说“验证将保护我免受浏览器错误的影响”这一说法过于极端,但我不同意“验证毫无用处”这一相反的说法。验证过去曾帮助我在HTML代码中发现错误(其中一些错误导致错误呈现),从而节省了我的时间。放弃验证听起来像是最后的选择,而不是我首选的解决方案。我同意验证有一定的目的,我并不建议放弃验证。这是一个认识到验证错误的确切含义,并承认它们在技术上是正确的问题,但是您的文档仍然没有问题。为什么您不想注册新值?为什么有人想向公共数据库发送垃圾邮件,其中包含许多公司的内部文档/存储标签,这些标签只打算在内部使用?除了安全/隐私问题,我看不出这在任何情况下都有什么好处。出于同样的原因,你不应该发明新的HTML元素:将来有人可能会注册你在内部使用的相同关键字,但含义不同。当然,如果该值仅对您的站点有用,则可能不应该注册它。但是,我也不会使用
meta
(但是
script
作为数据块,或者现有元素上的
data-*
属性)。我同意您的回答是有意义的。但我仍然想知道,为什么W3C改变了现有
meta
标记的语义,而不是引入一个新元素(
script
data-*
属性,如您所建议的或其他东西),并要求注册这些属性?这不会影响现有页面的验证,任何需要注册备用标记变体的人都可以自由地这样做。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.or/TR/html4/loose.dtd">
<html><head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <meta name="revisit-after" content="30 days">
  <meta name="DC.Title" content="Website title">
  <title>Website title</title>
</head><body></body></html>
<!DOCTYPE html>
<html><head>
  <meta charset="UTF-8">
  <meta name="revisit-after" content="30 days">
  <meta name="DC.Title" content="Website title">
  <title>Website title</title>
</head><body></body></html>