否则在Oracle BI Publisher中无法正常工作

我的数据集中有以下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多个源名称,我想简化代码。

知道为什么它不起作用吗?

lovetifa 回答:否则在Oracle BI Publisher中无法正常工作

<?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元素。

//BATCH_SOURCE_NAME='FreightMaster'对于您的数据始终为true,因为在BATCH_SOURCE_NAME='FreightMaster'处存在一行,因此打印<?CT_REFERENCE?>,第一行为空。

在第二种情况下,BATCH_SOURCE_NAME='MIGRATION'始终为真,原因相同,因此现在您为每一行打印INVOICE_NUMBER。结果正确,因为第2行和第3行的INVOICE_NUMBERCT_REFERENCE相同。

本文链接:https://www.f2er.com/3168075.html

大家都在问