2

我最近才开始学习 HTML/CSS,并且一直在尝试自学可靠的 Web 编程实践。我对 XML 很熟悉,所以用 XHTML 编写网页非常直观,而且看起来还不错。但是,我一直在阅读这样的文章 现在我很矛盾。

我对 HTML 和 XHTML 编码的担忧源于以下几点:

  1. img 标签不需要在 HTML 中关闭,这对我来说很有意义。但是在 XHTML 中,img 标签需要一个看起来有点时髦的关闭标签。我只是觉得有一对打开和关闭标签之间没有任何东西是很奇怪的。
  2. p 标签(如段落中)不需要在 HTML 中关闭,这对我来说很时髦。像在 XHTML 中那样在打开和关闭标签之间划分段落是有意义的。

这些是我目前能想到的唯一基本示例,但我希望它们至少能说明我在 HTML 和 XHTML 之间的分歧。所以这是我的实际问题:当我编写一个应该是 HTML(带有 HTML DTD)的网页时,是否可以输入 XHTML 代码(当我觉得它适当地澄清了某些事情时)?我确信网站看起来会一样,但如果人们查看我的来源,他们会认为我是一个非常不专业的编码器吗?

此外,我一直在盲目地通过谷歌浏览关于健全网络编程实践的教程和指南,我想知道你们是否有任何建议/资源与我分享。我真的很想确保我正在学习如何以正确的方式做到这一点。我真的很感激。

谢谢阅读!

编辑:哇,这么快的反应;你们太棒了!所以我知道网络浏览器在处理这类事情时会非常宽容。然后我的问题是虚荣心的问题,以及其他专业人士对编写一种 XHTML 和 HTML 的混合体的感受。严格合规的代码是要走的路吗?老实说,我只是不想看起来像个白痴,哈哈。

4

5 回答 5

8

HTML 5 允许使用 XHTML 语法。

您现在可以开始使用 HTML 5 文档类型,它将所有浏览器推入标准模式,但请注意 HTML 5 的新功能仅在某些浏览器中受支持。

来自Web 超文本应用技术工作组

我应该用 /> 或 > 关闭空元素吗?

HTML 中的 void 元素(例如 br、img 和 input 元素)不需要尾部斜杠。例如<br />,你只需要写而不是写<br>。这与 HTML 4.01 中的相同。然而,由于使用 XHTML 1.0 的广泛尝试,有大量页面使用尾部斜杠。因此,HTML 中的 void 元素允许使用尾部斜杠语法,以简化从 XHTML 1.0 到 HTML5 的迁移。

极其简单的 HTML 5 文档类型如下所示:

<!DOCTYPE html>

所以是的,您可以编写符合标准的 HTML 并带有自闭合标签,它将根据HTML 5 验证器进行验证。业界已广泛选择采用 HTML5 而不是 XHTML2,因此我不建议在任何新项目中使用 XHTML。


编辑:作为一个澄清点,现在使用 HTML 5 文档类型是安全的,并且假设 HTML 5 将在 XHTML 2 给定的行业支持下被广泛采用也是安全的。您现在当然可以编写 HTML 5 文档,但是 HTML5 的许多功能,例如<canvas>(特别是缺少 MS 的支持,因为它与 Silverlight 竞争)没有跨浏览器支持并且可能会发生变化。

于 2009-06-24T21:10:12.183 回答
4

img 标签不需要在 HTML 中关闭,这对我来说很有意义。

没有标签需要关闭。所有元素都需要关闭。

大多数元素由一个开始标签、一些内容和一个结束标签组成。

由于图像元素不能有内容,因此不需要结束标记。在 HTML 中,不能包含内容的元素(“EMPTY 元素”)禁止使用结束标签。

但是在 XHTML 中,img 标签需要一个看起来有点时髦的关闭标签。

XHTML 是一个 XML 应用程序,而不是一个 SGML 应用程序,并且 XML 没有 SGML 所具备的所有特性——包括指定禁止​​结束标记的能力。

我只是觉得有一对打开和关闭标签之间没有任何东西是很奇怪的。

XML 引入了一种新的标记——一种自闭合标记 ( <foo />),它作为开始和结束标记的组合。

如果您正在编写与 HTML 兼容的 XHTML(如果您选择使用 XHTML 并希望支持不支持该语言的浏览器,例如 Internet Explorer,那么您应该这样做),那么您应该使用该语法。(我更喜欢自己坚持使用 HTML)

p 标签(如段落中)不需要在 HTML 中关闭,这对我来说很时髦。

HTML 中的许多元素都有可选的结束标记。这允许在可以隐含的情况下省略结束标记。

例如:

<p>Hello, world
<p>A second paragraph

由于 p 元素不能包含另一个 p 元素,因此您可以暗示(以 100% 的可靠性)开始一个新段落将关闭前一个段落。

也就是说,它们是可选的,而不是禁止的。您可以为任何本质上不是空的元素编写带有显式结束标记的 HTML 4.01。

当我编写一个应该是 HTML(带有 HTML DTD)的网页时,是否可以输入 XHTML 代码(当我觉得它适当地澄清了某些事情时)?我确信网站看起来会一样,但如果人们查看我的来源,他们会认为我是一个非常不专业的编码器吗?

会显得不专业。

也就是说,只有 3 次 XHTML 语法不符合 HTML 语法:

空元素——比如<img><br>需要在 XHTML 中显式关闭……但你说你不喜欢那种语法。

脚本和样式——如果您在 XHTML 中的嵌入式 JS 和 CSS 中使用某些字符,则需要使用字符引用或 CDATA 标记,但是这些元素在 HTML 的 DTD 中被标记为 CDATA,所以这将是错误的……但您应该无论如何不要使用嵌入式脚本或样式。

命名空间——但没有时间在 HTML 文档中间使用 XML 命名空间来澄清一些事情。

于 2009-06-24T21:32:52.530 回答
3

从某种意义上说,这是“好的”,几乎每个浏览器都会正确呈现它,但这只是因为它们是为处理格式错误的 HTML/XHTML/XML/任何东西而构建的。但是,任何与声明的文档类型(在您的情况下为 HTML DTD)不匹配的元素都会阻止您的代码验证,并且从技术上讲,它是格式错误的。

另一方面,绝大多数网站(即使是正确呈现的网站)都没有验证,所以这不是一个大问题。我会坚持(严格)XHTML;请注意 jimr 关于自闭合标签的评论(例如<img src="foo" />)。

于 2009-06-24T21:09:56.367 回答
0

不,这不好。理论上,至少。如果您在 HTML 文档中编写 XHTML 语法,则它是无效的。浏览器很可能会以相同的方式呈现它,但它仍然无效。此外,唯一在 XHTML 中有效而在 HTML 中无效的是自闭合标记 ( <br />)。只是因为在 HTML 中你不需要关闭标签,并不意味着你不能关闭它们。你可以这样写标记:

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent at enim sit amet urna placerat porttitor ut quis justo. Quisque posuere nisl ac libero dictum posuere. Suspendisse in magna neque. Donec et vestibulum sapien. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed at nulla dui.</p>

<img src="" alt="">

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent at enim sit amet urna placerat porttitor ut quis justo.</p>

看?它是有效的 HTML,而且看起来不错。

顺便说一句:读这个

于 2009-06-24T21:23:35.370 回答
-1

<DOCTYPE>是 SGML 遗留下来的,应该只出现一次,在文档的顶部。在文档中添加其他 DOCTYPE 声明将违反 HTML 和 XHTML——尽管大多数浏览器可能会原谅你。

如果您必须在页面中同时使用这两者,那么将嵌套文档放入 IFRAME 可能更符合标准,因为 IFRAME 根据定义包含单独的窗口/文档上下文。

于 2009-06-24T21:12:03.553 回答