XSL(T) Mapping (XML1 -> XML2)

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • XSL(T) Mapping (XML1 -> XML2)

    Hallo zusammen.

    Ich bin gerade dabei, mich in XML / XSL(T) einzuarbeiten und habe eine (Anfänger)frage.

    Da ich beruflich im SAP-Umfeld tätig bin und eigentlichts nichts mit PI (Process Integration) zu tun habe,
    fällt mir diese (kleine) Aufgabe trotzdem sehr schwer.

    Nun zum Sachverhalt:

    Es existieren 2 XML-Dokumente, ein Quell-XML und ein Ziel-XML.

    Meine Aufgabe ist es, ein XSL(T)-Dokument zu schreiben, was das Quell- in das Ziel-XML überführt.

    Leider klappt das nocht nicht zu 100 %..

    Quell-XML: -> Ist in korrekter Form (denke ich)

    Source Code

    1. <!-- Ab hier beginnen die Attachments-->
    2. <Z1ATTACH SEGMENT="1">
    3. <DESCRIPTION>PO_sok_TIG.xlsx</DESCRIPTION>
    4. <FILENAME>D:\Users\nagyilbe\Desktop\PO_sok_TIG.xlsx</FILENAME>
    5. <APPLICATION>XLS</APPLICATION>
    6. <PH_OBJID>4EF47E157BD00A70E10080000AFA148C</PH_OBJID>
    7. <PH_CLASS>DMS_C1_ST</PH_CLASS>
    8. </Z1ATTACH>
    9. <Z1ATTACH SEGMENT="1">
    10. <DESCRIPTION>T1148_xxxxx.tif</DESCRIPTION>
    11. <FILENAME>T1148_xxxxx.tif</FILENAME>
    12. <APPLICATION>TIF</APPLICATION>
    13. <PH_OBJID>43BB495F660500BF020000000AC5F774</PH_OBJID>
    14. <PH_CLASS>DMS_C1_ST</PH_CLASS>
    15. </Z1ATTACH>
    16. <Z1ATTACH SEGMENT="1">
    17. <DESCRIPTION>T1148_yyyyyy.tif</DESCRIPTION>
    18. <FILENAME>T1148_ddfdjjjfübig.tif</FILENAME>
    19. <APPLICATION>TIF</APPLICATION>
    20. <PH_OBJID>43BB495F660500BF020000000AC5F774</PH_OBJID>
    21. <PH_CLASS>DMS_C1_ST</PH_CLASS>
    22. </Z1ATTACH>
    23. </IDOC>
    24. </_-AAA_-AHMMM_PREQCR02>
    Display All


    XSL(T) (Mapping): -> hier fehlt noch irgendwas bzw. ist etwas falsch

    Source Code

    1. <!-- Attachmentuebergabe-->
    2. <xsl:for-each select="Z1ATTACH">
    3. </xsl:for-each>
    4. </xsl:template>
    5. <xsl:template name="formatDate">
    6. <xsl:param name="date">
    7. </xsl:param>
    8. <xsl:if test="string-length($date) &gt; '0'">
    9. <xsl:value-of select="concat(substring($date, '1', '4'), '-', substring($date, '5', '2'), '-', substring($date, '7', '2'))"/>
    10. </xsl:if>
    11. </xsl:template>
    12. </xsl:stylesheet>
    Display All



    Ziel-XML: -> Ist in korrekter Form (denke ich)

    Source Code

    1. <!--Ab hier beginnen die Attachments-->
    2. - <AdditionalData>
    3. <Name>Z_CI_ATTACHMENT_DESCRIPTION</Name>
    4. <Value> PO_sok_TIG.xlsx </Value>
    5. </AdditionalData>
    6. - <AdditionalData>
    7. <Name>Z_CI_ATTACHMENT_BY_RFC</Name>
    8. <Value>4EF47E157BD00A70E10080000AFA148C</Value>
    9. </AdditionalData>
    10. - <AdditionalData>
    11. <Name>Z_CI_ATTACHMENT_DESCRIPTION</Name>
    12. <Value> T1148_xxxxx.tif </Value>
    13. </AdditionalData>
    14. - <AdditionalData>
    15. <Name>Z_CI_ATTACHMENT_BY_RFC</Name>
    16. <Value>43BB495F660500BF020000000AC5F774</Value>
    17. </AdditionalData>
    18. </Item>
    19. </n1:MT_PD_Request>
    Display All






    Könntet ihr mir vielleicht einen Tipp geben oder Ähnliches, um mir mit meinem Problem weiterzuhelfen?


    Vielen Dank schon Mal.


    Grüße


    ipstyle
  • Hallo zusammen!

    Habe das Problem nun selbst gelöst:)


    Anbei mein Code für die "Nachwelt".


    Source Code

    1. <!-- Attachmentübergabe -->
    2. <xsl:for-each select="//Z1ATTACH">
    3. <xsl:element name="AdditionalData">
    4. <xsl:element name="Name">
    5. <xsl:text>Z_CI_ATTACHMENT_DESCRIPTION</xsl:text>
    6. </xsl:element>
    7. <xsl:element name="Value">
    8. <xsl:value-of select="DESCRIPTION"/>
    9. </xsl:element>
    10. <xsl:element name="AdditionalData">
    11. </xsl:element>
    12. </xsl:element>
    13. <xsl:element name="Name">
    14. <xsl:text>Z_CI_ATTACHMENT_BY_RFC</xsl:text>
    15. </xsl:element>
    16. <xsl:element name="Value">
    17. <xsl:value-of select="PH_OBJID"/>
    18. </xsl:element>
    19. <xsl:element name="AdditionalData">
    20. </xsl:element>
    21. </xsl:for-each>
    22. </xsl:template>
    23. <xsl:template name="formatDate">
    24. <xsl:param name="date">
    25. </xsl:param>
    26. <xsl:if test="string-length($date) &gt; '0'">
    27. <xsl:value-of select="concat(substring($date, '1', '4'), '-',
    28. substring($date, '5', '2'), '-', substring($date, '7', '2'))"/>
    29. </xsl:if>
    30. </xsl:template>
    31. </xsl:stylesheet>
    Display All





    Viele Grüße!