博文

XSL-FO 与 XSLT(2008-10-05 15:42:00)

摘要:fo:block
    font-size="14pt" font-family="verdana" color="red"
    space-before="5mm" space-after="5mm">
W3School
</fo:block>

<fo:block
    text-indent="5mm"
    font-family="verdana" font-size="12pt"
    space-before="5mm" space-after="5mm">
At W3School you will find all the Web-building tutorials you
need, from basic HTML and XHTML to advanced XML, XSL, Multimedia
and WAP.
</fo:block> 结果: 此例来自有关 XSL-FO 块区域的那一节。 来自 XSLT 的帮助 从文档移除 XSL-FO 信息:<header> W3School </header> <paragraph> At W3School you will find all the Web-building tutorials you need, from basic HTML and XHTML to advanced XML, XSL, Multimedia and WAP. </paragraph> 添加 XSLT 转换:<xsl:template match="header"> <fo:block font-size="14pt" font-family="verdana" color="red" space-before="5mm" space-after="5mm"> <xsl:apply-templat......

阅读全文(1083) | 评论:0

XSL-FO 表格(2008-10-05 15:39:00)

摘要: XSL-FO 使用 <fo:table-and-caption> 元素来定义表格。 XSL-FO 表格 XSL-FO 表格模型与 HTML 表格模型是非常不同的。 有九种 XSL-FO 对象可用来创建表格: fo:table-and-caption fo:table fo:table-caption fo:table-column fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell XSL-FO 使用 <fo:table-and-caption> 元素来定义表格。它包含一个 <fo:table> 以及一个可选的 <fo:caption> 元素。 <fo:table> 元素包含: 可选的 <fo:table-column> 元素 可选的 <fo:table-header> 元素 <fo:table-body> 元素 可选的 <fo:table-footer> 元素 这些元素中的每一个都可能拥有一个或多个 <fo:table-row> 元素,而 <fo:table-row> 同时会带有一个或多个 <fo:table-cell> 元素:<fo:table-and-caption> <fo:table> <fo:table-column column-width="25mm"/> <fo:table-column column-width="25mm"/> <fo:table-header> <fo:table-row> <fo:table-cell> <fo:block font-weight="bold">Car</fo:block> </fo:table-cell> <fo:table-cell> <fo:block font-weight="b......

阅读全文(891) | 评论:0

XSL-FO 列表(2008-10-05 15:37:00)

摘要: XSL-FO 使用列表块(List Block)来定义列表。 XSL-FO 列表块 有四种 XSL-FO 对象可用来创建列表: fo:list-block 包含整个列表。 fo:list-item 包含列表中的每个项目。 fo:list-item-label 包含用于 list-item 的标记 - 典型地,包含一个数字或者字符的 <fo:block> 。 fo:list-item-body 包含 list-item 的主体或内容 - 典型地,一个或多个 <fo:block> 对象。 一个 XSL-FO 列表实例:<fo:list-block> <fo:list-item> <fo:list-item-label> <fo:block>*</fo:block> </fo:list-item-label> <fo:list-item-body> <fo:block>Volvo</fo:block> </fo:list-item-body> </fo:list-item> <fo:list-item> <fo:list-item-label> <fo:block>*</fo:block> </fo:list-item-label> <fo:list-item-body> <fo:block>Saab</fo:block> </fo:list-item-body> </fo:list-item> </fo:list-block> 以上代码的输出:......

阅读全文(896) | 评论:0

XSL-FO Blocks(块)(2008-10-05 14:01:00)

摘要: XSL-FO 的输出位于块区域中。 XSL-FO 页面、流以及块 内容“块”会“流”入“页面”中,然后输出到媒介。 XSL-FO 输出通常被嵌套在 <fo:block> 元素中,<fo:block> 嵌套于 <fo:flow> 元素中,<fo:flow> 嵌套于 <fo:page-sequence> 元素中:<fo:page-sequence> <fo:flow flow-name="xsl-region-body"> <fo:block> <!-- Output goes here --> </fo:block> </fo:flow> </fo:page-sequence> 块区域的属性 块是位于矩形框中的输出序列:<fo:block border-width="1mm"> 这个输出块周围有一条一毫米的边框。 </fo:block> 由于块区域是矩形框,所以可共享许多公共的区域属性: space before 和 space after margin border padding space before 图示: space before 和 space after 是块与块之间起分割作用的空白。 margin 是块外侧的空白区域。 border 的区域外部边缘的矩形。其四个边均可有不同的宽度。它也可被填充为不同的颜色和背景图像。 padding 是位于内容区域与边框之间的区域。 内容区域可包含实际的内容,比如文本、图片、图形等等。 块边距 margin margin-top margin-bottom margin-left margin-right 块边框 边框样式属性: border-style border-before-style border-after-style border-start-style border-end-style border-top-style ((等同于 border-before) ......

阅读全文(1047) | 评论:0

XSL-FO 页面(2008-10-05 13:55:00)

摘要: XSL-FO 页面模板 XSL-FO 使用名为 "Page Masters" 的页面模板来定义页面的布局。每个模板必须拥有一个唯一的名称:<fo:simple-page-master master-name="intro"> <fo:region-body margin="5in" /> </fo:simple-page-master> <fo:simple-page-master master-name="left"> <fo:region-body margin-left="2in" margin-right="3in" /> </fo:simple-page-master> <fo:simple-page-master master-name="right"> <fo:region-body margin-left="3in" margin-right="2in" /> </fo:simple-page-master> 在上面的例子中,三个 <fo:simple-page-master> 元素,定义了三个不同的模板。每个模板(page-master)都有不同的名称。 第一个模板名为 "intro"。它可作为介绍页面的模板使用。 第二个和第三个模板名为 "left" 和 "right"。它们可被用于偶数和奇数页码的页面。 XSL-FO 页面尺寸 XSL-FO 使用下面的属性来定义页面尺寸: page-width 定义页面的宽度 page-height 定义页面的高度 XSL-FO 页面边距 XSL-FO 使用下面的属性定义页面边距: margin-top 定义顶边距 margin-bottom 定义底边距 margin-left 定义左边距 margin-right 定义右边距 margin 定义所有边的边距 XSL-FO 页面去(Page Regions) XSL-FO 使用下面的元素来定义页面的区: region-body 定义主体区 region-before 定义顶部区 (页眉) ......

阅读全文(1028) | 评论:0

XSL-FO 流(2008-10-05 13:46:00)

摘要: XSL-FO 页面使用来自 <fo:flow> 元素的数据进行填充。 XSL-FO 页面顺序 XSL-FO 使用 <fo:page-sequence> 元素来定义输出页面。 每个输出页面都会引用一个定义布局的 page master。 每个输出页面均有一个定义输出的 <fo:flow>元素。 每个输出页面均会按顺序(序列)被打印或显示。 XSL-FO Flow(流) XSL-FO 页面使用来自 <fo:flow> 元素的数据进行填充。 <fo:flow> 包含所有被打印到页面的元素。 当页面被印满以后,相同的 page master 会被一遍又一遍地被使用,直到所有页面的页面被打印为止。 流动到何处? <fo:flow> 元素有一个名为 "flow-name" 的属性。 flow-name 属性的值定义 <fo:flow> 元素的内容会去往何处。 合法的值: xsl-region-body (进入 region-body) xsl-region-before (进入 region-before) xsl-region-after (进入 region-after) xsl-region-start (进入 region-start) xsl-region-end (进入 region-end) ......

阅读全文(817) | 评论:0

XSL-FO 输出(2008-10-05 13:41:00)

摘要: XSL-FO 在 <fo:flow> 元素内部定义输出。 XSL-FO 页面(Page)、流(Flow)以及块(Block) 内容“块”会“流”入“页面”中,然后输出到媒介。 XSL-FO 输出通常被嵌套在 <fo:block> 元素中,<fo:block> 嵌套于 <fo:flow> 元素中,<fo:flow> 嵌套于 <fo:page-sequence> 元素中:<fo:page-sequence> <fo:flow flow-name="xsl-region-body"> <fo:block> <!-- Output goes here --> </fo:block> </fo:flow> </fo:page-sequence> XSL-FO 实例 现在让我们看一个真实的 XSL-FO 实例:<?xml version="1.0" encoding="ISO-8859-1"?> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> <fo:simple-page-master master-name="A4"> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="A4"> <fo:flow flow-name="xsl-region-body"> <fo:block>Hello W3School</fo:block> </fo:flow> </fo:page-sequence> </fo:root> 以上代码的输出类似这样: ......

阅读全文(938) | 评论:0

XSL-FO 区域(2008-10-05 13:36:00)

摘要: XSL-FO 使用矩形框(区域)来显示输出。 XSL-FO 区域 XSL 格式化模型定义了一系列的矩形(区域)框来显示输出。 所有的输出都会被格式化到这些框中,然后会被显示或打印到某个目标媒介。 让我们研究一下下面这些区域: Pages(页面) Regions(区) Block areas(块区域) Line areas(行区域) Inline areas(行内区域) XSL-FO Pages(页面) XSL-FO 输出会被格式化到页面中。打印输出通常会进入分为许多分割的页面。浏览器输出经常会成为一个长的页面。 XSL-FO 页面包含区域(Region)。 XSL-FO Regions(区) 每个 XSL-FO 页面均包含一系列的 Regions(区): region-body (页面的主体) region-before (页面的页眉) region-after (页面的页脚) region-start (左侧栏) region-end (右侧栏) XSL-FO Regions 包含块区域(Block Area)。 XSL-FO Block Areas(块区域) XSL-FO 块区域可定义小的块元素(通常由一个新行开始),比如段落、表格以及列表。 XSL-FO 块区域可包含其他的块区域,不过大多数时候它们包含的是行区域(Line Area)。 XSL-FO Line Areas(行区域) XSL-FO 行区域定义了块区域内部的文本行。 XSL-FO 行区域包含行内区域(Inline Area)。 XSL-FO Inline Areas(行内区域) XSL-FO 行内区域定了行内部的文本(着重号、单字符以及图像等等)。......

阅读全文(859) | 评论:0

XSL-FO 文档(2008-10-05 13:31:00)

摘要: XSL-FO 文档是带有输出信息的 XML 文件。 XSL-FO 文档 XSL-FO 文档是带有输出信息的 XML 文件。它们包含着有关输出布局以及输出内容的信息。 XSL-FO 文档存储在以 .fo 或 .fob 为后缀的文件中。以 .xml 为后缀存储的 XSL-FO 文档也很常见,这样做的话可以使 XSL-FO 文档更易被 XML 编辑器存取。 XSL-FO 文档的结构 XSL-FO 的文档结构类似这样:<?xml version="1.0" encoding="ISO-8859-1"?> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> <fo:simple-page-master master-name="A4"> <!-- Page template goes here --> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="A4"> <!-- Page content goes here --> </fo:page-sequence> </fo:root> 结构解释 XSL-FO 文档属于 XML 文档,因为也需要以 XML 声明来起始:<?xml version="1.0" encoding="ISO-8859-1"?> <fo:root> 元素是 XSL-FO 文档的根元素。这个根元素也要声明 XSL-FO 的命名空间:<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <!-- 此处是 XSL-FO 文档的内容 --> </fo:root> <fo:layout-master-set> 元素含有一个或多个页面模板:<fo:layout-master-set> ......

阅读全文(837) | 评论:0

XSLT - 客户端(2008-10-05 11:03:00)

摘要: 如果您的浏览器支持 XSLT,那么在浏览器中它可被用来将文档转换为 XHTML。 JavaScript 解决方案 在前面的章节,我们已向您讲解如何使用 XSLT 将某个 XML 文档转换为 XHTML。我们是通过以下途径完成这个工作的:向 XML 文件添加 XSL 样式表,并通过浏览器完成转换。 即使这种方法的效果很好,在 XML 文件中包含样式表引用也不总是令人满意的(例如,在无法识别XSLT的浏览器这种方法就无法奏效)。 更通用的方法是使用 JavaScript 来完成转换。 通过使用 JavaScript,我们可以: 进行浏览器确认测试 根据浏览器和使用者的需求来使用不同的样式表 这就是 XSLT 的魅力所在!XSLT 的设计目的之一就是使一种格式到另一种格式的转换成为可能,同时支持不同类型的浏览器以及不同的用户需求。 浏览器端的 XSLT 转换一定会成为未来浏览器所执行的主要任务之一,同时我们也会看到其在特定的浏览器市场的增长(盲文、网络打印机,听觉设备,等等)。 XML 文件和 XSL 文件 请看这个在前面的章节已展示过的 XML 文档:<?xml version="1.0" encoding="ISO-8859-1"?> <catalog> <cd> <title>Empire Burlesque</title> <artist>Bob Dylan</artist> <country>USA</country> <company>Columbia</company> <price>10.90</price> <year>1985</year> </cd> . . . </catalog> 查看此 XML 文件。 以及附随的 XSL 样式表:<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="......

阅读全文(1480) | 评论:0