当前位置:编程学习 > XML/UML >>

XSL对象格式使用指南(一)

答案:    
  
  World Wide Web 联盟的规范书将可扩展样式语言(XSL)规划成两个部分:
  
  ■XSLT用来转换XML文件
  ■XSL对象格式(XSL FO) 用来详细说明格式语句的 XML函数库。
  XSLT 非常容易学习和使用。只需要花费很少的时间,开发者就能将XML 文档转换成可以在用户自己浏览器上看到的HTML 文档。这也是开发者喜欢使用XSLT的原因。
  XSL对象格式是一个以XML为基础的扩展函数库,能详细定义标记页数、版面和字体等网页内容信息。XSL FO 扩展语言非常复杂,也很冗长;但只有通过XSL FO 才能快速把XSLT 转换成文档源文件。
  除了完全介绍XSL FO,这篇文章还将提供足够的信息和例子来说明怎样使用XSL FO。我们将通过XSL FO学习制作一个西班牙语的评论手册并将它打印出来。我们将使用Apache Software Foundation 的 FOP 工具软件使FO 文件转换成PDF 文件。
  
  初始化
  把XSL FO 文件转换成XML 文档,先需要基本的XML处理指令和FO 根元素:
    <?xml version="1.0" encoding="utf-8"?>
    <fo:root>
  文档的结构为:
    ●主要的版面设计,由以下组成
      ○文档可能出现的各种页面
      ○安排这些页面的格式序列
    ●页面和它们的内容
  页面规划
  在FO 文档的开始<fo:root> 标签后,我们必须描述文档所拥有的页面类型。文档拥有下面图表中的三种页面。按照空白区域分类为封面、左边页和右边页。封面和左边页在左面有较多的空白区域。每个页面都有页眉和页脚。
  
  让我们从定位页面长度、宽度及空白空间开始。在文章里单位都使用厘米,也可以使用任何CSS 单位,如象素 (pixel)、毫米、英寸等。这些规格被命名为simple-page-master 并用 master-name语句指定。请看代码示例。需要注意的是页面空白区域不能有任何需要印刷出来的内容。
  
  内容区
  在所有的印刷品的图表中都会有零星的线条。那是页面的内容区(正式上被称作页面参照区), 在下面可以看出内容区被分成五个区域。
  
  
  说明
  我们必须先了解一些术语。当我们设定页面边的空白时,我们会使用top, bottom, left, and right这样的词汇。因为每个人都认为纸张的一块边缘就是纸张的左边、顶部、底部和右边。当我们谈到内容区域时会使用不同的词汇,因为不是所有的语言都能描述左到右或顶部到底部。
  FO 认为一个页面由两种元素构成: block elements (例如文章的段落)它由新的一行起头。inline elements (例如字体的粗体和斜体)。FO的block-progress-direction 决定了段落在页面的位置。before-edge表示在段落之前,after-edge 表示在段落之后。
  inline-progress-direction 决定了在一行话中每个字符的位置。start-edge 表示位置在一行话之前, end-edge表示位置在一行话之后。
  对于希伯莱语来说,象以下所示:开头和结尾中文字位置与英语习惯是互相对应的。(阿拉伯语的写法也相似)
  
  日语写法有时象下面一样写,下面是XSL 规范手册中的图片:
  
  这种新函数库最大的优势是它使用的语言不受约束。如果你希望页面的标题出现在和普通文本相对应的位置,你可以象下面一样设定 text-align="end"
  一个有趣的标题
  
  标题一般在最上方,这样才能吸引读者的注意
  
  如果文档最后要翻译成阿拉伯语或日语,你仍然能确定标题仍然出现在文本相对应的位置。就不需要来回调整文档的左右和上下。
  
  指定区域的尺寸
  封面页不需要页眉和页脚,所以我们只需要象以下所示的用粗体指定region-body信息。
  <fo:simple-page-master master-name="cover"
  
  page-height="12cm"
  page-width="12cm"
  margin-top="0.5cm"
  margin-bottom="0.5cm"
  margin-left="1cm"
  margin-right="0.5cm">
  <fo:region-body
  margin-top="3cm" />
  
  </fo:simple-page-master>
  
  左边页和右边页拥有页眉和页脚,所以我们需要指定region-before 和 region-after的范围。
  要点:你得给region-body 指定范围,相当于指定region-before 和region-after 的范围 (FOP 现在不支持region-start 和region-end)。如果你象下面这样做 :
  <fo:region-before extent="1cm"/>
  <fo:region-after extent="1cm"/>
  
  <fo:region-body
  margin-top="0.20cm"
  margin-bottom="0.20cm" />
  
  
  
  结果会是:
  
  
  
  
  
  
  
  

上一个:XMLDOM对象方法:Document对象方法
下一个:XMLDOM对象方法:对象属性

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,