Use of XSLT mapping?

Hi,
I would like to know "what is the need of XSLT mapping?" and "In which scenario XSLT mapping is used?".
Thanks in advance.
Regards,
Archana

Hi
XSLT is use to convert an XML document to another document. This is achieved by using XSLT commands to search for tags in the source document and replacing them with other tags or values in the target document. The main advantage is it is also possible to switch to a Java program from XSLT.
Please go through the weblogs:
https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/3416. [original link is broken] [original link is broken] [original link is broken] [original link is broken] [original link is broken] [original link is broken] [original link is broken] [original link is broken]
Also go through the link:
http://help.sap.com/saphelp_nw2004s/helpdata/en/73/f61eea1741453eb8f794e150067930/content.htm
Regards
Victoria

Similar Messages

  • Which tools can use for XSLT mapping?

    which tools can use for XSLT mapping?

    Hi,
    Altova map force tool , u will get it for 1month trial.and later you can create xslt mapping in notepad itself.
    reg,
    avinash M

  • ERROR WHILE USING XSLT MAPPING IN INTERFACE MAPPING

    Hi,
      We are using an xslt mapping in our scenario but while i load the XSLT mapping in the interface mapping i get a message :
    Transformer configuration exception occurred when loading XSLT
    sorce interface :outbound and asyncronous.
    mapping : XSLT mapping (imported as a zip file)
    target interface: abstract,asyncronous.
    The xslt runs well in standalone and its well formed and there is no name space issue.
    please help if any one has faced such a situation while using XSLT mapping.
    regards,
    Anirban.

    Hi Anirban
    When you say it runs well <i>standalone</i> what exactly do you mean? Which XSLT processor are you using to run it? There are subtle difference between XSTL processors that can sometimes result in incompatibilities. For instance, I have seen XSLTs run correctly in XMLSpy but incorrectly (or at least slightly differently) in XI.
    Regards,
    Thorsten

  • Multi Mapping using condition & Dynamic Receiver determination – Used XSLT Mapping

    Dear Experts,
         I am struggling to identify an error on the Technical Routing. Firstly according to my scenario, I receive an XML file with multiple PO's and I have to split the file to 2 different target messages. and also according to the source payload I have to send the file to 2 different receivers. first receiver is ABAP Proxy to the back end system and the 2nd one is to a file location. I have used XSLT to split the message into 2 target message type and I have used a XSLT mapping for receiver determination. Does any one have any idea of what I am doing wrong.
    Note: some time I will only be able to fill in on target message.
    I have attached my XSLT message split mapping with this post, please let me know if you have further question.
    Your help is more appreciated.
    Advance Thanks,
    Pradeep
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" version="1.0">
      <xsl:variable name="vFlag"/>
      <xsl:variable name="vPONUM" select="POTRACKING/Lines[1]/PONumber"/>
      <xsl:template match="/">
        <ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
          <ns0:Message1>
            <ns1:MT_Tracking xmlns:ns1="http://www.findel-education.co.uk/axapta">
              <xsl:for-each select="POTRACKING/Lines">
                <sap:call-external class="ZCL_VNAP_OBJECTS" method="CHECK_PO_EXIST">
                  <sap:callvalue param="IP_EBELN" select="string(PONumber)"/>
                  <sap:callvariable name="vFlag" param="EP_BOLEAN" type="string"/>
                </sap:call-external>
                <xsl:if test="$vFlag = 0">
                  <Lines>
                    <DDate>
                      <xsl:value-of select="DespatchDate"/>
                    </DDate>
                    <PONumber>
                      <xsl:value-of select="PONumber"/>
                    </PONumber>
                    <POLine>
                      <xsl:value-of select="POLine"/>
                    </POLine>
                    <QTY>
                      <xsl:value-of select="Quantity"/>
                    </QTY>
                    <VendorMaterial>
                      <xsl:value-of select="VendorMaterialNumber"/>
                    </VendorMaterial>
                    <AccountRef>
                      <xsl:value-of select="AccountReference"/>
                    </AccountRef>
                    <ConsignNumber>
                      <xsl:value-of select="ConsignmentNumber"/>
                    </ConsignNumber>
                    <CarrierURL>
                      <xsl:value-of select="CarrierURL"/>
                    </CarrierURL>
                    <ConsignURL>
                      <xsl:value-of select="ConsignmentURL"/>
                    </ConsignURL>
                  </Lines>
                </xsl:if>
              </xsl:for-each>
            </ns1:MT_Tracking>
          </ns0:Message1>
          <ns0:Message2>
            <ns2:MT_Tracking xmlns:ns2="http://www.findel-education.co.uk/ecc/ax/po/ftp">
              <xsl:for-each select="POTRACKING/Lines">
                <sap:call-external class="ZCL_VNAP_OBJECTS" method="CHECK_PO_EXIST">
                  <sap:callvalue param="IP_EBELN" select="string(PONumber)"/>
                  <sap:callvariable name="vFlag" param="EP_BOLEAN" type="string"/>
                </sap:call-external>
                <xsl:if test="$vFlag = 1">
                  <Lines>
                    <DDate>
                      <xsl:value-of select="DespatchDate"/>
                    </DDate>
                    <PONumber>
                      <xsl:value-of select="PONumber"/>
                    </PONumber>
                    <POLine>
                      <xsl:value-of select="POLine"/>
                    </POLine>
                    <QTY>
                      <xsl:value-of select="Quantity"/>
                    </QTY>
                    <VendorMaterial>
                      <xsl:value-of select="VendorMaterialNumber"/>
                    </VendorMaterial>
                    <AccountRef>
                      <xsl:value-of select="AccountReference"/>
                    </AccountRef>
                    <ConsignNumber>
                      <xsl:value-of select="ConsignmentNumber"/>
                    </ConsignNumber>
                    <CarrierURL>
                      <xsl:value-of select="CarrierURL"/>
                    </CarrierURL>
                    <ConsignURL>
                      <xsl:value-of select="ConsignmentURL"/>
                    </ConsignURL>
                  </Lines>
                </xsl:if>
              </xsl:for-each>
            </ns2:MT_Tracking>
          </ns0:Message2>
        </ns0:Messages>
      </xsl:template>
    </xsl:stylesheet>

    Hi Hareesh,
    Please find my determination in the XSLT below, I am using enhanced receiver determination.
    <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" xmlns:p1="http://sap.com/xi/XI/System" xmlns:ns="urn:sap-com:document:sap:idoc:messages" version="1.0">
      <xsl:variable name="vFlag"/>
      <xsl:variable name="vAX" select="0"/>
      <xsl:variable name="vSAP" select="0"/>
      <xsl:variable name="vBoth" select="0"/>
      <!--  <xsl:variable name="vPONUM" select="POTRACKING/Lines[1]/PONumber"/>-->
      <xsl:template match="/">
        <xsl:for-each select="POTRACKING/Lines">
          <sap:call-external class="ZCL_VNAP_OBJECTS" method="CHECK_PO_EXIST">
            <sap:callvalue param="IP_EBELN" select="string(PONumber)"/>
            <sap:callvariable name="vFlag" param="EP_BOLEAN" type="string"/>
          </sap:call-external>
          <xsl:choose>
            <xsl:when test="$vFlag = 0">
              <!--          <p1:Receivers>
                <Receiver>
                  <Service>
                    <xsl:text>BS_AXAPTA_TST</xsl:text>
                  </Service>
                </Receiver>
              </p1:Receivers>-->
              <xsl:variable name="vAX" select="$vAX + 1"/>
            </xsl:when>
            <xsl:when test="$vFlag = 1">
              <!--          <p1:Receivers>
                <Receiver>
                  <Service>
                    <xsl:text>BS_ECQCLNT300</xsl:text>
                  </Service>
                </Receiver>
              </p1:Receivers>-->
              <xsl:variable name="vSAP" select="$vSAP + 1"/>
            </xsl:when>
          </xsl:choose>
        </xsl:for-each>
        <xsl:if test="$vSAP &gt; 0">
          <xsl:if test="$vAX &gt; 0">
            <xsl:variable name="vBoth" select="$vBoth + 1"/>
            <xsl:variable name="vSAP" select="0"/>
            <xsl:variable name="vAX" select="0"/>
          </xsl:if>
        </xsl:if>
        <xsl:if test="$vBoth &gt; 0">
          <p1:Receivers>
            <Receiver>
              <Service>
                <xsl:text>BS_AXAPTA_TST</xsl:text>
              </Service>
            </Receiver>
            <Receiver>
              <Service>
                <xsl:text>BS_ECQCLNT300</xsl:text>
              </Service>
            </Receiver>
          </p1:Receivers>
        </xsl:if>
        <xsl:if test="$vAX &gt; 0">
          <p1:Receivers>
            <Receiver>
              <Service>
                <xsl:text>BS_AXAPTA_TST</xsl:text>
              </Service>
            </Receiver>
          </p1:Receivers>
        </xsl:if>
        <xsl:if test="$vSAP &gt; 0">
          <p1:Receivers>
            <Receiver>
              <Service>
                <xsl:text>BS_ECQCLNT300</xsl:text>
              </Service>
            </Receiver>
          </p1:Receivers>
        </xsl:if>
      </xsl:template>
    </xsl:transform>

  • XSLT Mapping : RFC Lookup using java helper class

    Hi All,
    I am doing RFC Lookup in xslt mapping using java helper class. I have found blog for the same (http://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/05a3d62e-0a01-0010-14bc-adc8efd4ee14) However this blog is very advanced.
    Can anybody help me with step by step approach for the same?
    My basic questions are not answered in the blog as:
    1) where to add the jar file of the java class used in xslt mapping.
    I have added zip file of XSLT mapping in imported archived and using that in mapping.
    Thanks in advace.
    Regards,
    Rohan

    Hi,
    Can u please have look at this in detail , u can easily point out yourself the problem...
    http://help.sap.com/saphelp_nw04/helpdata/en/55/7ef3003fc411d6b1f700508b5d5211/content.htm
    Please observe the line,
    xmlns:javamap="java:com.company.group.MappingClass
    in XSLT mapping..
    The packagename of class and class name and XSLT namespace should be matching...
    Babu
    Edited by: hlbabu123 on Sep 29, 2010 6:04 PM

  • Invalid tag generated in result XML file, xslt mapping done using MAPFORCE

    HI
    My requirement is File to File using xslt mapping
    I have done a very simple XSLT mapping, but through MAPFORCE tool
    Here are the steps, I followed:
    1. Supplied source xsd and xml file to MAPFORCE
    2. Supplied target xsd file
    3. mapped it as required
    4. tested by supplying a sample xml file by clicking OUTPUT button, which displays perfect XML structure
    5. Clicked XSLT button and copied and created a new file with extension .xsl file
    6. Zipped the above xsl file
    7. imported into IR imported archives folder
    8. Selected the above xslt mapping in my Interface mapping.
    9. Now tested my Interface Mapping by supplying sample some data for the source structure.
    Now I got the error or warning "XML not well-formed" and got the successfull completion message window for my mapping when I proceed.
    Now when I clicked xml source button for the target structure, It displays the invalid tag and starting with "#default"
    So If I removed this particular tag at the first and last lines, it becomes a valid xml structure and able to see properly in my internet explorer
    Here is the result I am getting:
    <?xml version="1.0" encoding="UTF-8"?>
    <#default:MT_Student_Result xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:xsltMappingScenarios C:/DOCUME~1/Satya/Desktop/MT_Student_Result.xsd">
      <Data>
        <Name>Khan Raj</Name>
        <Marks>
          <Total_Marks>166</Total_Marks>
        </Marks>
      </Data>
    </#default:MT_Student_Result>
    When I tested through MAPFORCE it generates absolutely valid XML structure when I clicked OUTPUT button on MAPFORCE, but not when I used the xslt mapping through my interface mapping.
    What is the error I am making or any step missing?
    Please help me!
    Edited by: Shilpa Shetty on Oct 9, 2008 4:17 AM
    Edited by: Shilpa Shetty on Oct 9, 2008 5:58 AM
    Edited by: Chris Rock on Oct 9, 2008 6:06 AM

    For some reason when I use MapForce tool to generate my xslt mapping source, it is generating the following statement in the xsl file.
         <xsl:namespace-alias stylesheet-prefix="n" result-prefix="#default"/>
    So at the root element of XML file, it is replacing the character n with '#default' for some reason, I don;t know the purpose of this.
    As you suggested, I changed the name space, still I experienced same problem.
    It is now resolved after removing the above xsl statement from the xsl file before creating/uploading the relevant zip file into archives folder.
    It works fine now. Thanks for the clue.

  • MIAL RECIEVER CC -- ISSUE USED XSLT MAPPING

    Hi All,
    I have a Scenario   in which  IDOC  is a sender and Mail Adaptert  is reciever .The Xi is supposed to sent the Email notification to the client . Mail adapter is SMTP configured correctly ,Reciever  Mail CC is up and running but Error  is :Delivery of the message to the application using connection Mail_http://sap.com/xi/XI/System failed, due to: com.sap.aii.af.ra.ms.api.RecoverableException: java.lang.StringIndexOutOfBoundsException: String index out of range: 0
    The Mapping here is used is XSLT mapping and in SXMB_MONITOR , Error shown is :
    SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="">
      <SAP:Category>Application</SAP:Category>
      <SAP:Code area="MAPPING">TRANSFORMER_CONF_EX</SAP:Code>
    Could you plesae help  me this  Issue asap .
    Thanks,
    Vara

    Hi Abhi ,
    I checked in ATOVA SPY XML Check , it seems to be the issue in XSLT mapping .
    Part of XSLT mapping  Error line:
    when test="//IDOC/EDI_DC40/RCVLAD = '3157411730014'">   --There was a single  qoute missing
    Tested in Atova with payload , it worked
    Thanks for your  supprt as well.
    Best Regards,
    Vara

  • Error using XSLT mapping

    Hi,
    I am using an XSLT mapping during the response processing for a sync interface.
    I have performed the following steps:
    1. Created Translation.xsl and added to a .zip archive
    2. Imported the archive file into the same namespace as the interface mapping
    3. Added the mapping program for type XSL using the imported archive on the response in the interface mapping
    4. Activated everything
    However, when I receive a response, I get the following error:
    Search Translation.xsl (urn:com.xerox.esap.crm.deviceregistration, -1) in swcv f1570070-52e9-11db-c6b4-d3c10ddf0074.</Trace>
      <Trace level="3" type="T">Does not found exact entry. Search in other namspaces.</Trace>
      <Trace level="3" type="T">Search Translation.xsl (-1) in swcv f1570070-52e9-11db-c6b4-d3c10ddf0074 without namespace.</Trace>
      <Trace level="1" type="T">Unable to find resource Translation.xsl (urn:com.xerox.esap.crm.deviceregistration, f1570070-52e9-11db-c6b4-d3c10ddf0074, -1)</Trace>
      <Trace level="1" type="T">com.sap.aii.ibrun.server.mapping.persist.ResourceNotFoundException: Unable to find resource Translation.xsl
    However, I can see the imported archive with my very own eyes so not sure why this error is being thrown.
    Any ideas ?
    Kind regards
    Colin.

    Colin,
    First test your mapping is working fine or not in interfaace mapping. Just referesh your caches as mentioned in this document. This should resolve your issue:
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/1a69ea11-0d01-0010-fa80-b47a79301290
    ---Satish

  • Convert XML using XSLT mapping

    Hi,
    I have an XML in the following format and would want to cnvert it in the target format shown below. Kindly let me know the XSLT mapping to conert from hierarchy to flat structure.
    <u><b>Source XML:</b></u>
    <group Level1="Mac Tools Item Classifications">
        <group Level2="6-Other Merchandise">
            <group Level3="61-Racing">
         <group Level4="011-Collectibles">
             <group Level5="001-NASCAR"/>
             <group Level5="002-NHRA"/>
             <group Level5="003-Other"/>
         </group>
         <group Level4="012-Apparel">
             <group Level5="001-Jackets"/>
             <group Level5="002-Shirts"/>
             <group Level5="003-Other">
                 <group PartNumber="SHOE823-060"/>
                 <group PartNumber="SHOE823-070"/>
                 <group PartNumber="SHOE823-080"/>
                 <group PartNumber="SHOE823-085"/>
                    <group PartNumber="SHOE823-090"/>
                        </group>
         </group>
                 </group>
           </group>
    </group>
    <u><b>Target XML:</b></u>
    <Group>
          <part>
         <Level1/>
         <Level2/>
         <Level3/>
         <Level4/>
         <PartNumber/>
           </part>
           <part>
                    <Level1/>
         <Level2/>
         <Level3/>
         <Level4/>
         <PartNumber/>
            </part>
    </Group>
    I am not clear how to capture level1, level 2, etc. till the end node.
    Regards,
    Swaroopa

    HI,
      This is a sample
    <b>
    <xsl:variable name="var0_floatToString" select="user0:floatToString(/body/getQuote/inputGetQuote/@customerIDFloatAttr)"/>
                <xsl:if test="@customerIDFloatAttr">
                    <xsl:attribute name="customerIDFloatAttr">
                        <xsl:value-of select="@customerIDFloatAttr"/>
                    </xsl:attribute>
                </xsl:if>
                <xsl:attribute name="customerIDAttr">
                    <xsl:value-of select="$var0_floatToString"/>
                </xsl:attribute></b>
    using  <xsl:attribute name      here name ="leval1" like that u can use  in XSLT Mapping .
         Hope it helps
    Regards.,
    V.Rangrajan

  • Xslt mapping in Imported archieves

    Hi all,
    The requirement is that I need to use XSLT mapping for this I created message mapping copied as a .xslt file and imported in the imported archeives and then I removed the message mapping .
    The problem is that when I try to use this XSLT mapping under the interface mapping as XSLT option I am getting a warning "message mapping name has no program"
    Please let me know why this is  happening.
    Thanks,
    Sri

    Hi,
    as you said:
    choose XSLT mapping
    then choose your XSLT mapping name
    save and activate
    Regards,
    michal

  • Reg ABAP-XSLT mapping

    Hi All,
           One of my inetrfaces i am using ABAP-XSLT mapping some times i am getting the following erre "Error while calling mapping program ZXXXX_XXX (type Abap-XSLT, kernel error ID CX_XSLT_RUNTIME_ERROR) No valid source context supplied"
    What does it mean and what is the reason for that error.
    Regards,
    Rama
    Edited by: Ramakrishna Balusu on Oct 27, 2009 1:35 PM
    Edited by: Ramakrishna Balusu on Oct 27, 2009 1:36 PM

    Check this discussion:
    XI Error
    Regards,
    ravi

  • Reg usage of XSLT Mapping

    Hi All,
    We need to build an interface from PI to some database using JDBC adapter to send out emails to business users of the exception records created in the table.please help in using the xslt mapping for this interface.
    Thanks in Advance,

    Hi,
    You can build your scenario as follows:
    1) If the emails have to be sent from PI then you need to get back a response from the database.....if this is failure message then initiate your send email process...the whole process can be implemented using a BPM: Source ---> PI ---> JDBC --->PI ---> Email
    2) You need to use a receiver mail adapter to send emails
    3) Refer this blog of michal in which it is mentioned how to use the XSLT mapping and configuration for sending the emails:
    /people/michal.krawczyk2/blog/2005/11/23/xi-html-e-mails-from-the-receiver-mail-adapter
    You can also refer: http://www.riyaz.net/blog/xipi-sending-emails-using-xi-mail-adapter/
    For more clarification you can also refer my answer in this thread:
    Re: xml in mail
    The XSLT mapping that you need will be only in the PI ---> Email scenario...
    Make sure that you download the desired email structure from service market place before you start with the scenario.......do let me know if my answer helps.
    Regards,
    Abhishek.

  • Error in XSLT Mapping when special character is passed through

    Hi Experts,
    We have used the XSLT mapping. When ever any special character like é is being passed, then the below mentioned error is displayed in the Integration engine.
    Error occurred during XSLT mapping of the application
    It is working fine with normal case if we are not sending any special character.
    I am not sure whether the problem exists in XSLT mapping or the issue with the legacy system?
    Early response would be highly appreciated and points will be awarded.
    Thanks in Advance,
    Jitender

    hi,
       [Problem in transforming XML to string using XSLT;
    Chk the above link.might solve ur issue.
    Regards.
    Siddhesh Naik

  • Preserving spaces in XSLT Mapping

    Hi ,
        My source structure has a field
    <field1>     aaaa1234</field1>
    whens this field is transformed by using a XSLT mapping the output is as follows
    <field1>aaaa1234</field1>
    This output is visible in the interface mapping itself.
    The leading spaces are truncated. Can any one suggest me on how to preserve leading spaces during XSLT mapping?
    Thanks
    VasS

    Hi,
    Refer this link
    http://www.w3.org/TR/xslt20/Overview.html#element-preserve-space
    Regards
    Suraj

  • XSLT Mapping - problem with prefixes when calling template

    Hi all,
    I am having a problem with using an XSLT mapping in XI to combine various fields from 2 input messages of different structures into a single output message.  I understand that XI puts a wrapper around the 2 input messages so the structure of the XML I am mapping is:
    <?xml version="1.0" encoding="UTF-8"?>
    <ns2:Messages xmlns:ns2="http://sap.com/xi/XI/SplitAndMerge">
    <ns2:Message1>
    <ns:(root of first message)>
    </ns:(root of first message)>
    </ns2:Message1>
    <ns2:Message2>
    <ns:(root of second message)>
    </ns: (root of second message)>
    </ns2:Message2>
    </ns2:Messages>
    Currently my XSL looks like the following:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns="http://example.co.uk/example" xmlns:ns2="http://sap.com/xi/XI/SplitAndMerge" xmlns:javamap="java:systemDate.CurrentDate" version="2.0">
    <xsl:output method="xml" version="1.0" encoding="UTF-8"/>
    <xsl:param name="inputparam"/>
    <xsl:template match="ns2:Messages">
    ...<xsl:calltemplate name="FormattingTemplate"/>
    </xsl:template>
    <xsl:template name="FormattingTemplate">
    </xsl:template>
    </xsl:stylesheet>
    When I test the mapping it works fine until it calls the FormattingTemplate.  Then it throws out a "transformer exception" error saying the prefix 'ns2' is not mapped to a namespace.
    If anyone could tell me where I am going wrong I would be very grateful.
    Thanks,
    Mike

    Hi Udo,
    Thanks for your reply.
    When testing the stylesheet locally with XMLSpy, it works fine, but I have just noticed that it adds information in the root tag of the target message as follows:
    <(root of target message) xmlns:javamap="java:systemDate.CurrentDate" xmlns:ns="http://example.co.uk/example" xmlns:ns2="http://sap.com/xi/XI/SplitAndMerge">
    I checked the root tag of the target message in XI and it does not automatically add this information. Thus I added it in my stylesheet so the information above is projected in the target message, but the same error message appears when the call template function is called.  Do you know if I need to somehow add a namespace to templates other than the main one? If so, do you know how I go about doing that?
    Thanks,
    Mike

Maybe you are looking for