How to handle duplicate nodes in xslt mapping

Hi,
in my scenario that i have a source mapped to the canonical structure and from canonical to target.
source structure
<empid>
<national_id>
canonical structure
<id> 0 to unbounded
    <id>
    <type>
the mapping from source to canonical
is like i have duplicated the canonical structure and then mapped
id -
empid
type--- assigned a constant employee
id -
national_id
type--- assigned a constant National
i have used xslt mapping using stylus studio and mapping from source to canonical is not the problem
when i mapped the canonical to target there is a problem
the node id is visible once in the canonical when the structure is a source  
but there is a dupicate node in the structure but not visible. how to procedue with the mapping for canonical to target
kindly help me
with regards
pradeep N

hi,
Udo Martens.
<b>source xml</b>
<?xml version="1.0" encoding="UTF-8"?>
<ns0:Materail_fileReceive xmlns:ns0="http://www.aprilbiztec.in/MM_MultiFile">
   <Emp_ID>12</Emp_ID>
   <National_ID>91</National_ID>
</ns0:Materail_fileReceive>
<b>canonical xml</b>
<?xml version="1.0" encoding="UTF-8"?>
<ns0:Materail_file xmlns:ns0="http://www.aprilbiztec.in/MM_MultiFile"><Material><ID>12</ID><Type>Employee</Type></Material><Material><ID>91</ID><Type>National</Type></Material></ns0:Materail_file>
<b>source to canonical mapping is</b>
<?xml version='1.0' ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns0="http://www.aprilbiztec.in/MM_MultiFile">
     <xsl:template match="/">
          <ns0:Materail_file xmlns:ns0="http://www.aprilbiztec.in/MM_MultiFile">
               <Material>
                    <ID>
                         <xsl:value-of select="ns0:Materail_fileReceive/Emp_ID"/>
                    </ID>
                    <Type>Employee</Type>
               </Material>
               <Material>
                    <ID>
                         <xsl:value-of select="ns0:Materail_fileReceive/National_ID"/>
                    </ID>
                    <Type>National</Type>
               </Material>
          </ns0:Materail_file>
     </xsl:template>
i want the<b> canonical to target mapping</b> where my target structure is similar to that of my source
kindly help.
regards
pradeep N.

Similar Messages

  • How to do java conjunction with XSLT Mapping...?

    Hi,
    I Got a doubt while doing the XSLT mapping......
    I have created the
    Data Types
    Message Types
    and
    Message Interfaces
    Now my doubt is where i have to write the XSLT and Java code and how to create Message Mapping and Interface Mappings...
    Please help me...
    Best Regards
    Ravi Shankar B

    Hi
    I have created a XSLT mapping with java conjunction... i have created a ZIP file and i have palced java class file, java file and xsl file in that ZIP file... I have imported this archive into imported archives... but when i am testing the application i got the follwoing exceptions
    <b>Details
    com.sap.engine.services.ejb.exceptions.BaseRemoteException:
    Exception in method transform.
         at com.sap.aii.ibrep.sbeans.mapping.MapServiceRemoteObjectImpl0.transform(MapServiceRemoteObjectImpl0.java:182)
         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:304)
         at com.sap.engine.services.rmi_p4.DispatchImpl._run(DispatchImpl.java:193)
         at com.sap.engine.services.rmi_p4.server.P4SessionProcessor.request(P4SessionProcessor.java:122)
         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:
    DATEandTIME/Date_Time (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.functions.XFFunctionAvailable.execute(XFFunctionAvailable.java:24)
         at com.sap.engine.lib.xsl.xpath.ETFunction.evaluate(ETFunction.java:110)
         at com.sap.engine.lib.xsl.xpath.XPathProcessor.innerProcess(XPathProcessor.java:54)
         at com.sap.engine.lib.xsl.xpath.XPathProcessor.process(XPathProcessor.java:41)
         at com.sap.engine.lib.xsl.xpath.XPathProcessor.process(XPathProcessor.java:49)
         at com.sap.engine.lib.xsl.xslt.XSLIf.process(XSLIf.java:28)
         at com.sap.engine.lib.xsl.xslt.XSLNode.processFromFirst(XSLNode.java:293)
         at com.sap.engine.lib.xsl.xslt.XSLElement.process(XSLElement.java:248)
         at com.sap.engine.lib.xsl.xslt.XSLNode.processFromFirst(XSLNode.java:293)
         at com.sap.engine.lib.xsl.xslt.XSLElement.process(XSLElement.java:248)
         at com.sap.engine.lib.xsl.xslt.XSLNode.processFromFirst(XSLNode.java:293)
         at com.sap.engine.lib.xsl.xslt.XSLTemplate.process(XSLTemplate.java:272)
         at com.sap.engine.lib.xsl.xslt.XSLStylesheet.process(XSLStylesheet.java:457)
         at com.sap.engine.lib.xsl.xslt.XSLStylesheet.process(XSLStylesheet.java:391)
         at com.sap.engine.lib.jaxp.TransformerImpl.transformWithStylesheet(TransformerImpl.java:392)
         at com.sap.engine.lib.jaxp.TransformerImpl.transform(TransformerImpl.java:234)
         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.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:131)
         ... 10 more
    ; nested exception is:
         java.lang.UnsupportedClassVersionError:
    DATEandTIME/Date_Time (Unsupported major.minor version
    49.0)
    com.sap.engine.services.ejb.exceptions.BaseRemoteException:
    Exception in method transform.
         at com.sap.aii.ibrep.sbeans.mapping.MapServiceRemoteObjectImpl0.transform(MapServiceRemoteObjectImpl0.java:182)
         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:304)
         at com.sap.engine.services.rmi_p4.DispatchImpl._run(DispatchImpl.java:193)
         at com.sap.engine.services.rmi_p4.server.P4SessionProcessor.request(P4SessionProcessor.java:122)
         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:
    DATEandTIME/Date_Time (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.functions.XFFunctionAvailable.execute(XFFunctionAvailable.java:24)
         at com.sap.engine.lib.xsl.xpath.ETFunction.evaluate(ETFunction.java:110)
         at com.sap.engine.lib.xsl.xpath.XPathProcessor.innerProcess(XPathProcessor.java:54)
         at com.sap.engine.lib.xsl.xpath.XPathProcessor.process(XPathProcessor.java:41)
         at com.sap.engine.lib.xsl.xpath.XPathProcessor.process(XPathProcessor.java:49)
         at com.sap.engine.lib.xsl.xslt.XSLIf.process(XSLIf.java:28)
         at com.sap.engine.lib.xsl.xslt.XSLNode.processFromFirst(XSLNode.java:293)
         at com.sap.engine.lib.xsl.xslt.XSLElement.process(XSLElement.java:248)
         at com.sap.engine.lib.xsl.xslt.XSLNode.processFromFirst(XSLNode.java:293)
         at com.sap.engine.lib.xsl.xslt.XSLElement.process(XSLElement.java:248)
         at com.sap.engine.lib.xsl.xslt.XSLNode.processFromFirst(XSLNode.java:293)
         at com.sap.engine.lib.xsl.xslt.XSLTemplate.process(XSLTemplate.java:272)
         at com.sap.engine.lib.xsl.xslt.XSLStylesheet.process(XSLStylesheet.java:457)
         at com.sap.engine.lib.xsl.xslt.XSLStylesheet.process(XSLStylesheet.java:391)
         at com.sap.engine.lib.jaxp.TransformerImpl.transformWithStylesheet(TransformerImpl.java:392)
         at com.sap.engine.lib.jaxp.TransformerImpl.transform(TransformerImpl.java:234)
         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.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:131)
         ... 10 more
    ; nested exception is:
         java.lang.UnsupportedClassVersionError:
    DATEandTIME/Date_Time (Unsupported major.minor version
    49.0)</b>
    Please help me....
    Best Regards
    Ravi Shankar B
    Message was edited by: RaviShankar B

  • How to handle duplicate price creation while using RV_CONDITION_COPY

    Hi,
    I using FM RV_CONDITION_COPY in my BAPI to create the price but if the same record is being passed again either with same validation date or different validation dates then system pops up a window with message "The validity period of the condition created overlaps with conditions with shorter validity periods. These conditions will be deleted when you save." and other detail. This screen is same as when we try to create price using VK11.
    Does anybody know how to handle this issue.
    Thanks and Regards,
    Seema

    this may helps you.
    Look at the below thread ....
    Check if the below code can help you:
    U can try like this
    CONSTANTS:
    CON_A(1) TYPE C VALUE 'A',
    CON_B(1) TYPE C VALUE 'B',
    CON_C TYPE C VALUE 'C',
    CON_D TYPE C VALUE 'D',
    CON_E TYPE C VALUE 'E',
    CON_F TYPE C VALUE 'F',
    CON_G TYPE C VALUE 'G',
    CON_K TYPE C VALUE 'K',
    CON_T TYPE C VALUE 'T',
    CON_S(1) TYPE C VALUE 'S',
    CON_V LIKE T681A-KAPPL VALUE 'V',
    CON_X TYPE C VALUE 'x',
    CON_XX TYPE C VALUE 'X',
    CON_T074 LIKE T681-KOTABNR VALUE '074',
    CON_PREF LIKE T685A-KSCHL VALUE 'PREF',
    CON_ULTIMO LIKE RV13A-DATAB VALUE '99991231',
    CON_DATA_LOG_NAME(8) TYPE C VALUE 'PREF',
    CON_ERROR_LOG_NAME(8) TYPE C VALUE 'ERROR',
    CON_CUSTOM_LOG_NAME(8) TYPE C VALUE 'P_CUSTOM'.
    Verkaufsmengeneinheit
    PERFORM f3_vkme_ermitteln.
    Hauswährung
    IF t001w-werks NE cstmat-werks.
    PERFORM f3_waehrung_ermitteln USING cstmat-werks.
    ENDIF.
    pro Zollgebiet Konditionssatz anlegen
    LOOP AT t_matwerte.
    CHECK t_matwerte-noupd_cond IS INITIAL.
    CLEAR: komk,
    komp,
    komg,
    w_komv.
    REFRESH w_komv.
    Schlüssel füllen
    komg-werks = w_marc-werks.
    komg-matnr = w_marc-matnr.
    komg-gzolx = t_matwerte-gzolx.
    komg-land1 = t001w-land1. "101298
    Preisinfo füllen
    w_komv-kappl = 'V '.
    w_komv-kschl = con_pref.
    IF t_matwerte-kp = kp_max.
    w_komv-kpein = 1.
    MOVE kp_max TO w_komv-kbetr.
    ELSE.
    w_komv-kpein = pm_peinh.
    COMPUTE w_komv-kbetr = t_matwerte-kp * pm_peinh / hlp_ameng.
    ENDIF.
    IF w_komv-kbetr = 0.
    COMPUTE w_komv-kbetr = 1 / 100 * -1.
    ENDIF.
    w_komv-waers = t001-waers.
    w_komv-kmein = hlp_ame.
    APPEND w_komv.
    CHECK f3_kz_update_cond IS INITIAL OR
    NOT pm_simu IS INITIAL.
    IF NOT pm_mdmps IS INITIAL.
    MOVE komg-werks TO bg_kond-werks.
    MOVE komg-matnr TO bg_kond-matnr.
    MOVE komg-gzolx TO bg_kond-gzolx.
    MOVE w_komv-kpein TO bg_kond-kpein.
    MOVE w_komv-kbetr TO bg_kond-kbetr.
    MOVE w_komv-kmein TO bg_kond-kmein.
    MOVE w_komv-waers TO bg_kond-waers.
    *{ REPLACE D20K904946 1
    APPEND bg_kond.
    Siemens: Fehlerkorektur SAP-Standard
    READ TABLE BG_KOND TRANSPORTING NO FIELDS
    WITH KEY WERKS = BG_KOND-WERKS
    MATNR = BG_KOND-MATNR
    GZOLX = BG_KOND-GZOLX
    BINARY SEARCH.
    INSERT BG_KOND INDEX SY-TABIX.
    *} REPLACE
    ENDIF.
    CHECK f3_kz_update_cond IS INITIAL.
    CALL FUNCTION 'RV_CONDITION_COPY'
    EXPORTING
    application = con_v
    condition_table = con_t074 "Konditionstabelle
    condition_type = con_pref "Konditionsart
    date_from = sy-datlo "Von jetzt an
    date_to = con_ultimo "Bis Ultimo
    enqueue = 'X' "Sperren ist besser
    i_komk = komk
    i_komp = komp
    key_fields = komg "Schlüssel
    maintain_mode = 'A' "Lieber A als B
    no_authority_check = 'X' "X wie nix
    keep_old_records = ' '
    OVERLAP_CONFIRMED = 'X'
    IMPORTING
    e_komk = komk
    e_komp = komp
    new_record = i_new_record
    TABLES
    copy_records = w_komv
    EXCEPTIONS
    enqueue_on_record = 01
    invalid_application = 02
    invalid_condition_number = 03
    invalid_condition_type = 04
    no_authority_ekorg = 05
    no_authority_kschl = 06
    no_authority_vkorg = 07
    no_selection = 08
    table_not_valid = 09.
    CASE sy-subrc.
    WHEN 0.
    WHEN OTHERS.
    MESSAGE A???
    ENDCASE.
    CALL FUNCTION 'RV_CONDITION_SAVE'.
    CALL FUNCTION 'RV_CONDITION_RESET'.
    ENDLOOP.

  • How to handle duplicate messages in J2SE File scenario

    Hi,
    Is there any way to handle processing of duplicate messages in J2SE File adapter scenario?
    Here is the scenario ,
    Steps :
    1. Engine picks up a message and checks the size of it.
    2. Before reaching the checking interval , the adapter(file) was terminated unfortunately.
    3. J2SE engine was restarted.
    4. Previous file was again picked up and sent as the first time with one msgID.
    5. After sometime, same file was picked up with a new msgID
    6. System gets only ONE configrmation that file has been successfully transfered.
    So we find two messages containing the same file.
    I have checked in J2SE doc, there is a parameter called "db.exactlyOnceErrorInPendingState" which is related to DB.
    Is there any similar parameter to handle the duplicate messages in FIle Adapter scenarios of J2SE Engine.
    Please help me in this regard as it seems to be a new thing in J2SE AE.
    Regards,
    Soorya.

    Hi swarup,
    But using OS command how can we rename /archive that file?
    Module means any Custom Module or wat?
    Following are the channel configurations used in File To File scenario.
    File Sender :
    version=30
    mode=XMB2FILE
    XI.httpPort=58201
    XI.httpService=/test
    XI.ReceiverAdapterForService=test_rcv
    file.numberOfMessageTypes=1
    XI.Interface=MI_test_out
    XI.InterfaceNamespace=http://nestle.com/test
    file.type=BIN
    file.targetDir=/test_inb
    file.targetFilename=unusedbutreq
    file.writeMode=fromHeader.ext
    file.createDir=0
    file.nestleName=initial
    file.writeMode=fromHeader.ext
    file.nestleEXT=test
    file.nestleFileOverwrite=False
    File Receiver :
    version=30
    mode=FILE2XMB
    XI.TargetURL=http://localhost:58201/test
    XI.NestleTargetURL=http://localhost:58201/test
    file.type=BIN
    file.checkFileModificationInterval=300000
    file.pollInterval=300
    file.processingMode=archiveWithTimestamp
    file.archiveDir=/test_out/arc
    XI.QualityOfService=EO
    file.numberOfMessageTypes=1
    file.messageAttributes=name
    XI.SenderService=test_snd
    XI.Interface=MI_test_out
    XI.InterfaceNamespace=http://nestle.com/test
    XI.ReceiverService=test_rcv
    file.nestleBadMsgDir=/test_out/bad
    file.sourceDir=/test_out
    file.sourceFilename=.
    Do the needful help asap.
    Regards,
    Prakash.

  • Declaring a Node object throws null...how to handle if Node doesnt exist

    Hello all,
    I am parsing an xml document that looks like the following:
    <item>
           <title>
           </title>
           <link>
           </link>
           <description>
           </description>
           <pubDate>
           </pubDate>
           <geo:lat>
           </geo:lat>
           <geo:long>
           </geo:long>
    </item>Now every item may or may not contain the two geo nodes.
    <geo:lat> and <geo:lon>
    When I declare those two nodes and they are not present:
    Node geoLonNode = geoLatNode.getNextSibling().getNextSibling();//ERROR HERE.
    String geoLonText = geoLonNode.getTextValue();I get a null pointer exception.
    How can I handle this exception.
    Is there a way to test for null before declaring the Node obj?
    Basically what I am trying to do is to output the xml to a html table.
    I imagine this would be simple, I am just at a loss.
    TIA!

    Nevermind...as I said it was probably easy and it was.
    Long day!
    if(geoLatNode.getNextSibling().getNextSibling() != null)
    Node geoLonNode = geoLatNode.getNextSibling().getNextSibling()
    String geoLonText = geoLonNode.getTextValue();
    }Thanks for looking.

  • How to handle Hirarchy structures  in MESSAGE  MAPPING

    Hi...
          I'm getting data from  a file.. and that is contain Hierarchy structure.. but i want to  load it to a plain structure.. for this how can we map the  source fields to target fields..
      here my source structure is...
    HEADER :
    --DATE
    --COMPANY
    --LINE_ITEM_1:
    -----CUSTOMER_NO
    -----LINE_ITEM2:
    ORDER_NO
    MATERIAL_NO
    QUANTITY
    PRICE
    DELIVARYDATE
    -----LINE_ITEM2
    ORDER_NO
    MATERIAL_NO
    QUANTITY
    PRICE
    DELIVARYDATE
    -----CUSTOMER_NO
    -----LINE_ITEM2
    ORDER_NO
    MATERIAL_NO
    QUANTITY
    PRICE
    DELIVARYDATE
    -----LINE_ITEM2----
    ORDER_NO
    MATERIAL_NO
    QUANTITY
    PRICE
    DELIVARYDATE
      this structure i want to map it to  a plin structure..
    regards
    Jain

    Hi,
    removeContext:- Deletes all context changes in a queue.
    For Eg:-
    <RootNode>                    
         <Node1>
              Value1
              Value2
         </Node1>
         <Node2>
              Value3
              Value4
          </Node2>
    </RootNode>
    When removeContext not used:-
    <RootNode>                    
              Value1
              Value2
    </RootNode>
    When removeContext used:-
    <RootNode>                    
              Value1
              Value2
              Value3
              Value4
    </RootNode>
    Refer [https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/9202d890-0201-0010-1588-adb5e89a6638]
    Hope this helps.
    Regards,
    Ambili

  • How to handle duplicate Primary Key entries in the Source data

    This is my first experience with ODI.
    I receive Source data from the customer that includes a one letter designation, ACTION_CODE, in each record of data as to the disposition of the record:
    ‘R’ represents Re-issue in which case I’m to modify the corresponding Target record based on the Primary Key.
    ‘N’ represents an Insert in which case I’m to insert a new record into the Target.
    ‘D’ represents a delete in which case I’m to delete the record with the corresponding Primary Key from the Target.
    The Source data comes in an XML file and the Target is an Oracle DB.
    I have chosen the IKM Oracle Incremental Update (MERGE) Knowledge Module.
    I filter ACTION_CODE to just collect records that are ‘N’ or ‘R’ and I exclude the ACTION_CODE from the mapping but since within the same Source
    set there may be an ‘N’ and ‘R’ with the same primary key I receive Primary Key errors.
    Should I alter CKM to not check for duplicates in the Source?
    Is there a better way?

    Ganesh,
    Identifying Duplicates is a logical activity.  More or less it need Manual intervention to judge both the records means common.  if few unique paramenters like Telephone, Pincode, SSN, passport no etc can be used on filters for searching the records.  Currently there are no automatic method to identify the duplicates.  In MDM 5.5 SP04 which is next release there will be auto de-duplicate facility based on tresholeds and matching criteria that you will setup.
    I hope i have answered your query transparently. if you have any queries futher you can reply here.
    Regards
    Veera

  • How to remoce CDATA tag from XSLT mapping

    Hi Sharma,
    Please remove all CDATA elements from your code and execute so that you will get expected output. Because CDATA term we will use while writing
    DTD for your source xml, so this is not required in XSL Program.  check below code....
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
         <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
         <xsl:template match="/">
              <DlrDiscItemWise>
                   <DlrDiscItemWiseXML>
                        <xsl:text disable-output-escaping="yes"></xsl:text>
                        <xsl:copy-of select="."/>
                        <xsl:text disable-output-escaping="yes"></xsl:text>
                        <xsl:text disable-output-escaping="yes"></xsl:text>
                   </DlrDiscItemWiseXML>
              </DlrDiscItemWise>
         </xsl:template>
    </xsl:stylesheet>
    thanks,
    madhu

    Thanks Madhusudan, but i doubt it wil work by removing all CDATA tags. I removed and this is the response. Please check
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
         <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
         <xsl:template match="/">
              <DlrDiscItemWise>
                   <DlrDiscItemWiseXML>
                        <xsl:text disable-output-escaping="yes"></xsl:text>
                        <xsl:copy-of select="."/>
                        <xsl:text disable-output-escaping="yes"></xsl:text>
                        <xsl:text disable-output-escaping="yes"></xsl:text>
                   </DlrDiscItemWiseXML>
              </DlrDiscItemWise>
         </xsl:template>
    </xsl:stylesheet>
    result
    <?xml version="1.0" encoding="UTF-8"?><DlrDiscItemWise><DlrDiscItemWiseXML><ns0:MT_DlrDis_Sender xmlns:ns0="http://MTSINDIA/TC/DealerDiscount"><ITEM><nDlrAddEdit>1</nDlrAddEdit><nItemCode>1001000080</nItemCode><nItemDisc>15</nItemDisc><dtDiscFromdt>11/May/2010</dtDiscFromdt><dtDiscToDt>31/Dec/2010</dtDiscToDt><nItemAddDisc/><dtAddDiscFromDt/><dtAddDiscToDt/><nDlrTypeCode/><nItemDisQtyMulti/><nItemDiscQtyFree/><sItemDiscPerAmt/><sItemDiscType/><nDlrCode>1001</nDlrCode><nCircleCode>4</nCircleCode></ITEM></ns0:MT_DlrDis_Sender></DlrDiscItemWiseXML></DlrDiscItemWise>
    But in target structure I am not able to see it as single string.
    Please suggest

  • How to insert new line break in XSLT mapping

    Hi experts,
    I am doing file to mail scenario, i am sending the text file as an attachment using reciever mail adapter.
    I did everything, i can able to send the mail with text file attachment, but with in the file i got multiple rows, i need to put line break in XSLT mapping.
    I did use following statement but it is inserting small rectangle between the records, the records are not separating with new lines, all are in one line.
    <xsl:text>*#xA;</xsl:text>   
    note: in real coding replace * with &
    Can anyone suggest me how to insert new line in XSLT mapping.
    My XSLT mapping as look like:
    <?xml version='1.0'?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:ns0="http://www.Coj.co.za/SapIsuToABSA/DirectDebitFile">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    <xsl:variable name="break">&lt;br/&gt;</xsl:variable>
    <xsl:variable name="space"> </xsl:variable>
    <xsl:variable name="newline"><xsl:text></xsl:text></xsl:variable>
    <xsl:template match="/">
    <ns1:Mail xmlns:ns1="http://sap.com/xi/XI/Mail/30">
    <Subject>Please Check Attached Direct Debit File</Subject>
    <From>S@za</From>
    <To>P@za</To>
    <Content_Type>text/plain</Content_Type>
    <Content>
    <xsl:for-each select="MT_SapIsuToABSA_DirectDebitFile/DirectDebitRec/Body">
    <xsl:value-of select="Space1"/>
    <xsl:value-of select="Cust_AccNo"/>
    <xsl:value-of select="Reserve_1"/>
    <xsl:value-of select="Cust_Name"/>
    <xsl:value-of select="Cust_Name1"/>
    <xsl:value-of select="Cust_Bank_AccNo"/>
    <xsl:value-of select="Space2"/>
    <xsl:value-of select="Cust_Bank_BranchNo"/>
    <xsl:value-of select="Reserve_2"/>
    <xsl:value-of select="Space3"/>
    <xsl:value-of select="Cust_AccNo_1"/>
    <xsl:value-of select="Space4"/>
    <xsl:value-of select="Reserve_3"/>
    <xsl:value-of select="Deduction_Amnt"/>
    <xsl:value-of select="Space5"/>
    <xsl:value-of select="Reserve_4"/>
    <xsl:value-of select="Space6"/>
    <xsl:value-of select="Action_Date"/>
    <xsl:value-of select="Space7"/>
    <xsl:value-of select="Reserve_5"/>
    <xsl:text>*#xA;</xsl:text>   
    note: in real coding replace * with &
    </xsl:for-each>
    </Content>
      </ns1:Mail>
      </xsl:template>
      </xsl:stylesheet>
    Kind regards,
    Praveen

    Hi,
    I think <xsl:text>#xa;</xsl:text> should do the trick, but depending on which OS (ux or win), the "new line" chars sequence is different (win would require a CRLF like <xsl:text>#xd;*#xa;</xsl:text>)
    Chris
    -> &
    Edited by: Christophe PFERTZEL on Apr 14, 2010 2:16 PM

  • Graphical Mapping Vs XSLT mapping Vs Java Mapping Vs ABAP Mapping

    Hi Experts,
              I have a question regarding different message mapping options available in XI namely
    Graphical Mapping
    XSLT mapping
    Java Mapping
    ABAP Mapping
    Q1: Which amoung the above mappings is the best and why?
    Q2: On what cases Graphical, XSLT, Java and ABAP Mapping should be used?
    Q3: Is it true that graphical and XSLT mappings are converted into Java class internally?
    Kindly help!
    Thanks
    Gopal
    Message was edited by:
            gopalkrishna baliga

    Hi,
    There is no hard and fast rule for using the mapping techniques.
    Graphical Mapping is used for simple mapping cases. When, the logic for your mapping is simple and straight forward and it does not involve mult hiearchical mapping requirement. and context handling.
    Java and XSLT mapping are used when graphical mapping cannot help you.
    When the choice is between Java And XSLT, XSLT is simpler than java mapping and easier. But, it has its drawbacks.  XSLT can lead to a bad perfrormance if the Source XML is huge.
    Java Mapping uses 2 types of parsers. DOM and SAX. DOM is easier to use with lots of classes to help you create nodes and elements, but , DOM is very processor intensive.
    SAX parser is something that parses your XML one after the other, and so is not processor intensive. But, it is not exaclty easy to develop either.
    For further info on each of the mapping, refer to these links,
    Graphical Mapping,
    http://help.sap.com/saphelp_nw04/helpdata/en/6d/aadd3e6ecb1f39e10000000a114084/content.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/43/c4cdfc334824478090739c04c4a249/content.htm
    XSLT Mapping
    http://help.sap.com/saphelp_nw04/helpdata/en/73/f61eea1741453eb8f794e150067930/content.htm
    http://www.w3.org/TR/xslt20/
    Java Mapping
    http://help.sap.com/saphelp_nw04/helpdata/en/e2/e13fcd80fe47768df001a558ed10b6/content.htm
    DOM parser API
    http://java.sun.com/j2se/1.4.2/docs/api/org/w3c/dom/package-frame.html
    Also, check this thread for more info,
    Different types of Mapping in XI
    Am not sure about XSLT , but , yes graphical mapping is converted into java classes internally and these classes use SAX parsing as well.
    Regards,
    Bhavesh

  • 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

  • Please explain XSLT mapping from initial

    Hi Experts,
    I have Altova XMLspy but I dont know how to use it for doing XSLT mapping.
    Can anyone of you please explain a simple XSLT mapping in Altova so that I can try.I have checked many blogs related to XSLT mapping but didnt find my answers.
    If you can guide me with a simple xslt mapping it would be great.
    Thanks,
    Ravi

    Hi Ravi
    Please check the below links.
    XSLT Tutorial
    http://www.altova.com/documents/XMLSpyTutorial.pdf
    http://www.altova.com/documents/2013/xmlspytutorialstd.pdf
    http://xml-xslt-dtd-xsd.wonderhowto.com/how-to/use-xmlspy-for-xml-editing-217876/
    Regards
    Osman

  • How to delete duplicate bookmarks?

    I have a lot of duplicate bookmarks in Firefox and the number keeps on adding on. There are few answers regarding this on Support pages but none of them work. Neither the add-ons mentioned there(sad such trivial and basic things need add-ons) .
    As there's no good way to sync Chrome and Firefox bookmarks I often end up manually importing in either browser from the other and after that I end up having tones of duplicates. I can deal with this in Chrome but have not figured out how to do this in Firefox. I think Sync ought to handle this.
    Anyway, any quick solution regarding this? Preferably without an add-on (sigh!! one more thing to slow down the browser).

    Firefox doesn't allow duplicate bookmarks to be saved. A user can override that feature by copying a bookmark to a different folder, or by saving a "dupe" bookmark manually, by dragging the "dupe" to a different folder from the original.
    I'm not sure how Sync handles duplicates, as I have so many "dupes" from the days before Firefox 3.0 when the saving of "dupes" was removed from the "Bookmark this page" button and menu items.
    As far as "importing" bookmarks from another browser, Firefox ''will'' import duplicates.
    Sorry, the only way I know of finding and deleting duplicate bookmarks is via an extension. Bookmark Duplicate Detector was the last extension that I used, in years past.

  • How to Count schedule lines in IDoc ORDERS05 using XSLT Mapping

    Hi Experts,
    In a Scenario where we are sending Purchase order (ORDERS05) to SAP SNC using XSLT Mapping,
    where in we need to count the no. of schedule lines against the Purchase Order line.
    As in Schedule line segment there is no such provision, so it needs to be handle in XSLT mapping to count the schedule lines.
    Can you all please guide me how to go about the same.
    Regards,
    Nitin P

    Hi Satish,
    Thank you very much for the reply,
    as there is only Quantity and other information is maintained against schedule lines how we can count the schedule line repeatation against PO line ? Is that very simple as you suggested or some other consideration also needs to be taken.
    Please clarify the same and let me also know if there are some standard documents also for the same.
    Regards,
    Nitin P

  • XSLT Mapping - replacing attribute value of a specific node

    Hi,
    I want to replace the value of an attribute for a specific node. Can you please tell me how this can be achieved using XSLT coding?
    The input file is as follows:
    <?xml version="1.0" encoding="UTF-8"?>
    <GovTalkMessage xmlns="http://www.govtalk.gov.uk/CM/envelope">
         <EnvelopeVersion>2.0</EnvelopeVersion>
         <Header>
              <MessageDetails>
                   <Class>IR-PAYE-MOV</Class>
                   <Qualifier>request</Qualifier>
                   <Function>submit</Function>
                   <CorrelationID/>
                   <Transformation>XML</Transformation>
                   <GatewayTimestamp/>
              </MessageDetails>
              <SenderDetails>
                   <IDAuthentication>
                        <SenderID>isv142</SenderID>
                        <Authentication>
                             <Method>MD5</Method>
                             <Value>1L2xFE8WqHHI5iVMGhixAg==</Value>
                        </Authentication>
                   </IDAuthentication>
              </SenderDetails>
         </Header>
         <GovTalkDetails>
              <Keys>
                   <Key Type="TaxOfficeNumber">123</Key>
                   <Key Type="TaxOfficeReference">MD345</Key>
              </Keys>
              <ChannelRouting>
                   <Channel>
                        <URI>0142</URI>
                   </Channel>
              </ChannelRouting>
         </GovTalkDetails>
         <Body>
              <IRenvelope xmlns="http://www.govtalk.gov.uk/taxation/PAYE/MOV/09-10/1">
                   <IRheader>
                        <Keys>
                             <Key Type="TaxOfficeNumber">123</Key>
                             <Key Type="TaxOfficeReference">MD345</Key>
                        </Keys>
                        <PeriodEnd>2009-09-29</PeriodEnd>
                        <DefaultCurrency>GBP</DefaultCurrency>
                        <IRmark Type="generic">03Bfkipk6UDWSXLj77ObBVoK894=</IRmark>
                        <Sender>Company</Sender>
                   </IRheader>
                   <InYearMovements>
                        <EmployerName>form p60</EmployerName>
                        <P46 Statement="A">
                             <Name>
                                  <Fore>Smith</Fore>
                                  <Sur>John</Sur>
                             </Name>
                             <Address>
                                  <Line>Sterling Residency</Line>
                                  <Line>Gehde</Line>
                                  <Line>Hedge End</Line>
                                  <Line>Southampton</Line>
                                  <PostCode>12345678</PostCode>
                             </Address>
                             <WorksNumber>20090030</WorksNumber>
                             <NINO>NP258719D</NINO>
                             <BirthDate>1985-07-11</BirthDate>
                             <Gender>male</Gender>
                             <StartDate>2009-04-20</StartDate>
                             <TaxCodeInUse>647L</TaxCodeInUse>
                        </P46>
                   </InYearMovements>
              </IRenvelope>
         </Body>
    </GovTalkMessage>
    I want to replace the value 'http://www.govtalk.gov.uk/taxation/PAYE/MOV/09-10/1' of attribute xmlns belonging to the node 'IRenvelope' with the value 'http://www.govtalk.gov.uk/taxation/PAYE/MOV/10-11/1'
    So the output of the mapping should be:
    <?xml version="1.0" encoding="UTF-8"?>
    <GovTalkMessage xmlns="http://www.govtalk.gov.uk/CM/envelope">
         <EnvelopeVersion>2.0</EnvelopeVersion>
         <Header>
              <MessageDetails>
                   <Class>IR-PAYE-MOV</Class>
                   <Qualifier>request</Qualifier>
                   <Function>submit</Function>
                   <CorrelationID/>
                   <Transformation>XML</Transformation>
                   <GatewayTimestamp/>
              </MessageDetails>
              <SenderDetails>
                   <IDAuthentication>
                        <SenderID>isv142</SenderID>
                        <Authentication>
                             <Method>MD5</Method>
                             <Value>1L2xFE8WqHHI5iVMGhixAg==</Value>
                        </Authentication>
                   </IDAuthentication>
              </SenderDetails>
         </Header>
         <GovTalkDetails>
              <Keys>
                   <Key Type="TaxOfficeNumber">123</Key>
                   <Key Type="TaxOfficeReference">MD345</Key>
              </Keys>
              <ChannelRouting>
                   <Channel>
                        <URI>0142</URI>
                   </Channel>
              </ChannelRouting>
         </GovTalkDetails>
         <Body>
              <IRenvelope xmlns="http://www.govtalk.gov.uk/taxation/PAYE/MOV/10-11/1">
                   <IRheader>
                        <Keys>
                             <Key Type="TaxOfficeNumber">123</Key>
                             <Key Type="TaxOfficeReference">MD345</Key>
                        </Keys>
                        <PeriodEnd>2009-09-29</PeriodEnd>
                        <DefaultCurrency>GBP</DefaultCurrency>
                        <IRmark Type="generic">03Bfkipk6UDWSXLj77ObBVoK894=</IRmark>
                        <Sender>Company</Sender>
                   </IRheader>
                   <InYearMovements>
                        <EmployerName>form p60</EmployerName>
                        <P46 Statement="A">
                             <Name>
                                  <Fore>Smith</Fore>
                                  <Sur>John</Sur>
                             </Name>
                             <Address>
                                  <Line>Sterling Residency</Line>
                                  <Line>Gehde</Line>
                                  <Line>Hedge End</Line>
                                  <Line>Southampton</Line>
                                  <PostCode>12345678</PostCode>
                             </Address>
                             <WorksNumber>20090030</WorksNumber>
                             <NINO>NP258719D</NINO>
                             <BirthDate>1985-07-11</BirthDate>
                             <Gender>male</Gender>
                             <StartDate>2009-04-20</StartDate>
                             <TaxCodeInUse>647L</TaxCodeInUse>
                        </P46>
                   </InYearMovements>
              </IRenvelope>
         </Body>
    </GovTalkMessage>
    Thanks & Regards,
    Aditi Naik

    Hi,
    You get name of an attribute by this code
    <xsl:for-each select="@*">
        <xsl:text>Value of </xsl:text>
               <xsl:value-of select="name(.)"/>
        <xsl:text> is </xsl:text><xsl:value-of select="."/>
    </xsl:for-each>
    Change value by providing new value in <xsl:value-of select="."/>
    Regards
    suraj

Maybe you are looking for