繁体   English   中英

这个html声明是否重复

[英]Is this html declaration repetitive

我有一个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>

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

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

来自http://www.w3.org/TR/xhtml11/conformance.html的参考点#3

它们不是重复的。 XHTML的XML名称空间和doctype声明不同。 xml:langlang属性都不是。 XHTML 1.0规范要求包括所有这些。

XHTML 1.0 Strict DTD描述的<html>元素的属性列表如下:

<!ATTLIST html
  %i18n;
  id          ID             #IMPLIED
  xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
  >

(其中%i18n是表示xml:langlangdir国际化属性的内部实体,请参见下文)

注意第四行。 它说xmlns是给定URI值的属性,并固定在该名称空间URL上。 这意味着,如果省略该属性或给它提供其他名称空间,则您的文档是无效的严格XHTML。

%i18n实体对应于以下属性:

<!-- 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属性用于向后兼容(即HTML≤4.01),而xml:lang由XML 1.0描述(因此,此处显示xml名称空间)。 我不太确定xml:lang应该在lang之前的确切原因,但是鉴于XHTML只是将HTML“改写”为XML语法(可以这么说),这是有道理的。

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

不,XML文档的doctype和名称空间是不同的东西。

如果您使用的是XHTML,则(按照此处的其他注释),您需要指定所有这些内容。 您的页面必须符合规范(如果XHTML页面不符合规范100%,则XHTML页面将失败)。

但是,您的问题表明您想简化代码。 事实证明,使用XHTML不能。 但是,如果您切换到HTML5规范,则可以大大简化事情。

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

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

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

好消息是您可以执行此操作而无需更改任何其他功能或丢失任何功能。 当前所有的浏览器都可以使用此代码,即使它们不是明确兼容HTML5的也是如此。

不,没有什么像重复。

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

如果Doctype处于严格模式,则xmlns必须存在。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM