【问题标题】:Why does XHTML not work outside with a prefix?为什么 XHTML 不能在外部使用前缀?
【发布时间】:2017-04-11 11:57:56
【问题描述】:

在我看来,这应该是一个有效的 XHTML 文档:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<a:html xmlns:a="http://www.w3.org/1999/xhtml">
    <a:head>
        <a:title>Document title</a:title>
    </a:head>
    <a:body>
        <a:h1>Hello World!</a:h1>
    </a:body>
</a:html>

但是,Firefox 和 Internet Explorer 都不像 XHTML 那样处理它,而是显示为文本(标签不可见)。如果我删除命名空间前缀...

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Document title</title>
    </head>
    <body>
        <h1>Hello World!</h1>
    </body>
</html>

… 渲染得很好。我会认为这两个文档在语义上是相等的。为什么第一个不起作用?

【问题讨论】:

  • test-cases.dorward.me.uk/xhtml/ns.xhtml 在我测试时在 Chrome 和 Firefox 中运行良好。
  • 澄清一下,带有.html 扩展名的文件是一个HTML 文件,不管它是否有XHTML 内容。 (这就是第二个有效的原因,因为它包含大部分有效的 HTML 内容。)

标签: xhtml xml-namespaces semantic-markup


【解决方案1】:

您必须确保浏览器获得将文档解释为 application/xhtml+xml(或可能是其他 XML MIME types 之一)而不是 text/html 的提示。

在服务器上,可以通过发送相应的Content-Type HTTP 头来实现:

Content-Type: application/xhtml+xml

本地,您通常可以通过使用.xhtml 而不是.html 作为文件扩展名来实现此目的(但这可能取决于您的系统)。

【讨论】:

  • 请注意,绝大多数服务器也正确处理.xhtml文件,默认情况下为这些文件返回一个mime类型的application/xhtml+xml。
猜你喜欢
  • 2023-03-30
  • 2020-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多