想要在 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 来解决您的问题,而不是依赖元素的正确顺序。
<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 来解决您的问题,而不是依赖元素的正确顺序。