曝光台 注意防骗
网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者
程序清单1 3 - 1 3
但有时,有必要将一个样式表分成几个文件,使整体的解释说明更模块化,例如,将打印
样式表存储在一个文件中,而将语音样式表存储在另一个文件中。
@ i m p o r t命令允许你从其他样式表中引入规则。在一个样式表文件中命令@import 应该位于
其他所有的C S S命令之前。引入的样式表可以参照U R L:
程序清单1 3 - 1 4
可以将命令@ m e d i a和@ i m p o r t在同一表达式中合并,如下例所示:
程序清单1 3 - 1 5
在这个表达式中, b o o k l i s t 1 . c s s样式表是从外输入的,并包含在原有的命令@ m e d i a中,在这
里@ m e d i a的类型是“ a u r a l”。媒介类型添加在输入命令引用上(参见图1 3 - 1 0):
7. 一个C S S样式脚本实例
前面论述的是理论,下面我们看一个实例。在这一章里,我们将使用同一个X M L文档,分
别用C S S 、D S S S L 和X S L实现。这个X M L 文档就是我们在本书其他部分里所使用的叫
第13章样式XML使用579 下载
b o o k l i s t . x m l的一个图书目录,只是略有改动:
图13-10
程序清单1 3 - 1 6
在本章里我们将使用同一种解释,所有运行的脚本都应该显示同一结果,如图1 3 - 11所示:
图13-11
580使用XML 高级编程
下载
但是要想不对源文档做任何转换就从图书目录的例子得到上面的结果是不可能的,原因主
要有两个:
• 我们应该对文档的元素进行重新排序
• 为了解释的需要,要加入一些信息
例如,书的标题应该位于每个分类项目的开始。此外,还应该添加C a t e g o r y、Release date
和P r i c e字符串来帮助读者明确每个信息类型。
我们不能使用C S S修改待解释的X M L源文档,所以X M L在按样式表显示以前要转换。这意
味着我们要对元素重新排序,并在内容上添加一些新的字符串。X S LT的转换功能十分胜任这项
任务。
我们假设文档已经转换成下列X M L文档(前面第9章中要求的一样),我们称这个文档为
t r a n s _ b o o k l i s t . x m l:
程序清单1 3 - 1 7
第13章样式XML使用581 下载
首先,C S S样式表与X M L文档的关联是通过x m l s t y l e s h e e t处理规则来完成的:
程序清单1 3 - 1 8
第一个属性t y p e指定了样式表的类型,但如果是C S S样式表,应该设定为CSS MIME类型,
即“ t e x t / c s s”。第二个属性h r e f是指向样式表文档位置的链接。这个属性应该设定为一个U R I
(更多情况下是一个U R L)。最后,末尾一个属性告诉C S S引擎解释产品是一个屏幕产品。对于一
台打印机,我们应该把属性m e d i a设为“p r i n t”。
因为Microsoft Internet Explorer 5支持用C S S使X M L文档样式化,因此可以实验将示范的
X M L文档与下面的C S S样式表相链接的结果,你将得到同上一个屏幕拷贝相同的结果。这就是
我们要用来确定显示数据格式的C S S文件,叫做b o o k l i s t . c s s,可以从h t t p : / / w w w. w r o x . c o m /上下
载,还可以同时下载本书中的其他代码:
程序清单1 3 - 1 9
582使用XML 高级编程
下载
因为样式表处理语句与这个C S S相链接,并且X M L已经转换成包括其他文本的文档,处理
结果将会与我们在这一部分开始部分见到的完全相同。下面,我们再讨论一些其他C S S语法。
8. display属性
d i s p l a y属性告诉C S S解析器格式对象应该是一个块对象、内嵌对象还是一个表格。解释的元
素被自动赋给一个缺省值。例如,一个具有d i s p l a y属性的元素将作为一个段落对待,格式流在
这个格式对象后断开。但是,如果具有d i s p l a y属性的元素设定为i n l i n e,则这个元素作为段落中
一个语句或一个单词对待,并且解释后不断开格式流。最后,如果一个元素的d i s p l a y属性值为
t a b l e,它将设定一个表格所有行和列的排列信息。一个表格可能也会中断正常的格式流。所以,
总结三个d i s p l a y的基本取值:
• block─作为段落,引起正常解释流的中断。
• i n l i n e─作为一个单词或一个语句,内嵌对象一个接一个排列(水平方向),不引起正常
解释流的中断。
• table─设定一个表格区域,可能引起或不引起正常解释流的中断。
C S S表格模型基于一个表格区域,可能引起或不引起正常解释流的中断;一个表格用行和列
定义,但列是从行衍生而来的。一个行被分成单元格,当定义行时,单元格组成列,所以第一
个单元格位于第一列,第二个单元格位于第二列,依此类推。
要生成表格或表格部分,显示属性可能会取表1 3 - 4中的值:
表1 3 - 4
值描述
t a b l e 生成一个带块行为的盒子。将会产生一个格式流中断
t a b l e - i n l i n e 生成一个带内嵌行为的盒子。不会产生格式流中断
t a b l e - r o w 指明一个元素是一行单元
t a b l e - r o w - g r o u p 指明一个元素由一个或多个行组成
t a b l e - h e a d e r- g r o u p 生成一个表头。一个表格标题组总是在其他行或组以前显示
t a b l e - f o o t e r- g r o u p 生成一个表格标注,一个表格标注总是在其他行或组之后显示
t a b l e - c e l l 指明一个元素代表一个表格的单元
t a b l e - c a p t i o n 指明一个表格的标题
第13章样式XML使用583 下载
为了演示表格的显示格式,我们对前面范例X M L文档中的元素在转换前进行排列,然后以
表格格式显示。
在写本书时,没有浏览器能显示用CSS 2排列的表格,所以图1 3 - 1 2仅仅是提供一个参考,
看看文件被范例C S S样式表处理后的最终解释结果(实际上这个图是在HTML 4.0中生成的,因
为二者的模型很相似,在C S S样式表后我们将讨论H T M L代码)。
图13-12
这是生成表格的样式表:
程序清单1 3 - 2 0
上面的C S S样式表生成了一个包含3行5列的表格。元素< B O O K L I S T >生成一个t a b l e格式对
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:
XML高级编程下(27)