XSLT mapping - output completely wrong

Hello experts,
I need to send an idoc to the receiver party, but they want the complete content in 1 field.
So I use a graphical message mapping to map the fields and an XSL mapping to put the idoc structure into a specific field in the output structure.
Also, in my operation mapping, both entries are indicated.
My target structure should look like this:
  <?xml version="1.0" encoding="UTF-8" ?>
- <USM>
  <USMTYPE>ZBEPA_SCX_07</USMTYPE>
  <USMVERSION>ZBEPA_SCX_07</USMVERSION>
  <RUNOPTION>LS</RUNOPTION>
- <MESSAGE>
- <METADATAS>
- <METADATA>
  <KEY>KEY</KEY>
  <VALUE>VALUE</VALUE>
  </METADATA>
  </METADATAS>
- <ADDRESSES>
- <ADDRESS>
  <ADDRESSTYPE>1</ADDRESSTYPE>
  <CHANNEL>2</CHANNEL>
  <ADDRESS>3</ADDRESS>
  </ADDRESS>
  </ADDRESSES>
  <SUBJECT>Onderwerp</SUBJECT>
  <TIMESTAMP>20090813113600</TIMESTAMP>
  <CONFIRMDELIVERY>True</CONFIRMDELIVERY>
- <MESSAGECONTENT>
  <MESSAGETEXT>Tekst</MESSAGETEXT>
  <MESSAGETEXTCONTENTTYPE>Inhoud</MESSAGETEXTCONTENTTYPE>
  <MESSAGETEXTENCODING>Codering</MESSAGETEXTENCODING>
- <FILES>
- <FILE>
  <FILETYPE>XML</FILETYPE>
  <FILENAME>To Be Determined</FILENAME>
  <FILECONTENTTYPE>Plain</FILECONTENTTYPE>
  <FILECONTENTENCODING>NONE</FILECONTENTENCODING>
  <FILEREF>NA</FILEREF>
  <COMPRESSMETHOD>NONE</COMPRESSMETHOD>
  </FILE>
  </FILES>
  </MESSAGECONTENT>
The MESSAGECONTENT field should content the idoc content with CDATA .... in front.
  </MESSAGE>
  </USM>
This is my XSL mapping:
<?xml version="1.0" encoding="UTF-8"?>
<ns0:stylesheet version="1.0" xmlns:ns0="http://www.w3.org/1999/XSL/Transform">
   <ns0:output method="xml" indent="yes" version="1.0"/>
   <ns0:template match="/">
      <USM>
         <ns0:element name="FILECONTENT">
            <ns0:text disable-output-escaping="yes">&lt;![CDATA[</ns0:text>
            <ns0:copy-of select="ZBEXX_STR_SCX_1P9005"/>
            <ns0:text disable-output-escaping="yes">]]</ns0:text>
            <ns0:text disable-output-escaping="yes">&gt;</ns0:text>
         </ns0:element>
      </USM>
   </ns0:template>
</ns0:stylesheet>
And this is my result XML:
  <?xml version="1.0" encoding="UTF-8" ?>
- <USM>
- <FILECONTENT>
- <![CDATA[
  ]]>
  </FILECONTENT>
  </USM>
Please advice.
Thanks a lot!
Dimitri

Aha... Let's go for XSL ... (I deleted the graphical message mapping step from the operation mapping step)
This is my XSL 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="xml" indent="yes" version="1.0" encoding="UTF-8" cdata-section-elements="FILECONTENT"/>
   <xsl:template match="/">
      <USM xmlns="http://www.ordina.be/StructureToFieldTest">
         <USMTYPE>
            <xsl:value-of select="USMTYPE" disable-output-escaping="yes"/>
         </USMTYPE>
         <USMVERSION>
            <xsl:value-of select="USMVERSION" disable-output-escaping="yes"/>
         </USMVERSION>
         <RUNOPTION>
            <xsl:value-of select="RUNOPTION" disable-output-escaping="yes"/>
         </RUNOPTION>
         <MESSAGE>
            <METADATAS>
               <METADATA>
                  <KEY>
                     <xsl:value-of select="MESSAGE/METADATAS/METADATA/KEY" disable-output-escaping="yes"/>
                  </KEY>
                  <VALUE>
                     <xsl:value-of select="MESSAGE/METADATAS/METADATA/VALUE" disable-output-escaping="yes"/>
                  </VALUE>
               </METADATA>
            </METADATAS>
            <ADDRESSES>
               <ADDRESS>
                  <ADDRESSTYPE>
                     <xsl:value-of select="MESSAGE/ADDRESSES/ADDRESS/ADDRESTYPE" disable-output-escaping="yes"/>
                  </ADDRESSTYPE>
                  <CHANNEL>
                     <xsl:value-of select="MESSAGE/ADDRESSES/ADDRESS/CHANNEL" disable-output-escaping="yes"/>
                  </CHANNEL>
                  <ADDRESS>
                     <xsl:value-of select="MESSAGE/ADDRESSES/ADDRESS/ADDRESS" disable-output-escaping="yes"/>
                  </ADDRESS>
               </ADDRESS>
            </ADDRESSES>
            <SUBJECT>
               <xsl:value-of select="MESSAGE/SUBJECT" disable-output-escaping="yes"/>
            </SUBJECT>
            <TIMESTAMP>
               <xsl:value-of select="MESSAGE/TIMESTAMP" disable-output-escaping="yes"/>
            </TIMESTAMP>
            <CONFIRMDELIVERY>
               <xsl:value-of select="MESSAGE/CONFIRMDELIVERY" disable-output-escaping="yes"/>
            </CONFIRMDELIVERY>
            <MESSAGECONTENT>
               <MESSAGETEXT>
                  <xsl:value-of select="MESSAGE/MESSAGECONTENT/MESSAGETEXT" disable-output-escaping="yes"/>
               </MESSAGETEXT>
               <MESSAGETEXTCONTENTTYPE>
                  <xsl:value-of select="MESSAGE/MESSAGECONTENT/MESSAGECONTENTTYPE" disable-output-escaping="yes"/>
               </MESSAGETEXTCONTENTTYPE>
               <MESSAGETEXTENCODING>
                  <xsl:value-of select="MESSAGE/MESSAGECONTENT/MESSAGETEXTENCODING" disable-output-escaping="yes"/>
               </MESSAGETEXTENCODING>
               <FILES>
                  <FILE>
                     <FILETYPE>
                        <xsl:value-of select="MESSAGE/MESSAGECONTENT/FILES/FILE/FILETYPE" disable-output-escaping="yes"/>
                     </FILETYPE>
                     <FILENAME>
                        <xsl:value-of select="MESSAGE/MESSAGECONTENT/FILES/FILE/FILENAME" disable-output-escaping="yes"/>
                     </FILENAME>
                     <FILECONTENTTYPE>
                        <xsl:value-of select="MESSAGE/MESSAGECONTENT/FILES/FILE/FILECONTENTTYPE" disable-output-escaping="yes"/>
                     </FILECONTENTTYPE>
                     <FILECONTENTENCODING>
                        <xsl:value-of select="MESSAGE/MESSAGECONTENT/FILES/FILE/FILECONTENTENCODING" disable-output-escaping="yes"/>
                     </FILECONTENTENCODING>
                     <FILEREF>
                        <xsl:value-of select="MESSAGE/MESSAGECONTENT/FILES/FILE/FILEREF" disable-output-escaping="yes"/>
                     </FILEREF>
                     <COMPRESSMETHOD>
                        <xsl:value-of select="COMPRESSMETHOD" disable-output-escaping="yes"/>
                     </COMPRESSMETHOD>
                     <FILECONTENT>
                        <xsl:text disable-output-escaping="yes">&lt;![CDATA[</xsl:text>
                        <xsl:copy-of select="*"/>
                        <xsl:text disable-output-escaping="yes">]]</xsl:text>
                        <xsl:text disable-output-escaping="yes">&gt;</xsl:text>
                     </FILECONTENT>
                  </FILE>
               </FILES>
            </MESSAGECONTENT>
         </MESSAGE>
      </USM>
   </xsl:template>
</xsl:stylesheet>
This is the result: as you can see, nothing is mapped. and the target structure is in and not the source structure
  <?xml version="1.0" encoding="UTF-8" ?>
- <USM xmlns="http://www.ordina.be/StructureToFieldTest">
  <USMTYPE />
  <USMVERSION />
  <RUNOPTION />
- <MESSAGE>
- <METADATAS>
- <METADATA>
  <KEY />
  <VALUE />
  </METADATA>
  </METADATAS>
- <ADDRESSES>
- <ADDRESS>
  <ADDRESSTYPE />
  <CHANNEL />
  <ADDRESS />
  </ADDRESS>
  </ADDRESSES>
  <SUBJECT />
  <TIMESTAMP />
  <CONFIRMDELIVERY />
- <MESSAGECONTENT>
  <MESSAGETEXT />
  <MESSAGETEXTCONTENTTYPE />
  <MESSAGETEXTENCODING />
- <FILES>
- <FILE>
  <FILETYPE />
  <FILENAME />
  <FILECONTENTTYPE />
  <FILECONTENTENCODING />
  <FILEREF />
  <COMPRESSMETHOD />
- <FILECONTENT>
- <![CDATA[
<ZBEPA_SCX_07>
<IDOC BEGIN="1">
<EDI_DC40 SEGMENT="1">
<TABNAM>EDI_DC40</TABNAM>
<MANDT>312</MANDT>
<DOCNUM>0000000000008155</DOCNUM>
<DOCREL>701</DOCREL>
<STATUS>30</STATUS>
<DIRECT>1</DIRECT>
<OUTMOD>2</OUTMOD>
<IDOCTYP>ZBEPA_SCX_07</IDOCTYP>
<MESTYP>ZBEPA_SCX_07</MESTYP>
<STDMES>ZBEPA_</STDMES>
<SNDPOR>SAPSED</SNDPOR>
<SNDPRT>LS</SNDPRT>
<SNDPRN>SEDCLNT312</SNDPRN>
<RCVPOR>SAPSXD001</RCVPOR>
<RCVPRT>LS</RCVPRT>
<RCVPRN>SXDCLNT001</RCVPRN>
<CREDAT>20090831</CREDAT>
<CRETIM>125942</CRETIM>
<SERIAL>20090813113600</SERIAL>
</EDI_DC40>
<ZBEXX_STR_SCX_1P9005 SEGMENT="1">
<FIRMA>NGA</FIRMA>
<DEPARTMENT>01</DEPARTMENT>
<CATEGORY>X</CATEGORY>
<PERSON>IKKE</PERSON>
<BEGDA>30072009</BEGDA>
<NEXT_INCREASE_DATE>31072009</NEXT_INCREASE_DATE>
</ZBEXX_STR_SCX_1P9005>
</IDOC>
</ZBEPA_SCX_07>
  ]]>
  </FILECONTENT>
  </FILE>
  </FILES>
  </MESSAGECONTENT>
  </MESSAGE>
  </USM>

Similar Messages

  • XSLT Mapping: Namespace for prefix 'ns0' has not been declared

    Hello, I am working on a synchronous SOAP call and having some trouble with the response message. The web service has its own namespace and I am trying to convert this to my custom data type in PI. PI wants the message to be in format of having ns0 prefix and namespace like we have defined (http://foo for example).
    I have an XSLT mapping (see below) which works fine with my test response payload (pulled from SXMB_MONI source) on this online XSLT test site:
    http://www.freeformatter.com/xsl-transformer.html
    However when I import this archive to PI and test with operation mapping it always says "Namespace for prefix 'ns0' has not been declared."
    This is very confusing because when I test it online, I see both prefix and namespace declaration perfectly. Is there a way to see the results in the PI test tool? After this XSLT java error it doesn't give me the output even in Trace Level All mode.
    Please advise on this issue or if you know an easier way (such as altering my datatype/message type to match the inbound SOAP message). I tried working with the 3rd party WSDL but the response message types show a different root level node than what PI is receiving so I gave up to make my own matching datatype. I just have to solve this last inbound namespace issue and should be finished.
    FYI I have refreshed all PI caches and activated all objects.
    Thanks for your ideas!
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:ns0="http://foo"
      <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
      <xsl:template match="@* | node()">
        <xsl:copy>
          <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
      </xsl:template>
      <xsl:template match="/*">
        <xsl:element name="ns0:{local-name()}">
          <xsl:apply-templates select="@* | node()" />
        </xsl:element>
      </xsl:template>
      <xsl:template match="/">
        <xsl:element name="{local-name()}">
          <xsl:apply-templates select="@* | node()" />
        </xsl:element>
      </xsl:template>
    </xsl:stylesheet>

    Some additional info, here is an example payload which goes through the XSLT mapping perfectly, but in PI I get the error about missing ns0 declaration.
    XML input:
    <bar xmlns='http://irrelevantnamespace'
    xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'
    xmlns:xsd='http://www.w3.org/2001/XMLSchema'
    xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
    <foo/>
    </bar>
    XSLT mapped output using test tool and XSL above:
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:bar xmlns:ns0="http://foo">
       <foo />
    </ns0:bar>

  • XSLT mapping sorting against an output field

    Hi, all
    I am testing my XSLT mapping. Here is the output message type defintion:
    I want to sort f2 in my xslt mapping. Here is my mapping:
    <?xml version="1.0" encoding="UTF-8" ?>
      <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns0="http://fileconversion" xmlns:ns1="http://fileconversion">
        <xsl:template match="/">
          <ns1:TESTOUTPUT_MT>
            <Msg>
            <xsl:for-each select="ns0:TESTDATA_MT/Trans/Detail">
            <xsl:sort select="Transaction/Data/f2" />
              <Transaction>
                <Data>
                  <f1>
                    <xsl:value-of select="PERNR" />
                  </f1>
                  <f2>
                    <xsl:value-of select="POSITION" />
                  </f2>
                  <f3>
                    <xsl:value-of select="TEL" />
                  </f3>
                  <f4>
                    <xsl:value-of select="concat(concat(STREET,' '),CITY)" />
                  </f4>
                </Data>
              </Transaction>
                </xsl:for-each>
            </Msg>
          </ns1:TESTOUTPUT_MT>
        </xsl:template>
      </xsl:stylesheet>
    The sorting did not execute on field "f2" and the data is in the same order as the input.
    Note that I can do <xsl:sort select="POSITION " /> instead and it will work. But I am trying to test on sorting against output field as this is the requirement in the real interface.
    What did I do wrong? Please advise.
    Thanks,
    Jonathan.

    Hi Jon - You can sort the source values. If you use "sort select="Transaction/Data/f2" i don't think it has got some effect.
    You can use <xsl:sort select="POSITION " /> Any issues with that?
    Just to add - when you map Position with F2... how does the sorting will be different when you execute it on F2 or Position?
    If you are doing some calculation for F2 then should handle the Sort function accordingly..

  • XSLT Mapping of Adapter-Specific Message Attributes

    Hi,
    We have the requirement to build a soap request with a custom soap envelop/header which contains a sessionId.
    Therefore we developed a xlst mapping which is called directly after a graphical mapping.
    In the graphical mapping the session id is written to the dynamic configuration.
    The goal is to read this session id in the xslt mapping from the dynamic configuration using XSLT Mapping of Adapter-Specific Message Attributes. We used  [this|http://help.sap.com/saphelp_nwpi711/helpdata/en/43/03fe1bdc7821ade10000000a1553f6/content.htm] documentation as an example.
    But we are getting the following error: TransformerConfigurationException triggered while loading XSLT mapping. The error is raised at this node: <xsl:variable name="dynamic-conf" select="map:get($inputparam, 'DynamicConfiguration')" />
    This is the coding of the xslt transformation:
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0"
          xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
          xmlns:ns1="urn:enterprise.soap.sforce.com"
          xmlns:map="java:java.util.Map"
          xmlns:dyn="java:com.sap.aii.mapping.api.DynamicConfiguration"
          xmlns:key="java:com.sap.aii.mapping.api.DynamicConfigurationKey">
    <xsl:output indent="no" />
    <xsl:param name="inputparam"/>
    <xsl:template match="/">
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:enterprise.soap.sforce.com">
    <soapenv:Header>
    <urn:SessionHeader>
    <xsl:variable name="dynamic-conf" select="map:get($inputparam, 'DynamicConfiguration')" />
    <xsl:variable name="dynamic-key" select="key:create('http://sap.com/xi/XI/System/SOAP', 'sessionId')" />
    <xsl:variable name="dynamic-value" select="dyn:get($dynamic-conf, $dynamic-key)" />
    <urn:sessionId><xsl:value-of select="$dynamic-value"></xsl:value-of></urn:sessionId>
    </urn:SessionHeader>
    </soapenv:Header>
    <soapenv:Body>
    <xsl:copy-of select="*"/>
    </soapenv:Body>
    </soapenv:Envelope>
    </xsl:template>
    </xsl:stylesheet>
    Any help will be highly appreciated.
    Regards, Henk

    Hi, yes we did try that and lot's of other combination.
    The results of those trials are that it seems to go wrong with <xsl:variable name="dynamic-conf" select="map:get($inputparam, 'DynamicConfiguration')" />
    When we enclose it with <xsl:if test="function-available('map:get')"> the transformation is not dumping, but the function is not available.
    Regards, Henk

  • Problem in XSLT mapping

    Hello,
    I am working on XSLT mapping, where i am trying to add similar values but when i upload the .xsl file i get a Java Null pointer Error, this is the error :-
    *Cause: Unable to recognize the loaded document as valid XSD*
    *Error when parsing XSD document com.sap.aii.utilxi.xsd.api.XsdException: A schema must start with the tag <schema> that belongs to "http://www.w3.org/2001/XMLSchema" namespace*
    This is the complete XSLT file that m trying to upload.
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
         <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
         <!-- Build a key to group item by itemDescription -->
         <xsl:key name="itemDescription" match="salesOrder/item" use="itemDescription"/>
         <xsl:template match="/">
              <salesOrder>
                   <!-- iterate on each group -->
                   <xsl:for-each select="salesOrder/item[generate-id(.) = generate-id(key('itemDescription', itemDescription)[1]) ]">
                        <xsl:variable name="group" select="key('itemDescription', itemDescription)"/>
                        <xsl:variable name="itemDescription">
                             <xsl:value-of select="itemDescription"/>
                        </xsl:variable>
                        <xsl:variable name="itemRetailPrice">
                             <xsl:value-of select="sum($group/itemRetailPrice)"/>
                        </xsl:variable>
                        <xsl:variable name="itemSalePrice">
                             <xsl:value-of select="sum($group/itemSalePrice)"/>
                        </xsl:variable>
                        <!-- Generate the final XML file -->
                        <item>
                             <itemDescription>
                                  <xsl:value-of select="$itemDescription"/>
                             </itemDescription>
                             <itemRetailPrice>
                                  <xsl:value-of select="$itemRetailPrice"/>
                             </itemRetailPrice>
                             <itemSalePrice>
                                  <xsl:value-of select="$itemSalePrice"/>
                             </itemSalePrice>
                        </item>
                   </xsl:for-each>
              </salesOrder>
         </xsl:template>
    </xsl:stylesheet>
    Thanks !!
    Harpreet

    The message was 1 related to some errors at External definition. That y i asked that question.
    Are u getting any other error now?
    This looks distorted after posting
    Now for ur xsl file
    Instead of
    <xsl:for-each select="salesOrder/item[generate-id(.) = generate-id(key('itemDescription', itemDescription)1])">
    Use
    <xsl:for-each select="salesOrder/item[generate-id(.) = generate-id(key('itemDescription', itemDescription)[1]) ]">Regards,
    Prateek

  • 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

  • Problem with Dynamic Configuration in XSLT mapping..!!

    Hi friends,
    Working first time with xslt map.I am doing a Idoc to File scenario in which I need to pass Idoc number as the file name dynamically. Right now I am just trying to send some constant value 'ABCD' to go in dynamic attribute filename.
    I used the code which has been provided over here.
    [http://help.sap.com/saphelp_nw04/helpdata/en/43/03fe1bdc7821ade10000000a1553f6/frameset.htm|http://help.sap.com/saphelp_nw04/helpdata/en/43/03fe1bdc7821ade10000000a1553f6/frameset.htm]
    I just changed the "Directory" with "FileName" in the code. It is not generating the dynamic attribute http://sap.com/xi/XI/System/File
    This is my xsl code. Please suggest me If iam doing anything wrong.
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:map="java:java.util.Map" xmlns:dyn="java:com.sap.aii.mapping.api.DynamicConfiguration" xmlns:key="java:com.sap.aii.mapping.api.DynamicConfigurationKey">
         <xsl:output indent="no"/>
         *<xsl:param name="inputparam" select = "ABCD"/>*
         <xsl:output method="text" encoding="utf-8"/>
         <xsl:template match="/">
              <!-- change dynamic configuration -->
              <xsl:variable name="dynamic-conf" select="map:get($inputparam, 'DynamicConfiguration')"/>
              *<xsl:variable name="dynamic-key" select="key:create('http://sap.com/xi/XI/System/File', 'FileName')"/>*
              <xsl:variable name="dynamic-value" select="dyn:get($dynamic-conf, $dynamic-key)"/>
              <xsl:variable name="new-value" select="concat($dynamic-value, 'subfolder\')"/>
              <xsl:variable name="dummy" select="dyn:put($dynamic-conf, $dynamic-key, $new-value)"/>
              <!-- copy payload -->
              <xsl:copy-of select="."/>
         </xsl:template>
         <xsl:template match="/">
    Waiting for your answers.
    Thank you.
    Deepthi.

    Hi Stefen,
    I tried the way you suggest but still I couldn't able to see the Dynamic Configuration attribute in SOAP document. I tried for Idoc number and even tried by passing just a value 'abcd' like below.
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:map="java:java.util.Map" xmlns:dyn="java:com.sap.aii.mapping.api.DynamicConfiguration" xmlns:key="java:com.sap.aii.mapping.api.DynamicConfigurationKey">
         <xsl:output indent="no"/>
         <xsl:output method="text" encoding="utf-8"/>
         *<xsl:param name="inputparam"/>*
                    *<xsl:param name="new-value">*
      *<xsl:value-of select="/WMMBID01/IDOC/EDI_DC40/DOCNUM" />*
      *</xsl:param>*     
         <xsl:template match="/">
              <!-- change dynamic configuration -->
              <xsl:variable name="dynamic-conf" select="map:get($inputparam, 'DynamicConfiguration')"/>
              <xsl:variable name="dynamic-key" select="key:create('http://sap.com/xi/XI/System/File', 'FileName')"/>
              <xsl:variable name="dummy" select="dyn:put($dynamic-conf, $dynamic-key, $new-value)"/>
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:map="java:java.util.Map" xmlns:dyn="java:com.sap.aii.mapping.api.DynamicConfiguration" xmlns:key="java:com.sap.aii.mapping.api.DynamicConfigurationKey">
         <xsl:output indent="no"/>
         <xsl:output method="text" encoding="utf-8"/>
         *<xsl:param name="inputparam"/>*
                    *<xsl:param name="new-value" select="abcd">*
       *</xsl:param>*     
         <xsl:template match="/">
              <!-- change dynamic configuration -->
              <xsl:variable name="dynamic-conf" select="map:get($inputparam, 'DynamicConfiguration')"/>
              <xsl:variable name="dynamic-key" select="key:create('http://sap.com/xi/XI/System/File', 'FileName')"/>
              <xsl:variable name="dummy" select="dyn:put($dynamic-conf, $dynamic-key, $new-value)"/>
    Any suggestions please.
    Thanks
    Deepthi.

  • XSLT mapping not working b'coz " " & " " replaced with and

    Hello Experts,
      I have a RFC to JMS scenario. One of the parameter of RFC is a string field. This field will contain the XML data in it.
    I need to create a complete XML payload using this data in a string field. For this I am using XSLT map :
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
         <xsl:output method="xml" omit-xml-declaration="no"/>
         <xsl:template match="/">
              <xsl:for-each select="//Nem">
                   <xsl:copy-of select="."/>
              </xsl:for-each>
         </xsl:template>
    </xsl:stylesheet>
    This XSLT mapping works fine when tested independently.
    But in actual scenario at runtime the "<" & ">" used to indicate a node are getting replaced with < and >. Then the XSLT mapping fails and produces no output.
    The output of XSL will be passed in to a java mapping which signs the payload digitally.
    What is the issue with these signs? How can I overcome this problem?
    Any inputs will be of great help.
    Kind Regards,
    Abhijeet.
    Edited by: Abhijeet Ambekar on May 4, 2010 2:01 PM

    Hi Stefan,
      Yes - I want to get rid of & # 60. But these (& # 60 and & # 62) are not added by XSLT mapping. Rather they are in the input available to XSLT map.
    In sxmb_moni, i can see the inbound payload correctly :
    <?xml version="1.0" encoding="UTF-8" ?>
    - <rfc:HDK083_REFUS_SENDDOCU xmlns:rfc="urn:sap-com:document:sap:rfc:functions">
      <P_SIGN_DOCUMENT />
      <P_XML_DOCUMENT><NemRefusionIndberetningSamling><NemRefusionIndberetningStruktur MessageID="1"><HeaderStruktur><SignOffIndikator>true</SignOffIndikator><TransaktionKode>Opret</TransaktionKode><IndberetningstypeKode>Anmeldelse</IndberetningstypeKode><FravaerTypeKode>Sygdom</FravaerTypeKode><FravaerendeStruktur><FravaerendeTypeKode>Loenmodtager</FravaerendeTypeKode><LoenUnderFravaerIndikator>false</LoenUnderFravaerIndikator></FravaerendeStruktur><IndberetningUUIDIdentifikator>bf9cc44e-af15-4e19-8457-5845d75385d2</IndberetningUUIDIdentifikator><ReferenceAttributTekst>ref. Nielsen-1503831372 (23. oktober 2009)</ReferenceAttributTekst>
    but when I try to download the payload or right click on payload to view source I get something like below:
    <?xml version="1.0" encoding="UTF-8"?><rfc:HDK083_REFUS_SENDDOCU xmlns:rfc="urn:sap-com:document:sap:rfc:functions"><P_SIGN_DOCUMENT></P_SIGN_DOCUMENT><P_XML_DOCUMENT>& # 6 0;NemRefusionIndberetningSamling& # 62; & # 60;NemRefusionIndberetningStruktur MessageID="1"& #62;& #60;HeaderStruktur& #62;& #60;SignOffIndikator& #62;true& #60;/SignOffIndikator& #62;& #60;TransaktionKode& #62;Opret& #60;/TransaktionKode& #62;& #60;IndberetningstypeKode& #62;Anmeldelse& #60;/IndberetningstypeKode& #62;& #60;FravaerTypeKode& #62;Sygdom& #60;/FravaerTypeKode& #62;& #60;FravaerendeStruktur& #62;& #60;FravaerendeTypeKode& #62;Loenmodtager</FravaerendeTypeKode><LoenUnderFravaerIndikator& #62;false</LoenUnderFravaerIndikator></FravaerendeStruktur& #62;<IndberetningUUIDIdentifikator& #62;bf9cc44e-af15-4e19-8457-5845d75385d2& #60;/IndberetningUUIDIdentifikator& #62;& #60;ReferenceAttributTekst& #62;ref. Nielsen-1503831372 (23. oktober 2009)& #60;/ReferenceAttributTekst& #62;
    (extra spaces added to "& # 60" as browser was converting it to < ,>)
    If i take the source code for payload and test XSLT mapping, it fails. But if I manually replace all "& # 60" with < and "& # 6 2" with >, then the mapping works fine.
    So I think for XSLT map to work correctly, we need to replace all "& # 60 " . Please suggest.
    Kind Regards,
    Abhijeet.

  • XSLT mapping code for N:1 mapping

    Hi Guys,
    I have got one scenario to collect 5 files to merge as one. To this scenario I want to use N:1 mapping. If I am not wrong, with XSLT mapping is easiest way to do this, please correct me if I am wrong. Can any one provide some links or code to merge these files into one.
    Thanks in advance.
    San

    what is correlation here?
    I have three messages coming into BPM....now all the three messages should have a field (any field) whose value will be the same in all the messages.
    Ex:
    <Message1>
    <Name>SAP</Name>
    <ID>40</ID>
    </Message1>
    <Message2>
    <Name>SDN</Name>
    <ID>40</ID>
    </Message2>
    <Message3>
    <Name>FORUM</Name>
    <ID>40</ID>
    </Message3>
    Now to correlate the above messages, the field ID would be used as it has the same value in all the messages.
    How does message mapping looks for the following messages
    In your BPM you will have a Transformation step....the mapping included here will have three source messages (File1, File2, File3) and there will be a single target message which will have the below structure:
    <ROOT>
    <OUTPUT> ...... 0..unbounded
    </ROOT>
    OUTPUT node of the target should be duplicated (right-click --> duplicate ... in message mapping).....do it twice so that you will have three OUTPUT nodes.
    Now each target-OUTPUT node should be mapped to the source OUTPUT node, respectively.
    Regards,
    Abhishek.

  • XSLT Mapping Error - Split-MappingRoot-Tag missing

    Hi,
    I am getting "Split-MappingRoot-Tag missing" Error while using XSLT mapping. I am using 3 mappings in one Operation Mapping.
    1)  Java Mapping 2) Message Mapping 3) XSLT Mapping.
    When I have these mappings in a BPM one after another it is working fine.
    But ,if I put these mappings one after another in one Operation mapping it is giving problem after message mapping is complete.
    I tried to remove XSLT mapping and Msg Mapping is producing correct output which can be used as input for XSLT mapping.
    Any idea what could be the reason. Any hep is appreciated.
    ERROR
      <SAP:Code area="MAPPING">GENERIC</SAP:Code>
      <SAP:P1>Split-Mapping</SAP:P1>
      <SAP:P2>Root-Tag missing</SAP:P2>
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText />
      <SAP:Stack>Split-MappingRoot-Tag missing</SAP:Stack>
      <SAP:Retry>M</SAP:Retry>
    Is there any chance XSLT mapping starting before message mapping is complete
    Regards,
    Ramesh

    Thank you for your response.
    I tried to put XSL in the following format by adding that namespace. but it still giving same error.
    <?xml version="1.0"?>
    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
    Code ---
    </xsl:stylesheet>
    Also I itried to put Java mapping before XSLT mapping to see what payload is coming to XSLT.
    I am getting payload as:
    <?xml version="1.0" encoding="UTF-8"?> <ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge"><ns0:Message1>
    XML Payload Data --
    </ns0:Message1></ns0:Messages>
    Any one knows how to fix this issue? appreciate your inputs
    Regards,
    Ramesh

  • 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.

  • DOCTYPE and xslt mapping

    Hi All,
    I have an XSLT mapping.  I have only now found out that I need to include a
    <i><!DOCTYPE Order SYSTEM "XCBL3.0.dtd"></i> tag on the second line of the xml I am sending via HTTP.  This causes the XSLT mapping to fail in XI.  From reading other threads, I understand there is a limitation on the XI xslt parser with "DOCTYPE" tags.
    I have tried a workaround by invoking a custom java program in my xslt mapping to insert the doctype but this gets sent out via HTTP as:
    &lt;!DOCTYPE Order SYSTEM "XCBL3.0.dtd"&gt;
    Is there any other workaround I could do without having to completely rewrite my mapping into a Java mapping as mentioned in another thread?
    Please Help!!

    In your xslt mapping place the following line before the top level element is written
    <xsl:text disable-output-escaping="yes">&lt;!DOCTYPE Order SYSTEM "XCBL3.0.dtd"&gt;</xsl:text>
    Regds Doug.

  • 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 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

Maybe you are looking for

  • Obi publisher 11.1.1.6 error

    Hi all, while creating report in 'Oracle BI publisher 11g', I am getting the below error, Can any body knows this? If so pls give me the solution to overcome this error. Failed to load: js/xdo/app/designer/ribbon/tabs/groups/template/PaperGroup.tmpl

  • Link Column in Hierarchy Flat file

    Hi Gurus,       Good Evening. Can anyone please let me know the significance of the Link column (in between Node name and Parent ID) while doing the flat file extraction for Hierarchy. Warm regards, Warnie.

  • Close window with a keystroke?

    Is it possible to close out a window using a keyboard shortcut? also for that matter is there a list of keyboard shortcuts for Leopard?

  • Audio Mixing between track and menu items

    The gain on my menu audio is too high. How can I reduce/mix the menu audio so that it better matches the track audio ? Thanks, Andrwe

  • Tv shows on iPad but not in Library-how to remove...

    I have a MacBook Pro running Mavericks and iTunes 11.4. I have 5 tv shows that are showing up on my iPad but they are not in the Library and I deleted them from the Finder. But they show up on the iPad under tv shows. They aren't highlighted so I can