对于无效的XHTML是否可以接受?

我注意到许多网站,包括SO,使用XHTML作为他们的标记语言,然后不遵守规范。只是浏览SO的源文件,缺少段落结束标签,无效元素等。

那么,如果工具(和开发人员)使用XHTML文档类型,如果他们要产生无效的标记呢?浏览者是否应该更加坚定地接受糟糕的加价?

在任何人喊出伪君子之前,我的博客有一张涉及captha的无效标记(或者是我最后一次检查过),它涉及样式化noscript标记。

0
额外 编辑
意见: 1
IE忽视Web标准可以接受吗?
额外 作者 GateKiller,

13 答案

我说,如果它呈现良好,那么它的像素是否完美并不重要。

需要一段时间才能让网站运行起来并按照您的要求运行,并且进行更改将会改变页面呈现方式的轻微变化,然后您必须修复这些 问题。

现在,我并不是说你应该建立一个潦草的网页,但我没有理由去修补那些没有破坏的东西。在不久的将来,浏览器不会放弃对纠错的支持。

0
额外

这取决于。我的博客问题 YouTube视频导致XHTML无效,但效果不错。另一方面,我有一个“有效的XHTML”链接,而“有效的XHTML”声明和无效的XHTML的组合并不专业。

由于SO不声称是有效的,所以我认为这是可以接受的,但是如果我是Jeff,我个人会困扰并尝试修复它,即使它在现代浏览器中看起来不错,但是有些人只是继续前进并且实际完成任务而不是修复不存在的错误。

0
额外

我不明白为什么当一些浏览器在正确渲染标准代码时出现问题时,为什么每个人都会陷入试图让他们的网站符合标准的原因。我已经在网页设计中做了10年的工作,并且我停止了双重编码(阅读:黑客入侵的CSS),并更改了愚蠢的东西,以便我可以在我的网站上放置一个按钮。

I believe that using a < div> will cause you to be invalid regardless, and it get a bit harder to do any major JavaScript/AJAX without it.

0
额外
什么? <div>是完全有价值的XHTML。
额外 作者 Kirk Strauser,

有这么多的标准,他们是如此严重的“执行”或支持,我认为这不重要。不要误解我的意思,我认为应该有标准,但是因为他们没有执行,没有人跟随他们,这是一个巨大的下降螺旋。

0
额外

只要它在IE,FF,Safari,(在这里插入其他浏览器),你应该没问题。验证并不像在多个浏览器中正确显示那样重要。仅仅因为它是有效的,并不意味着它会在IE中正常工作,例如。

在您的网站上运行Google Analytics(分析)或类似程序,查看用户使用的浏览器类型,然后判断您需要哪些浏览器支持最多浏览器,并在空闲时间担心不太重要的浏览器。

0
额外
但是如果浏览器甚至不能正确支持它,什么样的“有效”呢?我可以整天写“有效”的XHTML,但这并不意味着它会呈现相同的跨浏览器。
额外 作者 Bryan Denny,
如果它无效,“正确渲染”是一个未定义的值,因为无法准确确定“正确”的含义。
额外 作者 Kirk Strauser,

对于99.999%的网站,这真的没有关系。唯一一次我有这个问题,我将HTML输入通过HTMLTidy运行到XHTML,然后运行我的处理过程。

很多,这是老程序员的公理:不信任输入。

0
额外

许多原因使用有效的标记。我最喜欢的是,它允许您使用验证作为回归测试的一种形式,从而防止“delta rot”的标记等同于一旦错误达到某个临界质量时导致真正的渲染问题。实际上,允许像拼写错误和错误嵌套/未封闭的标签一样的“懒惰”错误积累起来很简单。有效的标记是识别充满激情的程序员的一种方法。

There's also the issue of debugging: valid markup also gives you a stable baseline from which to work on the inevitable cross-browser compatibility woes. No web developer who values his time should begin debugging browser compatibility problems without first ensuring that the markup is at least syntactically valid—and any other invalid markup should have a good reason for being there.

(顺便说一句,stackoverflow.com无法通过这些测试,并提出解决这些问题的建议 < a> 谢绝)。

尽管如此,为了回答您的具体问题,除非您打算生成有效的(或至少格式良好的)标记,否则使用其中一种XHTML文档类型可能不值得。 XHTML的主要优点源于XHTML是XML这一事实,它允许通过使用XML的工具和技术对其进行处理和转换。如果您不打算制作您的XHTML格式良好的XML,那么选择该DOCTYPE没什么意义。最新的HTML 4规范可能会做你需要的一切,而且它更加宽容。

0
额外
此外,HTML4(甚至HTML5)允许您省略某些元素,并仍然生成有效标记(根据定义,这在XHTML中有时是不可能的)。无论如何,很少需要使用无效标记(可能在旧式浏览器中包含Flash或Java小程序)。通常情况下,在HTML生成之后,它会变得不稳定或缺乏清理。
额外 作者 Alan Plum,

不,如果您不能保证格式良好,则不应使用XHTML,并且在实践中,如果您不使用XML序列化器生成标记,则无法保证它。阅读有关制作XML的

良构是将XHTML与HTML区分开来的 。 “只有一个”标记错误的XHTML不再是XHTML。 每次都必须完美

如果“XHTML”网站似乎可以处理一些错误,那是因为浏览器忽略DOCTYPE 并将页面解释为HTML。

See XHTML proxy that forces interpretation of pages as XHTML. Most of the time they fail miserably. This is one of the reason why future of XHTML is uncertain and why development of HTML has been resumed.

0
额外

尽管我相信争取有效的XHTML和CSS,但出于多种原因往往很难做到。

  • 首先,一些内容可以通过AJAX加载。有时,片段没有正确插入到现有的DOM中。
  • 您正在查看的HTML可能并未全部在同一文档中生成。例如,页面可以由组件或模板组成,然后在浏览器呈现它之前将它们扔在一起。这不是一个借口,但你不能认为你看到的HTML是一次性手动编码的。
  • 如果由Markdown生成的某些代码无效,该怎么办?您无法将堆栈溢出归咎于无法生成有效的代码。
  • 最后,DOCTYPE的目的不是简单地说“嘿,我正在使用有效的代码”,而是让浏览器领导你正在尝试做的事情,以便它至少可以接近正确解析该信息。

我不认为大多数开发人员指定一个DOCTYPE,然后明确地不遵守它。

0
额外

我不认为,如果你指定一个文档类型,有任何理由不遵守这个文档类型。

使用XHTML使自动错误检测变得简单,每一项更改都可以自动检查无效标记。这可以防止错误,尤其是使用自动生成的内容时。对于使用模板引擎(JSP,ASP.NET StringTemplate等)的Web开发人员来说,将一个结束标记复制/粘贴太少或太多非常容易。当这是您唯一的错误时,可以立即检测并修复它。我曾经为一个网站工作过,每页有165个验证错误,其中2或3个是实际的错误。这些很难找到其他错误的混乱。自动验证可以防止这些来源的错误。

毋庸置疑,选择标准并坚持使用标准永远不会有益于与其他系统(屏幕抓屏,屏幕阅读器,搜索引擎)的互操作性,而且我从未遇到过使用CSS解决方案的有效语义XHTML不可能实现的情况主要浏览器。

显然,在处理复杂系统时,并不总是可以坚持你的文档类型,但这主要是由开发这些系统的不同部分的不同团队之间的不适当沟通所导致的,或者很可能是遗留系统。在最后一种情况下,最好隔离这些情况并相应地更改您的文档类型。

不管成本如何,只要有人这么说,但是现在关于CSS和浏览器,测试和验证工具的知识,大多数时候好处都远远大于成本,所以务实和不拘泥于XHTML是很好的。

0
额外

我根本不会使用XHTML来拯救自己的哲学压力。它不像任何浏览器将它当作XHTML一样处理。

如果页面作为application / xhtml + xml发送,浏览器将拒绝糟糕的标记,但它们很少。这可以。

我会更关心像堆栈溢出一样在线使用CSS和JavaScript,仅仅因为它们使维护变得更加困难。

0
额外

我们应该始终努力按照标准进行验证。我们将确保该网站在当前浏览器和未来浏览器上显示并正常工作。

0
额外

你可以说我有XHTML有效性的强迫症。我发现代码中的大多数问题都不是有效的,程序员不知道HTML和XHTML之间的区别。我一直在写100%有效的XHTML和CSS,或者现在已经有一段时间了,并且从来没有其他浏览器出现任何主要的渲染问题。如果你保持一切正确,并且不要尝试任何异乎寻常的CSS明智的做法,你将会为自己节省大量的时间。

0
额外