注意:这应该是这个问题的标准帖子。许多答案已经存在,但对各种差异的描述比比皆是,而且往往还提供了“我应该使用哪一个”的意见,我将在这里避免使用。
如果你有更多的问题要问,或者你知道更多的不同之处,请随时编辑。
XHTML和HTML之间的区别是什么?XHTML不只是HTML的一个更严格的版本吗?如果XHTML的行为都一样,为什么会有不同的XHTML版本呢?
发布于 2019-05-23 02:19:59
和XHTML有什么不同?
有很多不同之处。
xmlns="http://www.w3.org/1999/xhtml"
命名空间,在xmlns="http://www.w3.org/1999/xhtml"
是区分大小写的,而且你必须使用小写作为标记名和属性,甚至十六进制字符引用中的x
<![CDATA[
分隔的纯文本部分。另一方面,XML中没有CDATA、PCDATA元素或属性,因此您必须到处转义]]>
符号(除了在CDATA sections)然后有几个与XML无关的区别:
<meta http-equiv="content-type" ...
标记为错误,但在XHTML1.0严格版和HTML4.01版严格版中,XHTML5文件中的HTML5不匹配会导致验证问题。XTHML1.0的定义缺少<img>
和<form>
上的name
属性。但这是一个错误,已在XHTML1.1中修复。您不能在HTML文档中真正使用XHTML,因为浏览器不会通过查看内容来区分这两种语法,而只能通过文件类型来区分。
换句话说,如果您有一个HTML文件,那么无论其中是否包含有效的XML,它的内容都是HTML。
关于语法规则,值得一提的是标记名的大小写。这意味着在HTML语言中,像console.log(document.body.tagName);
这样的JavaScript命令将输出"BODY",而在XHTML语言中,相同的命令将输出"body“。
不只是一种更严格的版本吗?
不是;XML与HTML有不同的规则,但它不一定更严格。如果说有什么不同的话,那就是XML的规则更少了!
在HTML中,许多功能是可选的。在XML中,您不必考虑这一点。XML更简单。
在HTML中,一些元素被定义为原始文本元素,即包含纯文本而不是标记的元素。
其他一些元素是可回避的原始文本元素,在这些元素中,诸如é
之类的引用将被解析,但诸如<b>bold</b>
和<!-- comment -->
之类的元素将被视为纯文本。如果您能够记住这些元素是什么,那么您就不必转义<
符号(您也可以选择转义)。XML没有这样的内容类型,所以没有什么需要记住的,所有元素都有相同的内容类型。
XML以一种不同的方式解析注释。例如,HTML注释不能以<!-->
(其中第一个字符是>
)开头,而XHTML注释可以。
说到注释,您可以使用<!-- comment -->
注释掉<script>
和<style>
元素中的代码块。不要在HTML中尝试这样做。(由于兼容性问题,在XHTML中也不推荐这样做,但您可以这样做。)
如果它们的行为都一样,为什么会有不同的版本呢?
他们不会!当前版本的XHTML (以前称为XHTML5)没有DTD,因此您必须使用数字引用,在本例中为é
和 
(或者在DOCTYPE声明中自己定义这些实体)。X毕竟是eXtensible的意思)。
https://stackoverflow.com/questions/56262792
复制相似问题