如何维护主题的W3C标准合规性

时间:2010-08-17 作者:James

在编写主题时,我确保它符合XHTML 1.1和CSS 2.1。然后我添加了插件,主题不再符合XHTMl 1.1。然后我在CSS中使用了Google API字体,它更符合CSS 2.1。

有没有一种方法可以在不删除插件、字体等的情况下保持法规遵从性,还是应该忽略验证错误?

3 个回复
最合适的回答,由SO网友:EAMann 整理而成

更正,您的主题仍然符合XHTML 1.1和CSS 2.1,但您添加的插件注入了其他不符合的代码。

不幸的是,如果您使用的是插件,则没有简单的方法来维护法规遵从性。您所能做的最好的事情就是验证您的主题和您个人负责的所有标记,然后希望其他开发人员已经花时间验证他们自己的工作。

另一种选择是您需要做更多的工作-您仍然可以使用插件的核心功能,但不允许它们输出any 标记到浏览器。添加您自己的自定义层,该层可以解除插件所涉及的所有内容,并构建您自己的输出缓冲区。这是唯一一种可以控制发送到浏览器的标记样式的方法。

一些插件开始使用HTML 5。。。其他人正在尝试使用CSS3。如果您安装了这些插件,并且没有采取步骤对其输出进行清理和验证,那么您的站点将停止正确验证。

SO网友:MikeSchinkel

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

或者,您可以尝试编写一个过滤器来清理它,但尝试捕获所有特殊情况似乎是我个人噩梦的一个版本,这也会影响性能,带来双重好处。

您是否有客户/老板想要这样做,或者这只是一种“很高兴拥有”的假设(是的,有些人对此有强烈的感受。但我不是其中之一。)

也就是说,XHTML正在失去其在web上的“金发孩子”地位;即使Tim Berners-Lee said so 早在2006年:

经过几年的事后观察,有些事情更清楚了。有必要逐步发展HTML。试图让世界立即切换到XML,包括在属性值周围加引号以及在空标记和名称空间中加斜杠,但都没有成功。生成HTML的大用户没有移动,主要是因为浏览器没有抱怨。一些大型社区确实发生了变化,正在享受良好制度的成果,但并非所有社区都如此。以增量方式维护HTML,继续向格式良好的世界过渡,并在这个世界上开发更多功能,这一点很重要。

您可能还想阅读HTML5 is so much easier to write than XHTML 1.0. 在StackOverflow上结束。以下是他们的总结:

就语法而言,当您使用HTML5时,您最终会得到更清晰、更易于阅读的标记,这些标记总是调用标准模式。当您使用XHTML 1.0(用作文本/html)时,您指定了一组crud(以便针对蹩脚的dtd进行验证),浏览器将自动执行这些操作。

SO网友:hakre

您可以缓冲站点的整个输出,然后将其整理成兼容的HTML。最好的是,这可以完全自动化完成:

整洁实用程序:http://tidy.sourceforge.net/

  • PHP tidy软件包:http://pecl.php.net/package/tidy (对于PHP4,在PHP5中使用bundeled)
  • 更多信息:http://www.coggeshall.org/code/tidy/
  • 您可以在主题初始化或相关挂钩(例如*setup\\u theme*挂钩)上启用输出缓冲。

    下面是两段代码。第一个显示您开始输出缓冲并稍后读取缓冲:

    <?php
    ob_start();
    ?>
      …
    <?php
    $buffer = ob_get_clean();
    $tidy = tidy_repair_string($buffer);
    echo $tidy;
    ?>
    
    第二个显示了一些正在运行的配置选项:

    /* Tiny Configuration */
    $config["clean"]         = true;
    $config["hide-comments"] = true;
    $config["output-xhtml"]  = true;
    $config["indent-spaces"] = 2;
    $config["tab-size"]      = 2;
    $config["wrap"]          = 0;
    
    $buffer = ob_get_clean();
    $tidy   = tidy_repair_string($buffer, $config);
    
    echo $tidy;
    
    我打赌已经有一个wordpress插件可以这样做。让我们看看:

    结束

    相关推荐

    How do you debug plugins?

    我对插件创作还很陌生,调试也很困难。我用了很多echo,它又脏又丑。我确信有更好的方法可以做到这一点,也许是一个带有调试器的IDE,我可以在其中运行整个站点,包括插件?