【问题标题】:What happens, if I place a xmlns:f="foo" inside the body?如果我在正文中放置一个 xmlns:f="foo" 会发生什么?
【发布时间】:2015-03-05 10:58:36
【问题描述】:

假设这个 HTML5 页面:

<!DOCTYPE html>
<html>
 <head><!-- some content --></head>
 <body>
  <div id="a" xmlns:f="http://exampleurl.jp/">
   <a href="#">test</a>
  </div>
 </body>
</html>

这个问题包括这样一个事实,即命名空间 f 未在文档中使用,http://exampleurl.jp/ 不可访问。

浏览器会...

  • 准备好在 div #a 中使用该命名空间(最好的情况)
  • 忽略命名空间定义(我可以接受)
  • 失败,因为 http://exampleurl.jp/ 不可访问 (404) 或至少不包含有效的 XML 命名空间定义(最坏情况)

... ?

无论浏览器的实际行为如何,它们应该如何 表现(根据定义)?

【问题讨论】:

  • 我们应该假设什么内容类型?文本/html 还是应用程序/xhtml+xml? (猜测是前者,因为根元素上没有 xmlns。)

标签: html xml-namespaces


【解决方案1】:

浏览器将忽略该属性。根据http://www.w3.org/TR/html5/syntax.html#elements-0,这种用于定义命名空间别名的类似 XML 的语法(在您的示例中,使 f 成为命名空间 http://exampleurl.jp/ 的别名)不受支持。

在任何情况下,命名空间 URI 都不必实际映射到实际网站上的任何内容。 URI 可以是任何东西,因为它只是用于区分相同但位于不同命名空间中的本地名称。

【讨论】:

    猜你喜欢
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    • 2012-02-01
    • 2011-06-26
    相关资源
    最近更新 更多