XHTML合规性是否毫无意义?

20

我正在建立一个网站,到目前为止,我已经费了很大的力气使所有东西都符合规范,并且在各种浏览器中看起来几乎相同。然而,我开始使用一些第三方/免费的JavaScript代码,例如添加属性(例如order=2)。我可以解决这个问题,但很麻烦,而且我开始失去确保一切有效的原则。实际上,绕过这样的问题有什么意义吗? 我下载了Firefox的HTMLValidator插件,并查看了大多数主要网站(包括此网站、Google等),它们并不是有效的XHTML或HTML。


还可以参考“HTML版本选择”问题:https://dev59.com/QXVD5IYBdhLWcg3wXaYd - Chris
2
我删除了“流行语合规性”标签。在我看来,这是非常冒犯的。 - Jon Limjap
11个回答

5
验证非常有用,可以确定是否符合您预期的标准。如果您故意使用一个特定工具来添加不在验证标准中的内容,那么这显然不会违反您个人的标准协议。
如果您有一个老板或客户认为所有内容都应该返回绿灯,则此讨论将变得更加困难,因为您必须向他们解释上述内容并说服他们这不仅仅是您懒惰的表现。
话虽如此,请确保这不仅仅是您懒惰的表现。虽然验证器可能会令人恼火地不断提醒第三方属性的每个实例,但这并不会使他们提到的其他验证错误无效。经常通过扫描来进行双重检查是值得的。

4

标准合规性是为了增加您的页面在您没有测试过的浏览器中的工作机会。这包括屏幕阅读器和您测试过的浏览器的下一个更新,以及那些您进行了测试但用户已经以意想不到的方式配置的浏览器。

验证并不能保证什么,因为您的页面可能会验证通过,但仍然存在足够含糊不清的情况,使得它在某一天无法按照您预期的方式在某些浏览器上运行。

然而,如果您的页面确实验证通过,至少有XHTML规范说明它应该如何行事。如果它没有验证通过,那么您只有一堆浏览器作者之间的非正式约定。

如果您想做一些在其中一个中允许但在另一个中不允许的事情,那么写有效的HTML 3可能比写无效的XHTML更好。


3
如果您打算将XHTML作为XML利用,那么使您的页面有效和格式良好是值得的。否则,普通的语义化HTML可能是您想要的。无论哪种方式,您的受众需求优先于验证器的需求。

2

请记住,与没有使用XHTML标签相比,大多数浏览器中的XHTML标记呈现形式不同。DOCTYPE属性确定了浏览器呈现模式,并决定了什么是允许的和不允许的。如果你偏离XHTML合规性,一定要在所有浏览器中重新测试。

个人而言,我尽可能遵循最新的标准,但你必须权衡时间/金钱和合规性,这最终取决于个人偏好。


2

我从未遇到过添加非标准属性导致任何浏览器渲染问题的情况。

不要试图规避那些非标准属性。验证器是一个方便的工具,用于检查代码的无意错误,但我们都知道,即使是完全有效的xhtml也不会在所有浏览器上始终以相同的方式呈现。有许多时候,设计决策要求我们使用特定于浏览器(非标准)的技巧来实现效果。这就是网页开发人员的生活,如谷歌、雅虎等驱动站点所示,它们不符合验证标准。


2
就浏览器而言,XHTML的合规性是毫无意义的,因为:
1. 浏览器没有XHTML解析器。它们有非版本特定的、与Web兼容的HTML解析器,围绕http://www.w3.org/1999/xhtml命名空间构建DOM。
2. 一些具有XML解析器的浏览器可以将作为application/xhtml+xml提供的XHTML标记视为XML处理。这将采用XML并为http://www.w3.org/1999/xhtml命名空间中的元素提供默认的HTML样式和行为。但是,就解析而言,它与XHTML无关。遵循XML解析规则,而不是某些XHTML DTD的规则。
因此,当您使用XHTML标记时,您正在向浏览器提供一些外来的东西,并查看它是否按照您的意图输出。问题是,您可以使用任何标记来做到这一点。如果呈现如预期并产生正确的DOM,则做得相当不错。您只需记住DOCTYPE切换并确保不依赖于浏览器漏洞(以免在没有该漏洞的浏览器中出现问题)。
XHTML合规性的好处在于通过验证来检查语法,以确定标记是否格式良好。这有助于避免解析错误。当然,HTML也可以做到这一点,因此在这种情况下,XHTML并没有什么特别之处。无论哪种方式,您仍然必须在浏览器中进行测试,并希望浏览器供应商制作出能够接受各种垃圾的HTML解析器。

不是毫无意义的是尝试符合浏览器的期望。HTML5在这方面大有帮助。而且,说到HTML5,您可以随心所欲地定义自定义属性。只需使用data-作为前缀,例如<p data-order="This is a valid, custom attribute.">test</p>。


除了IE浏览器,所有主要浏览器都有XHTML解析器。 XHTML DTD被“有点”尊重(当它存在时,命名实体起作用,有时即使它不存在也会出现错误:)在XML术语中,格式良好和验证是不同的事情。 - Kornel

1

成为HTML有效通常有助于您和浏览器渲染引擎。浏览器处理的怪癖越少,它们就越能专注于添加新功能。您越严格,您花费在想知道为什么这个该死的专有标记在其他浏览器中不能工作的时间就越少。

另一方面,XHTML,依我之见,除非您计划将其集成到某些XML文档中,否则更加无意义。由于IE仍然不认识它,因此坚持使用它是相当无用的。


1

我认为编写“有效代码”很重要,因为你通过遵循规则树立了榜样。如果每个开发人员都为Fx、Safari和Opera编写了代码,我认为IE不得不比8版更早地“开始遵循规则”。


0

当然,你可以随心所欲地编写代码,确保至少它能够工作。但是,我们已经遭受了这种心态并见证了它的产出,比如Internet Explorer 6

我是Mike Davidson标准导向开发方法的忠实粉丝。

仅因为您可以验证代码并不意味着您比其他人更优秀。实际上,这甚至不一定意味着您编写的代码比其他人更好。能够完全使用Flash编写银行应用程序的人比您更好的编码者。能够将第三方代码集成到复杂的出版环境中的人比您更好的编码者。将验证视为使用完美语法;它有助于您传达您的想法,并且是良好教育的标志,但它并不像您所想象的那样重要,即您所想象和随后传达的思想和概念。我曾经为之工作过的最具魅力和可能最聪明的人来自南方,经常使用“ain't”这个词。这并没有使他变得不那么聪明,事实上,这使他更加难忘。所以我想说的是,有很多事情可以评判一个人...验证只是其中之一,但绝对不是最重要的。
很多人误解了这篇文章的意思,认为我们不应该按照标准编码。显然,我们应该按照标准编码,但这不是应该考虑的事情。"验证军团"总是谴责那些不进行验证的人,但验证意味着比有效的代码更多的东西。
所以,不要失去你的原则,但请记住,如果你遵循标准,你将更少地陷入未来的问题深渊。你试图提供的内容比它如何显示更重要。

0

我通常会尽力编写符合标准的代码,权衡时间/成本与受众需求,但有一种情况除外。如果您的代码需要符合503标准,编写符合标准的代码符合您和您的受众的最佳利益。我遇到过很多屏幕阅读器在代码稍微偏离标准时就会出现问题。

正如大多数帖子所说,这真的取决于您的受众需要什么。


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