2
올드 입력 XML :변경
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SalesOrder>
<SalesOrderHeader>
<OrderNumber>
<BuyerOrderNumber>3016</BuyerOrderNumber>
</OrderNumber>
</SalesOrderHeader>
<SalesOrderDetail>
<ListOfItemDetail>
<ItemDetail>
<BaseItemDetail>
<LineItemNum>
<BuyerLineItemNum>00001</BuyerLineItemNum>
</LineItemNum>
</BaseItemDetail>
</ItemDetail>
<ItemDetail>
<BaseItemDetail>
<LineItemNum>
<BuyerLineItemNum>00002</BuyerLineItemNum>
</LineItemNum>
</BaseItemDetail>
</ItemDetail>
</ListOfItemDetail>
</SalesOrderDetail>
</SalesOrder>
기존 코드 :
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/SalesOrder">
<ns0:Z_SALES_ORDER xmlns:ns0="urn:sap-com:document:sap:rfc:functions" >
<SHEADER>
<xsl:call-template name="sHeader"/>
</SHEADER>
<SITEM>
<xsl:call-template name="sItem"/>
</SITEM>
</ns0:Z_SALES_ORDER>
</xsl:template>
<xsl:template name="sHeader">
<SNUMBER>
<xsl:value-of select="SalesOrderHeader/OrderNumber/BuyerOrderNumber "/>
</SNUMBER>
</xsl:template>
<xsl:template name="sItem">
<xsl:for-each select="descendant::ItemDetail">
<item>
<B_ITEM>
<xsl:value-of select="BaseItemDetail/LineItemNum/BuyerLineItemNum"/>
</B_ITEM>
</item>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
필수 출력 :
<?xml version="1.0" encoding="UTF-8"?>
<ns0:Z_SALES_ORDER xmlns:ns0="urn:sap-com:document:sap:rfc:functions">
<SHEADER>
<SNUMBER>3016</SNUMBER>
</SHEADER>
<SITEM>
<item>
<B_ITEM>00001</B_ITEM>
</item>
<item>
<B_ITEM>00002</B_ITEM>
</item>
</SITEM>
</ns0:Z_SALES_ORDER>
쿼리 : 이제 소스 xml에 약간의 변경 사항이 있습니다. SalesOrder 루트 노드에서 다른 정보도 전달합니다. 입력 파일은 아래와 같습니다.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SalesOrder xmlns="abc:org.xcbl:schemas/xcbl/v4/xcbl4.xsd" xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding">
<SalesOrderHeader>
<OrderNumber>
<BuyerOrderNumber>3016</BuyerOrderNumber>
</OrderNumber>
</SalesOrderHeader>
<SalesOrderDetail>
<ListOfItemDetail>
<ItemDetail>
<BaseItemDetail>
<LineItemNum>
<BuyerLineItemNum>00001</BuyerLineItemNum>
</LineItemNum>
</BaseItemDetail>
</ItemDetail>
<ItemDetail>
<BaseItemDetail>
<LineItemNum>
<BuyerLineItemNum>00002</BuyerLineItemNum>
</LineItemNum>
</BaseItemDetail>
</ItemDetail>
</ListOfItemDetail>
</SalesOrderDetail>
</SalesOrder>
당신은 내가 이전 입력 XML 파일을 사용하여 얻는 것과 같은 출력을 얻을하는 방법을 말해 주 시겠어요.
편집 쿼리 : SalesOrder 루트 노드에서 다른 정보도 전달합니다. 입력 파일은 아래와 같습니다. XSLT를 사용하여 rootnode 정보를 얻는 방법?
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SalesOrder xmlns="abc:org.xcbl:schemas/xcbl/v4/xcbl4.xsd" xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding">
<SalesOrderHeader>
<OrderNumber>
<BuyerOrderNumber>3016</BuyerOrderNumber>
</OrderNumber>
</SalesOrderHeader>
</SalesOrder>
안녕 - 나는 마지막에 편집과 같이 개정 우리의 원래의 Q를 복원하고 A와 추가의 자유를 촬영했습니다 : 가장 쉬운 별칭을 사용하는 것입니다 - 커뮤니티의 다른 사람들은 전체 스레드를 볼 수 있습니다. 새로운 Q를 사용하면 전체 SalesOrderHeader 요소를 '그대로'출력에 복사 (축 어)하고 싶습니까? 또는 ns0 : Z_SALES_ORDER 루트 요소 출력에 새 네임 스페이스 (SOAP-ENV, SOAP-ENC)를 모두 유지하고 싶습니까? – StuartLC