深入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>

时间: 2024-09-20 00:23:02

深入XSLT第七章--- 对象格式化的相关文章

《快学Scala》第六章 对象 第七章 包和引入

本文转自博客园xingoo的博客,原文链接:<快学Scala>第六章 对象 第七章 包和引入,如需转载请自行联系原博主.

第七章——DMVs和DMFs(3)——用DMV和DMF监控TempDB

原文:第七章--DMVs和DMFs(3)--用DMV和DMF监控TempDB 前言:         我们都知道TempDB是SQLServer的系统数据库,且SQLServer的日常运作严重依赖这个库.因此,监控TempDB的性能问题尤为重要.在过去很长一段时间里面,很多人都忽略了TempDB的重要性并忽略了它的性能问题.这并不是一件好事,因为TempDB的性能会影响其他用户数据库的性能,所以需要时时刻刻注意TempDB的性能.         在一些查询的聚合.排序操作,游标操作和版本存储操

深入XSLT第三章 --- 样式表结构

深入XSLT第三章 --- 样式表结构 在XML文件中样式表用元素xsl:stylesheet来表示. XSL处理器处理源文件和样式表时都必须采用XML的名域(Namespace)机制[W3C XML Names].所有XSL定义的元素(在文件中带有前缀xsl)只有是属于URI为http://www.w3.org/TR/WD-xsl中的某一个名域时才会被XSL识别; XSL 定义的元素只是在样式表中才认得,而并不是在源文件中.  xsl:stylesheet元素有一项可选的属性result-ns

&amp;gt; 第七章 异常处理(rainbow 翻译) (来自重粒子空间)

<<展现C#>> 第七章 异常处理(rainbow 翻译) 出处:http://www.informit.com/matter/ser0000002 正文: 第七章   异常处理     通用语言运行时(CLR)具有的一个很大的优势为,异常处理是跨语言被标准化的.一个在C#中所引发的异常可以在Visual Basic客户中得到处理.不再有 HRESULTs  或者 ISupportErrorInfo 接口.    尽管跨语言异常处理的覆盖面很广,但这一章完全集中讨论C#异常处理.你

《.net编程先锋C#》第七章 异常处理(转)

编程|异常处理 第七章 异常处理通用语言运行时(CLR)具有的一个很大的优势为,异常处理是跨语言被标准化的.一个在C#中所引发的异常可以在Visual Basic客户中得到处理.不再有 HRESULTs 或者 ISupportErrorInfo 接口.尽管跨语言异常处理的覆盖面很广,但这一章完全集中讨论C#异常处理.你稍为改变编译器的溢出处理行为,接着有趣的事情就开始了:你处理了该异常.要增加更多的手段,随后引发你所创建的异常. 7.1 校验(checked)和非校验(unchecked)语句当

Android群英传笔记——第七章:Android动画机制和使用技巧

Android群英传笔记--第七章:Android动画机制和使用技巧 想来,最 近忙的不可开交,都把看书给冷落了,还有好几本没有看完呢,速度得加快了 今天看了第七章,Android动画效果一直是人家中十分重要的一部分,从早期的Android版本中,由于动画机制和绘图机制的不健全,Android的人机交互备受诟病,Android从4.X开始,特别是5.X,动画越来越完善了,Google也开始重视这一方面了,我们本章学习的主要内容有 Android视图动画' Android属性动画 Android动

Knockout应用开发指南 第七章:Mapping插件

原文:Knockout应用开发指南 第七章:Mapping插件 Mapping插件 Knockout设计成允许你使用任何JavaScript对象作为view model.必须view model的一些属性是observable的,你可以使用KO绑定他们到你的UI元素上,当这些observable值改变的时候,这些UI元素就会自动更新. 绝大多数程序都需要从服务器端获取数据,但是由于服务器不知道observable的概念是什么,它只支持简单的JavaScript对象(通常是序列化以后的JSON),

【原创】构建高性能ASP.NET站点 第七章 如何解决内存的问题(前中篇)—托管资源优化—监测CLR性能

原文:[原创]构建高性能ASP.NET站点 第七章 如何解决内存的问题(前中篇)-托管资源优化-监测CLR性能 构建高性能ASP.NET站点 第七章 如何解决内存的问题(前中篇)-托管资源优化-监测CLR性能     前言:在上一篇文章中讲述了一些垃圾回收的一些知识,本篇就讲述如何来监测CLR是否导致了一些性能问题.    本篇的议题如下: 内存问题概述(前篇) 托管资源优化(前篇)          对象的生命周期(前篇)          对象的"代"(前篇)          大

magento 开发 -- 深入理解Magento第七章 – 自定义Magento系统配置

  第七章 – 自定义Magento系统配置 Magento拥有十分强大的后台管理系统.作为一名开发人员,这套后台管理系统可以让你的用户简单直接的配置Magento系统或者你创建的模块.和Magento的其他功能一样,你第一次使用这套管理系统的时候可能觉得很麻烦,但是一旦你上手了,你会发现它强大的功能是那么吸引人.那么让我们开始吧.我们这一章的例子依然是基于Helloworld模块. 添加系统配置文件 首先我们要为模块添加一个系统配置文件.这个文件和"config.xml"是不搭界的a