我应该从HTML还是XHTML开始学习?

17

那么应该从哪个开始学习,HTML 还是 XHTML?我是一个初学者,希望在标记语言方面打好坚实的基础,但当我开始学习时,发现有些人使用 HTML,有些人则使用 XHTML。


作为一个初学者,我不知道该选择HTML还是XHTML,但大多数开发人员投票支持XHTML,所以我会选择XHTML。 - Jasmine Appelblad
12
如果你是初学者,你应该只使用HTML 4,XHTML是由5-10年前XML热潮导致的一种时尚。实际上,XHTML 2已经消亡了。XHTML 5只不过是为了安抚那些使用XML作为HTML的人们而做出的象征性姿态,W3C不建议使用它。尽管你选择了这个答案,但几乎没有理由使用它。 - cletus
@cletus: HTML5是一份草案。HTML5的HTML和XHTML序列化都不被W3C推荐用于实际使用。 - Alohci
@Alohci:不建议使用完整的HTML5,但您可以相当安全地将其某些方面添加到您的代码中。 - Casebash
@Casebash。确实。在HTML和XHTML序列化中都是如此。 - Alohci
8个回答

24

在这个问题上,传统智慧已经来了一个完整的圆。回到2002年左右,每个人都热衷于XHTML,但许多人(包括我自己)没有很好的理由。它只是一个酷炫的新事物,每个人都跟风,开始在简历技能中加入XHTML而不仅仅是看起来如此平淡无奇的HTML

现在正在发生的事情是,随着HTML5的完成,人们开始意识到老式的HTML并没有什么问题。它是网络的语言。以下是我认为XHTML的优缺点:

优点

  • 允许您嵌入非XHTML XML到您的网页中,例如SVG元素。这在普通HTML中是不可能的。
  • 可以使用XML解析器轻松解析文档,如果您想在网站模板中将所有H1标签替换为H2标签,则可以省去hpricot或BeautifulSoup之类的需要。

缺点

  • IE不理解'application/xhtml+xml'的MIME类型,因此它认为您正在发送格式错误的HTML。
  • 它有点冗长。<br><table cellspacing=0 cellpadding=0>在我看来比<br /><table cellspacing="0" cellpadding="0">更整洁。

我可能忽略了一些XHTML的优点,但现在我自己在所有事情上都使用HTML。


我不清楚那个。SGML需要引号,但我一直认为HTML不需要。http://dev.w3.org/html5/markup/syntax.html#syntax-attributes - jpsimons
1
是的,Cletus 是错的。一般来说,在 HTML 中使用没有引号的属性是有效的。恰巧我认为加上引号更整洁,但这非常取决于个人喜好,其他合理的人可能会有不同的看法。 - Alohci
@Alohci:严格的HTML不需要引号吗?这意味着这更多是未来兼容性而非个人偏好的问题? - Casebash
@Casebash - 不需要。HTML 4未要求,HTML 5在text/html语法中也不需要。很容易检查。将“<! DOCTYPE html PUBLIC“ -// W3C // DTD HTML 4.01 // EN”><title>test</title><p class=smith>Test</p>”复制到http://validator.w3.org/#validate_by_input并运行。即使将来的HTML将其作为符合性要求,HTML解析器(例如浏览器中的解析器)仍然需要支持省略引号才能处理大量网页内容。不存在未来兼容性问题。当然,正确提供的XHTML应用程序/xhtml+xml需要它们。 - Alohci

15
XHTML只有在使用基于XML的工具(例如组件化MVC框架(例如Sun JSF,Apache Struts,Microsoft ASP.NET等)或XSLT)自动生成/管理/验证/等HTML代码时才有用。以编程方式解析/格式化HTML比XML更棘手,因为HTML允许出现未闭合的标签,例如<br>。 XML要求为well-formed,因此在程序上更容易解析/格式化。
如果您刚开始并/或手写“普通”的HTML,则建议使用HTML 4.01元素HTML5文档类型声明。真的没有必要将HTML代码转换为XML格式。
<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Page title</title>
    </head>
    <body>
        <h1>Heading</h1>
        <p>Paragraph</p>
    </body>
</html>

HTML 5元素目前还没有得到广泛支持,因此建议坚持使用HTML 4.01元素。HTML 5 doctype会在大多数浏览器中触发标准模式,包括IE6。 HTML5的另一个好处是它允许像XHTML一样关闭短标签。 另请参见HTML5规范章节3.2.2

作者可以选择在HTML语法中也使用void元素的相同语法。有些作者也选择在斜杠前包含空格,但这不是必要的。(以那种方式使用空格是从XHTML 1.0的兼容性指南附录C继承的惯例。)

基本上,即使您编写 XHTML,使用<!DOCTYPE html>仍将使其有效(并触发Web浏览器进入正确的标准模式)。


这是不应该使用 HTML 5 的一个原因:https://dev59.com/S3RC5IYBdhLWcg3wFdFx - DoctorLouie
3
哎呀,我没有说“HTML 5元素”,我只是说“HTML 5文档类型”。 - BalusC
3
好的,你的回答补充了我的答案。 "基于XML的工具"是我遗漏的部分。 - jpsimons
使用HTML5文档类型会排除使用成熟的验证器,该验证器可以针对稳定的规范进行测试。 - Quentin
糟糕,我没说“HTML5元素”,我只说了“HTML4.01元素”。 - BalusC

12

XHTML与HTML非常相似,但更加严谨。除了懒惰之外,我真的想不到不使用它的理由。


16
有人持不同意见:http://hixie.ch/advocacy/xhtml - ntd
2
大多数经验丰富的开发人员都不会同意你的看法,但是对于新手来说,是的,他们肯定会同意。 - DoctorLouie
14
@Daniel:实际上这正是他所说的。他解释了将XHTML作为text/html格式使用是不好的,而且IE6不支持XHTML+HTML。使用XHTML会失去一些方便(如HTML实体;XHTML实体不同)。使用XHTML的理由非常少。以至于XHTML 2已经消亡,XHTML 5仅出于兼容性考虑存在于那些已经使用XHTML的人中。 - cletus
8
HTML与XHTML一样,是一种定义良好的语言。它并不含糊。任何一种语言都可能因实现错误而成为无效的“标签混乱”代码。 - jpsimons
1
冗余并不是懒惰的证明。 - Danubian Sailor
显示剩余4条评论

3

说到学习HTML和XHTML,它们之间的区别实际上很小。XHTML基本上是HTML的子集,它鼓励(或者更确切地说,要求)更严格的标准 - 具体而言,它是将XML标准应用于HTML的一种方式。因此,任何有效的XHTML也是有效的HTML(至少大部分是这样)。

在我看来,XHTML和HTML之间的区别并不是非常重要。然而,重要的是编写一致和高效的标记语言,这正是XHTML标准旨在鼓励的。无论您将代码标记为XHTML还是HTML,只要编写良好即可。

XHTML的主要特点就是它要求您的代码具有高质量的标准,但这实际上是在HTML中您本应该做到的


1
因此,任何有效的XHTML也是有效的HTML。不是这样的。在HTML5之前,不可能创建一个既是有效的XHTML又是有效的HTML的单个文档。XHTML必须包括一个命名空间声明属性,并且在HTML中这是无效的属性。 - Alohci
1
因此,“至少大部分来说”。从实际角度来看(尤其对于初学者而言),仍然可以合理地说XHTML是HTML的一个子集。 - Will Vousden
3
对不起,我仍然不同意。在XHTML中,像<div />这样的结构将执行一项操作,在处理为HTML时将执行不同的操作。将XHTML描述为HTML的子集是否认这一点,并因此使初学者感到困惑。我更喜欢将HTML和XHTML描述为兄弟语言,具有共同的词汇表但不同的语法。 - Alohci

3

XHTML适用于那些认为XML比普通HTML更加整洁的人。

但实际上,这并不太重要。你可以很快地从一个使用另一个,就像吃午饭一样快速切换。


1
对于小型网站来说,是的,但对于大型网站来说,情况并不那么简单。 - Casebash
我指的是你的大脑,而不是代码库。 - Brian Ortiz

1

HTML 4.01可能是您最好的选择,因为分阶段学习可以让您更清楚地了解幕后发生的事情和标记内部的深层内容。一旦您对HTML 4.01有了清晰的视野和深入的理解,您就可以转向XHTML 1.0。


3
所以他们应该学习HTML允许的不良习惯,然后转向更好的标准? - ChaosPandion
1
无论你怎么想,事实是如果你不知道我们来自哪里,你就不会很适合知道我们要去哪里。 - DoctorLouie
1
HTML允许哪些“不良习惯”? - jpsimons
4
HTML 4并没有教授错误的习惯,它教授的是拥有最广泛支持的标记语言。大多数情况下,XHTML只是一种自我放纵和无意义的分心。 - cletus
@mastermind:你能解释一下为什么HTML 4.01更有利于理解幕后发生的事情吗?我认为大多数人会将树形结构的DOM视为XML,而不是HTML,因为在HTML中有些标记经常被省略。对于初学者来说,决定哪些标记可以省略似乎非常武断。 - Alohci
最重要的是使用验证,即使作为初学者。 - Casebash

1

从HTML开始,并使用验证器。在HTML5中,每个人似乎都专注于HTML,而不是XHTML序列化。

  • 正如我在这里的答案中所解释的那样,XML的设计者希望实施更高的编码标准并使解析更容易,但只有几乎所有人都转换才能起作用。不要依赖浏览器来强制执行代码质量,而是依赖验证器。
  • 由于Internet Explorer <=8对XHTML的支持有限,几乎所有人都将XHTML作为text/html提供。这实际上将您限制在HTML和XHTML的子集上,并要求您遵循兼容性指南。您可以根据用户代理选择要提供的格式,但这很麻烦。

考虑到有限的优势,我强烈推荐使用HTML,特别是如果您是初学者。


0

HTML和XHTML是相同的语言,只是语法略有不同。一旦你掌握了其中一个,你就知道了另一个。

这真的无关紧要。


对于初学者来说,把它做对并不是非常重要,但即使如此,选择HTML对初学者来说会更容易。 - Casebash
“HTML对于初学者来说会更容易” — 为什么? - Paul D. Waite
1
@Paul:基于Accept头的双重服务很混乱。将XHTML作为HTML提供需要遵循兼容性指南。任何一种选择都相当复杂。 - Casebash
@Casebash:如果你来自XML背景,我猜兼容性指南可能会让你感到困惑。如果不是的话,我认为你甚至都不会注意到它们。 - Paul D. Waite
@Paul:你是说我们应该教授XHTML而不教授XML吗? - Casebash
1
@Casebach:这要看情况。如果你将来会在某个时候使用XHTML作为XML,那么学习XML会有所帮助。但是如果你只是为Web编写XHTML,那么你实际上并没有编写XML,因此我认为你可以很愉快地跳过XML知识。而且,仅就XML本身而言(即忽略任何特定的XML语言),它只是一组语法规则,对吧? - Paul D. Waite

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接