这个html声明是重复的吗?

时间:2010-10-27 10:06:14

标签: html xml xhtml doctype

我有一个doctype声明,如前两行所示。

在第三行中,html标签还有一些xmlns声明和xml:lang和lang。这些xmlns,xml:lang或lang中的任何一个是重复的吗?他们是否重复了doctype中的任何内容。我想保留doctype并删除第三行的所有声明,如果它们是重复的。

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

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

</html>

5 个答案:

答案 0 :(得分:1)

要符合DOCTYPE指示的严格XHTML标准,您必须指定xmlns属性。

  

文档的根元素必须   使用指定XHTML命名空间   xmlns属性[XMLNAMES]。该   XHTML的命名空间标识符是   “http://www.w3.org/1999/xhtml”。

来自http://www.w3.org/TR/xhtml11/conformance.html

的参考点#3

答案 1 :(得分:1)

他们不是重复的。 XHTML的XML名称空间和doctype声明是不一样的。 xml:langlang属性都不是。{1}}和<html>属性。 XHTML 1.0 specification要求包含所有这些内容。

XHTML 1.0 Strict DTD描述的<!ATTLIST html %i18n; id ID #IMPLIED xmlns %URI; #FIXED 'http://www.w3.org/1999/xhtml' > 元素的属性列表如下:

%i18n

(其中xml:lang是代表langdirxmlns国际化属性的内部实体,见下文)

注意第四行。它表示%i18n是给定URI值的属性,并且在该命名空间URL处 fixed 。这意味着如果省略该属性或为其指定不同的名称空间,则您的文档是无效的严格XHTML。

<!-- internationalization attributes lang language code (backwards compatible) xml:lang language code (as per XML 1.0 spec) dir direction for weak/neutral text --> <!ENTITY % i18n "lang %LanguageCode; #IMPLIED xml:lang %LanguageCode; #IMPLIED dir (ltr|rtl) #IMPLIED" > 实体对应于这些属性:

lang

xml:lang属性用于向后兼容(即HTML≤4.01),而xml由XML 1.0描述(因此此处显示xml:lang命名空间)。我不太确定lang应该在dir之前的确切原因,但是由于XHTML仅仅是HTML“重写”为XML语法(可以这么说),所以它是有道理的。

如果未指定,ltr属性默认为{{1}}(从左到右文本),因此它不是必需属性。

答案 2 :(得分:1)

不,xml文档的doctype和命名空间是不同的东西。

答案 3 :(得分:1)

如果您正在使用XHTML,那么(根据此处的其他评论)您需要指定所有这些内容。您的页面必须符合规范(如果XHTML页面不符合规范,则会失败)。

但是,您的问题表明您希望简化代码。事实上,使用XHTML,你不能。但是,如果你切换到HTML5规范,那么你可以大大简化。

HTML5不需要复杂的doctype,也不需要任何XML名称空间声明。 HTML5文档如下所示:

<!DOCTYPE html>
<html>
....
</html>

我相信你会同意,这更容易阅读。

好消息是,您可以在不改变任何其他内容或丢失任何功能的情况下执行此操作。所有当前浏览器都可以使用此代码,即使它们没有明确地与HTML5兼容。

答案 4 :(得分:0)

不,没有什么比重复了。

我们可以提及langxml:lang属性。 xml:lang属性的值优先

如果Doctype处于严格模式,

xmlns必须在那里。