簡體   English   中英

XSL轉換在格式錯誤的XML輸出的JD Edwards報表上失敗

[英]XSL Transformation fails on JD Edwards report with poorly formed XML output

我需要在JD Edwards for EDI中轉換自定義發票程序的輸出。 從報表中提取的XML數據格式不正確,我正努力重組數據以滿足EDI要求。 我是XSL的新手,所以我一直在嘗試反復嘗試才能得出結果。

我面臨的挑戰之一是報告無法正確構造數據。 發票行不是發票標題的正確后代,如下面的XML輸入所示。 我已經讓開發人員將發票號添加到每個部分,希望我可以基於該發票號來重組數據。

我的問題是,如何更改XSL樣式表代碼,以使輸出匹配我想要的結果,從而創建正確的父/子/兄弟結構?

這是XML輸入:

<R5942015>
    <Main___F4211_F42119_S1>
        <Header_S2>
            <ShipDate_ID11>2016-04-06</ShipDate_ID11>
            <CustomerNumber_ID92>10779</CustomerNumber_ID92>
            <InvoiceDate_ID107>2016-04-07</InvoiceDate_ID107>
            <DealerNumber_ID6>44014104</DealerNumber_ID6>
            <ShipmentNumber_ID70>169638</ShipmentNumber_ID70>
            <InvoiceNumber_ID62>8729266</InvoiceNumber_ID62>
        </Header_S2>
    </Main___F4211_F42119_S1>
    <Main___F4211_F42119_S1>
        <Line_Info_S4>
            <AckLineNumber_D_ID1>13</AckLineNumber_D_ID1>
            <LineExtendedPrice_D_ID8>1230.00</LineExtendedPrice_D_ID8>
            <_nd_Item_Number_D_ID3>010799</_nd_Item_Number_D_ID3>
            <DisplayInvoiceNumber_ID42>8729266</DisplayInvoiceNumber_ID42>
            <LineQuantityShipped_D_ID35>2</LineQuantityShipped_D_ID35>
            <AckLine_Freight_ID21>54.78</AckLine_Freight_ID21>
        </Line_Info_S4>
        <Summary_Info_S8>
            <AckExtendedPrice_T_ID2>1230.00</AckExtendedPrice_T_ID2>
            <Freight_T_ID6>54.78</Freight_T_ID6>
            <GrandTotal_T_ID17>1284.78</GrandTotal_T_ID17>
            <DisplayInvoiceNumber_ID39>8729266</DisplayInvoiceNumber_ID39>
        </Summary_Info_S8>
        <Remit_To_S11>
            <Invoice_No__ID19>Invoice No:</Invoice_No__ID19>
            <DisplayInvoiceNumber_ID18>8729266</DisplayInvoiceNumber_ID18>
            <Service_Charge_Message_ID14>Service charge message...</Service_Charge_Message_ID14>
        </Remit_To_S11>
        <Header_S2>
            <ShipDate_ID11>2016-04-06</ShipDate_ID11>
            <CustomerNumber_ID92>11005</CustomerNumber_ID92>
            <InvoiceDate_ID107>2016-04-07</InvoiceDate_ID107>
            <DealerNumber_ID6>50857355</DealerNumber_ID6>
            <ShipmentNumber_ID70>169638</ShipmentNumber_ID70>
            <InvoiceNumber_ID62>8729267</InvoiceNumber_ID62>
        </Header_S2>
    </Main___F4211_F42119_S1>
    <Main___F4211_F42119_S1>
        <Line_Info_S4>
            <AckLineNumber_D_ID1>3</AckLineNumber_D_ID1>
            <LineExtendedPrice_D_ID8>665.00</LineExtendedPrice_D_ID8>
            <_nd_Item_Number_D_ID3>010512</_nd_Item_Number_D_ID3>
            <DisplayInvoiceNumber_ID42>8729267</DisplayInvoiceNumber_ID42>
            <LineQuantityShipped_D_ID35>1</LineQuantityShipped_D_ID35>
            <AckLine_Freight_ID21>22.64</AckLine_Freight_ID21>
        </Line_Info_S4>
    </Main___F4211_F42119_S1>
    <Main___F4211_F42119_S1>
        <Line_Info_S4>
            <AckLineNumber_D_ID1>4</AckLineNumber_D_ID1>
            <LineExtendedPrice_D_ID8>665.00</LineExtendedPrice_D_ID8>
            <_nd_Item_Number_D_ID3>010512</_nd_Item_Number_D_ID3>
            <DisplayInvoiceNumber_ID42>8729267</DisplayInvoiceNumber_ID42>
            <LineQuantityShipped_D_ID35>1</LineQuantityShipped_D_ID35>
            <AckLine_Freight_ID21>22.64</AckLine_Freight_ID21>
        </Line_Info_S4>
    </Main___F4211_F42119_S1>
    <Main___F4211_F42119_S1>
        <Line_Info_S4>
            <AckLineNumber_D_ID1>5</AckLineNumber_D_ID1>
            <LineExtendedPrice_D_ID8>715.00</LineExtendedPrice_D_ID8>
            <_nd_Item_Number_D_ID3>010512</_nd_Item_Number_D_ID3>
            <DisplayInvoiceNumber_ID42>8729267</DisplayInvoiceNumber_ID42>
            <LineQuantityShipped_D_ID35>1</LineQuantityShipped_D_ID35>
            <AckLine_Freight_ID21>22.64</AckLine_Freight_ID21>
        </Line_Info_S4>
    </Main___F4211_F42119_S1>
    <Main___F4211_F42119_S1>
        <Line_Info_S4>
            <AckLineNumber_D_ID1>11</AckLineNumber_D_ID1>
            <LineExtendedPrice_D_ID8>665.00</LineExtendedPrice_D_ID8>
            <_nd_Item_Number_D_ID3>010512</_nd_Item_Number_D_ID3>
            <DisplayInvoiceNumber_ID42>8729267</DisplayInvoiceNumber_ID42>
            <LineQuantityShipped_D_ID35>1</LineQuantityShipped_D_ID35>
            <AckLine_Freight_ID21>22.64</AckLine_Freight_ID21>
        </Line_Info_S4>
    </Main___F4211_F42119_S1>
    <Main___F4211_F42119_S1>
        <Line_Info_S4>
            <AckLineNumber_D_ID1>21</AckLineNumber_D_ID1>
            <LineExtendedPrice_D_ID8>630.00</LineExtendedPrice_D_ID8>
            <_nd_Item_Number_D_ID3>016799</_nd_Item_Number_D_ID3>
            <DisplayInvoiceNumber_ID42>8729267</DisplayInvoiceNumber_ID42>
            <LineQuantityShipped_D_ID35>1</LineQuantityShipped_D_ID35>
            <AckLine_Freight_ID21>22.64</AckLine_Freight_ID21>
        </Line_Info_S4>
    </Main___F4211_F42119_S1>
    <Main___F4211_F42119_S1>
        <Line_Info_S4>
            <AckLineNumber_D_ID1>23</AckLineNumber_D_ID1>
            <LineExtendedPrice_D_ID8>600.00</LineExtendedPrice_D_ID8>
            <_nd_Item_Number_D_ID3>010765</_nd_Item_Number_D_ID3>
            <DisplayInvoiceNumber_ID42>8729267</DisplayInvoiceNumber_ID42>
            <LineQuantityShipped_D_ID35>1</LineQuantityShipped_D_ID35>
            <AckLine_Freight_ID21>22.64</AckLine_Freight_ID21>
        </Line_Info_S4>
    </Main___F4211_F42119_S1>
    <Main___F4211_F42119_S1>
        <Line_Info_S4>
            <AckLineNumber_D_ID1>24</AckLineNumber_D_ID1>
            <LineExtendedPrice_D_ID8>715.00</LineExtendedPrice_D_ID8>
            <_nd_Item_Number_D_ID3>P10512</_nd_Item_Number_D_ID3>
            <DisplayInvoiceNumber_ID42>8729267</DisplayInvoiceNumber_ID42>
            <LineQuantityShipped_D_ID35>1</LineQuantityShipped_D_ID35>
            <AckLine_Freight_ID21>22.64</AckLine_Freight_ID21>
        </Line_Info_S4>
    </Main___F4211_F42119_S1>
    <Main___F4211_F42119_S1>
        <Line_Info_S4>
            <AckLineNumber_D_ID1>62</AckLineNumber_D_ID1>
            <LineExtendedPrice_D_ID8>630.00</LineExtendedPrice_D_ID8>
            <_nd_Item_Number_D_ID3>016799</_nd_Item_Number_D_ID3>
            <DisplayInvoiceNumber_ID42>8729267</DisplayInvoiceNumber_ID42>
            <LineQuantityShipped_D_ID35>1</LineQuantityShipped_D_ID35>
            <AckLine_Freight_ID21>22.64</AckLine_Freight_ID21>
        </Line_Info_S4>
        <Summary_Info_S8>
            <AckExtendedPrice_T_ID2>5285.00</AckExtendedPrice_T_ID2>
            <Freight_T_ID6>181.12</Freight_T_ID6>
            <GrandTotal_T_ID17>5466.12</GrandTotal_T_ID17>
            <DisplayInvoiceNumber_ID39>8729267</DisplayInvoiceNumber_ID39>
        </Summary_Info_S8>
        <Remit_To_S11>
            <Invoice_No__ID19>Invoice No:</Invoice_No__ID19>
            <DisplayInvoiceNumber_ID18>8729267</DisplayInvoiceNumber_ID18>
            <Service_Charge_Message_ID14>Service charge message...</Service_Charge_Message_ID14>
        </Remit_To_S11>
    </Main___F4211_F42119_S1>
</R5942015>

這是EDI的期望輸出:

<R5942015>
    <Invoices>
        <InvNumber>8729266</InvNumber>
        <InvoiceDate>2016-04-07</InvoiceDate>
        <ShipmentNumber>169638</ShipmentNumber>
        <ShipDate>2016-04-06</ShipDate>
        <CustomerNumber>10779</CustomerNumber>
        <DealerNumber>44014104</DealerNumber>
        <line>
            <ITEMLineNumber>13</ITEMLineNumber>
            <ITEM2ndItemNumber>010799</ITEM2ndItemNumber>
            <QTYShipped>2</QTYShipped>
            <AMTLineExtendedPrice>1230.00</AMTLineExtendedPrice>
            <AMTLandedFreight>54.78</AMTLandedFreight>
        </line>
        <summary>
            <QTYOrdered>2</QTYOrdered>
            <QTYShipped>2</QTYShipped>
            <AMTLandedFreight>54.78</AMTLandedFreight>
            <AMTExtendedPrice>1230.00</AMTExtendedPrice>
            <AMTGrandTotal>1284.78</AMTGrandTotal>
        </summary>
        <messages>
            <MSGServiceCharge>Service charge message...</MSGServiceCharge>
        </messages>
    </Invoices>
    <Invoices>
        <InvNumber>8729267</InvNumber>
        <InvoiceDate>2016-04-07</InvoiceDate>
        <ShipmentNumber>169638</ShipmentNumber>
        <ShipDate>2016-04-06</ShipDate>
        <CustomerNumber>11005</CustomerNumber>
        <DealerNumber>50857355</DealerNumber>
        <line>
            <ITEMLineNumber>3</ITEMLineNumber>
            <ITEM2ndItemNumber>010512</ITEM2ndItemNumber>
            <QTYShipped>1</QTYShipped>
            <AMTLineExtendedPrice>665.00</AMTLineExtendedPrice>
            <AMTLandedFreight>22.64</AMTLandedFreight>
        </line>
        <line>
            <ITEMLineNumber>4</ITEMLineNumber>
            <ITEM2ndItemNumber>010512</ITEM2ndItemNumber>
            <QTYShipped>1</QTYShipped>
            <AMTLineExtendedPrice>665.00</AMTLineExtendedPrice>
            <AMTLandedFreight>22.64</AMTLandedFreight>
        </line>
        <line>
            <ITEMLineNumber>5</ITEMLineNumber>
            <ITEM2ndItemNumber>010512</ITEM2ndItemNumber>
            <QTYShipped>1</QTYShipped>
            <AMTLineExtendedPrice>715.00</AMTLineExtendedPrice>
            <AMTLandedFreight>22.64</AMTLandedFreight>
        </line>
        <line>
            <ITEMLineNumber>11</ITEMLineNumber>
            <ITEM2ndItemNumber>010512</ITEM2ndItemNumber>
            <QTYShipped>1</QTYShipped>
            <AMTLineExtendedPrice>665.00</AMTLineExtendedPrice>
            <AMTLandedFreight>22.64</AMTLandedFreight>
        </line>
        <line>
            <ITEMLineNumber>21</ITEMLineNumber>
            <ITEM2ndItemNumber>016799</ITEM2ndItemNumber>
            <QTYShipped>1</QTYShipped>
            <AMTLineExtendedPrice>630.00</AMTLineExtendedPrice>
            <AMTLandedFreight>22.64</AMTLandedFreight>
        </line>
        <line>
            <ITEMLineNumber>23</ITEMLineNumber>
            <ITEM2ndItemNumber>010765</ITEM2ndItemNumber>
            <QTYShipped>1</QTYShipped>
            <AMTLineExtendedPrice>600.00</AMTLineExtendedPrice>
            <AMTLandedFreight>22.64</AMTLandedFreight>
        </line>
        <line>
            <ITEMLineNumber>24</ITEMLineNumber>
            <ITEM2ndItemNumber>P10512</ITEM2ndItemNumber>
            <QTYShipped>1</QTYShipped>
            <AMTLineExtendedPrice>715.00</AMTLineExtendedPrice>
            <AMTLandedFreight>22.64</AMTLandedFreight>
        </line>
        <line>
            <ITEMLineNumber>62</ITEMLineNumber>
            <ITEM2ndItemNumber>016799</ITEM2ndItemNumber>
            <QTYShipped>1</QTYShipped>
            <AMTLineExtendedPrice>630.00</AMTLineExtendedPrice>
            <AMTLandedFreight>22.64</AMTLandedFreight>
        </line>
        <summary>
            <QTYOrdered>8</QTYOrdered>
            <QTYShipped>8</QTYShipped>
            <AMTLandedFreight>181.12</AMTLandedFreight>
            <AMTExtendedPrice>5285.00</AMTExtendedPrice>
            <AMTGrandTotal>5466.12</AMTGrandTotal>
        </summary>
        <messages>
            <MSGServiceCharge>Service charge message...</MSGServiceCharge>
        </messages>
    </Invoices>
</R5942015>

這是XSL樣式表運行時真正得到的。 第一張發票的明細行,摘要和消息實際上顯示在第二張發票的標題之后。

<R5942015>
    <Invoices>
        <InvNumber>8729266</InvNumber>
        <InvoiceDate>2016-04-07</InvoiceDate>
        <ShipmentNumber>169638</ShipmentNumber>
        <ShipDate>2016-04-06</ShipDate>
        <CustomerNumber>10779</CustomerNumber>
        <DealerNumber>44014104</DealerNumber>
    </Invoices>
    <Invoices>
        <InvNumber>8729267</InvNumber>
        <InvoiceDate>2016-04-07</InvoiceDate>
        <ShipmentNumber>169638</ShipmentNumber>
        <ShipDate>2016-04-06</ShipDate>
        <CustomerNumber>11005</CustomerNumber>
        <DealerNumber>50857355</DealerNumber>
        <line>
            <ITEMLineNumber>13</ITEMLineNumber>
            <ITEM2ndItemNumber>010799</ITEM2ndItemNumber>
            <QTYShipped>2</QTYShipped>
            <AMTLineExtendedPrice>1230.00</AMTLineExtendedPrice>
        </line>
        <summary>
            <QTYOrdered>2</QTYOrdered>
            <QTYShipped>2</QTYShipped>
            <AMTExtendedPrice>1230.00</AMTExtendedPrice>
            <AMTGrandTotal>1284.78</AMTGrandTotal>
        </summary>
        <messages>
            <MSGServiceCharge>Service charge message...</MSGServiceCharge>
        </messages>
        <line>
            <ITEMLineNumber>3</ITEMLineNumber>
            <ITEM2ndItemNumber>010512</ITEM2ndItemNumber>
            <QTYShipped>1</QTYShipped>
            <AMTLineExtendedPrice>665.00</AMTLineExtendedPrice>
            <AMTLandedFreight>22.64</AMTLandedFreight>
        </line>
        <line>
            <ITEMLineNumber>4</ITEMLineNumber>
            <ITEM2ndItemNumber>010512</ITEM2ndItemNumber>
            <QTYShipped>1</QTYShipped>
            <AMTLineExtendedPrice>665.00</AMTLineExtendedPrice>
            <AMTLandedFreight>22.64</AMTLandedFreight>
        </line>
        <line>
            <ITEMLineNumber>5</ITEMLineNumber>
            <ITEM2ndItemNumber>010512</ITEM2ndItemNumber>
            <QTYShipped>1</QTYShipped>
            <AMTLineExtendedPrice>715.00</AMTLineExtendedPrice>
            <AMTLandedFreight>22.64</AMTLandedFreight>
        </line>
        <line>
            <ITEMLineNumber>11</ITEMLineNumber>
            <ITEM2ndItemNumber>010512</ITEM2ndItemNumber>
            <QTYShipped>1</QTYShipped>
            <AMTLineExtendedPrice>665.00</AMTLineExtendedPrice>
            <AMTLandedFreight>22.64</AMTLandedFreight>
        </line>
        <line>
            <ITEMLineNumber>21</ITEMLineNumber>
            <ITEM2ndItemNumber>016799</ITEM2ndItemNumber>
            <QTYShipped>1</QTYShipped>
            <AMTLineExtendedPrice>630.00</AMTLineExtendedPrice>
            <AMTLandedFreight>22.64</AMTLandedFreight>
        </line>
        <line>
            <ITEMLineNumber>23</ITEMLineNumber>
            <ITEM2ndItemNumber>010765</ITEM2ndItemNumber>
            <QTYShipped>1</QTYShipped>
            <AMTLineExtendedPrice>600.00</AMTLineExtendedPrice>
            <AMTLandedFreight>22.64</AMTLandedFreight>
        </line>
        <line>
            <ITEMLineNumber>24</ITEMLineNumber>
            <ITEM2ndItemNumber>P10512</ITEM2ndItemNumber>
            <QTYShipped>1</QTYShipped>
            <AMTLineExtendedPrice>715.00</AMTLineExtendedPrice>
            <AMTLandedFreight>22.64</AMTLandedFreight>
        </line>
    </Invoices>
    <Invoices>
        <summary>
            <QTYOrdered>8</QTYOrdered>
            <QTYShipped>8</QTYShipped>
            <AMTExtendedPrice>5285.00</AMTExtendedPrice>
            <AMTGrandTotal>5466.12</AMTGrandTotal>
        </summary>
        <messages>
            <MSGServiceCharge>Service charge message...</MSGServiceCharge>
        </messages>
     </Invoices>  
</R5942015>    

這是我為樣式表設計的,試圖解決格式不正確的XML。 同樣,這是XSL的新功能,因此請放輕松:

<xsl:stylesheet version="2.0"
                xmlns:xref="http://www.oracle.com/XSL/Transform/java/oracle.tip.xref.xpath.XRefXPathFunctions"
                xmlns:xp20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20"
                xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:ora="http://schemas.oracle.com/xpath/extension"
                xmlns:ehdr="http://www.oracle.com/XSL/Transform/java/oracle.tip.esb.server.headers.ESBHeaderFunctions"
                xmlns:xs="http://www.w3.org/2001/XMLSchema"
                xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
                xmlns:orcl="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc"
                xmlns:ids="http://xmlns.oracle.com/bpel/services/IdentityService/xpath"
                xmlns:hwf="http://xmlns.oracle.com/bpel/workflow/xpath"
                exclude-result-prefixes="xsl xs msdata xref xp20 bpws ora ehdr orcl ids hwf">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

    <xsl:template match="/R5942015"> 
        <xsl:copy>
            <xsl:for-each-group select="Main___F4211_F42119_S1" group-starting-with="Main___F4211_F42119_S1[Header_S2]">
            <Invoices>
                    <xsl:apply-templates select="current-group()"/>
            </Invoices>
            </xsl:for-each-group>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="Main___F4211_F42119_S1[Header_S2]">
            <xsl:if test="Header_S2/InvoiceNumber_ID62"><InvNumber><xsl:value-of select="Header_S2/InvoiceNumber_ID62"/></InvNumber></xsl:if>
            <xsl:if test="Header_S2/InvoiceDate_ID107"><InvoiceDate><xsl:value-of select="Header_S2/InvoiceDate_ID107"/></InvoiceDate></xsl:if>
            <xsl:if test="Header_S2/ShipmentNumber_ID70"><ShipmentNumber><xsl:value-of select="Header_S2/ShipmentNumber_ID70"/></ShipmentNumber></xsl:if>
            <xsl:if test="Header_S2/ShipDate_ID11"><ShipDate><xsl:value-of select="Header_S2/ShipDate_ID11"/></ShipDate></xsl:if>
            <xsl:if test="Header_S2/CustomerNumber_ID92"><CustomerNumber><xsl:value-of select="Header_S2/CustomerNumber_ID92"/></CustomerNumber></xsl:if>
            <xsl:if test="Header_S2/DealerNumber_ID6"><DealerNumber><xsl:value-of select="Header_S2/DealerNumber_ID6"/></DealerNumber></xsl:if>
            <xsl:if test="Line_Info_S4"><line>
                <xsl:if test="Line_Info_S4/AckLineNumber_D_ID1"><ITEMLineNumber><xsl:value-of select="Line_Info_S4/AckLineNumber_D_ID1"/></ITEMLineNumber></xsl:if>
                <xsl:if test="Line_Info_S4/_nd_Item_Number_D_ID3"><ITEM2ndItemNumber><xsl:value-of select="Line_Info_S4/_nd_Item_Number_D_ID3"/></ITEM2ndItemNumber></xsl:if>
                <xsl:if test="Line_Info_S4/LineQuantityShipped_D_ID35"><QTYShipped><xsl:value-of select="Line_Info_S4/LineQuantityShipped_D_ID35"/></QTYShipped></xsl:if>
                <xsl:if test="Line_Info_S4/LineExtendedPrice_D_ID8"><AMTLineExtendedPrice><xsl:value-of select="Line_Info_S4/LineExtendedPrice_D_ID8"/></AMTLineExtendedPrice></xsl:if>
                <xsl:if test="Line_Info_S4/AckLine_Freight_ID21"><AMTLandedFreight><xsl:value-of select="Line_Info_S4/AckLine_Freight_ID21"/></AMTLandedFreight></xsl:if>
            </line></xsl:if>
            <xsl:if test="Summary_Info_S8"><summary>
                <xsl:if test="Summary_Info_S8/AckQuantity_T_ID10"><QTYOrdered><xsl:value-of select="Summary_Info_S8/AckQuantity_T_ID10"/></QTYOrdered></xsl:if>
                <xsl:if test="Summary_Info_S8/QuantityShipped_T_ID13"><QTYShipped><xsl:value-of select="Summary_Info_S8/QuantityShipped_T_ID13"/></QTYShipped></xsl:if>
                <xsl:if test="Summary_Info_S8/LandedFreight_T_ID6"><AMTLandedFreight><xsl:value-of select="Summary_Info_S8/LandedFreight_T_ID6"/></AMTLandedFreight></xsl:if>
                <xsl:if test="Summary_Info_S8/AckExtendedPrice_T_ID2"><AMTExtendedPrice><xsl:value-of select="Summary_Info_S8/AckExtendedPrice_T_ID2"/></AMTExtendedPrice></xsl:if>
                <xsl:if test="Summary_Info_S8/GrandTotal_T_ID17"><AMTGrandTotal><xsl:value-of select="Summary_Info_S8/GrandTotal_T_ID17"/></AMTGrandTotal></xsl:if>
            </summary></xsl:if>
            <xsl:if test="Remit_To_S11"><messages>
                <xsl:if test="Remit_To_S11/Service_Charge_Message_ID14"><MSGServiceCharge><xsl:value-of select="Remit_To_S11/Service_Charge_Message_ID14"/></MSGServiceCharge></xsl:if>
            </messages></xsl:if>
    </xsl:template>

    <xsl:template match="Main___F4211_F42119_S1">
            <xsl:if test="Line_Info_S4"><line>
                <xsl:if test="Line_Info_S4/AckLineNumber_D_ID1"><ITEMLineNumber><xsl:value-of select="Line_Info_S4/AckLineNumber_D_ID1"/></ITEMLineNumber></xsl:if>
                <xsl:if test="Line_Info_S4/_nd_Item_Number_D_ID3"><ITEM2ndItemNumber><xsl:value-of select="Line_Info_S4/_nd_Item_Number_D_ID3"/></ITEM2ndItemNumber></xsl:if>
                <xsl:if test="Line_Info_S4/LineQuantityOrdered_D_ID10"><QTYOrdered><xsl:value-of select="Line_Info_S4/LineQuantityOrdered_D_ID10"/></QTYOrdered></xsl:if>
                <xsl:if test="Line_Info_S4/LineQuantityShipped_D_ID35"><QTYShipped><xsl:value-of select="Line_Info_S4/LineQuantityShipped_D_ID35"/></QTYShipped></xsl:if>
                <xsl:if test="Line_Info_S4/LineExtendedPrice_D_ID8"><AMTLineExtendedPrice><xsl:value-of select="Line_Info_S4/LineExtendedPrice_D_ID8"/></AMTLineExtendedPrice></xsl:if>
                <xsl:if test="Line_Info_S4/AckLine_Freight_ID21"><AMTLandedFreight><xsl:value-of select="Line_Info_S4/AckLine_Freight_ID21"/></AMTLandedFreight></xsl:if>
            </line></xsl:if>
            <xsl:if test="Summary_Info_S8"><summary>
                <xsl:if test="Summary_Info_S8/AckQuantity_T_ID10"><QTYOrdered><xsl:value-of select="Summary_Info_S8/AckQuantity_T_ID10"/></QTYOrdered></xsl:if>
                <xsl:if test="Summary_Info_S8/QuantityShipped_T_ID13"><QTYShipped><xsl:value-of select="Summary_Info_S8/QuantityShipped_T_ID13"/></QTYShipped></xsl:if>
                <xsl:if test="Summary_Info_S8/LandedFreight_T_ID6"><AMTLandedFreight><xsl:value-of select="Summary_Info_S8/LandedFreight_T_ID6"/></AMTLandedFreight></xsl:if>
                <xsl:if test="Summary_Info_S8/AckExtendedPrice_T_ID2"><AMTExtendedPrice><xsl:value-of select="Summary_Info_S8/AckExtendedPrice_T_ID2"/></AMTExtendedPrice></xsl:if>
                <xsl:if test="Summary_Info_S8/GrandTotal_T_ID17"><AMTGrandTotal><xsl:value-of select="Summary_Info_S8/GrandTotal_T_ID17"/></AMTGrandTotal></xsl:if>
            </summary></xsl:if>
            <xsl:if test="Header_S2">
            <xsl:if test="Header_S2/InvoiceNumber_ID62"><InvNumber><xsl:value-of select="Header_S2/InvoiceNumber_ID62"/></InvNumber></xsl:if>
            <xsl:if test="Header_S2/InvoiceDate_ID107"><InvoiceDate><xsl:value-of select="Header_S2/InvoiceDate_ID107"/></InvoiceDate></xsl:if>
            <xsl:if test="Header_S2/ShipmentNumber_ID70"><ShipmentNumber><xsl:value-of select="Header_S2/ShipmentNumber_ID70"/></ShipmentNumber></xsl:if>
            <xsl:if test="Header_S2/ShipDate_ID11"><ShipDate><xsl:value-of select="Header_S2/ShipDate_ID11"/></ShipDate></xsl:if>
            <xsl:if test="Header_S2/CustomerNumber_ID92"><CustomerNumber><xsl:value-of select="Header_S2/CustomerNumber_ID92"/></CustomerNumber></xsl:if>
            <xsl:if test="Header_S2/DealerNumber_ID6"><DealerNumber><xsl:value-of select="Header_S2/DealerNumber_ID6"/></DealerNumber></xsl:if>
            <xsl:if test="Remit_To_S11"><messages>
                <xsl:if test="Remit_To_S11/Service_Charge_Message_ID14"><MSGServiceCharge><xsl:value-of select="Remit_To_S11/Service_Charge_Message_ID14"/></MSGServiceCharge></xsl:if>
            </messages></xsl:if>
    </xsl:template>
</xsl:stylesheet>

感謝您審查此問題。 如果您看到我之前關於同一主題的問題,對於該問題的結構不好,我深表歉意。

我無法遵循您嘗試使用XSLT的邏輯。 我建議您嘗試其他方法-這是一個基本示例:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:key name="line" match="Line_Info_S4" use="DisplayInvoiceNumber_ID42" />
<xsl:key name="summary" match="Summary_Info_S8" use="DisplayInvoiceNumber_ID39" />
<xsl:key name="remit" match="Remit_To_S11" use="DisplayInvoiceNumber_ID18" />

<xsl:template match="/R5942015">
    <xsl:copy>
        <xsl:apply-templates select="Main___F4211_F42119_S1/Header_S2"/>
    </xsl:copy>
</xsl:template>

<xsl:template match="Header_S2">
    <Invoices>
        <InvNumber>
            <xsl:value-of select="InvoiceNumber_ID62" />
        </InvNumber>
        <!-- more fields here -->
        <xsl:apply-templates select="key('line', InvoiceNumber_ID62)"/>
        <xsl:apply-templates select="key('summary', InvoiceNumber_ID62)"/>
        <xsl:apply-templates select="key('remit', InvoiceNumber_ID62)"/>
    </Invoices>
</xsl:template>

<xsl:template match="Line_Info_S4">
    <line>
        <ITEMLineNumber>
            <xsl:value-of select="AckLineNumber_D_ID1" />
        </ITEMLineNumber>
        <!-- more fields here -->
    </line>
</xsl:template>

<xsl:template match="Summary_Info_S8">
    <summary>
        <!-- more fields here -->
        <AMTGrandTotal>
            <xsl:value-of select="GrandTotal_T_ID17" />
        </AMTGrandTotal>
    </summary>
</xsl:template>

<xsl:template match="Remit_To_S11">
    <messages>
        <MSGServiceCharge>
            <xsl:value-of select="Service_Charge_Message_ID14" />
        </MSGServiceCharge>
    </messages>
</xsl:template>

</xsl:stylesheet>

我在這里假設元素的名稱是一致的,並且不會從一個輸入任意更改為另一個輸入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM