【问题标题】:Does HTML5 support namespaces?HTML5 支持命名空间吗?
【发布时间】:2023-07-05 10:18:01
【问题描述】:

我们是否可以在 HTML5 中使用 <foo:bar> 这样的新标签来扩展 HTML5?

我问是因为 Facebook API 只包含这种东西**,而且我们的页面被定义为 HTML5。

更具体地说,是否可以制作一个使用fb:fbml 的符合HTML5 的页面?

【问题讨论】:

    标签: html xhtml fbml xml-namespaces


    【解决方案1】:

    严格来说,没有。你可以让 JavaScript 代码编写 FBML 来解决任何潜在的验证问题,但它的形式很糟糕。

    除此之外,即使可以,您也不想制作使用 FBML 的页面。 FBML 将于 2012 年 1 月 1 日被弃用,2012 年 6 月 1 日之后,FBML 将不再工作。

    来源:https://developers.facebook.com/docs/reference/fbml/

    【讨论】:

      【解决方案2】:

      使用 XHTML(5)。 XML 允许命名空间,而 XHTML(5) 是 XML 的扩展,因此它允许命名空间,而 HTML(5) 不允许。

      【讨论】:

        【解决方案3】:

        不,您不能在 HTML5 中创建自己的标签,这可能会导致冲突并违背制定标准的目的。

        如果您想提供 xhtml5,您可以根据 W3 添加一个 xml mime 类型的 application/xhtml+xml。 Facebook 正在提供 XHTML,这就是他们可以使用自定义命名空间的原因。 http://www.w3.org/TR/html5-diff/#syntax

        所以,是的将是有效的 XHTML5,但不是 HTML5。

        关于 SO 的更多讨论: Facebook Connect and HTML5, xmlns available?

        【讨论】:

        • 命名空间的目的是防止冲突,以便您可以创建自己的标签。
        • 这就解释了为什么 CSS 命名空间选择器对我不起作用。
        【解决方案4】:

        正如 Jeff Sherlock 所说,您不想再使用 FBML,因为它将被弃用。页面现在使用应用程序,您可以将其链接到网站。所以现在您只需在您的网站上创建一个页面(宽度为 520 像素或更小),并将该页面附加到您的应用程序。您可以只使用 Javascript、HTML、CSS、jQuery 等 - 几乎任何东西,包括 HTML5。现在在 FB 上创建标签和各种东西要容易得多。

        【讨论】:

          【解决方案5】:

          您可以创建自己的元素;你的做法和 Facebook 一样。使用自定义命名空间创建您自己的文档类型,但您不会输出 HTML5,而是输出 XHTML5。另外,我会遵循其他男士关于偏离标准的建议...Friends don't let friends

          【讨论】: