深入XSLT第七章--- 对象格式化

深入XSLT第七章--- 对象格式化



简介

 构造结果树的时候可以采用格式化词库的中定义的对象来生成结果.我们已经在XSL概述中了解了格式化对象的基本概念,通常格式化词库是一个XML的名域其中的每一个元素的类型对应一类格式化对象.最新的XSL草案已经定义了一些这样的格式化对象。虽然它还在完善之中,但我们不妨把它的基础和精髓介绍给大 家。

格式化对象及其属性

表明为non-core 的对象不必在XSL中实现.已经定义的格式化对象有下列这些

布局格式化对象(Layout Formatting Objects)

page-sequence提供这样的机制,可以定义主序列(sequences),然后将内容和这些主序列相结合.

simple-page-master描述网页的普通布局或布局序列(打印或在线状态).

内容流对象(Content Flow Objects)

queue集中在页序列中被替代的内容.

sequence:将内容分组并允许分配共享继承属性.

list:将所有项组成一个列表

list-item:为每个列表中项目组合其列表项标签和主体

list-item-label:保存一个列表项的数字或标签.

list-item-body:保存列表项的主体内容.

block:用以表示段落、标题、说明等

character:格式化程序的原子单位.在需要明确重载有具体表现字体的字符或字符串时使用它.

rule-graphic:可用于绘制一图形线将网页划分为几个区域.

graphic:保存一个图片或矢量图象XSL可能替代为行内或块层次.graphic的内容可能是内部流或外部的连接.

score:突出的文本.产生下划线、横透线、上标线等.

Boxes:设置底色和边框

inline-box:突出的文本或图象.产生边框和背景.控制内容间距.

block-level-box:突出的文本或图象.产生边框和背景.控制内容间距.

Building Blocks:指示格式化程序在内容流的当前位置构造文本对象

page-number:使得格式化程序产生页码.

Online Flow Objects 

link:网页浏览器链接.

link-end-locator:链接的目标或对象.

:XSL完整实例

下面是一个简单但完整的样式表例子.

<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"
xmlns:fo="http://www.w3.org/TR/WD-xsl/FO" result-ns="fo" indent-result="yes">
<xsl:template match='/'>
<fo:page-sequence font-family="serif">
<fo:simple-page-master name='scrolling'/>
<fo:queue queue-name='body'>
<xsl:process-children/>
</fo:queue>
</fo:page-sequence>
</xsl:template>
<xsl:template match="title">
<fo:block font-weight="bold">
<xsl:process-children/>
</fo:block>
</xsl:template>
<xsl:template match="p">
<fo:block>
<xsl:process-children/>
</fo:block>
</xsl:template>
<xsl:template match="emph">
<fo:sequence font-style="italic">
<xsl:process-children/>
</fo:sequence>
</xsl:template>
</xsl:stylesheet>

XML的源文件是

<doc>
<title>An example</title>
<p>This is a test.</p>
<p>This is <emph>another</emph> test.</p>
</doc>

它将生成下面的结果:

<fo:page-sequence xmlns:fo="http://www.w3.org/TR/WD-xsl/FO" font-family="serif">
<fo:simple-page-master name="scrolling"/>
<fo:queue queue-name="body">
<fo:block font-weight="bold">An example</fo:block>
<fo:block>This is a test.</fo:block>
<fo:block>This is <fo:sequence font-style="italic">another</fo:sequence> test.</fo:block>
</fo:queue>
</fo:page-sequence>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值