使用XSLT将具有相同属性的XML输出到CSV文件的多行中

kg7wmglp  于 2022-12-15  发布在  其他
关注(0)|答案(1)|浏览(116)

我有相同属性但不同值的XML。每个不同的值都应该使用XSLT作为CSV输出文件中的一行输出。下面是XML。对于每个佩西:priorValue字段,我需要在CSV文件中的行中输出先前值和当前值。

<?xml version='1.0' encoding='UTF-8'?>
<peci:Workers_Effective_Stack xmlns:peci="urn:com.workday/peci">
    <peci:Worker>
        <peci:Effective_Change peci:Sequence="0">
            <peci:Derived_Event_Code>DTA</peci:Derived_Event_Code>
            <peci:Effective_Moment>2022-12-12T00:00:00.000-08:00</peci:Effective_Moment>
            <peci:Entry_Moment>2022-12-14T05:32:34.114-08:00</peci:Entry_Moment>
            <peci:Worker_Status>
                <peci:Status>Active</peci:Status>
                <peci:Active>1</peci:Active>
                <peci:Active_Status_Date>2022-08-01-07:00</peci:Active_Status_Date>
                <peci:Terminated>0</peci:Terminated>
                <peci:Hire_Date>2022-08-01-07:00</peci:Hire_Date>
            </peci:Worker_Status>
            <peci:Compensation peci:isUpdated="1">
                <peci:Position_ID>xyz</peci:Position_ID>
                <peci:Compensation_Grade>Salary</peci:Compensation_Grade>
                <peci:Compensation_Change_Reason peci:priorValue="Change_Location">COLA</peci:Compensation_Change_Reason>
                <peci:Compensation_Summary_in_Annualized_Frequency peci:isUpdated="1">
                    <peci:Total_Base_Pay peci:priorValue="8000">12000</peci:Total_Base_Pay>
                    <peci:Currency>USD</peci:Currency>
                </peci:Compensation_Summary_in_Annualized_Frequency>
                <peci:Compensation_Summary_in_Pay_Group_Frequency>
                    <peci:Frequency>Monthly</peci:Frequency>
                </peci:Compensation_Summary_in_Pay_Group_Frequency>
            </peci:Compensation>
        </peci:Effective_Change>
    </peci:Worker>
</peci:Workers_Effective_Stack>

我的输出应该是

John Doe, Change_Location, COLA
John Doe, 8000, 12000

如何才能做到这一点呢?我是XSLT新手,所以在这方面很吃力。
我得到了这样的输出

John Doe, Change_Location 8000, COLA 12000
5us2dqdw

5us2dqdw1#

使用XPath?

//*[@*[local-name()="priorValue"]]/string-join(
    (
        "John Doe",
        @*[local-name()="priorValue"],
        text()
    ),
    ", "
)
John Doe, Change_Location, COLA
John Doe, 8000, 12000

相关问题