XSLT Mapping - help

Hi All,
I am new to XSLT mapping.
My requirement is: file to XML file with CDATA, for this I am planning to use the XSLT Mapping.
I downloaded the Stylus studio, then what next, Please help meu2026
In source flat file I have 5 fileds, and target I need to generate the XML file with CDATA set for 5 fields.
Thanks,
ANU-

Hi Anu,
  Is your requirement is sending 5 fields into one string on target side ,If yes
  this code might help you for CDATA section
     <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<MT_TARGET>
<String>
<xsl:text disable-output-escaping="yes"><![CDATA[<![CDATA[?xml version=\"1.0\"
encoding=\"ISO-8859-1\"?>]]]]></xsl:text>
<xsl:copy-of select="*"/>
<xsl:text disable-output-escaping="yes"><!CDATA[]]]></xsl:text>
<xsl:text disable-output-escaping="yes"><![CDATA>]></xsl:text>
</String>
</MT_TARGET>
</xsl:template>
</xsl:Stylesheet>
//if you use " * " then entire source structure will go into target StringUsers node
Regards,
Sandeep

Similar Messages

  • XSLT mapping Help Required.

    XSLT mapping Help Required.
    Hi Experts,
    I am New to XSLT Mapping. I am practising the below Example:
    InputXML File:
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="Persons111.xsl"?>
    <ns0:MT_XSLT_Source xmlns:ns0="http://XYZ.com/gen">
    <Person>
    <FirstName>Anshul</FirstName>
    <LastName>Chowdhary</LastName>
    <Gender>Male</Gender>
    <Address>
    <Street>2nd Main</Street>
    <Houseno>83/b</Houseno>
    <City>Mysore</City>
    </Address> </Person>
    </ns0:MT_XSLT_Source>
    XSL StyleSheet File:
    <?xml version='1.0' encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns0="http://XYZ.com/Gen"
    Xmlns:ns1=”http://XYZ.com/Test”>
    <xsl:template match="/">
    <ns1:MT_XSLT_Target>
    <Title> <xsl:value-of select="ns0:MT_XSLT_Source/Person/Gender"/> </Title>
    <Name> <xsl:value-of select="concat(concat(ns0:MT_XSLT_Source/Person/FirstName,' '), ns0:MT_XSLT_Source/Person/LastName)"/>
    </Name>
    <Street> <xsl:value-of select="concat(concat(ns0:Mt_XSLT_Source/Person/Address/Houseno,' '),
    ns0:Mt_XSLT_Source/Person/Address/Street)"/> </Street>
    <City> <xsl:value-of select="ns0:Mt_XSLT_Source/Person/Address/City"/> </City>
    </ns1:MT_XSLT_Target>
    </xsl:template>
    </xsl:stylesheet>
    The Desired Output shuold be:
    <?xml version="1.0" encoding="UTF-8"?>
    <ns1:MT_XSLT_Target xmlns:ns1="http://XYZ.com/Test">
    <Title>Male</Title>
    <Name>Anshul Chowdhary</Name>
    <Street>83/b 2nd Main</Street>
    <City>Mysore</City>
    </ns1:MT_XSLT_Target>
    I have refered the xsl in xml and i am getting the below Oupt in a Single line like this:
    Anshul Chowdhary Male 2nd Main 83/b Mysore
    I am Unable to display in Target XML Fomrat as shown above. Please check and do the needful.
    Regards,
    GIRIDHAR

    Hi,
    I have used below for testing.
    Input xml:
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="Persons111.xsl"?>
    <ns0:MT_XSLT_Source xmlns:ns0="http://XYZ.com/gen">
    <Person>
    <FirstName>Anshul</FirstName>
    <LastName>Chowdhary</LastName>
    <Gender>Male</Gender>
    <Address>
    <Street>2nd Main</Street>
    <Houseno>83/b</Houseno>
    <City>Mysore</City>
    </Address> </Person>
    </ns0:MT_XSLT_Source>
    xsl code:
    <?xml version='1.0' encoding="UTF-8"?> 
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns0="http://XYZ.com/gen" 
        xmlns:ns1="http://XYZ.com/Test"> 
        <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 
        <xsl:template match="/"> 
            <ns1:MT_XSLT_Target> 
                <Title> <xsl:value-of select="ns0:MT_XSLT_Source/Person/Gender"/> </Title> 
                <Name> <xsl:value-of select="concat(concat(ns0:MT_XSLT_Source/Person/FirstName,' '), ns0:MT_XSLT_Source/Person/LastName)"/> 
                </Name> 
                <Street> <xsl:value-of select="concat(concat(/ns0:MT_XSLT_Source/Person/Address/Houseno,' '), 
                    /ns0:MT_XSLT_Source/Person/Address/Street)"/> </Street> 
                <City> <xsl:value-of select="/ns0:MT_XSLT_Source/Person/Address/City"/> </City> 
            </ns1:MT_XSLT_Target> 
        </xsl:template> 
    </xsl:stylesheet>
    For testing in PI ,change the extension from .txt to .xsl and zip it and upload into PI as an imported archive .
    Regards
    Venkat

  • XSLT Mapping Help Needed

    Hi,
    I have a XSD file with multiple references in my external definition. I am trying to build a schema validation functionality for a xml based on the multiple XSD's.
    Is it possible to do a schema validation using xslt mapping?
    I am using Altova mapforce to generate XSLT mapping but somehow it is not working. It gives me an error "XML Not well Formed".
    Please help!!

    Hi Jyanth
    yes you can do this
    i advice you to use XML Schema Tools like stylus studio or spy for editing, mapping, converting, validating, generating, binding and documenting any XML data model
    few  links for you how you can do in XML
    validating XML using XSLT
    http://www.ldodds.com/papers/schematron_xsltuk.html
    http://www.w3.org/TR/xslt20/
    http://www.stylusstudio.com/xsd_to_xsd.html
    https://www.xsltstudio.com/xml_schema.html
    regards
    Sandeep
    If helpful kindly reward points

  • XSLT mapping with Java helper classes

    Hi,
    I'm trying to implement a XSLT mapping to convert my request to a specific soap request message format for this I'm calling some methods from a java helper class. I have imported the jar file into the archives. When I tried to test the interface it keeps complaing there is some exception but doesn't give me the exact error. Has any one called any java helper classes with in XSLT mapping, if so I would appreciate if you could help me with this. Here is the code from xsl.
    <wsse:Security soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0" xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/07/secext"   xmlns:UserToken="java:com.company.test.mapping.UserTokenMap">
    <wsse:UsernameToken>
        <wsse:Username xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
          <xsl:value-of select="UserToken:getUsername()"/>
        </wsse:Username>
        <wsse:Password wsse:Type="wsse:PasswordDigest" xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
        <xsl:value-of select="UserToken:getPasswordDigest()"/>
        </wsse:Password>
        <wsse:Nonce xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
        <xsl:value-of select="UserToken:getNonce()"/>
        </wsse:Nonce>
        <wsu:Created xsi:type="soapenc:string" xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
        <xsl:value-of select="UserToken:getCreateDate()"/>
    </wsu:Created>
    </wsse:UsernameToken>
    </wsse:Security>
    Thanks,
    Joe

    Hi,
    I'm getting following exception when I refer to the java class with in my XSLT mapping. Any one encountered the same problem.
    com.sap.engine.services.ejb.exceptions.BaseRemoteException:
    Exception in method transform.
         at com.sap.aii.ibrep.sbeans.mapping.MapServiceRemoteObjectImpl0.transform(MapServiceRemoteObjectImpl0.java:218)
         at com.sap.aii.ibrep.sbeans.mapping.MapServiceRemoteObjectImpl0p4_Skel.dispatch(MapServiceRemoteObjectImpl0p4_Skel.java:104)
         at com.sap.engine.services.rmi_p4.DispatchImpl._runInternal(DispatchImpl.java:320)
         at com.sap.engine.services.rmi_p4.DispatchImpl._run(DispatchImpl.java:198)
         at com.sap.engine.services.rmi_p4.server.P4SessionProcessor.request(P4SessionProcessor.java:129)
         at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
         at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(Native
    Method)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
    Caused by: java.lang.UnsupportedClassVersionError:
    com/earthlink/xi/mapping/UserTokenMap (Unsupported
    major.minor version 49.0)
         at java.lang.ClassLoader.defineClass0(Native
    Method)
         at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
         at java.lang.ClassLoader.defineClass(ClassLoader.java:448)
         at com.sap.aii.ibrep.server.mapping.ibrun.RepMappingLoader.findClass(RepMappingLoader.java:175)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
         at com.sap.engine.lib.xsl.xpath.JLBLibrary.<init>(JLBLibrary.java:33)
         at com.sap.engine.lib.xsl.xpath.LibraryManager.getFunction(LibraryManager.java:69)
         at com.sap.engine.lib.xsl.xpath.ETFunction.evaluate(ETFunction.java:98)
         at com.sap.engine.lib.xsl.xpath.XPathProcessor.innerProcess(XPathProcessor.java:56)
         at com.sap.engine.lib.xsl.xpath.XPathProcessor.process(XPathProcessor.java:43)
         at com.sap.engine.lib.xsl.xpath.XPathProcessor.process(XPathProcessor.java:51)
         at com.sap.engine.lib.xsl.xslt.XSLValueOf.process(XSLValueOf.java:76)
         at com.sap.engine.lib.xsl.xslt.XSLNode.processFromFirst(XSLNode.java:296)
         at com.sap.engine.lib.xsl.xslt.XSLElement.process(XSLElement.java:248)
         at com.sap.engine.lib.xsl.xslt.XSLNode.processFromFirst(XSLNode.java:296)
         at com.sap.engine.lib.xsl.xslt.XSLElement.process(XSLElement.java:248)
         at com.sap.engine.lib.xsl.xslt.XSLNode.processFromFirst(XSLNode.java:296)
         at com.sap.engine.lib.xsl.xslt.XSLElement.process(XSLElement.java:248)
         at com.sap.engine.lib.xsl.xslt.XSLNode.processFromFirst(XSLNode.java:296)
         at com.sap.engine.lib.xsl.xslt.XSLElement.process(XSLElement.java:248)
         at com.sap.engine.lib.xsl.xslt.XSLNode.processFromFirst(XSLNode.java:296)
         at com.sap.engine.lib.xsl.xslt.XSLElement.process(XSLElement.java:248)
         at com.sap.engine.lib.xsl.xslt.XSLNode.processFromFirst(XSLNode.java:296)
         at com.sap.engine.lib.xsl.xslt.XSLTemplate.process(XSLTemplate.java:272)
         at com.sap.engine.lib.xsl.xslt.XSLStylesheet.process(XSLStylesheet.java:463)
         at com.sap.engine.lib.xsl.xslt.XSLStylesheet.process(XSLStylesheet.java:431)
         at com.sap.engine.lib.xsl.xslt.XSLStylesheet.process(XSLStylesheet.java:394)
         at com.sap.engine.lib.jaxp.TransformerImpl.transformWithStylesheet(TransformerImpl.java:398)
         at com.sap.engine.lib.jaxp.TransformerImpl.transform(TransformerImpl.java:240)
         at com.sap.aii.ibrep.server.mapping.ibrun.RepMappingTransformer.transform(RepMappingTransformer.java:150)
         at com.sap.aii.ibrep.server.mapping.ibrun.RepXSLTMapping.execute(RepXSLTMapping.java:81)
         at com.sap.aii.ibrep.server.mapping.ibrun.RepSequenceMapping.execute(RepSequenceMapping.java:54)
         at com.sap.aii.ibrep.server.mapping.ibrun.RepMappingHandler.run(RepMappingHandler.java:80)
         at com.sap.aii.ibrep.server.mapping.rt.MappingHandlerAdapter.run(MappingHandlerAdapter.java:107)
         at com.sap.aii.ibrep.server.mapping.ServerMapService.transformInterfaceMapping(ServerMapService.java:127)
         at com.sap.aii.ibrep.server.mapping.ServerMapService.transform(ServerMapService.java:104)
         at com.sap.aii.ibrep.sbeans.mapping.MapServiceBean.transform(MapServiceBean.java:40)
         at com.sap.aii.ibrep.sbeans.mapping.MapServiceRemoteObjectImpl0.transform(MapServiceRemoteObjectImpl0.java:167)
         ... 10 more
    ; nested exception is:
         java.lang.UnsupportedClassVersionError:
    com/earthlink/xi/mapping/UserTokenMap (Unsupported
    major.minor version 49.0)

  • Help in XSLT Mapping

    Hi mates,
    I'm trying out the scenario in one of michal's blogs
    /people/michal.krawczyk2/blog/2005/11/23/xi-html-e-mails-from-the-receiver-mail-adapter
    my source message is as follows
    <i><?xml version="1.0" encoding="UTF-8"?>
    <ns0:MT_ErrorDetails xmlns:ns0="http://xyz.com/utility/errors/ReportErrors">
       <Object_Error>
          <Client/>
          <Logical_System/>
          <Object_Type/>
          <Object_Key>1234</Object_Key>
          <Error_Message/>
       </Object_Error>
       <Object_Error>
          <Client/>
          <Logical_System/>
          <Object_Type/>
          <Object_Key>1235</Object_Key>
          <Error_Message/>
       </Object_Error>
    </ns0:MT_ErrorDetails></i>
    I'm trying to generate o/p which will have 'Object_key's separated by line break i.e. new line.
    I wrote teh following XSLT code in XSLT_TOOL.
    <xsl:transform version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:sap="http://www.sap.com/sapxsl"
    >
    <xsl:strip-space elements="*"/>
    <xsl:template match="/">
    <html>
    <body>
    </body>
    <p>
    <strong>The following is the list of Material Numbers with errors</strong>
    </p>
    <p>
    <ol>
    <xsl:for-each select="Object_Error">
    <li value="0">
    <xsl:value-of select="Object_Key"/>
    </li>
    </xsl:for-each>
    </ol>
    </p>
    </html>
    </xsl:template>
    </xsl:transform>
    I wrote this based on XSLT mapping given in the blog. But my mapping is not giving me the required result. It gives the following o/p.
    <i><html><body></body><p><strong>The following is the list of Material
    Numbers with errors</strong></p><p><ol></ol></p></html></i>
    It doesnt select the 'Object Key's. What is wrong/missing in the XSLT mapping..XSLT gurus please help out this beginner.
    I highly appreciate your inputs.
    thx in adv
    praveen

    Hi Praveen,
    I think the reference in your loop is not correct.
    Try
    <xsl:for-each select="Object_Error/Object_Key">
    <li value="0">
    <xsl:value-of select="."/>
    </li>
    </xsl:for-each>
    or
    <xsl:for-each select="Object_Error">
    <li value="0">
    <xsl:value-of select="./Object_Key"/>
    </li>
    </xsl:for-each>
    both should work.
    regards
    Dirk

  • Need help in XSLT Mapping.

    Hello All,
    We created mapping between Orders IDOC structure, here we are using XSLT Mapping.
    problem is in IDOC structure new Z segment is added after that we have modified the mapping and tested in stylus studio and it was working fine.............but when we tested the interface end to end....the Z segment are not coming.
    we have updated the IDOC meta data in IDX2 .......when we hard code the Z segment values and run the mapping in interface mapping we can see proper result.
    Please give me inputs on this.
    Regards,
    chinna

    hi channa,
    go through the below link..for small ref...
    http://help.sap.com/saphelp_sm32/helpdata/en/6a/e6194119d8f323e10000000a155106/content.htm
    regards,
    kesava

  • 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

  • Java Error in RFC Lookup in XSLT Mapping usinf Java helper class

    Hi All,
    I am doing RFC Lookup in XSLT Mapping using Java Helper class.
    The Lookup works fine when called one RFC at a time However my requirement is I want to do 2 Lookups.
    Both Lookups works when done individually however when I call both lookups in one mapping I get following error "javax.xml.transform.TransformerException: DOMSource whose Node is null."
    Following is the code I have written in XSLT for the lookup:
         <xsl:template name="Lookup_1">
              <xsl:param name="STDPN"/>
                   <rfc:RFC_READ_TABLE>
                        <QUERY_TABLE>KNA1</QUERY_TABLE>
                        <OPTIONS><item><TEXT>
                                  <xsl:value-of select="$STDPN"/>
                             </TEXT></item>
                        </OPTIONS>
                        <FIELDS>
                             <item>
                                  <FIELDNAME>KUNNR</FIELDNAME>
                             </item>
                        </FIELDS>
                   </rfc:RFC_READ_TABLE>
              </xsl:variable>
              <xsl:variable name="response" xmlns:lookup="java:urn.mt.pi" select="lookup:execute($request, 'BS_D, 'cc_RfcLookup', $inputparam)"/>
              <xsl:element name="STDPN">
                   <xsl:value-of select="$response//DATA/item/WA"/>
              </xsl:element>
         </xsl:template>
         <xsl:template name="Lookup_2">
              <xsl:param name="BELNR"/>
                   <xsl:variable name="Query">AGMNT = '<xsl:value-of select="$BELNR"/>'</xsl:variable>
                   <xsl:variable name="request1">
                        <rfc:RFC_READ_TABLE>
                             <QUERY_TABLE>ZTABLE</QUERY_TABLE>
                             <OPTIONS><item><TEXT>
                                  <xsl:value-of select="$Query"/>
                                  </TEXT></item>
                             </OPTIONS>
                             <FIELDS>
                                  <item>
                                       <FIELDNAME>KUNAG</FIELDNAME>
                                  </item>
                             </FIELDS>
                        </rfc:RFC_READ_TABLE>
                   </xsl:variable>
                   <xsl:variable name="response1" xmlns:lookup="java:urn.mt.pi" select="lookup:execute($request1, 'BS_D','cc_RfcLookup', $inputparam)"/>
                   <xsl:element name="BELNR">
                        <xsl:value-of select="$response1//DATA/item/WA"/>
                   </xsl:element>
         </xsl:template>
    My Question: Am I doing anything wrong? Or Is it possible to call multiple lookups in one XSLT?
    Thanks and Regards,
    Atul

    Hi Atul,
    I had the same problem like you had.
    The main Problem is that with the example code the request variable is created as NodeList object. In XSLT a variable is somekind of a constant and can't be changed. As the request object is empty after the first request the programm fails at the following line:
    Source source = new DOMSource(request.item(0));
    So I've created a workaround for this problem.
    In the call of the template I've put the request as a parameter object at the template call:
    <xsl:with-param name="req">
    <rfc:PLM_EXPLORE_BILL_OF_MATERIAL xmlns:rfc="urn:sap-com:document:sap:rfc:functions">
      <APPLICATION>Z001</APPLICATION>
      <FLAG_NEW_EXPLOSION>X</FLAG_NEW_EXPLOSION>
      <MATERIALNUMBER><xsl:value-of select="value"/></MATERIALNUMBER>
      <PLANT>FSD0</PLANT>
      <VALIDFROM><xsl:value-of select="//Recordset/Row[name='DTM-031']/value"/></VALIDFROM>
      <BOMITEM_DATA/>
    </rfc:PLM_EXPLORE_BILL_OF_MATERIAL>
    </xsl:with-param>
    With this change the request will be provided as a String object and not as a NodeList object.
    Afterwards the RfcLookup.java has to be changed to the following:
    package com.franke.mappings;
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.PrintWriter;
    import java.io.StringWriter;
    import java.util.Map;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.transform.Source;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.dom.DOMSource;
    import javax.xml.transform.stream.StreamResult;
    import org.w3c.dom.Document;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    import com.sap.aii.mapping.lookup.Channel;
    import com.sap.aii.mapping.api.StreamTransformationConstants;
    import com.sap.aii.mapping.api.AbstractTrace;
    import com.sap.aii.mapping.lookup.RfcAccessor;
    import com.sap.aii.mapping.lookup.LookupService;
    import com.sap.aii.mapping.lookup.XmlPayload;
    * @author Thorsten Nordholm Søbirk, AppliCon A/S
    * Helper class for using the XI Lookup API with XSLT mappings for calling RFCs.
    * The class is generic in that it can be used to call any remote-enabled
    * function module in R/3. Generation of the XML request document and parsing of
    * the XML response is left to the stylesheet, where this can be done in a very
    * natural manner.
    * TD:
    * Changed the class that request is sent as String, because of IndexOutOfBound-exception
    * When sending multiple requests in one XSLT mapping.
    public class RfcLookup {
         * Execute RFC lookup.
         * @param request RFC request - TD: changed to String
         * @param service name of service
         * @param channelName name of communication channel
         * @param inputParam mapping parameters
         * @return Node containing RFC response
         public static Node execute( String request,
                 String service,
                 String channelName,
                 Map inputParam)
              AbstractTrace trace = (AbstractTrace) inputParam.get(StreamTransformationConstants.MAPPING_TRACE);
              Node responseNode = null;
              try {
                  // Get channel and accessor
                  Channel channel = LookupService.getChannel(service, channelName);
                  RfcAccessor accessor = LookupService.getRfcAccessor(channel);
                   // Serialise request NodeList - TD: Not needed anymore as request is String
                   /*TransformerFactory factory = TransformerFactory.newInstance();
                   Transformer transformer = factory.newTransformer();
                   Source source = new DOMSource(request.item(0));
                   ByteArrayOutputStream baos = new ByteArrayOutputStream();
                   StreamResult streamResult = new StreamResult(baos);
                   transformer.transform(source, streamResult);*/
                    // TD: Add xml header and remove linefeeds for the request string
                    request = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+request.replaceAll("[\r\n]+", ""); 
                    // TD: Get byte Array from request String to send afterwards
                    byte[] requestBytes = request.getBytes();
                   // TD: Not used anymore as request is String
                    //byte[] requestBytes = baos.toByteArray();
                    trace.addDebugMessage("RFC Request: " + new String(requestBytes));
                    // Create input stream representing the function module request message
                    InputStream inputStream = new ByteArrayInputStream(requestBytes);
                    // Create XmlPayload
                    XmlPayload requestPayload =LookupService.getXmlPayload(inputStream);
                    // Execute lookup
                    XmlPayload responsePayload = accessor.call(requestPayload);
                    InputStream responseStream = responsePayload.getContent();
                    TeeInputStream tee = new TeeInputStream(responseStream);
                    // Create DOM tree for response
                    DocumentBuilder docBuilder =DocumentBuilderFactory.newInstance().newDocumentBuilder();
                    Document document = docBuilder.parse(tee);
                    trace.addDebugMessage("RFC Response: " + tee.getStringContent());
                    responseNode = document.getFirstChild();
              } catch (Throwable t) {
                   StringWriter sw = new StringWriter();
                   t.printStackTrace(new PrintWriter(sw));
                   trace.addWarning(sw.toString());
              return responseNode;
         * Helper class which collects stream input while reading.
         static class TeeInputStream extends InputStream {
               private ByteArrayOutputStream baos;
               private InputStream wrappedInputStream;
               TeeInputStream(InputStream inputStream) {
                    baos = new ByteArrayOutputStream();
                    wrappedInputStream = inputStream;
               * @return stream content as String
               String getStringContent() {
                    return baos.toString();
              /* (non-Javadoc)
              * @see java.io.InputStream#read()
              public int read() throws IOException {
                   int r = wrappedInputStream.read();
                   baos.write(r);
                   return r;
    Then you need to compile and upload this class and it should work.
    I hope that this helps you.
    Best regards
    Till

  • Java and XSLT Mapping. Help required

    Hi All,
    Why I require Java Mapping and XSLT Mapping when I have Graphical mapping ?
    Please explain Java Mapping and XSLT Mapping with examples.
    Regards

    Hi,
    there are lot of thread alredy posted please serach
    check following link
    http://help.sap.com/saphelp_nw04/helpdata/en/ce/1d753cab14a909e10000000a11405a/frameset.htm
    XSLT Mapping:
    http://help.sap.com/saphelp_nw04/helpdata/en/73/f61eea1741453eb8f794e150067930/content.htm
    Java Mapping:
    http://help.sap.com/saphelp_nw04/helpdata/en/e2/e13fcd80fe47768df001a558ed10b6/content.htm
    Links of blogs on java mapping...
    /people/prasad.ulagappan2/blog/2005/06/29/java-mapping-part-i
    /people/prasad.ulagappan2/blog/2005/06/29/java-mapping-part-ii
    /people/prasad.ulagappan2/blog/2005/06/29/java-mapping-part-iii
    blog
    /people/sap.user72/blog/2005/03/15/using-xslt-mapping-in-a-ccbpm-scenario
    /people/anish.abraham2/blog/2005/12/22/file-to-multiple-idocs-xslt-mapping(file to xslt mapping)
    /people/pooja.pandey/blog/2005/06/27/xslt-mapping-with-java-enhancement-for-beginners(xslt with java enhancement function)
    Regards,
    Amit

  • Need help for Count function in XSLT Mapping

    Hi All,
    We have a requirement in our project,to do the xslt mapping from OAGIS 9.0 to EDI XML.In the EDI XML we have a SE tag whose value is the count of the no. of complex elements that will be generated in the EDIXML file( which is the target).
    Please do let me know if anybody has done this functionality in the xslt mapping.
    Thanks in Advance.
    Regards,
    Kaavya

    Hi,
    for the Hex-Number-conversion see:
    [url http://psoug.org/snippet/Convert-Hex-to-Decimal-Decimal-to-Hex_78.htm] self-defined Conversion-Functions
    What number format do you have? YYYMMDD
    Or is there a Date corresponding to 1 and a number n represent the date n-1 days after day 1?
    Please describe further.
    Bye
    stratmo

  • Need Help with XSLT Mapping....

    My scenario is synchronous scenario. SAP(Proxy) to XI to WebServer(SOAP)
    The response is coming back in asingle ANY field and so I guess I need XSLT Mapping to map it to the response message going  backto SAP.
    The response sent by webserver is of the structure:
    <?xml version="1.0" encoding="UTF-8"?>
    <GetStudentsExResponse xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/LMSWebSvc/LMS_Interface">
       <GetStudentsExResult>
          <Courses xmlns="">
             <Warnings/>
             <Course CourseName="Requal RWT with Instructional Blocks TEST" CourseId="1325">
                <Student LastName="LMSTest" FirstName="A" SSN="112345678" LoginID="lms123456a" CompanyName="LMS Test" CourseStatus="P" CourseStatusDate="03/14/2007 09:24:36" CourseScore="90">
                   <Lesson LessonCode="1915" LessonName="RWT Part 1"/>
                   <Lesson LessonCode="1916" LessonName="RWT Part 2"/>
                   <Lesson LessonCode="1917" LessonName="RWT Requal Exam" LessonStatus="p" LessonStatusDate="03/14/2007 09:24:36" LessonScore="90" ProctorID="1" ProctorName="Account Default">
                      <ExamInteractions QuesNum="17758" StudentResp="D" CorrectResp="D" Judged="c"/>
                      <ExamInteractions QuesNum="17769" StudentResp="B" CorrectResp="C" Judged="w"/>
                      <ExamInteractions QuesNum="8465" StudentResp="A" CorrectResp="A" Judged="c"/>
                      <ExamInteractions QuesNum="8471" StudentResp="A" CorrectResp="A" Judged="c"/>
                      <ExamInteractions QuesNum="8496" StudentResp="C" CorrectResp="C" Judged="c"/>
                      </Lesson>
                </Student>          
             </Course>
          </Courses>
       </GetStudentsExResult>
    </GetStudentsExResponse>
    The Structure that I need to map this to is:
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:Course_Response_MT xmlns:ns0="urn:sce-com:xi:fi:goyala">
       <GetStudentsExResponse>
          <GetStudentsExResult>
             <Courses>
                <Course>
                   <CourseName/>
                   <CourseID/>
                   <Student>
                      <LastName/>
                      <FirstName/>
                      <SSN/>
                      <LoginID/>
                      <CourseStatus/>
                      <CourseStatusDate/>
                      <CourseScore/>
                      <Lesson>
                         <LessonCode/>
                         <LessonName/>
                         <LessonStatus/>
                         <LessonStatusDate/>
                         <ExamInteractions>
                            <QuesNum/>
                            <StudentResp/>
                            <CorrectResp/>
                            <Judged/>
                         </ExamInteractions>
                      </Lesson>
                   </Student>
                </Course>
             </Courses>
          </GetStudentsExResult>
       </GetStudentsExResponse>
    </ns0:Course_Response_MT>
    and  the xslt mapping that I have written for this is:
    <?xml version='1.0' encoding='utf-8' ?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:a="urn:sce-com:xi:fi:goyala" xmlns:DateUtils="com.sce.hcm.xi.util.DateUtils">
         <xsl:template match="/">
              <a:Course_Response_MT>
                   <GetStudentsExResponse>
                        <GetStudentsExResult>
                             <Courses>
                                  <CourseName>
                                       <xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course[@CourseName]"/>
                                       <xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course[@CourseID]"/>
                                       <Student>
                                            <xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student[@LastName]"/>
                                            <xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student[@FirstName]"/>
                                            <xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student[@SSN]"/>
                                            <xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student[@LoginID]"/>
                                            <xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student[@CourseStatus]"/>
                                            <xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student[@CourseStatusDate]"/>
                                            <xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student[@CourseScore]"/>
                                            <Lesson>
                                                 <xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student/Lesson[@LessonCode]"/>
                                                 <xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student/Lesson[@LessonName]"/>
                                                 <xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student/Lesson[@LessonStatus]"/>
                                                 <xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student/Lesson[@LessonStatusDate]"/>
                                                 <ExamInteractions>
                                                             <xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student/Lesson/ExamInteractions[@QuesNum]"/>
                                                             <xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student/Lesson/ExamInteractions[@StudentResp]"/>
                                                             <xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student/Lesson/ExamInteractions[@CorrectResp]"/>
                                                                   <xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student/Lesson/ExamInteractions[@Judged]"/>
                                                 </ExamInteractions>
                                            </Lesson>
                                       </Student>                                   
                                  </CourseName>
                             </Courses>
                        </GetStudentsExResult>
                   </GetStudentsExResponse>                                        
              </a:Course_Response_MT>
         </xsl:template>
    </xsl:stylesheet>
    But This mapping is not working...  I am getting errors...
    Pls advice, this is urgent..
    Regards,
    XIer
    Edited by: XIer on Apr 25, 2008 12:23 PM
    Edited by: XIer on Apr 25, 2008 12:37 PM
    Edited by: XIer on Apr 25, 2008 12:37 PM

    Hi All,
              I have now modified my XSLT Mapping as :
    <?xml version='1.0' encoding='utf-8' ?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:a="urn:sce-com:xi:fi:goyala" xmlns:DateUtils="com.sce.hcm.xi.util.DateUtils">
         <xsl:template match="/">
              <a:Course_Response_MT>
                   <GetStudentsExResponse>
                   <xsl:value-of select="a:GetStudentsExResponse"/>
                        <GetStudentsExResult>
                        <xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult"/>
                             <Courses>
                             <xsl:for-each select="a:GetStudentsExResponse/GetStudentsExResult/Courses">
                                  <Course>
                                   <CourseName>
                                       <xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/@CourseName"/>
                                       </CourseName>
                                       <CourseID>
                                       <xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/@CourseID"/>
                                       </CourseID>
                                       <xsl:for-each select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student">
                                       <Student>
                                       <LastName>
                                            <xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student/@LastName"/></LastName>
                                       <FirstName>     <xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student/@FirstName"/></FirstName>
                                            <SSN><xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student/@SSN"/></SSN>
                                            <LoginID><xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student/@LoginID"/></LoginID>
                                            <CourseStatus><xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student/@CourseStatus"/></CourseStatus>
                                            <CourseStatusDate><xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student/@CourseStatusDate"/></CourseStatusDate>
                                            <CourseScore><xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student/@CourseScore"/></CourseScore>
                                            <xsl:for-each select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student/Lesson">
                                            <Lesson>
                                                 <LessonCode><xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student/Lesson/@LessonCode"/></LessonCode>
                                                 <LessonName><xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student/Lesson/@LessonName"/></LessonName>
                                                 <LessonStatus><xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student/Lesson/@LessonStatus"/></LessonStatus>
                                                 <LessonStatusDate><xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student/Lesson/@LessonStatusDate"/></LessonStatusDate>
                                                 <ExamInteractions>
                                                      <QuesNum>       <xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student/Lesson/ExamInteractions/@QuesNum"/></QuesNum>
                                                      <StudentResp>       <xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student/Lesson/ExamInteractions/@StudentResp"/></StudentResp>
                                                      <CorrectResp>       <xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student/Lesson/ExamInteractions/@CorrectResp"/></CorrectResp>
                                                         <Judged>          <xsl:value-of select="a:GetStudentsExResponse/GetStudentsExResult/Courses/Course/Student/Lesson/ExamInteractions/@Judged"/></Judged>
                                                 </ExamInteractions>
                                            </Lesson>
                                            </xsl:for-each>
                                       </Student>                                   
                                  </xsl:for-each>
                                  </Course>
                                  </xsl:for-each>
                             </Courses>
                        </GetStudentsExResult>
                   </GetStudentsExResponse>                                        
              </a:Course_Response_MT>
         </xsl:template>
    </xsl:stylesheet>     
    However when i execute this mapping in IR, I get empty tags at the target side:
    <?xml version="1.0" encoding="UTF-8"?>
    <a:Course_Response_MT xmlns:a="urn:sce-com:xi:fi:goyala"><GetStudentsExResponse><GetStudentsExResult><Courses/></GetStudentsExResult></GetStudentsExResponse></a:Course_Response_MT>
    Please Advice....
    Regards,
    XIer

  • Help Required for XSLT mapping

    Hi Folks,
    I am working on a scenario, where we had 17 different one to one mapping with same source strcture but different target structures. Source is a Idoc common for everyone.
    Sample Target Structure :
    Message Type(XYZ)
                     RECORDS(0,u)
                                             A(0,1)
                                             B(0,1)
                                             C(0,1)
                                             D(0,1)
    As per our requirement we need the output in which we need to have "GLOBE " at the top and the value of A, B, C and D on single row for each ouurance of RECORD. For 2nd occurance we need to change the line and 2 nd set of ABCD on 2nd row and so on. e.g.
    GLOBE
    0002044452KNA1 0000027079 0001E
    0002044452KNA1 0000027080 0001E
    0002044452KNA1 0000027080 0001E
    To acheive the above output we are using a XSLT map after Message Mapping
    <?xml version="1.0" encoding="UTF-8" ?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text" indent="no" encoding="UTF-8" omit-xml-declaration="yes"/>
    <xsl:preserve-space elements="*"/>
    <xsl:template match="/">GLOBE<xsl:text>&#xD;&#xA;</xsl:text>
    <xsl:for-each select="//RECORDS">
      <xsl:for-each select="*">
         <xsl:value-of select="current()"/>
      </xsl:for-each><xsl:text>&#xD;&#xA;</xsl:text></xsl:for-each>
    </xsl:template>
    </xsl:stylesheet>
    NOW WE HAVE changed the 17 one to one maps to one multi mapping (1:17) as our source is same.
    Now as the output of this multi mapping is getting into XSL code, it is not able to parse it.
    How can we do the changes in this particular code So that we can Achieve:                     17 different file out of single multi mapping and XSL map like it was comming previously from 17 different maps.
    Thanks
    Pradeep

    Hi Pradeep,
    Depending on how you setup your multi mapping, when you execute you will end up with something like this as the xml output:
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
      <ns0:Message1>
        <XYZ></XYZ>
        <XYZ></XYZ>
      </ns0:Message1>
    </ns0:Messages>
    Or this:
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
      <ns0:Message1>
        <XYZ></XYZ>
      </ns0:Message1>
      <ns0:Message2>
        <XYZ></XYZ>
      </ns0:Message2>
    </ns0:Messages>
    The single xml message with the u201CMessagesu201D wrapper is not split into separate messages until it hits one of the adapters in the adapter engine.  Perhaps you can try to adjust the xslt to expect this as input, but the output would still need to be <ns0:Messages>.  That might be what is causing the failure with your current xslt.  Can the flat file conversion in the file adapter?
    Thanks,
    -Russ

  • FileName in ABAP XSLT Mapping

    Dear SDN,
    In an integration scenario we are using sender File Adapter and a  ABAP XSLT Mapping.
    Is there any way to get the source FileName from such mapping.  Im trying to use the adapter-specific message attributes, but it doesn't work, and I didn´t find an example, probably I and doing somthing wrong.
    regards,
    GP

    Thank you for your help,
    I just try to access the adapter-specific attibutes using:
    <xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:key="java:com.sap.aii.mapping.api.DynamicConfigurationKey">
    <xsl:variable name="filename"  select="key:create('http://sap.com/xi/XI/System/File', 'Directory')" />
    </xsl:stylesheet>
    but the following error raised:
    <SAP:Stack>Error while calling mapping program YXSLT_TEST (type Abap-XSLT, kernel error ID CX_XSLT_RUNTIME_ERROR) Call of unknown function</SAP:Stack>
    have you had this situation?

  • XSLT MAPPING

    In which cases we will go for XSLT MAPPING?
    What are different functions available in altova map force ? please provide me the helpful material regards this?

    Hi,
    Check this link..
    http://help.sap.com/saphelp_nwpi711/helpdata/en/73/f61eea1741453eb8f794e150067930/frameset.htm
    https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/01a57f0b-0501-0010-3ca9-d2ea3bb983c1
    STEPS.
    1.  Open the Alto MapForce, import the source .xml and .xsd file in it
    2. Similarly import the target .xml and .xsd in MapForce.
    3.These two data files should match with source and target data types in Integration Repository.
    4.Complete the graphical mapping using extensive list of XSLT functions available there.
    5. Save the mapping file.
    6.Click the XSLT tab. You will have the entire xslt logic there.
    7.Copy that content and save it as .xsl file.
    8. Zip above .xsl file and import the same into IR under Imported Archives.
    Thanks.

  • XSLT mapping queries.

    Hi,
    I have a scenario in which I need to post the data in JMS queue from a proxy call.
    [Proxy>PI>JMS]. Here the MQ message is fed to a web application.
    The scenario contains two mapping viz message and XSLT mapping.
    The first one is message mapping and then XSLT is called.
    Now in the XSLT mapping CDATA tag is called to skip the xml parsing and send to JMS queue for HTML output in web application.
    My doubt is how can I achieve table formatting from PI. Few options can be
    1) incorporate xsl in CDATA tag of XSLT mapping for HTML tag for table format?
    2) instead of JMS queue, should I need to post in HTTP receiver directly?
    3) Is it the xsl need to add in Web application side for the sending xml from PI?
    Please help in my understanding.
    Thanks
    PV.

    Hi,
    Try with Java Proxy,you can directly update data in to web application or if you web application team ready to accept data in the form of web service then you no need to generate output in the form of HTML.
    Regards,
    Raj

Maybe you are looking for