想要在 RTF BI PUBLISHER 中对记录执行 for 循环时打印相同级别的标签?

Want to print same level tag while doing a for loop over a record in RTF BI PUBLISHER?

<LEVEL>
 <PARENT>
    <CHILD>A</CHILD>
 </PARENT>
 <SECTOR>1</SECTOR>
 <PARENT>
    <CHILD>B</CHILD>
 </PARENT>
 <SECTOR>2</SECTOR>
 <PARENT>
    <CHILD>C</CHILD>
 </PARENT>
 <SECTOR>3</SECTOR>
</LEVEL>

嗨,我正在为每个 'PARENT' 做一个 for each 循环,但也想为每个循环打印 SECTOR。我尝试执行 ../SECTOR 但它重复了相同的 SECTOR。

所需输出:

         CHILD              SECTOR

第一个循环:A 1 第二圈:B 2 第三个循环:C 3

我得到的当前输出:

         CHILD              SECTOR

第一个循环:A 1 第二圈:B 1 第三个循环:C 1

可以吗help/suggest?

您似乎依赖于 PARENT 元素和 SECTOR 元素在 XML 中出现的顺序,这并不理想。如果 PARENT 元素与 SECTOR 元素相关,其中一个应该在另一个中。

话虽如此,您可以 select 像这样对元素进行迭代:

<?SECTOR[1]?> 

其中 1 是第一次迭代。因此,如果您使用 [2],它将 select 第二次迭代的值。但是您希望它是动态的,所以我们不能对迭代次数进行硬编码。

结合一个变量来计算你正在进行的迭代,这是解决方案:

<?for-each:LEVEL?>
<?xdoxslt:set_variable($_XDOCTX,'COUNTER', 1)?>
<?for-each:PARENT?>
Child: <?CHILD?>
Sector:<?../SECTOR[xdoxslt:get_variable($_XDOCTX, 'COUNTER')]?>
<?xdoxslt:set_variable($_XDOCTX, 'COUNTER', xdoxslt:get_variable($_XDOCTX, 'COUNTER') + 1)?>
<?end for each?> 
<?end for each?>

我强烈建议更改 XML 来解决您的问题,而不是依赖元素的正确顺序。