media 伪属性
xml-stylesheet 处理指令还可以使用 media 伪属性,表明样式表适用的环境。比如,可以用一个样式表格式化文档,在一般的桌面或膝上监视器上显示文档,并用另一个样式表在纸上打印该文档,第三个样式表则将文档投影到面对听众的墙上。下面的文档序言提供了所有这三种样式选择:
<xml version="1.0"?>
<?xml-stylesheet type="text/css" media="screen"
title="Regular fonts" href="regular.css"?>
<?xml-stylesheet type="text/css" media="projection"
title="Extra large fonts" href="bigfonts.css" alternate="yes"?>
<?xml-stylesheet type="text/css" media="print"
title="Smaller fonts" href="smallfonts.css" alternate="yes"?>
在这种情况下,浏览器应该自动选择适当的样式表,不需要更多的用户干预。
media 伪属性定义了 8 个值:
• screen —— 最常见,现代桌面或膝上计算机的显示器。
• tty —— 定宽的终端,如 VT-100s 和 X-terms,适合于 Lynx。
• tv —— WebTV 或者类似的技术。
• projection —— 投影到大屏幕上。
• handheld —— PDA、蜂窝电话和类似的小屏幕设备。
• print —— 纸张。
• braille —— 盲文屏幕读者。
• aural —— 声音屏幕读者。
media 伪属性的值之间用逗号分隔。比如,以下 xml-stylesheet 处理指令表示样式表可用于手持设备和具有更大位图显示设备的计算机:
<xml-stylesheet type="text/css" media="handheld, screen"
href="styles.css"?>
此外,还可使用 media="all" 表示样式表适用于所有媒体。(如果没有出现 media 伪属性,则该属性为默认属性。)当然,浏览器可能忽略不能理解的样式规则。即使 font-size: 14pt 出现在 media="aural" 的样式表中,屏幕浏览器也会忽略它。
最后,还可以为这个伪属性定义新的、自定义的值。比如,可使用 three-d 这样的值来引用一个用于显示器的样式表,该显示器使用两个嵌套 LCD 面板来表示三维图像。但是,不是所有浏览器都能识别这个值。这一功能吸引的主要是浏览器厂商,他们可以定义自定义的值来识别自己使用的扩展,对单个 Web 开发人员来说,这一功能没有多少用处。
结束语
XML 的最初目标之一是将内容与表示分离。它允许对同一文档应用多个样式表,从而为不同的用户提供不同的视图。在文档中添加多个 xml-stylesheet 处理指令是实现该任务的一种方法。
