4

我们有一个客户希望我们使用 CSS3 命名空间。但是,我发现的所有内容都表明它专门用于样式化 XML 而不是 HTML。任何人都可以验证将它用于 CSS/HTML 或澄清你将如何做到这一点吗?遵循这种方法有什么负面影响?

@namespace toto "http://toto.example.org";

toto|Product {
    display:block;
}

toto|Code {
    color: black
}

http://www.w3.org/TR/css3-namespace/

http://onwebdev.blogspot.com/2010/04/css3-namespace-selectors.html

4

3 回答 3

4

任何人都可以验证将它用于 CSS/HTML 或澄清你将如何做到这一点吗?

主流浏览器使用一个默认的命名空间,http://www.w3.org/1999/xhtml它是 XHTML 的命名空间,即使是 HTML 也是如此,然后继续他们的业务。但从技术上讲,由于 HTML 不是 XML,除非您考虑到基于 XML 的语言(如 SVG 和 MathML)无论如何都可以嵌入到 HTML 中,否则没有任何意义。

如果您的客户想要使用 CSS 命名空间,他们可能需要为您提供用某种与 CSS 兼容的命名空间机制的语言编写的东西。尝试将这些知识应用于 HTML 本身是没有意义的,因为

  • HTML 最初的设计初衷并不是为了命名空间
  • 浏览器已经为 (X)HTML 文档分配了默认命名空间,您无论如何都无法显式访问

更多信息可以在这个答案中找到。

要回答您的问题标题,文档语言不一定必须基于 XML

除了本规范引入的术语,CSS 命名空间使用 XML 1.0 中的命名空间中定义的术语。但是,此处定义的语法不限于表示 XML 元素和属性名称,还可以表示宿主语言定义的其他类型的名称空间。

为了方便起见,CSS 命名空间规范从XML 命名空间中借用了术语,因为 CSS 最常应用于 HTML 和 XML 文档(即便如此,更多人使用 XSL(T) 代替后者)。

于 2012-12-02T19:22:20.307 回答
2

CSS 命名空间不是关于对 CSS 规则进行逻辑分组(类似于 C++ 和 C# 中的命名空间),而是关于应用规则,因为它们适用于给定主机语言中的命名空间元素(在这种情况下,是具有 XML 命名空间的 XML 文档),而是规范是语言中立的,因此它可以与 JSON(如果有人为此发明命名空间)或任何其他结构化语言(http://www.w3.org/TR/css3-namespace/)一起使用。

2.1。术语

[..] 但是,这里定义的语法不限于表示 XML 元素和属性名称,还可以表示宿主语言定义的其他类型的名称空间。

于 2012-11-30T19:59:59.777 回答