【问题标题】:HTML5 <html> attributes xmlns, lang, xml:langHTML5 <html> 属性 xmlns, lang, xml:lang
【发布时间】:2011-05-18 05:40:29
【问题描述】:

我不明白开头 &lt;html&gt; 标记的 HTML5 specifications for the lang and xml:lang attributes。向上滚动一下,我知道xmlns 是“护身符”(没有效果),但是langxml:lang 呢?应该使用它们吗?如果是这样,它们应该设置为什么?

【问题讨论】:

  • 我认为从那个文件中可以很清楚地看到; "作者不得在 HTML 文档中的 HTML 元素上使用 XML 命名空间中的 lang 属性", "注意:没有前缀且带有文字本地名称 "xml:lang" 的无命名空间中的属性对语言处理没有影响。",等等(即在处理 HTML 而不是 XML 时使用 lang 而不是 xml:lang
  • 是的,我想我终于明白了。我遇到了麻烦,因为我真的不知道在那种情况下命名空间或前缀是什么。我假设&lt;html xml:lang="en-US"&gt; 两者都没有,因此xml:lang 没有效果。
  • @Chris Morgan - 我认为该文件根本不清楚。彻底和精确,当然,但有很多微妙的事情正在发生。考虑“作者不得在 HTML 文档中的 HTML 元素上使用 XML 命名空间中的 lang 属性”。使用 HTML 解析器实际上不可能做到这一点,只能通过使用 Document.createAttributeNS 之类的脚本来完成。你清楚吗?
  • @Alohci 阅读 HTML 规范让我哭了。只是听到其他人试图解释规格让我同情地流泪。总之,我真的很欣赏像这样简单的英文解释。

标签: xml html xml-namespaces


【解决方案1】:

当涉及到使用屏幕阅读器的用户时,lang 属性会对 html 文档产生巨大影响。 因此,考虑到 a11y,您肯定会想要使用它。 该视频是对此的最佳论证:https://youtu.be/0uzxu9dQnuU“语言属性对 JAWS 语音的影响”。它显示了屏幕阅读器如何用西班牙语、法语或德语发音(很难理解)来发音英文文本,因为每次都将 lang attr 设置为这些语言。

还要检查:https://www.w3.org/International/questions/qa-lang-why.en,其中提到的一些充分理由是:

  • 样式(例如不同语言的不同字体)
  • 拼写和语法检查器
  • 翻译工具
  • 搜索结果(页面内部标记可用于根据用户的语言偏好提高搜索质量)

【讨论】:

    【解决方案2】:

    text/html 序列化中的 xml:lang 只是为了允许作者编写多语言文档——有效的 XHTML5 和有效的 HTML5 文档。

    在 HTML(相对于 XHTML)中,xml:lang 根本不是 XML 命名空间中的属性,它是名为 xml:lang 的空命名空间中的属性。即冒号根本没有魔法属性,它只是属性名称中的另一个字符。


    回答您最初关于en-US-x-hixie 的问题:

    en-US-x-hixieen-US(即美式英语)加上一个私人使用的子标签-x-hixie,意思是HTML5 的编辑Ian Hickson 所写的美式英语的变体。

    私人使用子标签在 RFC 中定义:5646, BCP 47 http://www.ietf.org/rfc/bcp/bcp47.txt 部分2.2.7. Private Use Subtags

    【讨论】:

      【解决方案3】:

      我所看到和听到的一切都表明你应该坚持

      <!DOCTYPE html>
      <html>
        <head>
          <meta charset='UTF-8'>
      

      (或您真正想要的任何字符集)。如果您想要与页面关联的语言,可以使用 &lt;html&gt; 标记上的“lang”属性。

      由于 HTML5 不是 XML,真的,我个人会觉得使用任何 xml: 命名空间的东西很奇怪。

      【讨论】:

      • 酷,谢谢。然后,我将使用 ,就像 LinkedIn 一样。
      • 哦,太糟糕了,如果您没有在 html 上指定 xmlns 属性,那么它不是有效的 XHTML,并且如果您的目标是当作为 HTML 或 XHTML 提供时将正确呈现的多语言标记,您需要 xmlns 属性(因为用作 application/xhtml+xml 否则将显示文档树而不是页面)。另一方面,如果您在 HTML5 中使用 xmlns 元素,W3C 验证器将抛出一个错误,指出 中的 http-equiv 是无效值,即使您省略元标记,它会警告您应该将其添加到文档中。
      • 此外,即使 HTML5 不是 XML,它也支持像 &lt;br /&gt; 这样的 void 元素上类似 XHTML 的语法,并且它最终将所有内容放在 XHTML 命名空间 http://www.w3.org/1999/xhtml 中。
      • @Triynko 是否有更新的命名空间包含以下标签:headerfooter 等?
      • XHTML5 有效的 XML。而且由于有无数 XHTML 解析器/处理器根本不知道 (X)HTML5 具体是什么,所以在多语言语法中省略 xml:lang(和 xmlns)是明智的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-14
      • 1970-01-01
      • 1970-01-01
      • 2010-12-08
      • 1970-01-01
      • 2010-09-16
      • 1970-01-01
      相关资源
      最近更新 更多