注意:这应该是该问题的规范文章。已经存在许多答案,但是对各种差异的描述散布在各地,而且通常还会对“我应该使用哪个”提供意见,在此我将不再赘述。
如果您有更多问题要问,或者您知道更多不同之处,请随时进行编辑。
XHTML和HTML有什么区别? XHTML不仅仅是HTML的更严格版本吗?如果XHTML的行为相同,又为什么会有不同的版本?
答案 0 :(得分:2)
HTML和XHTML有什么区别?
有很多区别。主要的一个是XHTML是XML文档中的HTML,而XML具有不同的语法规则:
xmlns="http://www.w3.org/1999/xhtml"
x
都必须使用小写字母<
符号然后有一些与XML不相关的差异:
请注意,XHTML文档应使用正确的文件类型提供,即 .xhtml 文件扩展名或 application / xhtml + xml MIME类型。您实际上不能在HTML文档中使用XHTML,因为浏览器不会仅通过文件类型查看内容来区分两种语法。
换句话说,如果您具有HTML文件,则无论其是否具有有效的XML,其内容均为HTML。
值得一提的语法规则要点是标签名称的大小写。尽管HTML文档不区分大小写,但标记名称实际上由DOM公开为大写。这意味着在HTML下,像console.log(document.body.tagName);
这样的JavaScript命令将输出“ BODY”,而在XHTML下,相同的命令将输出“ body”。
XHTML不仅仅是HTML的严格版本吗?
否; XML与HTML有不同的规则,但不一定严格。如果有的话,XML的规则会更少!
在HTML中,许多功能是可选的。您可以选择是否在属性值两边加上引号。在XML中,您别无选择。在HTML中,您必须记住何时可以选择,何时不选择:<a href=http://my-website.com/?login=true>
中的引号是否可选?在XML中,您不必考虑这一点。 XML更容易。
在HTML中,某些元素定义为原始文本元素,即包含纯文本而不是标记的元素。
还有一些其他元素是可转义的原始文本元素,其中将解析诸如é
之类的引用,但将诸如<b>bold</b>
和<!-- comment -->
之类的内容视为纯文本。如果您记得那些是哪些元素,则不必转义<
的符号(尽管可以选择)。 XML不具备此功能,因此无需记住任何内容,并且所有元素都具有相同的内容类型。
XML具有处理器指令,其中最著名的是序言<?xml version="1.0" encoding="windows-1252"?>
中的xml声明。告诉浏览器使用哪个XML版本(顺便说一下,1.0是唯一可用的版本)以及哪个字符集。
XML以不同的方式解析注释。例如,HTML注释不能以<!-->
开头(即以>
作为其中的第一个字符); XHTML注释可以。
如果它们的行为相同,为什么会有不同版本的XHTML?
他们没有!例如,在XHTML 1.1中,您可以引用诸如é
和
之类的字符实体,因为这些实体是在DTD中定义的。当前版本的XHTML(以前称为XHTML5)没有DTD,因此在这种情况下,您将必须使用数字引用é
和 
(或在DOCTYPE中自己定义这些实体)声明。X毕竟是可扩展的。