markup -无效的XHTML可以接受吗?

Translate

我注意到很多站点(包括SO)都将XHTML用作标记语言,但并没有遵守规范。只是浏览源代码,所以缺少段落,无效元素等的结束标记。

因此,如果工具(和开发人员)将要产生无效的标记,则应该使用XHTML doctype吗?浏览器是否应该更坚定地接受不良加价?

并且在任何人喊伪君子之前,我的博客上都有一个涉及captha的无效标记(或者我上次检查的标记),涉及样式化noscript标记。

This question and all comments follow the "Attribution Required."

所有的回答

Translate

很多原因使用有效的标记。我最喜欢的是,它允许您将验证用作回归测试的一种形式,以防止当误差达到某个临界值时,等效于“ delta rot”的标记导致实际的渲染问题。的确,允许像拼写错误和嵌套/未关闭标签之类的“懒惰”错误累积起来只是草率的。有效标记是识别的一种方法热情的程序员.

还有一个调试问题:有效的标记还为您提供了一个稳定的基准,从该基准可以解决不可避免的跨浏览器兼容性问题。珍惜时间的Web开发人员必须首先确保标记至少为句法上有效-其他任何无效的标记都应该有充分的理由。

(顺便说一句,stackoverflow.com未能通过这些测试以及解决问题的建议 拒绝.)

综上所述,要回答您的特定问题,除非计划生成有效的XHTML文档类型,否则不值得使用其中一种XHTML文档类型。最小格式正确的)标记。 XHTML的主要优势来自XHTML是XML的事实,它允许使用XML的工具和技术对其进行处理和转换。如果您不打算使XHTML格式正确的XML,那么选择该文档类型毫无意义。最新的HTML 4规范可能会满足您的所有需求,并且更加宽容。

来源
Translate

我们应始终尝试使其按照标准进行验证。我们将确保该网站将在当前浏览器和将来的浏览器上显示并正常运行。

来源
Translate

我认为,如果您指定文档类型,则没有任何理由不遵守该文档类型。

使用XHTML可以轻松地自动检测错误,可以自动检查每个更改的无效标记。这样可以防止错误,尤其是在使用自动生成的内容时。对于使用模板引擎(JSP,ASP.NET StringTemplate等)的Web开发人员而言,复制/粘贴一个结束标记太少或太多确实非常容易。如果这是您唯一的错误,则可以立即检测到并修复。我曾经在一个网站上工作,该网站每页有165个验证错误,其中2或3个是实际错误。在其他错误的混乱中很难找到这些。自动验证可以从源头上防止这些错误。

不用说,选择一个标准并坚持下去永远不会与其他系统(屏幕抓取器,屏幕阅读器,搜索引擎)实现互操作性,而且我从来没有遇到过这样的情况,即不可能为所有人提供有效的语义XHTML和CSS解决方案主要浏览器。

显然,在使用复杂的系统时,并非总是能够坚持使用您的doctype,但这主要是由于开发这些系统的不同部分的不同团队之间(或很可能是遗留系统)之间的沟通不当造成的。在最后一种情况下,最好隔离这些情况并相应地更改您的文档类型。

务实而不是仅仅因为有人说XHTML而已,这是一个好习惯,无论花费多少,但是凭借有关CSS和浏览器,测试和验证工具的最新知识,大多数时候收益要比成本大得多。

来源
Translate

您可以说我在XHTML有效性上具有OCD。我发现,代码无效的大多数问题来自程序员,他们不知道HTML和XHTML之间的区别。我已经写了100%有效的XHTML和CSS已有一段时间了,并且从未在其他浏览器上遇到任何重大渲染问题。如果您使所有内容保持有效,并且不尝试在CSS方面做过奇特的尝试,则可以节省大量的修复时间。

来源
Translate

我根本不会使用XHTML来拯救自己的哲学压力。无论如何,这并不像任何浏览器都将其视为XHTML一样。

如果页面以application / xhtml + xml的形式发送,浏览器将拒绝糟糕的标记,但是很少这样做。这可以。

我会更担心诸如CSS和JavaScript与Stack Overflow的内联使用之类的事情,只是因为它们会使维护变得更加困难。

来源
Tom
Translate

尽管我相信努力争取有效的XHTML和CSS,但出于多种原因通常很难做到这一点。

  • 首先,某些内容可以通过AJAX加载。有时,片段未正确插入现有DOM中。
  • 您正在查看的HTML可能未在同一文档中全部生成。例如,页面可以由组件或模板组成,然后在浏览器呈现页面之前将其组合在一起。这不是借口,但是您不能假设您看到的HTML是一次全部手动编码的。
  • 如果Markdown生成的某些代码无效怎么办?您不能责怪堆栈溢出没有产生有效的代码。
  • 最后,DOCTYPE的目的不是简单地说“嘿,我正在使用有效的代码”,而是让浏览器了解您要执行的操作,以便至少可以正确解析该信息。

我不认为大多数开发人员都会先指定DOCTYPE,然后再明确地遵循它。

来源
Boyd Lee
Translate

尽管我同意“如果渲染效果很好,那就不用担心”的观点,但是遵循标准很有利,即使现在可能还没有完全支持它。您仍然可以使用Table进行布局,但这并不是很好的原因。

来源
Translate

不,如果您不能保证格式良好,则不应该使用XHTML;在实践中,如果您不使用XML序列化器来生成标记,则不能保证XHTML。读关于生成XML.

格式正确的是XHTML与HTML的区别。带有“仅一个”标记错误的XHTML不再是XHTML。每次都要完美.

如果“ XHTML”站点似乎有一些错误,那是因为浏览器会忽略DOCTYPE并将页面解释为HTML。

看到XHTML代理强制将页面解释为XHTML。大多数时候他们惨败。这是XHTML的未来充满不确定性和为什么恢复HTML开发.

来源
Translate

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

由于SO并不声称是有效的,所以我认为这是可以接受的,但是就我个人而言,如果我是Jeff,即使在现代浏览器中看起来不错,我也会很烦恼并尝试对其进行修复,但是有些人宁愿继续前进并实际完成工作而不是修复不存在的错误。

来源
Translate

只要它可以在IE,FF,Safari(在此处插入其他浏览器)中运行,就应该可以。验证并不像在多个浏览器中正确呈现一样重要。例如,仅仅因为它是有效的,并不意味着它就可以在IE中正常工作。

在您的网站上运行Google Analytics(分析)或类似工具,查看您的用户使用的是哪种浏览器,然后判断您最需要支持哪种浏览器,而在有空余时间时,则可以考虑不太重要的浏览器。

来源
Translate

我说,如果渲染正常,则像素完美无所谓。

花一点时间才能按照您想要的方式启动并运行网站,返回并进行更改将改变页面的呈现方式,然后您必须修复那些问题。

现在,我并不是说您应该构建草率的网页,但我认为没有理由要解决未解决的问题。浏览器不会在不久的将来放弃对错误纠正的支持。

来源
Translate

我不明白为什么有些浏览器在正确呈现标准代码时遇到问题,为什么每个人都试图使自己的网站符合标准而陷入困境。我从事网页设计已有10年之久,我停止了两次编码(阅读:hacking CSS),并更改了一些愚蠢的内容,以便可以在自己的网站上放一个按钮。

我相信无论使用<div>都会使您无效,并且如果没有它,很难做任何主要的JavaScript / AJAX。

来源
Translate

有太多的标准,它们被严重“强制”或支持,以至于我认为这并不重要。不要误会我的意思,我认为应该有标准,但是由于没有强制执行这些标准,因此没有人遵循这些标准,这是一个巨大的螺旋式下降。

来源
Translate

对于99.999%的网站来说,这实际上并不重要。唯一的问题是,我通过HTMLTidy运行了HTML输入以对其进行XHTML大小化,然后对它进行了处理。

几乎是老程序员的公理:不信任任何输入。

来源