Finally, was able to solve problem. With above XML as Datasource. Main Report Step 1: Have xPath as /main-report <queryString language="xPath"> <![CDATA[/main-report]]> </queryString> Step 2: Data Source Expression for sub report 1 ((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("//main-report/sub-report1/line-items/line-item" Step 3: Data Source Expression for Sub Report 2 ((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("//main-report/sub-report2/line-items/line-item") Sub Report 1 <queryString language="xPath"> <![CDATA[/main-report/sub-report1/line-items/line-item]]> </queryString> Sub Report 2 <queryString language="xPath"> <![CDATA[/main-report/sub-report2/line-items/line-item]]> </queryString>