来自XML数据源的BIRT嵌套表

时间:2014-04-24 10:35:39

标签: xml xpath birt xpath-2.0

我试图用这种BIRT重现一份报告:

情景:

  • 我有一个项目列表(让我们说产品类别)。
  • 每个项目(或类别)都有固定数量的表格(例如,product_id与sold_sold数量的表格,以及包含该类别信息的表格)
  • 类别中的每个表都有可变的行数。

数据结构:

我从XML读取数据,让我们说它是这样的:

<list>
     <item>
          <table1>
              <row>
                  <column1>item 1 table 1 row 1 col 1</column1>
                  <column2>item 1 table 1 row 1 col 2</column2>
              </row>
              <row>
                  <column1>item 1 table 1 row 2 col 1</column1>
                  <column2>item 1 table 1 row 2 col 2</column2>
              </row>
          </table1>
          <table2>
              <row>
                  <columnX>item 1 table 2 row 1 col 1</columnX>
                  <columnY>item 1 table 2 row 1 col 2</columnY>
                  <columnZ>item 1 table 2 row 1 col </columnZ>
              </row>
              <row>
                  <columnX>item 1 table 2 row 2 col 1</columnX>
                  <columnY>item 1 table 2 row 2 col 2</columnY>
                  <columnZ>item 1 table 2 row 2 col 3</columnZ>
              </row>
          </table2>
    </item>
    <item>
    .
    .
    </item>

Desidered result:

所以我试图重现这个:

+---------------------------+---------------------------+
|  column 1                 |  column 2                 |
+---------------------------+---------------------------+
|item 1 table 1 row 1 col 1 |item 1 table 1 row 1 col 2 |
|item 1 table 1 row 2 col 1 |item 1 table 1 row 2 col 2 |
.
|item 1 table 1 row N1 col 1|item 1 table 1 row N1 col 2|
+---------------------------+---------------------------+

+---------------------------+---------------------------+---------------------------+
|  column X                 |  column Y                 |  column Z                 |
+---------------------------+---------------------------+---------------------------+
|item 1 table 2 row 1 col 1 |item 1 table 2 row 1 col 2 |item 1 table 2 row 1 col 3 |
|item 1 table 2 row 2 col 1 |item 1 table 2 row 2 col 2 |item 1 table 2 row 2 col 3 |
.
|item 1 table 2 row N2 col 1|item 1 table 2 row N2 col 2|item 1 table 2 row N2 col 3|
+---------------------------+---------------------------+---------------------------+

.
.
.

+---------------------------+---------------------------+
|  column 1                 |  column 2                 |
+---------------------------+---------------------------+
|item K table 1 row 1 col 1 |item K table 1 row 1 col 2 |
|item K table 1 row 2 col 1 |item K table 1 row 2 col 2 |
.
|item K table 1 row N1 col 1|item K table 1 row N1 col 2|
+---------------------------+---------------------------+

+---------------------------+---------------------------+---------------------------+
|  column X                 |  column Y                 |  column Z                 |
+---------------------------+---------------------------+---------------------------+
|item K table 2 row 1 col 1 |item K table 2 row 1 col 2 |item 1 table 2 row 1 col 3 |
|item K table 2 row 2 col 1 |item K table 2 row 2 col 2 |item 1 table 2 row 2 col 3 |
.
|item K table 2 row N2 col 1|item k table 2 row N2 col 2|item 1 table 2 row N2 col 3|
+---------------------------+---------------------------+---------------------------+

实验1

我承认我是BIRT的新手。这是我到目前为止所尝试的:

导入:

  • 在Data Soruce中导入XML文件
  • 新DataSet,我将list项导入为/list/(固定的aboslute路径)(称为DataSet) 导入column1column X(只是因为我必须导入一些东西): **这意味着数据集将采用这些表的第一行的值。
  • 然后我添加了各种各样的表(带有相对路径)并添加了它们的列。每个表都是不同的DataSet。 (称为DataSet1DataSet2DataSet3

数据:

  • 我做了一个包含4列的表格:
    • 第一列包含列表的column1(这是下表的第一个值)
  • 第二列包含一个表:

    • 此表包含column 1column2
  • 第三列包含另一个表

    • 此表包含columnXcolumnYcolumnZ作为列。

结果:

结果我明白了:

  • 对于<item>中的每一行,我都会获得一行
  • 对于每一行,嵌套表 ALWAYS 具有相同的行!
    • 相反,我希望他们只获取当前项<item>
    • 中的行

有什么想法吗?谢谢!

0 个答案:

没有答案