2

我完全是 XSL 和 XSL-FO 的菜鸟,我正在寻找一些关于在使用 XSL 格式化 XML 数据以进行报告时使用 DotNet 2.0 和 3.5 的可能性和限制的建议。

这就是我想要做的。

1)根据一些业务规则从SQL 2005 DB中获取数据

2) 直接从 SQL 输出到 xml 或从其他一些自定义中间层组件创建 xml 文件并将文件保存到磁盘。

3) 使用第 3 方库从转换后的文件创建 pdf。<-- 我也需要有关工具的建议。

我关心的是分页符和在发生中断时将相关内容保持在一起。据我所知,这两个命令是为此:keep-with-previous 和 keep-with-next 但我认为是 XSL-FO 命令,如果我错了,请纠正我。在基本 XSL 命令中也有这个。 http://www.w3.org/TR/xsl/#keepbreak 从我读到的 IE 和 DotNet 不支持 XSL-FO 仍然是真的吗?我还阅读了一些关于将 XSL 模式添加到 Visual Studios 模式以进行智能感知的文章,有没有人知道用于此目的的当前 XSL-FO 模式。因此,考虑到我想要完成的工作以及我的担忧,我应该了解 XSL-FO 在 DotNet 和 IE 中的局限性。

4

6 回答 6

3

我在 Java 和 .NET 环境中都使用过很多专业的 XSL-FO。它确实使您可以完全控制打印的文档/PDF。我自己已经生成了非常复杂的 PDF 文件,可以批量打印(小册子和论文)。它们包括复杂的结构,如列中浮动的文本、图形(使用嵌入式 SVG)和表格。

XSL-FO 用于打印 HTML 用于屏幕。鉴于你学会了很好地了解它,你将能够用它生产任何东西,无论设计多么复杂。

基于 Java 的FOP可能是最好的 XSL-FO 处理器之一。而且它也是免费的、开源的。

AltSoft 的商业 .NET XML2PDF很好 2.

XSL-FO 绝对是生成 PDF 或打印文档时的最佳选择。

编辑:我猜我只回答了你的部分问题。到目前为止,任何常见浏览器都不原生支持 XSL-FO。我不认为有任何计划在 IE 中实现本机支持,如果是的话,我会感到非常惊讶。XSL-FO 只是 XML,因此到今天为止,您将不再需要 .NET Framework 对 XSL-FO 的任何进一步支持。通常,使用 XSLT 生成 XSL-FO,然后将转换结果传递给格式化对象处理器,例如 FOP。在某些情况下,如果您的 XSL-FO 文档非常复杂,那么 XSLT(至少不是 1.0)是不够的。然后,您可能会考虑使用用 C# 等语言编写的 XSLT 扩展。在某些情况下,也许 XSLT 不适合这项工作,那么您可以考虑使用代码来生成 XSL-FO。

于 2009-02-12T14:17:16.437 回答
1

查看Aspose PDF以从 XSL-FO 生成 PDF。但是,它不是免费的,但根据您的需要,它可能物有所值。

于 2009-02-02T19:14:42.653 回答
1

.NET 2.0 和 3.5 除了进行从 xml 到 xsl-fo 的转换之外什么都不做。您仍然需要编写 XSLT 文件,据我所知,Visual Studio 下的 xsl-fo 没有智能感知。我使用http://www.alt-soft.com的产品从 xsl-fo 转换为 pdf。要编写 xsl-fo,我使用 Stylus Studio。您还可以查看 Altova 的 Stylvision。http://www.renderx.com/也生产与 alt-soft 类似的产品。我还使用 alt 软件产品将 SVG 从 Dundas Charting 转换为 PDF。

于 2009-02-02T22:46:27.653 回答
1

可以在这里找到非官方架构:http: //xmlgraphics.apache.org/fop/fo.html#fo-validate

于 2009-07-16T13:36:13.497 回答
0

感谢您提供 xsd 资源的链接。我会投票赞成你的回复,但我还没有要点:)

xsl-fo 基本上毫无价值,除非您将其转换为 PDF 或其他“可读”格式,所以我怀疑 IE 或任何浏览器会“支持”xsl-fo。我想您可以创建一个对 mime 类型做出反应的插件,然后浏览器/插件会将 xsl-fo 转换为 pdf。

于 2009-02-03T20:54:16.383 回答
0

好的,我下载了 syntext xsd 并将其放在与我的 xsl 相同的目录中,该目录生成 xsl-fo,并使用 Visual Studio 编辑器工作。它只允许您“智能感知”与您所在位置相关的正确标签。很有帮助。事实上,除非我做错了什么,否则它比 Sylus Studio 更有用,它不会限制你只使用有效的标签。

于 2009-02-03T22:19:04.183 回答