我们正在使用Jasper Report的xml数据源。要创建一些输出,我们需要XPath distinct-values()函数如所述。如果我按描述的方式使用它,Jasper会给出一个错误:
net.sf.jasperreports.engine.fill.JRExpressionEvalException:错误计算表达式:源文本:((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("distinct-values(/connections/message/type)")
有人知道如何在Jasper、jrxml文件中使用XPath函数吗?
发布于 2015-03-16 12:37:14
distinct-values()是XPath 2.0专用的函数。不幸的是,Jasper报告只支持XPath 1.0 (具有讽刺意味的是,论坛帖子与此完全相同)。
简单的回答是:没有,没有XPath 1.0函数可以消除一组节点的重复值。
如果您可以显示更多的输入XML文档,可能会有解决此问题的方法。
编辑:为了记录在案,以下是从Jasper获得的OP的答案:
嗨,我和JR团队谈过,以便更好地澄清这个话题。因此,目前支持的版本是XPath版本1.0。这是因为JR依赖于Xalan或Jaxen来支持XPath。这些第三方库目前支持1.0版。 查看Jaxen常见问题,这似乎是他们做出的“严格”决定,只关注兼容性支持:http://jaxen.codehaus.org/faq.html。 jaxen支持哪个版本的XPath?jaxen支持XPath 2吗? jaxen支持XPath 1.0。它不支持XPath 2.0。XPath 2.0是一个非常不同的规范,有很多东西值得推荐,也有一些不喜欢的地方。但是,XPath 2.0与XPath 1.0不兼容。它远不是XPath 1.0的简单升级。它有一个非常不同的数据模型,这很可能需要对jaxen的内部数据结构进行重大的修改,也可能需要一个非常不同的API。 当前的发布计划只关注XPath 1.0的兼容性。也许有一天,有人会制作支持XPath 2的jaxen分支或分支。然而,这将是一项重要的工作,到目前为止对此还没有什么兴趣。 因此,现在我们将继续使用1.0版的XPath
我不同意关于XPath 2.0的“一些不喜欢的东西”,但至少这是一个明确的答案。
https://stackoverflow.com/questions/29076260
复制相似问题