【发布时间】:2020-01-14 05:03:35
【问题描述】:
我目前正在评估带有 Saxon 的 XSLT3 是否对我们的目的有用。请听我说完。
我们正在开发一个 REST API,它在给定输入请求 XML 的情况下提供凭据。基本上,有 3 个文件在播放:
-
site.xml:- 此文件包含代表整个组织的数据:用户、角色、凭据、设置...
- 它可以轻松包含 10.000 行。
- 它可以被认为是静态的/不可变的。
- 您可以将其与数据库的 XML 表示进行比较,可以这么说。
-
request.xml:- 此文件包含提供给 REST API 的请求。
- 相当小,通常在 10 到 50 行左右。
- 每个请求都不同。
-
request.xslt:- 此文件包含用于将给定
request.xml转换为输出 XML 的样式表。 - 它通过 XSLT
document()函数加载site.xml,因为它需要这些数据来满足请求。
- 此文件包含用于将给定
这里的问题是在request.xslt 中加载site.xml 需要很长时间。此外,对于每个请求,必须重建 XSLT <xsl:key .../> 指令引入的索引。这加起来了。
因此以某种方式缓存site.xml 是有意义的,以避免为每个请求解析和索引该文件。
请务必注意,多个 API 请求可以同时发生,因此在多个正在进行的 XSLT 转换之间共享这个缓存的 site.xml 应该是安全的。
Saxon (Java) 可以做到这一点吗?这将如何运作?
更新 1
经过一些额外的思考,我意识到也许我不应该只缓存site.xml XML 文件,而是缓存request.xslt?这假定通过document() 加载到request.xslt 中的site.xml 是该缓存的一部分。
【问题讨论】:
标签: java xml xslt saxon xslt-3.0