否则在Oracle BI Publisher中不起作用

问题描述 投票:0回答:1

我的数据集中有以下XML结构:

<DATA_DS>
<G_1>
<INVOICE_NUMBER>20005</INVOICE_NUMBER>
<BATCH_SOURCE_NAME>MIGRATION</BATCH_SOURCE_NAME>
<CT_REFERENCE/>
</G_1>
<G_1>
<INVOICE_NUMBER>454162</INVOICE_NUMBER>
<BATCH_SOURCE_NAME>FM Source Number</BATCH_SOURCE_NAME>
<CT_REFERENCE>454162</CT_REFERENCE>
</G_1>
<G_1>
<INVOICE_NUMBER>455920</INVOICE_NUMBER>
<BATCH_SOURCE_NAME>FM Source Number</BATCH_SOURCE_NAME>
<CT_REFERENCE>455920</CT_REFERENCE>
</G_1>
</DATA_DS>

我在表的FOR-EACH内的RTF模板中放置了以下逻辑:

<?choose:?>
<?when://BATCH_SOURCE_NAME='FreightMaster'?><?CT_REFERENCE?><?end when?>
<?when://BATCH_SOURCE_NAME='FreightMaster-deactivated'?><?CT_REFERENCE?><?end when?>
<?when://BATCH_SOURCE_NAME='FM Source Number'?><?CT_REFERENCE?><?end when?>
<?otherwise:?><?INVOICE_NUMBER?><?end otherwise?>
<?end choose?>

但是,我的数据无法正确显示。显示为:

Invoice Number
-----------------
<null>
454162
455920

应该是下面的样子:

Invoice Number
-----------------
20005
454162
455920

[当我尝试将MIGRATION定义为选项时,它起作用:

<?choose:?>
<?when://BATCH_SOURCE_NAME='MIGRATION'?><?INVOICE_NUMBER?><?end when?>
<?when://BATCH_SOURCE_NAME='FreightMaster'?><?CT_REFERENCE?><?end when?>
<?when://BATCH_SOURCE_NAME='FreightMaster-deactivated'?><?CT_REFERENCE?><?end when?>
<?when://BATCH_SOURCE_NAME='FM Source Number'?><?CT_REFERENCE?><?end when?>
<?otherwise:?><?INVOICE_NUMBER?><?end otherwise?>
<?end choose?>  

实际输出与预期输出匹配:

Invoice Number
-----------------
20005
454162
455920

我知道我只能在WHEN子句中指定源名称,但是有20多个源名称,我想简化代码。

知道为什么它不起作用?

xml oracle report rtf bi-publisher
1个回答
0
投票
<?choose:?>
   <?when:BATCH_SOURCE_NAME='FreightMaster'?><?CT_REFERENCE?><?end when?>
   <?when:BATCH_SOURCE_NAME='FreightMaster-deactivated'?><?CT_REFERENCE?><?end when?>
   <?when:BATCH_SOURCE_NAME='FM Source Number'?><?CT_REFERENCE?><?end when?>
   <?otherwise:?><?INVOICE_NUMBER?><?end otherwise?>
<?end choose?>

检查XPath reference

虽然您正在执行for-each循环,但//将导航到根,然后仅选择所有BATCH_SOURCE_NAME元素。

© www.soinside.com 2019 - 2024. All rights reserved.