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 的对象格式化功能只能做初步的版面设计。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值