munireddy pulagam
munireddy pulagam

Reputation: 3

xslt code to generate an element in the target even it is coming multiple times from source under for loop?

sample payload for testing :


    <n0:MT_SalesOrder_Resp_SAP xmlns:n0="http://eaton.com/pi/api/SalesOrderInquiry" xmlns:prx="urn:sap.com:proxy:D47:/1SAI/TASDA80D4E368BF1C227C5D:740" xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
      <salesorders>
        <salesorder>
          <orderNumber>0213961849</orderNumber>
          <addresses>
            <address>
              <addressIdentifier>AG</addressIdentifier>
              <documentNumber>0213961849</documentNumber>
              <lineNumber>000000</lineNumber>
              <number>0000320101</number>
              <name>Shenzhen Diwei Video Co., Ltd.U</name>
            </address>
            <address>
              <addressIdentifier>RE</addressIdentifier>
              <documentNumber>0213961849</documentNumber>
              <lineNumber>000000</lineNumber>
              <number>0000320101</number>
              <name>Shenzhen Diwei Video Co., Ltd.U</name>
             </address>
            <address>
              <addressIdentifier>RG</addressIdentifier>
              <documentNumber>0213961849</documentNumber>
              <lineNumber>000000</lineNumber>
              <number>0000320101</number>
              <name>Shenzhen Diwei Video Co., Ltd.U</name>
            </address>
            <address>
              <addressIdentifier>WE</addressIdentifier>
              <documentNumber>0213961849</documentNumber>
              <lineNumber>000000</lineNumber>
              <number>0000320101</number>
              <name>Shenzhen Diwei Video Co., Ltd.U</name>
             </address>
            <address>
              <addressIdentifier>WE</addressIdentifier>
              <documentNumber>0213961849</documentNumber>
              <lineNumber>000000</lineNumber>
              <number>0000320101</number>
              <name>深圳迪威影像有限公司XXXX</name>
             </address>
            <address>
              <addressIdentifier>Z5</addressIdentifier>
              <documentNumber>0213961849</documentNumber>
              <lineNumber>000000</lineNumber>
              <number>0900000740</number>
              <name>张三</name>
            </address>
            <address>
              <addressIdentifier>PLANT</addressIdentifier>
              <documentNumber>0213961849</documentNumber>
              <lineNumber>000010</lineNumber>
              <number>5567</number>
              <name>BA1 Trade, SZ (PQ)</name>
            </address>
            <address>
              <addressIdentifier>SHIPFROM</addressIdentifier>
              <documentNumber>0213961849</documentNumber>
              <lineNumber>000010</lineNumber>
              <number>5567</number>
              <name>SANTAK ELECTRONIC (SHEN ZHEN) CO.,LTD</name>
            </address>
            <address>
              <addressIdentifier>PLANT</addressIdentifier>
              <documentNumber>0213961849</documentNumber>
              <lineNumber>000020</lineNumber>
              <number>5567</number>
              <name>BA1 Trade, SZ (PQ)</name>
            </address>
            <address>
              <documentNumber>0213961849</documentNumber>
              <lineNumber>000020</lineNumber>
            </address>
            <address>
              <addressIdentifier>PLANT</addressIdentifier>
              <documentNumber>0213961849</documentNumber>
              <lineNumber>000030</lineNumber>
              <number>5567</number>
              <name>BA1 Trade, SZ (PQ)</name>
            </address>
          </addresses>
        </salesorder>
      </salesorders>
    </n0:MT_SalesOrder_Resp_SAP>

xslt code i am using currently kindly requesting to provide some logic to repeat shiptoIdetefier as one time and shipmet address will be multiple times.

 <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns0="http://eaton.com/pi/api/SalesOrderInquiry">
 <xsl:template match="/">
     <ns0:MT_SalesOrder_Resp_API>
         <salesorders>
             <xsl:for-each select="/ns0:MT_SalesOrder_Resp_SAP/salesorders/salesorder">
                 <xsl:if test="orderNumber">
                     <salesorder>
                         <orderNumber>
                             <xsl:value-of select="orderNumber"/>
                         </orderNumber>
                         <xsl:variable name="orderNo">
                             <xsl:value-of select="orderNumber"/>
                         </xsl:variable>
                         <xsl:choose>
                             <xsl:when test='orderDate !="" and orderDate != "00000000"'>
                                 <orderDate>
                                     <xsl:value-of select='concat (substring (orderDate, 1, 4 ), "-", substring (orderDate, 5, 2 ), "-", substring (orderDate, 7, 2 ),"T00:00:00.000")'/>
                                 </orderDate>
                             </xsl:when>
                             <xsl:otherwise>
                                 <orderDate/>
                             </xsl:otherwise>
                         </xsl:choose>
                         <xsl:for-each select="addresses/address">
                             <xsl:if test='addressIdentifier="AG" and lineNumber="000000"'>
                                 <customerNumber>
                                     <xsl:value-of select="number"/>
                                 </customerNumber>
                                 <customerAddress>
                                     <name>
                                         <xsl:value-of select="name"/>
                                     </name>
                                 </customerAddress>
                             </xsl:if>
                             <xsl:if test='addressIdentifier="RE" and lineNumber="000000"'>
                                 <billToIdentifier>
                                     <xsl:value-of select="number"/>
                                 </billToIdentifier>
                                 <billingAddress>
                                     <name>
                                         <xsl:value-of select="name"/>
                                     </name>
                                     </billingAddress>
                             </xsl:if>
                             <xsl:if test='addressIdentifier="WE" and lineNumber="000000"'>
                                 <shipToIdentifier>
                                     <xsl:value-of select="number"/>
                                 </shipToIdentifier>
                                 <shipmentAddress>
                                     <name>
                                         <xsl:value-of select="name"/>
                                     </name>
                                 </shipmentAddress>
                             </xsl:if>
                         <xsl:if test='addressIdentifier="Z5" and lineNumber="000000"'>
                                 <salesToEnquery>
                                     <xsl:value-of select="number"/>
                                 </salesToEnquery>
                                 <salesEnquery>
                                     <name>
                                         <xsl:value-of select="name"/>
                                     </name>
                                 </salesEnquery>
                             </xsl:if>
                             <xsl:if test='addressIdentifier="AP" and lineNumber="000000"'>
                                 <ShipToContact>
                                     <name>
                                         <xsl:value-of select="name"/>
                                     </name>
                                     </ShipToContact>
                             </xsl:if>
                         </xsl:for-each>
                         </salesorder>
                 </xsl:if>
             </xsl:for-each>
         </salesorders>
     </ns0:MT_SalesOrder_Resp_API>
 </xsl:template>
</xsl:stylesheet>

i am expecting shipToIdentifier to be repeated only once in the target but it is coming two times along with the shipment address because the shipToIdentifier is same for both shipment address:

    <shipToIdentifier>0000320101</shipToIdentifier>
            <shipmentAddress>
                <name>Shenzhen Diwei Video Co., Ltd.U</name>
                <city>Shenzhen</city>
            </shipmentAddress>
            <shipToIdentifier>0000320101</shipToIdentifier>
            <shipmentAddress>
                <name>深圳迪威影像有限公司XXXX</name>
                <city>深圳南</city>
            </shipmentAddress>

Upvotes: 0

Views: 45

Answers (0)

Related Questions