HTML命名空间和文档声明有什么区别?

html-css07

HTML命名空间和文档声明有什么区别?,第1张

在解析网页时,浏览器通过分析页面的DOCTYPE声明来了解要使用哪个DTD,进而知道HTML是哪个版本。HTML有不同的版本,可以使用的标签数量以及标签的属性是不同的,且会影响到浏览器对CSS和JS的执行。所以,它是必须要正确声明的。

XHTML 1.0 Strict(严格)的文件声明:

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

XHTML 1.1的文件声明:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

XHTML 1.0 Transitional(过渡型)文件声明:

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

过渡型XHTML 1.0允许HTML 4的表现元素

需要关注的是,<!DOCTYPE>声明不是 HTML 标签,它不必关闭。

HTML5不需要URL。浏览器一般不读取这些文件,,而是只识别常见的DOCTYPE声明,声明方式如下:

<!DOCTYPE html>

下面的链接是w3school给出的html元素和有效的DTD

HTML元素对应出现在哪些文档类型

对验证页面的有效性和区分浏览器模式上DOCTYPE声明非常重要。

<html>标签的xmlns属性(摘自w3school)

xmlns 属性可以在文档中定义一个或多个可供选择的命名空间。该属性可以放置在文档内任何元素的开始标签中。该属性的值类似于 URL,它定义了一个命名空间,浏览器会将此命名空间用于该属性所在元素内的所有内容。

例如,如果需要使用符合 XML 规范的 XHTML 文档,则应该在文档中的<html>标签中至少使用一个 xmlns 属性,以指定整个文档所使用的主要命名空间:

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

如果需要在一个 div 元素中显示一串数学公式,则可以为该 div 元素定义一个数学命名空间。比如这样:

<div xmlns="http://www.w3.org/1999/Math/MathMl">x3/x</div>

如果您不希望在每次显示除法公式时都在 div 元素中定义 xmlns 属性,那么更好的办法是在文档的开头处定义具有前缀的命名空间:

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

xmlns:math="http://www.w3.org/1999/Math/MathMl">

然后,您就可以在 div 中使用该前缀了,就像这样:

<math:div>x3/X<div>

虽然在大多数情况下,绝大多数 XHTML 作者都不需要定义多个命名空间,但是您仍然有必要理解存在着多个命名空间,以便在需要选择将基于某个 DTD 的内容嵌入其他 DTD 定义的内容中时,可以管理多个命名空间。

官方概念:xmlns是xml namespace的缩写,也就是XML命名空间,xmlns属性可以在文档中定义一个或多个可供选择的命名空间。该属性可以放置在文档内任何元素的开始标签中。该属性的值类似于URL,它定义了一个命名空间,浏览器会将此命名空间用于该属性所在元素内的所有内容。为什么需要这个xmlns呢,可能是这样的,比如在xhtml中,允许你使用各个不同的DTD文件,有可能不同的DTD文件中包含了相同的标识,那么这样的话就会出现标志冲突的问题,如果使用xmlns的话就可以区别开在不同文件中的相同的标志,例如在a.dtd中和b.dtd中都包含了table,但是如果一个xhtml文件同时包含了这两个dtd文件,而且使用了标志table,这样就会出现标志冲突问题,为了解决标志冲突问题,就可以使用xmlns如下:<html xmlns:a="http://www.a.com"><html xmlns:b="http://www.b.com"><a:table...><b:table...>

命名空间一般指namespace,也称“名称空间”。VS.NET中的各种语言使用的一种代码组织的形式通过名称空间来分类,区别不同的代码功能同时也是VS.NET中所有类的完全名称的一部分。命名空间是用来组织和重用代码的。如同名字一样的意思,NameSpace(名字空间),之所以出来这样一个东西,是因为人类可用的单词数太少,并且不同的人写的程序不可能所有的变量都没有重名现象,对于库来说,这个问题尤其严重,如果两个人写的库文件中出现同名的变量或函数(不可避免),使用起来就有问题了。为了解决这个问题,引入了名字空间这个概念,通过使用namespacexxx;你所使用的库函数或变量就是在该名字空间中定义的,这样一来就不会引起不必要的冲突了。温馨提示:以上信息仅供参考,不做任何建议。应答时间:2021-04-29,最新业务变化请以平安银行官网公布为准。 [平安银行我知道]想要知道更多?快来看“平安银行我知道”吧~ https://b.pingan.com.cn/paim/iknow/index.html