【问题标题】:Serving XHTML and self-closing tags提供 XHTML 和自闭合标签
【发布时间】:2012-01-28 13:26:22
【问题描述】:

我在创建网站时尝试遵循 xhtml 1.0 严格标准。 现在,validator.w3.org 按照 XHTML 1.0 Strict 标准验证我的文档是否有效。这是一个代码示例:

<div style="color:#f00"><div style="color:#00f" />Text should be red and not blue</div>

不幸的是,Firefox、Chrome 和 Internet Explorer 无法正确解析文档: 他们似乎都忽略了我的自关闭标签(主要是

  • 和其他一些标签)的结束语句,从而错误地渲染了站点,文本为蓝色。如果我用
    替换
    标签,一切看起来都很好。我读过,根据xml文档,包括xhtml,可以自行关闭

    以下是文档自带的重要头信息:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
            <head>
                <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
    

    Apache2 本身仍然发送 Content-Type text/html,因为我还没有弄清楚如何覆盖 .php mime 类型,尽管

    中的信息应该会否决这种方式。

    如何使用诸如

    之类的自闭合标签,让它们被普通浏览器正确解析?
  • 【问题讨论】:

      标签: xml xhtml content-type


      【解决方案1】:

      用 php 发送:

      <?php
      header('Content-Type: application/xhtml+xml;');
      ?>
      

      这就是您使用 PHP 覆盖标准标头的方式。您必须小心,因为header() 仅在尚未发送输出时才有效。这意味着您不能在 &lt;?php 部分之前放置任何内容,标头将不起作用,因为您的服务器已经发送了标头和任何内容。

      【讨论】:

        【解决方案2】:

        XHTML 是使用 XML 的 HTML,而 HTML 没有像你展示的那样的自闭合标签。这适用于 XHTML,但不适用于 HTML,到目前为止,您还没有充当 application/xml+xhtml。

        内容类型元标记不影响服务器提供页面的方式,仅供离线使用。因此,根据您的情况,您必须在服务器中或使用 PHP 设置它。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-02-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多