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

时间:2013-04-06 09:47:18

标签: css xml css-selectors

我正在设计包含<a.b></a.b><b:c></b:c>等标记的XML文档样式。当然,如果我编写CSS规则,如

a.b {
} 

b:c {
}

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

1 个答案:

答案 0 :(得分:5)

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

a\.b

但是对于b:c元素,不能,因为:在XML中具有特殊含义,作为命名空间分隔符。这意味着您拥有的元素实际上是c namespace中的b元素,而不是名为b:c的元素。 1

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

c

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

xmlns:b

然后使用{{3}}选择元素:

/* Whichever URL corresponds to xmlns:b in your XML document */
@namespace b 'http://ns.example.com/b';

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