oracle - 在 BI Publisher RTF 模板的子重复部分中引用父组项
问题描述
我的项目需要能够在子组的重复部分中引用父组中的字段。这是设置。我已经标记了每个位置:AB 和 C 用于我自己的测试目的。D 是实际需要打印的那个。A 是唯一实际会打印的。令人困惑的部分是“for-each-check”组在每个 Q_P58W1 上循环,P58WCHCK 是其中的成员,但它只在该组之外打印。
作为记录,每个 for-each 组之后的代码在实际文档中并不存在,我只是将其粘贴在那里以清楚分组结构的工作原理。
这是我正在使用的 xml 的副本(已编辑以删除敏感信息):
<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Oracle BI Publisher 12.2.1.3.0 -Dataengine, datamodel:_ICIM_DM_P58R01_DM_xdm -->
<DATA_DS><P_JNO_IN>271720364</P_JNO_IN>
<Q_A01F>
<A01SEQ>1</A01SEQ><VOID_LINE1>VOID VOID VOID VOID VOID</VOID_LINE1><VOID_LINE2> VOID VOID VOID VOID</VOID_LINE2><LOCATION_IN>0005</LOCATION_IN><AHL1>03</AHL1><ACCOUNT_IN>290</ACCOUNT_IN>
<Q_P58W1>
<P58WCHCK>09077475</P58WCHCK>
<G_1>
<P58WVENNO>93373</P58WVENNO><P58WNAME1>FASTSIGNS</P58WNAME1><P58WADR1></P58WADR1><P58WCSZ></P58WCSZ><P58WPAYN>$12.00</P58WPAYN><P58WPAYW1>Twelve Dollars and 00 Cents*****</P58WPAYW1><P58WGAMT>12</P58WGAMT><P58WDAMT>0</P58WDAMT><P58WNAMT>12</P58WNAMT><P58WCDATE>11 21 19</P58WCDATE><C_PRT_CHK></C_PRT_CHK><PAY_WORDS1>Twelve Dollars and 00 Cents*****</PAY_WORDS1><ADR_LINE1>FASTSIGNS</ADR_LINE1><ADR_LINE3></ADR_LINE3><ADR_LINE6></ADR_LINE6><ACCOUNT_NAME></ACCOUNT_NAME><COUNTRY></COUNTRY><ADDRESS1></ADDRESS1><ADDRESS2></ADDRESS2><ADDRESS3>VOID VOID VOID</ADDRESS3><CITY></CITY><STATE></STATE><ZIP></ZIP><DUMMY_FLAG>DUMMY</DUMMY_FLAG><LOGO_FLAG></LOGO_FLAG><ADR_LINES>FASTSIGNS
</ADR_LINES>
<Q_P58W2>
<P58WINVNO>12</P58WINVNO><P58WVOUCH>637866</P58WVOUCH><P58WIDATE>2019-11-22T00:00:00.000-06:00</P58WIDATE><P58WGAMT>12</P58WGAMT><P58WDAMT>0</P58WDAMT><P58WNAMT>12</P58WNAMT><C_PRT_DATE>11/22/19</C_PRT_DATE>
</Q_P58W2>
<C_PRT_PAY_TOT>$12.00</C_PRT_PAY_TOT>
<CS_NUM_VOUCHERS>1</CS_NUM_VOUCHERS>
</G_1>
<G_1>
<P58WVENNO>93373</P58WVENNO><P58WNAME1>FASTSIGNS</P58WNAME1><P58WADR1></P58WADR1><P58WCSZ></P58WCSZ><P58WPAYN>$12.00</P58WPAYN><P58WPAYW1>Twelve Dollars and 00 Cents*****</P58WPAYW1><P58WGAMT>12</P58WGAMT><P58WDAMT>0</P58WDAMT><P58WNAMT>12</P58WNAMT><P58WCDATE>11 21 19</P58WCDATE><C_PRT_CHK></C_PRT_CHK><PAY_WORDS1>Twelve Dollars and 00 Cents*****</PAY_WORDS1><ADR_LINE1>FASTSIGNS</ADR_LINE1><ADR_LINE3></ADR_LINE3><ADR_LINE6></ADR_LINE6><ACCOUNT_NAME></ACCOUNT_NAME><ACCOUNT_NUMBER></ACCOUNT_NUMBER><ROUTING_NUMBER></ROUTING_NUMBER><COUNTRY></COUNTRY><ADDRESS1></ADDRESS1><ADDRESS2></ADDRESS2><ADDRESS3>VOID VOID VOID</ADDRESS3><CITY></CITY><STATE></STATE><ZIP></ZIP><DUMMY_FLAG>NORMAL</DUMMY_FLAG><LOGO_FLAG></LOGO_FLAG><ADR_LINES>FASTSIGNS
</ADR_LINES>
<Q_P58W2>
<P58WINVNO>12</P58WINVNO><P58WVOUCH>637866</P58WVOUCH><P58WIDATE>2019-11-22T00:00:00.000-06:00</P58WIDATE><P58WGAMT>12</P58WGAMT><P58WDAMT>0</P58WDAMT><P58WNAMT>12</P58WNAMT><C_PRT_DATE>11/22/19</C_PRT_DATE>
</Q_P58W2>
<C_PRT_PAY_TOT>$12.00</C_PRT_PAY_TOT>
<CS_NUM_VOUCHERS>1</CS_NUM_VOUCHERS>
</G_1>
</Q_P58W1>
</Q_A01F>
<CF_PROPERTIES>
<REPORT_NAME>P58R01</REPORT_NAME><REPORT_DESCRIPTION>Check Print And Update</REPORT_DESCRIPTION><VERSION_NUMBER>V11.0.001</VERSION_NUMBER><DATABASE_NAME>DEV</DATABASE_NAME><USER_NAME></USER_NAME><RUN_DATE>2019-11-22T10:39:20.000-06:00</RUN_DATE>
</CF_PROPERTIES>
</DATA_DS>
解决方案
很难确切地说出你想要什么,但我想我明白了。只需../
为您要向上移动的每个级别使用 a 。
XML 示例:
<LIST_PARENT>
<PARENT>
<PARENT_NUMBER>1</PARENT_NUMBER>
<PARENT_ATTRIBUTE>A</PARENT_ATTRIBUTE>
<LIST_CHILD>
<CHILD>
<CHILD_NUMBER>1</CHILD_NUMBER>
<CHILD_ATTRIBUTE>A</CHILD_ATTRIBUTE>
</CHILD>
<CHILD>
<CHILD_NUMBER>2</CHILD_NUMBER>
<CHILD_ATTRIBUTE>B</CHILD_ATTRIBUTE>
</CHILD>
</LIST_CHILD>
</PARENT>
<PARENT>
<PARENT_NUMBER>2</PARENT_NUMBER>
<PARENT_ATTRIBUTE>B</PARENT_ATTRIBUTE>
<LIST_CHILD>
<CHILD>
<CHILD_NUMBER>1</CHILD_NUMBER>
<CHILD_ATTRIBUTE>A</CHILD_ATTRIBUTE>
</CHILD>
<CHILD>
<CHILD_NUMBER>2</CHILD_NUMBER>
<CHILD_ATTRIBUTE>B</CHILD_ATTRIBUTE>
</CHILD>
</LIST_CHILD>
</PARENT>
</LIST_PARENT>
RTF 代码:
<for-each:PARENT>
Parent Number: <PARENT_NUMBER>
Parent Attribute: <PARENT_ATTRIBUTE>
<for-each:CHILD>
Child Number: <CHILD_NUMBER>
Child Attribute: <CHILD_ATTRIBUTE>
Parent Number: <../../PARENT_ATTRIBUTE>
<end for-each>
<end for-each>
推荐阅读
- driver - 如何识别 i2c 地址的设备?
- java - 葡萄牙语字符(如ã、ó)读作“?” 当我升级到 ojdbc8.jar 时从数据库中获取。它与 ojdbc6.jar 一起正常工作。使用JBoss7.0
- apache-kafka - Kafka-console-producer 返回主题超时错误
- java - 如何在线保存/备份每个用户 ROOM 数据库的内容?
- sql-server - 如何在 SQL Server 的 varchar 列中替换/删除后跟数字的子字符串?
- javascript - 在 TS 中使用可为空的类型
- javascript - 不在视口中时移除元素
- python - 有没有一种简单的方法可以从文本文件读取到这个漂亮的汤库 python 脚本?
- python - metrics.precison_score-TypeError: len() of unsized object
- java - 有没有办法一次重置 SQLite 表中的所有变量?