XHTML合规性是否毫无意义?

时间:2008-09-19 13:30:44

标签: html xhtml standards-compliance

我现在正在建立一个网站,到目前为止,我已经痛苦地强迫所有内容都符合要求,并且它在浏览器中看起来几乎相同。但是,我开始实现一些第三方/免费javascripts,它们可以添加属性(例如order = 2)。我可以解决这个问题,但这很痛苦,我开始失去确保一切都有效的原则。真的,有什么意义可以解决这样的问题吗?我获得了Firefox的HTMLValidator插件,并查看了大多数主要网站(包括这一个,谷歌等),它们不是有效的XHTML或HTML。

11 个答案:

答案 0 :(得分:5)

验证有助于确定何时未达到您可能认同的标准。如果您有意使用专门添加不在验证标准中的工具,那么这显然不会违反您的个人标准协议。

如果你有一个老板或一个客户认为一切都应该重新开绿灯,那么这个讨论会变得更加困难,因为你必须向他们解释上述内容并说服他们这不仅仅是你在懒惰。

那就是说,确保这不仅仅是你懒惰的情况。虽然验证器可能会烦人地不断地调出第三方属性的每个实例,但这并不会使(ha)他们提到的其他验证错误无效。通常需要通过扫描来仔细检查您的工作。

答案 1 :(得分:4)

标准合规性是指增加您的网页在未经过测试的浏览器中运行的可能性。这包括屏幕阅读器,以及您测试的浏览器的下一次更新,以及您测试但用户以意外方式配置的浏览器。

验证并不能保证您的任何内容,因为您的页面可以进行验证,但仍然有足够的模糊性,以至于某天浏览器不会按照您希望的方式运行。

但是,如果您的页面确实有效,那么您至少可以使用XHTML规范来说明它应该如何表现。如果它没有验证,那么你所拥有的只是浏览器编写者之间的一系列非正式约定。

编写有效的HTML 3可能比使用无效的XHTML更好,如果你想要做的事情在一个而不是另一个允许的话。

答案 2 :(得分:3)

如果您计划利用XHTML作为XML,那么使您的页面有效且格式良好是值得的。否则,普通的旧语义HTML可能是你想要的。无论哪种方式,您的受众的需求都超过了验证者的需求。

答案 3 :(得分:2)

请记住,XHTML标记在大多数浏览器中呈现的方式与不具备它的方式不同。 DOCTYPE属性确定浏览器呈现的模式,并指示允许和不允许的内容。如果您偏离XHTML合规性,请确保在所有浏览器中重新测试。

就个人而言,我尽可能坚持使用最新的标准,但你必须权衡时间/金钱与合规性的关系,这取决于个人对大多数人的偏好。

答案 4 :(得分:2)

我还没有遇到过添加非标准属性导致任何浏览器出现渲染问题的实例。

不要试图解决这些非标准属性。验证器可以作为工具来检查代码是否存在无意的错误,但众所周知,即使完全有效的xhtml也不会始终在浏览器中一致地呈现。很多时候,设计决策要求我们使用浏览器特定(和非标准)黑客来实现效果。这是Web开发人员的生活,可以通过未验证的技术驱动站点(谷歌,雅虎等)的数量来证明。

答案 5 :(得分: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的规则。

  3. 因此,当您使用XHTML标记时,您会向浏览器提供一些陌生的内容,并查看它是否按照您的意图发布。问题是,您可以使用任何标记执行此操作。如果它按预期呈现并生成正确的DOM,那么你做得非常好。您只需要确保记住DOCTYPE切换并确保您不依赖于浏览器错误(因此在没有错误的浏览器中事情不会分崩离析。)

    XHTML合规性的优点是语法检查(通过验证)以查看标记是否格式正确。这有助于避免解析错误。当然,这也可以用HTML完成,所以在这种情况下XHTML并没有什么特别之处。无论哪种方式,您仍然需要在浏览器中进行测试,并希望浏览器供应商制作出可以接受各种垃圾的超棒HTML解析器。

    尝试符合浏览器的预期并不是没有意义的。 HTML5有助于实现这一重要时刻。而且,说到HTML5,您可以根据需要定义自定义属性。只需在数据前添加前缀,例如< p data-order =“这是一个有效的自定义属性。”> test< / p>。

答案 6 :(得分:1)

成为HTML有效通常是对您和浏览器呈现引擎的帮助。浏览器必须处理的怪癖越少,他们就越能专注于添加新功能。你越严格,花时间就越少知道为什么这个f @#cking专有标签在其他浏览器中不起作用。

另一方面,恕我直言,XHTML更加毫无意义,除非你打算将它集成到一些XML文档中。由于IE仍然无法识别它,坚持下去是没有用的。

答案 7 :(得分:1)

我认为编写“有效代码”非常重要,因为您通过遵循规则来设置示例。如果每个开发人员都为Fx,Safari和Opera编写代码,我认为IE必须比版本8更早地“开始遵守规则”。

答案 8 :(得分:0)

我尝试编写兼容代码,大部分时间都在权衡时间/成本与所有情况下的受众需求之间的关系。如果您的代码需要符合503标准,那么编写兼容代码符合您的最佳利益并且符合您的受众的利益。我遇到过一堆屏幕阅读器,当代码稍微偏离时会爆炸。

就像大多数海报所说的那样,这完全取决于观众的需求。

答案 9 :(得分:0)

任何方式都没有意义,但有很多理由可以打破它。在CSS开发的初始阶段,如果您的标记有效,它对于诊断浏览器问题非常有用。除此之外,如果你想做某事并且你认为最合适的方法是打破验证,那通常都可以。

使用自定义属性的另一种方法是使用'rel'属性,例如,请参阅Litebox(及其亲属)。

答案 10 :(得分:0)

当然,您可以随时按照自己想要的方式进行编写,确保至少可以正常工作。当然,我们已经遇到了这种心态并见证了它的输出, Internet Explorer 6

我是Mike Davidson approach to standards-oriented development的粉丝。

  

仅仅因为您可以验证您的代码并不意味着您比其他人更好。哎呀,它甚至不一定意味着你写的代码比其他任何人都要好。能够完全在Flash中编写银行应用程序的人比你更好。能够将第三方代码集成到复杂的发布环境中的人比你更好。将验证视为使用图片完美语法;它可以帮助您了解您的想法,并且是良好教育的标志,但它并不像您想到和随后沟通的想法和概念那么重要。我曾经工作过的最有魅力,最聪明的人来自南方,经常使用“不是”这个词。这并没有让他变得不那么聪明,事实上,这让他更难忘。所以我只是说有很多东西要判断某人...验证是其中之一,但肯定不是最重要的。

很多人误解这篇文章意味着我们不应该按照标准编码。显然,我们应该,但这不应该被考虑。 验证军队将始终解密那些未验证的人,但验证意味着远远超过有效代码。

所以,不要失去你的原则,但要记住,如果你遵循这些标准,那么你未来最终可能会陷入深层次的问题。您尝试提供的内容远比显示内容重要。