我正在设计包含<a.b></a.b>
或<b:c></b:c>
等标记的XML文档样式。当然,如果我编写CSS规则,如
a.b {
}
b:c {
}
它不起作用,因为这些字符将分别解释为类和伪类。有没有办法用CSS引用这些标签名称? (我不想使用XSL ...)
答案 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
没有特殊含义的任意标记语言。