[英]Otherwise in Oracle BI Publisher not Working
我的数据集中有以下 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>
我已将以下逻辑放在我的 RTF 模板中的 FOR-EACH 中的表中:
<?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?>
实际的 output 与预期的 output 匹配:
Invoice Number
-----------------
20005
454162
455920
我知道我可以在WHEN
子句中指定源名称,但是有 20 多个源名称,我想简化代码。
知道为什么它不起作用吗?
<?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 参考
即使您正在执行for-each
循环, //
也会导航到根,然后只是 select 所有 BATCH_SOURCE_NAME 元素。
//BATCH_SOURCE_NAME='FreightMaster'
始终适用于您的数据,因为存在BATCH_SOURCE_NAME='FreightMaster'
的行,因此打印<?CT_REFERENCE?>
,即第一行的 null。
在第二种情况下BATCH_SOURCE_NAME='MIGRATION'
出于相同的原因始终为 true,因此现在您为每一行打印INVOICE_NUMBER
。 结果是正确的,因为INVOICE_NUMBER
与第 2 行和第 3 行的CT_REFERENCE
相同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.