2017-04-15 6 views
0

IDOC xml을 cXml로 변환하려고합니다. PARVW, PARTN을 갖는 반복 노드 E1EDKA1이 있습니다. PARVW = 'AG'를 기준으로 PARTN = 3000 값을 추출해야합니다. 그러나 나에 대해 여러 값은 <xsl:for-each select="//E1EDKA1[PARVW='AG']"> 3000 00001000.xslt 2.0 매핑 (루프의 조건에 따라 필드의 종속 값을 얻는 방법)

{Find the xsl logic as below:} 

    <cXML> 
    <Request> 
    <OrderRequest> 
    <OrderRequestHeader> 
    <xsl:for-each select="//E1EDKA1/PARVW='AG'"> 
    <ShipTo> 
    <Address> 
     <Name>     
     <xsl:attribute name="xml:lang"> 
      <xsl:value-of select="//PARTN"/> 
     </xsl:attribute>     
     </Name> 
    </Address> 
    </ShipTo> 
    </xsl:for-each> 
    </OrderRequestHeader> 
    </OrderRequest> 
    </Request> 
    </cXML> 

{This is the Source xml} 
    <_-ARBA_-ORDERS> 
    <IDOC BEGIN="1"> 
     <E1EDKA1 SEGMENT="1"> 
     <PARVW>AG</PARVW> 
     <PARTN>3000</PARTN> 
     <TELF1>069/5511</TELF1> 
     <BNAME>Dickens, B.</BNAME> 
     <PAORG>3000</PAORG> 
     <ORGTX>PurchOrg US</ORGTX> 
     <PAGRU>001</PAGRU> 
     </E1EDKA1> 
     <E1EDKA1 SEGMENT="1"> 
     <PARVW>LF</PARVW> 
     <PARTN>0000001000</PARTN> 
     <SPRAS>E</SPRAS> 
     <SPRAS_ISO>EN</SPRAS_ISO> 
     </E1EDKA1> 
     <E1EDKA1 SEGMENT="1"> 
     <PARVW>WE</PARVW> 
     <LIFNR>3000</LIFNR> 
     <NAME1>New York</NAME1> 
     <NAME2>New York</NAME2> 
     <STRAS>691 Broadway</STRAS> 
     <PFACH>5454545</PFACH> 
     <ORT01>NEW YORK</ORT01> 
     <PSTLZ>10001</PSTLZ> 
     <LAND1>US</LAND1> 
     <TELF1>001-9287-34571</TELF1> 
     <TELFX>001-9287-34573</TELFX> 
     <SPRAS>E</SPRAS> 
     <ORT02>NEW YORK</ORT02> 
     <REGIO>NY</REGIO> 
     <SPRAS_ISO>EN</SPRAS_ISO> 
     </E1EDKA1> 
    </IDOC> 
</_-ARBA_-ORDERS> 

Please help me out to get single value based on the condition. 

답변

1

= PARTN에 변경 <xsl:for-each select="//E1EDKA1/PARVW='AG'">을 오는 다음 응답 마틴

<Name>     
    <xsl:attribute name="xml:lang"> 
     <xsl:value-of select="//PARTN"/> 
    </xsl:attribute>     
    </Name> 

<Name>     
    <xsl:attribute name="xml:lang"> 
     <xsl:value-of select="PARTN"/> 
    </xsl:attribute>     
    </Name> 
+0

답장을 보내 주셔서 감사합니다. 이 방법으로 시도하고 작동했습니다 :

+1

당신은'XSL 필요하지 않습니다 : 만약 당신이'select = "/ _- ARBA_-ORDERS/IDOC/E1EDKA1 [PARVW = 'AG']"술어의 조건에 체크를 넣을 수 있습니다. –

0

감사를 변경합니다. 나는이 방법으로 노력했고 효과가 있었다 :

<xsl:for-each select="/_-ARBA_-ORDERS/IDOC/E1EDKA1"> 
      <xsl:if test="PARVW='AG'"> 
       <xsl:attribute name="xml:lang"> 
       <xsl:value-of select="PARTN"/> 
       </xsl:attribute> 
      </xsl:if> 
      </xsl:for-each>