曝光台 注意防骗
网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者
608使用XML 高级编程
下载
就具有不同的布局。例如,可以将一个p a g e - m a s t e r用于偶数页,另一个用于奇数页。
< f o : s e q u e n c e - s p e c i f i e r- r e p e a t i n g >元素允许我们为封页设定一个页面布局,为后面的页面设定一
个循环系列。
在我们的页面中包含了两个静态内容格式对象:题目和页编号。这个静态内容将含在所有
的页面中,而与X M L文档内容没有任何联系。这有点象在程序中定义常数。
首先,我们为题目建立一个静态内容。题目在文档体之前显示,设定f l o w - n a m e属性值为
“x s l - b e f o r e”来实现这个操作。题目本身用<fo: block>元素生成,这个元素居中,黑体,红色,
用36pt Ti m e s字体显示,并在其下面插入尺寸为6 p t的空间。XSL block同CSS block对象十分相似,
因此它们有许多共同的属性:
程序清单1 3 - 5 4
在示例中,我们定义了一个在主体区域后显示的页编号,通过设定f l o w - n a m e属性为“ x s l -
a f t e r”来完成。用另一个块格式对象包含页编号,页编号居中显示,并用10pt Ti m e s字体:
程序清单1 3 - 5 5
最后,我们定义<fo: flow>元素。这个格式对象中含有X M L文档内容。我们将f l o w - n a m e属
性设定为“ x s l - b o d y”:
程序清单1 3 - 5 6
这个元素包括了所有与X M L文档相关联的格式对象以及文档主体。
这样,我们在一个页面控制中定义每个页面的基本整体布局。页面控制在<fo: sequences
p e c i f i c a t i o n >元素中作为一个模板使用。然后,每个与元素<fo: static-content>相连的页面底部
都加一个页编号。最后,我们定义文档主体,所有与X M L文档相关的流对象都在文档主体上分
布(参见图1 3 - 2 4)。
主体中的所有元素都从< f o : d i s p l a y - s e q u e n c e >元素中继承了它们的属性。它指定了所有包含
元素要继承的一套属性。因为在xsl: apply-template命令中包含有<xsl: apply-templates>元素,并
第13章样式XML使用609 下载
且这个命令是在根模板中生成的,所以随后的模板都要替代这个命令并从d i s p l a y - s e q u e n c e元素
中继承了所有的缺省属性。
图13-24
程序清单1 3 - 5 7
每个< I T E M >元素同一个模板相匹配,这个模板为这个元素的每个实例生成一个块。在块显
示前有一部分空间( 9 pt)。我们加入“o p t i m u m”关键字来告诉X S L格式化器这块空间的最佳值
是9 p t─我们应该已经提到过最大或最小值:
程序清单1 3 - 5 8
这个主体块经常包含三个其他块:
• 题目。
• 书的目录和编码。
• 书的发行日期和价格。
通过激活与< T I T L E >元素相关联的模板可以生成标题。这个模板包含一个<fo: block>元素,
这个元素会覆盖掉一些d i s p l a y - s e q u e n c e属性:
程序清单1 3 - 5 9
610使用XML 高级编程
下载
1英寸空
白边
只有一列的文
件主体
其他两个块格式对象在包含<fo: inline-sequence>格式对象的题目后显示内容,内容是通过
< x s l : v a l u e - o f >元素从X M L文档中提取出来的。一个内部序列格式对象同一个C S S内部对象非常
相似。
一旦你已经生成了转换文档,可以用F O P这样的应用程序来生成文档的P D F版本。
4. 关于X S L的结论
X S LT很明显成功了, IE 5 加上X S LT实现H T M L + C S S的转换功能,在写本书时M o z i l l a对
X S LT的支持正处于开发阶段。所以如果浏览器支持一种样式语言,而X S LT是一个功能强大的
语言,我们就有希望取得成功。
我不能说X S L F(X S L的格式部分)也同样如此。它的未来取决于X M L内置的编辑工具的支
持。但即使是这样,如果浏览器不支持这种语言,它就不能像X S LT一样普及。但是, X S L F可
能同D S S S L(我们下面将会提到)的功能一样─作为一种打印样式语言。
X S LT在服务器端的转换功能很有潜力,因为一个X M L文档在桌面浏览器上可以转换成
H T M L + C S S格式,在语音浏览器上可以转换成V O X M L格式,在移动电话和P D A上可以转换成
W M L格式。
讨论过C S S和X S L后,我们现在简单讨论一下另外两种语言─D S S S L和O m n i m a r k,你也
有可能会学会更多关于它们的知识。我们简单地讨论一下这两种语言,然后给出一个用于图书
目录文件的代码示例,这样你对其语法就会有一个概念─我们没有篇幅来讨论它们的细节问
题,但你应该对是否要花更多的时间来学习它们有个想法。
13.3.8 DSSSL
D S S S L自从1 9 9 6年起就是一个I S O标准。这个语言主要由两部分组成:
• 一个样式语言。
• 一个转换语言。
样式语言的伸缩性很强,可以像C S S一样简单,也可以是一个完整的表达语言。表达语言是
一个允许你在X M L文档层次模型上进行繁琐处理的完整编程语言。它的可视化模型基于不依赖
任何特定条件的流对象。例如, D S S S L段落流对象可以同一个HTML <p>元素和一个RT F / p a r对
象相映射。它是一个可以处理S G M L和X M L文档的规则语言。X S L中包含了许多D S S S L特性。
D S S S L通常很难学,很复杂。这是因为D S S S L包含功能强大的表达语言。表达语言是L I S P
第13章样式XML使用611 下载
的一个子集─S c h e m e。熟悉模块程序语言如C、C + +、B a s i c、P a s c a l等的程序员可能学起来会
有困难。D S S S L中可以不包含表达语言,这样,它的难度就和C S S一样了。
D S S S L表达语言很适合符号管理。可以用D S S S L样式格式化对象和基于方案的表达语言来
处理很复杂的样式表。实际上, D S S S L常用于印刷刊物而不是在线解释。但是,也有一些服务
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:
XML高级编程下(34)