-
XSL对象格式使用指南(四)
作者: 天译编译 | ||
下面是我们将在文档中增加列表的内容: 1.If a syllable has an accent mark, that syllable always gets the stress: acción (action), teléfono. 2.If the word ends with a vowel, n, or s, the next-to-last syllable gets the stress: amigo, hablan (they talk), animales. 3.All other words are accented on the last syllable: hotel, similar, espa?ol. 一个列表由四个元素构成。<fo:list-block>属性包含单独的<fo:list-items>属性。列表不同的部件被<fo:list-item-label>属性和<fo:list-item-body>属性固定。你可以通过下面的图表所示属性来设定列表的间隔: A.provisional-distance-between-starts B.provisional-label-separation C.start-indent for list-item-label D.start-indent for list-item-body E.end-indent for list-item-label F.end-indent for list-item-body 现在我们来创建一个XSLT 模板来处理一个规划好的列表。开始先设定列表的各项部件的标签,再通过FOP输出。使用相关的em 间隔,列表将拥有合理的间隔和字体大小: <xsl:template match="ol"> <fo:list-block space-before="0.25em" space-after="0.25em"> <xsl:apply-templates/> </fo:list-block> </xsl:template> <xsl:template match="ol/li"> <fo:list-item space-after="0.5ex"> <fo:list-item-label start-indent="1em"> <fo:block> <xsl:number/> </fo:block> </fo:list-item-label> <fo:list-item-body> <fo:block> <xsl:apply-templates/> </fo:block> </fo:list-item-body> </fo:list-item> </xsl:template> 制作无序列表跟以上类似。在一个无序列表中各部件的相关定义为: <xsl:template match="ul/li"> <fo:list-item> <fo:list-item-label start-indent="1em"> <fo:block> • </fo:block> <!-- etc. --> 定位列表 使用列表样式创建一个有限的表格并定位它们的条款和解说并不能依靠XSLT。我们将在分开的行内放入条款和解说,象普通的HTML所演示的。 <xsl:template match="dl"> <fo:block space-before="0.25em" space-after="0.25em"> <xsl:apply-templates/> </fo:block> </xsl:template> <xsl:template match="dt"> <fo:block> <xsl:apply-templates/> </fo:block> </xsl:template> <xsl:template match="dd"> <fo:block start-indent="2em"> <xsl:apply-templates/> </fo:block> </xsl:template> 这儿是小册子的一部分,展示了怎么规划列表和定位列表。注意下面的文本流程不需要我们做任何改动。 表格 下面显示了一个典型的表格。 Singular Plural yo canto nosotros cantamos tú cantas vosotros cantáis él canta ella canta ellos cantan ellas cantan 通过 XSL格式化过的表格有以下元素: <fo:table-and-caption> <fo:table-caption> <fo:table> <fo:table-column> <fo:table-header> <fo:table-row> <fo:table-cell> <fo:table-body> <fo:table-row> <fo:table-cell> <fo:table-footer> <fo:table-row> <fo:table-cell> <fo:table> 属性相当于HTML 的<table>标签; <fo:table-body>属性相当于HTML 的<tbody>属性。注意只需要定义 <fo:table-column> 属性,它允许你指定表格队列的宽度。你也可以用标签定义单元格具有相同的队列和范围。<table-and-caption> 元素在当前的FOP执行中不能实现。你必须在<fo:table-column>元素定义column-width 属性来调整表格队列的宽度。FOP不能自动调节并显示你的表格的宽度。 XSLT 可以制作简单的表格,假定已经定位了第一行表格的宽度,还得确定是72象素/英寸宽度单位。但还没有处理行和列的跨距。请看代码示例。 第三人称需要一个<br />标签,可以用FO转换成: <xsl:template match="br"> <fo:block><xsl:text> </xsl:text></fo:block> </xsl:template> 表格处理结果显示为: 概要 正如你见到的,XSLT 和 FO相结合允许你将XHTML文档 或其他 XML文档转换成印刷格式。用XSL 的对象格式化功能只能做初步的版面设计。 |
栏目列表
最新更新
python爬虫及其可视化
使用python爬取豆瓣电影短评评论内容
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比