首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

HTML 至格式化对象(FO)转换指南(11)命名锚点引用

HTML 至格式化对象(FO)转换指南(11)命名锚点引用

<tfoot> 表页脚很少用到                 <tfoot> 元素,它可以创建表页脚。它包含若干表行(                 <tr> )元素,每个表行元素包含若干表单元。要处理它,只需调用用于                 <tfoot> 元素所包含的                 <tr> 元素的 XSLT 模板:            
1
2
3
4
5
<xsl:template match="tfoot">
   
         
        <xsl:apply-templates select="tr"/>
</xsl:template>




<th> 表头单元HTML                 <th> 元素包含一个表头单元。要处理它,可创建一个四周边界宽度为 3 点的                 <fo:table-cell> (如前面在                 <td> 元素的缺省值中指定的那样)。                 <fo:table-cell> 元素包含一个文本为粗体且居中的                 <fo:block> 元素。该模板查找此元素有                 border="1" 属性的祖先元素;如果其中任何一个有这样的边界属性,则该模板相应地设置 XSL-FO 边界属性。以下是完整的 XSLT 模板:            
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<xsl:template match="th">
  <fo:table-cell
     
         
        padding-start="3pt" padding-end="3pt"
    padding-before="3pt" padding-after="3pt">
    <xsl:if test="@border='1' or
                  ancestor::tr[@border='1'] or
                  ancestor::table[@border='1']">
      <xsl:attribute name="border-style">
        <xsl:text>solid</xsl:text>
      </xsl:attribute>
      <xsl:attribute name="border-color">
        <xsl:text>black</xsl:text>
      </xsl:attribute>
      <xsl:attribute name="border-width">
        <xsl:text>1pt</xsl:text>
      </xsl:attribute>
    </xsl:if>
    <fo:block
         
        font-weight="bold" text-align="center">
      <xsl:apply-templates select="*|text()"/>
    </fo:block>
  </fo:table-cell>
</xsl:template>




<thead> 表头处理极少使用的                 <thead> 元素和处理                 <tfoot> 元素相似。以下是一个简单的 XSLT 模板:            
1
2
3
4
5
<xsl:template match="thead">
   
         
        <xsl:apply-templates select="tr"/>
</xsl:template>




<title> 文档标题我们假定所有这些指令都是为了将 FO 文档最终转换成 PDF 文件,后者有需要遵循的布局。为完成教程示例中所要求的 PDF 布局,需要将文档的标题(                 <html> 元素中                 <head> 元素中的                 <title> 元素)设置为大字体、粗体并且位于页面顶部中央。以下是 XSLT 模板:            
1
2
3
4
5
6
7
8
<xsl:template match="title">
  <fo:block space-after="18pt" line-height="27pt"
     
         
        font-size="24pt" font-weight="bold" text-align="center">
    <xsl:apply-templates select="*|text()"/>
  </fo:block>
</xsl:template>




<tr> 表行HTML                 <tr> 元素直接映射成 XSL-FO                 <fo:table-row> 元素。因为处理表的绝大部分工作都在                 <td> 元素的模板中,所以现在必须要做的就是创建                 <fo:table-row> 并调用 HTML                 <tr> 元素中所包含的每个元素的 XSLT 模板。以下是一个简单的模板:            
1
2
3
4
5
6
7
<xsl:template match="tr">
   
         
        <fo:table-row>
    <xsl:apply-templates select="*|text()"/>
  </fo:table-row>
</xsl:template>




<tt> 电报体文本电报体文本是以等宽字体显示的。以下是 XSLT 模板:
1
2
3
4
5
6
7
<xsl:template match="tt">
  <fo:inline
         
        font-family="monospace">
    <xsl:apply-templates select="*|text()"/>
  </fo:inline>
</xsl:template>




<u> 加下划线的文本要显示加下划线的文本,可使用 XSL-FO                 text-decoration 属性。以下是简短的 HTML 样本:            
1
2
3
<p>When typewriters ruled the earth,
  <u>underlining</u> was the most
  common way to highlight text.</p>




当将其转换成 XSL-FO 时,要使用带                 text-decoration="underline" 属性的                 <fo:inline> 元素:            
1
2
3
4
5
6
7
<xsl:template match="u">
  <fo:inline
         
        text-decoration="underline">
    <xsl:apply-templates select="*|text()"/>
  </fo:inline>
</xsl:template>




注:                 text-decoration 属性的关键字可以是负值也可以是正值。如果出于某种原因而希望在启用                 underline 的一长段文本中关闭其中一小段具有                 underline 属性的文本,则可以创建一个带                 text-decoration="no-underline" 属性的                 <fo:inline> 元素。也可以指定多个值;属性                 text-decoration="underline line-through" 同时对文本加删除线和下划线。
返回列表