w3c验证器HTML5 xmlns

时间:2013-01-14 09:35:13

标签: html5 validation w3c-validation

我无法让我的网站在W3C标记验证中验证。

以下是其中一个验证错误的示例。

Error: Attribute xmlns:content not allowed here.

我做了一些研究,有些文章建议我们更改:
xmlns:name="http://url" syntax into the prefix="name:http://url"

但是我有多个xmlns属性 在这种情况下,不确定如何编写前缀。

原文:

`<html lang="en" dir="ltr"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:dc="http://purl.org/dc/terms/"
  xmlns:foaf="http://xmlns.com/foaf/0.1/"
  xmlns:og="http://ogp.me/ns#"
  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
  xmlns:sioc="http://rdfs.org/sioc/ns#"
  xmlns:sioct="http://rdfs.org/sioc/types#"
  xmlns:skos="http://www.w3.org/2004/02/skos/core#"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema#">`

它是否被每个属性之间的空格分开?

<html lang="en" dir="ltr" prefix="content:http://purl.org/rss/1.0/modules/content/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/">

或者我们应该用\n新行分开?
我已经在w3.org网站上查看了,看起来他们将这个属性分成了新的一行 我是对的吗? http://www.w3.org/TR/2011/WD-rdfa-core-20111215/

3 个答案:

答案 0 :(得分:1)

您不能在HTML 5中使用任意名称空间中的元素。为此,您需要使用XML,并且要进行验证,您需要一个合适的DTD或Schema,其中包含您要使用的所有名称空间。

答案 1 :(得分:0)

您需要在html标记之前使用doctype。您可以使用:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

答案 2 :(得分:0)

网页包含RDFa标记,HTML 5中允许使用该标记。HTML+RDFa 1.1 specificationa section specifically dedicated to the @xmlns: attributes

它表示在RDFa 1.1中不推荐使用@xmlns:,但仍允许向后兼容。因此,如果可能的话,不应该使用它。然后,Conformance Criteria for @xmlns:-Prefixed Attributes上的以下部分表明:

  

对于符合此规范的文档,具有不区分大小写的前缀匹配“@xmlns:”的名称的属性必须被视为符合要求。一致性检查器应该接受具有不区分大小写的前缀匹配“@xmlns:”的属性名称作为符合。一致性检查器应该生成警告,注意不推荐使用@xmlns:。一致性检查器可以报告使用xmlns:作为错误。

据我所知,W3C HTML验证器正在采用更严格的一致性检查,其中xmlns:被报告为错误,但我发现它很奇怪,因为它应该产生警告。