问题描述

当我写主题时,我确定它符合 XHTML 1.1 和 CSS 2.1 。然后我添加了插件,主题不再符合 XHTM1 1.1 。然后我在我的 CSS 中使用了 Google API 字体,并且它符合 CSS 2.1 。

有没有办法保持合规性,而不会摆脱插件,字体等,还是应该忽略验证错误?

最佳解决方案

更正,您的主题仍然符合 XHTML 1.1 和 CSS 2.1,但您添加的 plug-ins 注入了不符合的附加代码。

不幸的是,如果您使用 plug-ins,则没有简单的方法来维护合规性。你可以做的最好的是验证你的主题和你个人负责的所有标记,然后希望其他开发人员花时间验证自己的工作。

另一种选择是您的工作更多 – 您仍然可以使用 plug-ins 的核心功能,但不允许他们向浏览器输出任何标记。添加您自己的自定义层,解开 plug-in 触摸的所有内容,并构建自己的输出缓冲区。这是您可以控制发送到浏览器的标记样式的唯一方法。

几个 plug-ins 开始使用 HTML 5 … 其他人试图使用 CSS3 。如果您安装这些 plug-ins,并且不采取步骤来清理和验证其输出,那么您的站点将停止正确验证。

次佳解决方案

每个插件都将生成要生成的代码,其中一些不符合 XHTML 1.1 标准。纠正的唯一合理的方法是审核每一个,并修改违规者或让开发人员修改或使用您的修改作为补丁。

替代你可以尝试写一个过滤器来清理它,但试图抓住所有的特殊情况似乎是一个我自己的个人恶梦的版本,它也会影响性能的可怕的好处。

你有一个客户/老板想要这个,还是只是假定是一个”nice-to-have?”(是的,有些人对此感到强烈,我不是其中的一个) 。

也就是说,XHT​​ML 在网络上失去了 「fair-haired 子」 状态; 甚至 Tim Berners-Lee 在 2006 年回来说:

Some things are clearer with hindsight of several years. It is necessary to evolve HTML incrementally. The attempt to get the world to switch to XML, including quotes around attribute values and slashes in empty tags and namespaces all at once didn’t work. The large HTML-generating public did not move, largely because the browsers didn’t complain. Some large communities did shift and are enjoying the fruits of well-formed systems, but not all. It is important to maintain HTML incrementally, as well as continuing a transition to well-formed world, and developing more power in that world.

您可能还希望阅读 HTML5 比 XHTML 1.0 更容易编写。在 StackOverflow 上。这是他们的总结:

Just syntax-wise, when you use HTML5, you end up with cleaner, easier to read markup that always invokes standards mode. When you use XHTML 1.0 (served as text/html), you’re specifying a bunch of crud (in order to validate against a crappy dtd) that the browser will do automatically.

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。