XSLT和XSL-FO有什么区别?

cwa*_*wap 42 xml xslt xsl-fo

XSLT和XSL-FO有什么区别?

我读过的每一个资源都像处理它们一样处理它们,或者至少非常紧密地绑定它们.

Mur*_*rph 36

我想知道这个问题的基础,因为我觉得这很容易回答,但是一旦你去了这里:http://www.w3.org/TR/xsl/很明显它实际上是个好问题 -因为页面上的第一件事就是这句话:

此规范定义了可扩展样式表语言(XSL)的功能和语法,XSL是一种表达样式表的语言.它由两部分组成:

  1. 用于转换XML文档(XSLT)的语言
  2. 用于指定格式化语义的XML词汇表.

然而,回到现实世界,XSLT(这也是大多数人会认为你的意思是XSL)是一种将XML文档转换成其他东西的方法 - 其他东西往往不是另一个结构良好的文档,可能也被格式化为XML(尽管我使用XSLT将XML呈现为csv和plain(ish)文本).

另一方面,XSL-FO是关于格式化 - 关于以相当严格的方式在页面或一系列页面上布置内容.它非常有用,因为它允许您管理分布在多个页面上的内容,它相对简单地指定页面(甚至是奇数页面)的格式,包括页眉,页脚,边框,列等,并让您的内容流入.因此,人们可以在XML格式中加载大量数据,然后使用XSLT将该数据转换为由XSL-FO组成的文档,而XSL-FO又使用PDF中的适当工具进行渲染以进行打印或其他分发方式.

我的用例是获取一堆表格数据,将该数据导出为XML,将其呈现为XSL-FO,然后从那里转换为PDF,然后转到打印机,将打印机转换为500页目录.一个在XSL-FO中指定一个人想要页码,在特定情况下分页,有一个目录和一个索引(每个都基于特定的元素)和渲染过程(到PDF)处理填写页码全面的.

希望你现在不那么困惑了..


Mad*_*sen 19

除了首字母缩写词中的相似之处,这两种技术曾经是同一W3C规范的一部分(草案形式).后来决定将XSL(XSL-fo)和XSLT分成两个单独的规范.

来自W3Schools的报价:

XSL-FO是正式命名的XSL

为什么会这么混乱?XSL-FO和XSL是一回事吗?

是的,但我们会给你一个解释:

样式是关于转换和格式化信息.当万维网联盟(W3C)制定了他们的第一个XSL工作草案时,它包含了转换和格式化XML文档的语言语法.

之后,W3C的工作组将原始草案分成了单独的建议书:

* XSLT, a language for transforming XML documents
* XSL or XSL-FO, a language for formatting XML documents
* XPath, a language for navigating in XML documents
Run Code Online (Sandbox Code Playgroud)

年代表的详细注释可以在Dave Pawson的主页上找到:http: //www.dpawson.co.uk/xsl/sect1/history.html


Pre*_*raj 7

XSL是用于转换和呈现XML文档的语言系列

XSLT(XSL转换):用于将XML文档转换为其他XML文档或其他格式(如用于网页,纯文本XSL格式对象的HTML)的语言,后者可能随后转换为其他格式,如PDF,PostScript和PNG.

转型可以做到以下三种方式:

  1. 参考: 让浏览器进行转换:使用<xsl:processing-instruction>
  2. 嵌入式: 使用JavaScript进行客户端转换.
  3. 运行时: 为了使XML数据可用于所有类型的浏览器,我们可以在SERVER上转换XML文档.

例如:

在此输入图像描述 XSL-FO(XSL格式化对象):Web浏览器不支持它,因为它专为打印输出而非在线查看而设计.(来自@Hobbes)
目前支持的输出格式包括PDF,PCL,PS,AFP,TIFF,PNG,SVG,XML(区域树表示),Print,AWT和TXT.主要输出目标是PDF.Soruce

示例代码:

<fo:table-row height=".5cm">
            <fo:table-cell>
                <fo:block></fo:block>
            </fo:table-cell>
        </fo:table-row>
Run Code Online (Sandbox Code Playgroud)

流程图: 在此输入图像描述


Bjö*_*örn 6

XSLT用于转换,XSL(与XSL-FO相同)用于格式化.

http://www.w3schools.com/xslfo/xslfo_intro.asp

  • 这个"最佳答案"只是部分正确,而Mads Hansen和其他人在下面是最真实的答案. (3认同)