使用CSS设置XML样式时,如何引用包含句点或冒号的标记名称?

Maa*_*ten 4 css xml css-selectors

我正在设计一个包含像<a.b></a.b>或等标签的XML文档<b:c></b:c>.当然,如果我写CSS规则就好

a.b {
} 

b:c {
}
Run Code Online (Sandbox Code Playgroud)

它不起作用,因为这些字符将分别被解释为类和伪类.有没有办法用CSS引用这些标签名称?(我不想使用XSL ......)

Bol*_*ock 5

如上所述,要引用带有.标记名称的元素,您可以简单地转义它:

a\.b
Run Code Online (Sandbox Code Playgroud)

但对于一个元素来说同样不能b:c,因为:在XML中具有特殊含义,作为命名空间分隔符.这意味着,你必须元素实际上是c在元素b 的命名空间,而不是所谓的一个元素b:c.1

也就是说,选择该元素有两种正确的方法.首先,因为正如我所提到的那样,元素实际上是被调用的c,所以b:c你可以简单地使用:

c
Run Code Online (Sandbox Code Playgroud)

在命名空间冲突的情况下,第二种方法是首先b使用@namespace与XML文档中的xmlns:b命名空间相对应的方式在样式表的开头声明命名空间(文档中应该有一个命名空间引用,否则它将无效) ):

/* Whichever URL corresponds to xmlns:b in your XML document */
@namespace b 'http://ns.example.com/b';
Run Code Online (Sandbox Code Playgroud)

然后使用名称空间前缀来选择元素:

b|c
Run Code Online (Sandbox Code Playgroud)

1 请记住,我们在这里讨论XML,而不是HTML或任何:没有特殊含义的任意标记语言.