【发布时间】:2019-06-03 23:44:01
【问题描述】:
我有一个复杂的 Java 转换例程,我想从我的 XQuery 模块中调用它。我想直接调用它,而不是使用服务或 http 端点来最小化开销。
这适用于必须将大型几何形状从一个坐标系转换到另一个坐标系(RD 到 ETRS89)的例程。由于这些是更大的 XML 文档的一部分,可能包含几十个这样的形状,我想在我们实际处理文档时在 MarkLogic 中执行此操作。
MarkLogic 文档没有给我任何信息如何实现这样的扩展,只讨论了不适合的 xquery 和 javascript 扩展。
在 XQuery 或 Javascript 中重写例程并不是一个真正的选择,因为它会非常复杂且耗时。
【问题讨论】:
-
这里的上下文是什么?它是基于用户对 REST 端点的请求吗?还是它是摄取过程的一部分?
-
上下文:用户上传了一个需要进一步处理的大型 xml 文档。我们使用 schema 和 schematron 对其进行验证。当文档有效时,我们通过提取数据进一步处理它,包括我们想要存储为 cts:region 的 GML,以便我们可以使用地理搜索。但由于它的坐标格式错误(RD,荷兰专有格式),我们需要在存储之前将其转换为 ETRS89,因为 ML 无法处理 RD 坐标。
-
用户和 MarkLogic 之间是否有 Java 中间层?如果是这样,一种选择是向 ML 发出两个请求。第一个将执行验证和 GML 提取,所有这些都将返回到 Java 层。然后,Java 层可以使用库将 GML 转换为 ETRS89。然后 Java 层会将所有内容发送回 ML,ML 会保留它。或者,您可以让 Java 中间层也执行所有验证,因为它也可以使用模式和 Schematron 轻松验证。