如何获取以XSL转换为目标的HTML表单中的动态数据?

时间:2012-07-18 19:19:24

标签: java html xslt

我有一个简单的HTML文档。它被读入我编写的一些Java代码,并通过一些XSL-T和Apache FOP翻译成PDF。

我的问题是,这个HTML文档是一种合法的表单,在发送给各种计算机/用户之前,应该预先填充Java对象中包含的值。 如何读取动态(运行时)数据,然后像往常一样继续转换?

我想知道可以在服务器端完成此操作的策略/技术。任何想法将不胜感激!

(我可以采用一个非常难看的解决方案,我在我的Java代码中将字符串拼凑在一起并在中间一次插入一个数据,但是我有很多部分,我的公司很难维护这些代码。)

编辑:为了澄清 - 我发现this answer already on SO解决了类似问题。在这个问题中,我相信,它通过文本输入到用户的浏览器中来读取数据。这是一个客户端问题。我需要从服务器端的Java代码中读取数据。

1 个答案:

答案 0 :(得分:0)

我的问题措辞不是很好,请允许我澄清一下我想要完成的工作以及我是如何完成的(对于谷歌观众来说。)

我有一个用XHTML(格式良好的HTML)编码的文档。我需要本文档的PDF版本的最终结果,并在运行时收集一些数据。我不认为我的解决方案是新颖的,甚至接近某人可能做到的最佳方式,但为了结束,我将列出它:

  1. 将标签插入HTML / XML文档中,表明需要在以后填写值。例如,<day/>表示时间戳中的日期。

  2. 保留现有的XSL-T文档,将文本从XML转换为PDF格式。它忽略了<day/>之类的所有标签,这很好,因为我没有立即准备好替换所有字段。

  3. 使用简单的正则表达式在运行时使用适当的内容replaceFirst("<day/>", getTimestamp())创建代码。需要通过用户输入数据时触发的“struts”事件来调用此方法。

  4. 运行时,程序接受用户数据,调用读取XHTML文件的方法,用收集的数据替换字段,使用Apache FOP将修改后的文件传递给我的XSLT转换。

  5. 这不优雅,但它可以解决问题。