2

当我创建子报表时,我尝试以相反的方向浏览 xml 节点,但这不起作用。我的报告 XPath 是/root/parent/child1,我希望子报告具有/root/parent/child2XPath

<root>
  <parent>
    <child1>
    </child1>
    <child2>
    </child2>
  </parent>
</root>

我在数据源表达式中写了以下内容:

((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("//../child2")

我的问题是关于 xpath 的一般问题:

是否允许在数据源表达式中使用“..”或“../..”来引用祖先?

4

1 回答 1

1

问题是你正在尝试subDataSource

使用当前节点(记录)作为文档的根创建子数据源

因此,您在 child1 处创建一个具有新根的新文档(XPath 不能超出这个新根)

而是使用dataSource

使用“this”数据源使用的文档作为根文档创建子数据源。

在您的示例中,这将是:

((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}).dataSource("/root/parent/child2")
于 2018-10-08T13:28:33.240 回答