XSL Transformation in Java: An Easy Way

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

XSL转换(XSLT)是一种将一个XML文档转换为另一个XML文档的强大机制。然而,在Java中,XML操作相当冗长和复杂。即使对于一个简单的XSL转换,您也需要编写几十行代码——如果需要适当的异常处理和日志记录,甚至可能更多。jcabi-xml是一个小型开源库,通过几个简单的方法实现了XML解析和XPath遍历,使生活变得更加容易。让我们看看这个库如何帮助进行XSL转换。

首先,看一个实际的例子——rultor.com——一个托管的DevOps助手,自动化发布、合并和部署操作。Rultor在DynamoDB记录中保留与终端用户(也称为“对话”)的每个会话。每个对话中有多种情况需要处理,这就是为什么在记录的多个列中使用不是真正可行的。相反,我们只在记录列中保留每个对话的几个参数(如ID和名称),并将其余部分放在一个单独的XML列中。

这大致是我们的DynamoDB表的样子:

一旦用户在GitHub票证中发布“@rultor status”,Rultor就必须以完整的状态报告回答有关当前对话的问题。为了创建这样一个文本回答(常规用户不会欣赏XML响应),我们必须从必要的DynamoDB记录中提取xml列并将其转换为简单的英文文本。

以下是我们如何借助jcabi-xml及其类XSLDocument来完成此操作。

就是这样。现在让我们看看status.xsl文件中有什么(这只是它的框架; 完整版本在这里)。

在每次应用程序运行时,只创建一次XSL文档是一个好的实践。我们有一个静态的实用方法XSLDocument.make(),用于此目的。

请注意,我们正在使用XSLT 2.0版本。内置的Java XSLT实现不支持2.0版本,为了使其正常工作,我们使用了这两个Maven Saxon依赖项。

使用jcabi-xml进行XSL转换的第一步是将此依赖项添加到您的pom.xml中。

如果您有任何问题或建议,请毫不犹豫地提交到GitHub的问题追踪

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-05 at 22:13

sixnines availability badge   GitHub stars