Skip to Content
avatar image
Former Member

XSL to convert XML String to Message Type

Hi,

For an interface I need to build, the source is going to be an string containing XML. I need to parse this into the message type format so it can be used for message mapping.

The XSL I am using for this is

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:a="http://www.sdn.com/xslt">
<xsl:output method="xml" omit-xml-declaration="yes"/>
   <xsl:template match="/">
        <xsl:for-each select="//*:string">
         <xsl:value-of select="." disable-output-escaping="yes"/>
      </xsl:for-each>
</xsl:template>
</xsl:stylesheet>

The source XML (for now) is

<ns0:MTBatchCharacteristics xmlns:ns0="http://johnsonmatthey.com">
   <fielda>111</fielda>
   <fieldb>
      <fieldb_1>222</fieldb_1>
      <fieldb_2>333</fieldb_2>
   </fieldb>
</ns0:MTBatchCharacteristics>

I get an error as below

Transformer Configuration Exception occurred when loading XSLT XSL StringToXML.xsl; details: sapximapping:XSL StringToXML.xsl: line 9: Required attribute 'select' is missing. See error logs for details

I would be most grateful if someone could provide assistance in getting this resolved.

Thanks

Martin

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

1 Answer

  • Dec 16, 2015 at 09:14 AM

    Hello Martin,

    you can't use XSL version 2 in PI as far as I know.

    I modified your XSLT to this

    <?xml version="1.0" encoding="UTF-8"?>  
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:a="http://www.sdn.com/xslt">  
        <xsl:output method="xml" omit-xml-declaration="yes" />  
        <xsl:template match="/">  
            <xsl:for-each select="*">  
                <string>
                    <xsl:value-of select="normalize-space(.)" disable-output-escaping="yes"/>
                </string>
            </xsl:for-each>  
        </xsl:template>  
    </xsl:stylesheet>  
    
    
    

    and I get this output:

    <string xmlns:a="http://www.sdn.com/xslt">111 222 333</string>
    
    

    I dont know which output you want.

    But maybe you can work with my XSL.

    Best regards,

    Peter

    Add comment
    10|10000 characters needed characters exceeded