ThomasM: XSL Transformation - nur Namespaceänderung!

Beitrag lesen

Hallo Sarah,

Ich bekomme das gesuchte Ergebnis mit diesem Ansatz fast hin:

<?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" encoding="UTF-8" indent="yes"/>  
  
  <xsl:template match="@* | node()">  
    <xsl:copy>  
      <xsl:apply-templates select="@* | node()"/>  
    </xsl:copy>  
  </xsl:template>  
  
  <xsl:template match="*[starts-with(name(),'soapenv')]">  
    <xsl:element name="{name()}" namespace="http://schemas.xmlsoap.org/soap/envelope">  
      <xsl:apply-templates select="@* | node()"/>  
    </xsl:element>  
  </xsl:template>  
  
  <xsl:template match="*[starts-with(name(),'ass')]">  
    <xsl:element name="{name()}" namespace="http://www.test.com/NEW">  
      <xsl:apply-templates select="@* | node()"/>  
    </xsl:element>  
  </xsl:template>  
  
</xsl:stylesheet>

Ergebnis:

<?xml version="1.0" encoding="UTF-8"?>  
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope">  
   <soapenv:Header/>  
   <soapenv:Body>  
      <ass:GetCFSObjectStateResponse xmlns:ass="http://www.test.com/NEW">  
         <ass:ExceptionDetails>  
            <ass:Type>CFSInstanceNotFoundException</ass:Type>  
            <ass:Message>CFSInstanceNotFoundException</ass:Message>  
         </ass:ExceptionDetails>  
      </ass:GetCFSObjectStateResponse>  
   </soapenv:Body>  
</soapenv:Envelope>

xmlns:ass steht zwar nicht beim Wurzelelement, aber immerhin beim ersten Auftreten eines Elements aus dem ass-Namensraum, funktional ok.

Grüße,
Thomas