Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取/使用具有多行的XML元素的分组_Xml_Xslt_Xpath_Xquery_Bi Publisher - Fatal编程技术网

如何获取/使用具有多行的XML元素的分组

如何获取/使用具有多行的XML元素的分组,xml,xslt,xpath,xquery,bi-publisher,Xml,Xslt,Xpath,Xquery,Bi Publisher,我正在尝试创建Oracle BI Publisher报告(使用Microsoft Word插件)。报告是从PeopleSoft创建的XML文件创建的。XML文件包含许多行(我已经包含了一些示例数据)。我有一个名为a.OFFER\u AMT的字段,我试图为另一个名为a.DESCRSHORT='SignOn'的行显示此字段,以及在a.DESCRSHORT='BaseSalary'时显示此字段。因此,我试图显示来自A.DESCRSHORT的两个不同的值,我想我需要使用某种分组,但我尝试了一些不同的插件

我正在尝试创建Oracle BI Publisher报告(使用Microsoft Word插件)。报告是从PeopleSoft创建的XML文件创建的。XML文件包含许多行(我已经包含了一些示例数据)。我有一个名为
a.OFFER\u AMT
的字段,我试图为另一个名为
a.DESCRSHORT='SignOn'
的行显示此字段,以及在
a.DESCRSHORT='BaseSalary'
时显示此字段。因此,我试图显示来自
A.DESCRSHORT
的两个不同的值,我想我需要使用某种分组,但我尝试了一些不同的插件分组,并且只能获得从查询值获取的第一行以显示在报告输出上

我在模板中添加了
IF
条件语句,在我试图获取特定值的文本块中,但是当我预览报告时,我只从第一行获取数据。谢谢你的帮助

<?xml version='1.0'?>
<query numrows="3" queryname="GH3_HRS_OFFER_DS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="">
<row rownumber="1">
<A.HRS_PERSON_ID>5773</A.HRS_PERSON_ID>
<A.HRS_RCMNT_ID>303670</A.HRS_RCMNT_ID>
<A.HRS_OFF_ID>7527</A.HRS_OFF_ID>
<A.POSITION_NBR><![CDATA[41622315]]></A.POSITION_NBR>
<A.OFFER_DT>2019-11-21</A.OFFER_DT>
<A.HRS_PROP_ST_DT>2019-12-01</A.HRS_PROP_ST_DT>
<A.HRS_OFR_DT_EXP>2019-11-28</A.HRS_OFR_DT_EXP>
<A.HRS_ONLN_OFR_POSTD><![CDATA[]]></A.HRS_ONLN_OFR_POSTD>
<A.JOBCODE><![CDATA[3902]]></A.JOBCODE>
<A.HRS_HIRING_MGR_ID><![CDATA[CH602575]]></A.HRS_HIRING_MGR_ID>
<A.RECRUITER_ID><![CDATA[552717]]></A.RECRUITER_ID>
<A.WC_COUNCIL_ID><![CDATA[]]></A.WC_COUNCIL_ID>
<A.OFFER_AMT>37</A.OFFER_AMT>
<A.CURRENCY_CD><![CDATA[USD]]></A.CURRENCY_CD>
<A.OFFER_FREQUENCY><![CDATA[H]]></A.OFFER_FREQUENCY>
<A.ERNCD><![CDATA[]]></A.ERNCD>
<A.EARNS_AMT>0</A.EARNS_AMT>
<A.LOCATION><![CDATA[]]></A.LOCATION>
<A.OFFER_COMPONENT><![CDATA[BASSAL]]></A.OFFER_COMPONENT>
<A.EFFDT>1901-01-01</A.EFFDT>
<A.DESCR50_1><![CDATA[Base Salary]]></A.DESCR50_1>
<A.DESCRSHORT><![CDATA[BaseSalary]]></A.DESCRSHORT>
<A.OFFER_TYPE><![CDATA[BAS SAL]]></A.OFFER_TYPE>
<A.MONETARY_IND><![CDATA[Y]]></A.MONETARY_IND>
<A.APP_PER_STATUS><![CDATA[A]]></A.APP_PER_STATUS>
<A.EMPLID><![CDATA[709741]]></A.EMPLID>
<A.HRS_EXT_TRN><![CDATA[N]]></A.HRS_EXT_TRN>
<A.POI_TYPE><![CDATA[00000]]></A.POI_TYPE>
<A.COUNTRY_NM_FORMAT><![CDATA[001]]></A.COUNTRY_NM_FORMAT>
<A.NAME><![CDATA[Sara Simplehead]]></A.NAME>
<A.NAME_INITIALS><![CDATA[]]></A.NAME_INITIALS>
<A.NAME_PREFIX><![CDATA[]]></A.NAME_PREFIX>
<A.NAME_SUFFIX><![CDATA[]]></A.NAME_SUFFIX>
<A.NAME_ROYAL_PREFIX><![CDATA[]]></A.NAME_ROYAL_PREFIX>
<A.NAME_TITLE><![CDATA[]]></A.NAME_TITLE>
<A.LAST_NAME><![CDATA[Simplehead]]></A.LAST_NAME>
<A.FIRST_NAME><![CDATA[Sara]]></A.FIRST_NAME>
<A.MIDDLE_NAME><![CDATA[A.]]></A.MIDDLE_NAME>
<A.NAME_DISPLAY><![CDATA[Sara Simplehead]]></A.NAME_DISPLAY>
<A.NAME_FORMAL><![CDATA[Sara Simplehead]]></A.NAME_FORMAL>
<A.ADDRESS_TYPE><![CDATA[HOME]]></A.ADDRESS_TYPE>
<A.COUNTRY><![CDATA[USA]]></A.COUNTRY>
<A.ADDRESS1><![CDATA[140 test drive]]></A.ADDRESS1>
<A.ADDRESS2><![CDATA[]]></A.ADDRESS2>
<A.ADDRESS3><![CDATA[]]></A.ADDRESS3>
<A.ADDRESS4><![CDATA[]]></A.ADDRESS4>
<A.CITY><![CDATA[anytown]]></A.CITY>
<A.NUM1><![CDATA[]]></A.NUM1>
<A.NUM2><![CDATA[]]></A.NUM2>
<A.HOUSE_TYPE><![CDATA[]]></A.HOUSE_TYPE>
<A.COUNTY><![CDATA[chemung]]></A.COUNTY>
<A.STATE><![CDATA[NY]]></A.STATE>
<A.POSTAL><![CDATA[14845]]></A.POSTAL>
<A.DESCR><![CDATA[New York]]></A.DESCR>
<A.SEQUENCE_NUMBER>2</A.SEQUENCE_NUMBER>
<A.HRS_DESCR><![CDATA[Cash]]></A.HRS_DESCR>
<A.HRS_JOB_OPENING_ID>115298</A.HRS_JOB_OPENING_ID>
<A.DESCR1><![CDATA[Anytown Hospital]]></A.DESCR1>
<A.ADDRESS1_2><![CDATA[One Test Drive]]></A.ADDRESS1_2>
<A.CITY2><![CDATA[Anytown]]></A.CITY2>
<A.STATE2><![CDATA[NY]]></A.STATE2>
<A.POSTAL2><![CDATA[14830]]></A.POSTAL2>
<A.DESCR2><![CDATA[Registered Nurse]]></A.DESCR2>
<A.DESCR3><![CDATA[Nursing Unit - LDRP]]></A.DESCR3>
<A.CASE_IDENTIFIER><![CDATA[Full Time]]></A.CASE_IDENTIFIER>
<A.STATUS_DT>2017-02-07</A.STATUS_DT>
<A.NAME52><![CDATA[Susie Smith]]></A.NAME52>
<A.JOBTITLE><![CDATA[Sr. Recruiter]]></A.JOBTITLE>
<A.CASE_NUMBER_AUS><![CDATA[Non-exempt]]></A.CASE_NUMBER_AUS>
<A.CASE_NUMBER_NZL><![CDATA[ ###-###-###]]></A.CASE_NUMBER_NZL>
<A.STD_HOURS>36</A.STD_HOURS>
<A.GRADE><![CDATA[99]]></A.GRADE>
<A.STD_HOURS_NEW>.9</A.STD_HOURS_NEW>
<A.GH_SESSION_DATE></A.GH_SESSION_DATE>
<A.SAL_ADMIN_PLAN><![CDATA[UNH]]></A.SAL_ADMIN_PLAN>
<A.STEP_FROM>0</A.STEP_FROM>
<A.DATE>2019-11-22</A.DATE>
</row>
<row rownumber="2">
<A.HRS_PERSON_ID>5773</A.HRS_PERSON_ID>
<A.HRS_RCMNT_ID>303670</A.HRS_RCMNT_ID>
<A.HRS_OFF_ID>7527</A.HRS_OFF_ID>
<A.POSITION_NBR><![CDATA[41622315]]></A.POSITION_NBR>
<A.OFFER_DT>2019-11-21</A.OFFER_DT>
<A.HRS_PROP_ST_DT>2019-12-01</A.HRS_PROP_ST_DT>
<A.HRS_OFR_DT_EXP>2019-11-28</A.HRS_OFR_DT_EXP>
<A.HRS_ONLN_OFR_POSTD><![CDATA[]]></A.HRS_ONLN_OFR_POSTD>
<A.JOBCODE><![CDATA[3902]]></A.JOBCODE>
<A.HRS_HIRING_MGR_ID><![CDATA[CH602575]]></A.HRS_HIRING_MGR_ID>
<A.RECRUITER_ID><![CDATA[552717]]></A.RECRUITER_ID>
<A.WC_COUNCIL_ID><![CDATA[]]></A.WC_COUNCIL_ID>
<A.OFFER_AMT>36.5</A.OFFER_AMT>
<A.CURRENCY_CD><![CDATA[USD]]></A.CURRENCY_CD>
<A.OFFER_FREQUENCY><![CDATA[H]]></A.OFFER_FREQUENCY>
<A.ERNCD><![CDATA[]]></A.ERNCD>
<A.EARNS_AMT>0</A.EARNS_AMT>
<A.LOCATION><![CDATA[]]></A.LOCATION>
<A.OFFER_COMPONENT><![CDATA[PROB]]></A.OFFER_COMPONENT>
<A.EFFDT>1903-01-01</A.EFFDT>
<A.DESCR50_1><![CDATA[Probationary Rate]]></A.DESCR50_1>
<A.DESCRSHORT><![CDATA[Probationa]]></A.DESCRSHORT>
<A.OFFER_TYPE><![CDATA[PROB]]></A.OFFER_TYPE>
<A.MONETARY_IND><![CDATA[Y]]></A.MONETARY_IND>
<A.APP_PER_STATUS><![CDATA[A]]></A.APP_PER_STATUS>
<A.EMPLID><![CDATA[709741]]></A.EMPLID>
<A.HRS_EXT_TRN><![CDATA[N]]></A.HRS_EXT_TRN>
<A.POI_TYPE><![CDATA[00000]]></A.POI_TYPE>
<A.COUNTRY_NM_FORMAT><![CDATA[001]]></A.COUNTRY_NM_FORMAT>
<A.NAME><![CDATA[Sara Simplehead]]></A.NAME>
<A.NAME_INITIALS><![CDATA[]]></A.NAME_INITIALS>
<A.NAME_PREFIX><![CDATA[]]></A.NAME_PREFIX>
<A.NAME_SUFFIX><![CDATA[]]></A.NAME_SUFFIX>
<A.NAME_ROYAL_PREFIX><![CDATA[]]></A.NAME_ROYAL_PREFIX>
<A.NAME_TITLE><![CDATA[]]></A.NAME_TITLE>
<A.LAST_NAME><![CDATA[Simplehead]]></A.LAST_NAME>
<A.FIRST_NAME><![CDATA[Sara]]></A.FIRST_NAME>
<A.MIDDLE_NAME><![CDATA[A.]]></A.MIDDLE_NAME>
<A.NAME_DISPLAY><![CDATA[Sara Simplehead]]></A.NAME_DISPLAY>
<A.NAME_FORMAL><![CDATA[Sara Simplehead]]></A.NAME_FORMAL>
<A.ADDRESS_TYPE><![CDATA[HOME]]></A.ADDRESS_TYPE>
<A.COUNTRY><![CDATA[USA]]></A.COUNTRY>
<A.ADDRESS1><![CDATA[140 test drive]]></A.ADDRESS1>
<A.ADDRESS2><![CDATA[]]></A.ADDRESS2>
<A.ADDRESS3><![CDATA[]]></A.ADDRESS3>
<A.ADDRESS4><![CDATA[]]></A.ADDRESS4>
<A.CITY><![CDATA[anytown]]></A.CITY>
<A.NUM1><![CDATA[]]></A.NUM1>
<A.NUM2><![CDATA[]]></A.NUM2>
<A.HOUSE_TYPE><![CDATA[]]></A.HOUSE_TYPE>
<A.COUNTY><![CDATA[chemung]]></A.COUNTY>
<A.STATE><![CDATA[NY]]></A.STATE>
<A.POSTAL><![CDATA[14845]]></A.POSTAL>
<A.DESCR><![CDATA[New York]]></A.DESCR>
<A.SEQUENCE_NUMBER>1</A.SEQUENCE_NUMBER>
<A.HRS_DESCR><![CDATA[Cash]]></A.HRS_DESCR>
<A.HRS_JOB_OPENING_ID>115298</A.HRS_JOB_OPENING_ID>
<A.DESCR1><![CDATA[Anytown Hospital]]></A.DESCR1>
<A.ADDRESS1_2><![CDATA[One Test Drive]]></A.ADDRESS1_2>
<A.CITY2><![CDATA[Anytown]]></A.CITY2>
<A.STATE2><![CDATA[NY]]></A.STATE2>
<A.POSTAL2><![CDATA[14830]]></A.POSTAL2>
<A.DESCR2><![CDATA[Registered Nurse]]></A.DESCR2>
<A.DESCR3><![CDATA[Nursing Unit - LDRP]]></A.DESCR3>
<A.CASE_IDENTIFIER><![CDATA[Full Time]]></A.CASE_IDENTIFIER>
<A.STATUS_DT>2017-02-07</A.STATUS_DT>
<A.NAME52><![CDATA[Susie Smith]]></A.NAME52>
<A.JOBTITLE><![CDATA[Sr. Recruiter]]></A.JOBTITLE>
<A.CASE_NUMBER_AUS><![CDATA[Non-exempt]]></A.CASE_NUMBER_AUS>
<A.CASE_NUMBER_NZL><![CDATA[ ###-###-###]]></A.CASE_NUMBER_NZL>
<A.STD_HOURS>36</A.STD_HOURS>
<A.GRADE><![CDATA[99]]></A.GRADE>
<A.STD_HOURS_NEW>.9</A.STD_HOURS_NEW>
<A.GH_SESSION_DATE></A.GH_SESSION_DATE>
<A.SAL_ADMIN_PLAN><![CDATA[UNH]]></A.SAL_ADMIN_PLAN>
<A.STEP_FROM>0</A.STEP_FROM>
<A.DATE>2019-11-22</A.DATE>
</row>
<row rownumber="3">
<A.HRS_PERSON_ID>5773</A.HRS_PERSON_ID>
<A.HRS_RCMNT_ID>303670</A.HRS_RCMNT_ID>
<A.HRS_OFF_ID>7527</A.HRS_OFF_ID>
<A.POSITION_NBR><![CDATA[41622315]]></A.POSITION_NBR>
<A.OFFER_DT>2019-11-21</A.OFFER_DT>
<A.HRS_PROP_ST_DT>2019-12-01</A.HRS_PROP_ST_DT>
<A.HRS_OFR_DT_EXP>2019-11-28</A.HRS_OFR_DT_EXP>
<A.HRS_ONLN_OFR_POSTD><![CDATA[]]></A.HRS_ONLN_OFR_POSTD>
<A.JOBCODE><![CDATA[3902]]></A.JOBCODE>
<A.HRS_HIRING_MGR_ID><![CDATA[CH602575]]></A.HRS_HIRING_MGR_ID>
<A.RECRUITER_ID><![CDATA[552717]]></A.RECRUITER_ID>
<A.WC_COUNCIL_ID><![CDATA[]]></A.WC_COUNCIL_ID>
<A.OFFER_AMT>5000</A.OFFER_AMT>
<A.CURRENCY_CD><![CDATA[USD]]></A.CURRENCY_CD>
<A.OFFER_FREQUENCY><![CDATA[O]]></A.OFFER_FREQUENCY>
<A.ERNCD><![CDATA[]]></A.ERNCD>
<A.EARNS_AMT>0</A.EARNS_AMT>
<A.LOCATION><![CDATA[]]></A.LOCATION>
<A.OFFER_COMPONENT><![CDATA[SIGNON]]></A.OFFER_COMPONENT>
<A.EFFDT>1901-01-01</A.EFFDT>
<A.DESCR50_1><![CDATA[Sign On Bonus]]></A.DESCR50_1>
<A.DESCRSHORT><![CDATA[SignOn]]></A.DESCRSHORT>
<A.OFFER_TYPE><![CDATA[SIGNON]]></A.OFFER_TYPE>
<A.MONETARY_IND><![CDATA[Y]]></A.MONETARY_IND>
<A.APP_PER_STATUS><![CDATA[A]]></A.APP_PER_STATUS>
<A.EMPLID><![CDATA[709741]]></A.EMPLID>
<A.HRS_EXT_TRN><![CDATA[N]]></A.HRS_EXT_TRN>
<A.POI_TYPE><![CDATA[00000]]></A.POI_TYPE>
<A.COUNTRY_NM_FORMAT><![CDATA[001]]></A.COUNTRY_NM_FORMAT>
<A.NAME><![CDATA[Sara Simplehead]]></A.NAME>
<A.NAME_INITIALS><![CDATA[]]></A.NAME_INITIALS>
<A.NAME_PREFIX><![CDATA[]]></A.NAME_PREFIX>
<A.NAME_SUFFIX><![CDATA[]]></A.NAME_SUFFIX>
<A.NAME_ROYAL_PREFIX><![CDATA[]]></A.NAME_ROYAL_PREFIX>
<A.NAME_TITLE><![CDATA[]]></A.NAME_TITLE>
<A.LAST_NAME><![CDATA[Simplehead]]></A.LAST_NAME>
<A.FIRST_NAME><![CDATA[Sara]]></A.FIRST_NAME>
<A.MIDDLE_NAME><![CDATA[A.]]></A.MIDDLE_NAME>
<A.NAME_DISPLAY><![CDATA[Sara Simplehead]]></A.NAME_DISPLAY>
<A.NAME_FORMAL><![CDATA[Sara Simplehead]]></A.NAME_FORMAL>
<A.ADDRESS_TYPE><![CDATA[HOME]]></A.ADDRESS_TYPE>
<A.COUNTRY><![CDATA[USA]]></A.COUNTRY>
<A.ADDRESS1><![CDATA[140 test drive]]></A.ADDRESS1>
<A.ADDRESS2><![CDATA[]]></A.ADDRESS2>
<A.ADDRESS3><![CDATA[]]></A.ADDRESS3>
<A.ADDRESS4><![CDATA[]]></A.ADDRESS4>
<A.CITY><![CDATA[anytown]]></A.CITY>
<A.NUM1><![CDATA[]]></A.NUM1>
<A.NUM2><![CDATA[]]></A.NUM2>
<A.HOUSE_TYPE><![CDATA[]]></A.HOUSE_TYPE>
<A.COUNTY><![CDATA[chemung]]></A.COUNTY>
<A.STATE><![CDATA[NY]]></A.STATE>
<A.POSTAL><![CDATA[14845]]></A.POSTAL>
<A.DESCR><![CDATA[New York]]></A.DESCR>
<A.SEQUENCE_NUMBER>3</A.SEQUENCE_NUMBER>
<A.HRS_DESCR><![CDATA[Cash]]></A.HRS_DESCR>
<A.HRS_JOB_OPENING_ID>115298</A.HRS_JOB_OPENING_ID>
<A.DESCR1><![CDATA[Anytown Hospital]]></A.DESCR1>
<A.ADDRESS1_2><![CDATA[One Test Drive]]></A.ADDRESS1_2>
<A.CITY2><![CDATA[Anytown]]></A.CITY2>
<A.STATE2><![CDATA[NY]]></A.STATE2>
<A.POSTAL2><![CDATA[14830]]></A.POSTAL2>
<A.DESCR2><![CDATA[Registered Nurse]]></A.DESCR2>
<A.DESCR3><![CDATA[Nursing Unit - LDRP]]></A.DESCR3>
<A.CASE_IDENTIFIER><![CDATA[Full Time]]></A.CASE_IDENTIFIER>
<A.STATUS_DT>2017-02-07</A.STATUS_DT>
<A.NAME52><![CDATA[Susie Smith]]></A.NAME52>
<A.JOBTITLE><![CDATA[Sr. Recruiter]]></A.JOBTITLE>
<A.CASE_NUMBER_AUS><![CDATA[Non-exempt]]></A.CASE_NUMBER_AUS>
<A.CASE_NUMBER_NZL><![CDATA[ ###-###-###]]></A.CASE_NUMBER_NZL>
<A.STD_HOURS>36</A.STD_HOURS>
<A.GRADE><![CDATA[99]]></A.GRADE>
<A.STD_HOURS_NEW>.9</A.STD_HOURS_NEW>
<A.GH_SESSION_DATE></A.GH_SESSION_DATE>
<A.SAL_ADMIN_PLAN><![CDATA[UNH]]></A.SAL_ADMIN_PLAN>
<A.STEP_FROM>0</A.STEP_FROM>
<A.DATE>2019-11-22</A.DATE>
</row>
</query>

更新:

我现在已经有多行了,但是在下面文本块的输出上,我注意到它将下面的A.OFFER\u AMT字段推到自己的行上,并将段落拆分。我怎样才能解决这个问题?谢谢

模板: 实际输出: 您正在检查
,但在提供的XML示例中,
A.DESCRSHORT
基本工资
试用期A
登录

A.OFFER\u组件
OFFER\u类型
BASSAL
PROB
SIGNON

如果要检查所有行,则需要添加重复组:

<?for-each:row?>
    <?if:A.OFFER_COMPONENT='PROB'?>
        Probationary Rate of Pay: <?A.OFFER_AMT?>
    <?end if?>
    <?if:A.OFFER_COMPONENT='BASSAL'?>
        Base Rate of Pay: <?A.OFFER_AMT?>
    <?end if?>
    <?if:A.OFFER_COMPONENT='SIGNON'?>
        Sign-on Bonus: <?A.OFFER_AMT?>
    <?end if?>
<?end for-each?>

试用工资率:
基本工资率:
登录奖金:
补充意见:
行之间有大量重复数据。在77个字段中,只有6个字段具有与报价相关的唯一数据。考虑在数据中使用父子关系。

< p>对于段落中添加新行的问题,这是由于如果条件发生的。
if
条件始终添加新行。如果要防止这种情况,请使用
if@inlines


其他一些示例

请修复XML数据。这是无效的。有些行以
-
开头。很抱歉,我已经修复了它。谢谢,现在它工作得很好,并且返回了行值!我在上面编辑了一篇文章,其中的一个问题是文本块被条件代码分解了。也许你知道它为什么这么做?再次感谢@要防止条件语句(或任何其他语句)添加换行符,请使用
@inlines
。e、 g.
太棒了,谢谢!我首先尝试了
IF
语句,但它仍然不起作用,因此我也将它应用于每个
组的
,现在它将文本保持在一起。