xsl-list
[Top] [All Lists]

Re: [xsl] Replacing default namespace

2007-07-02 09:42:37
Scott Sauyet wrote:

In any case, a reduced version of the input WSDL is below. I want the output to be exactly the same except for the changes to the root tag:

    <definitions
        targetNamespace="http://my.new.namespace/";
        xmlns:tns="http://my.new.namespace/";

Here is an XSLT 1.0 stylesheet, I think it does what you want with Saxon 6.5.5:

<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
  version="1.0"
  xmlns:tns="http://my.new.namespace/";
  xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/";
  xmlns:xs="http://www.w3.org/2001/XMLSchema";
  xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";
  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
  xmlns:ro="urn:Databox"
  xmlns:n1="http://schemas.xmlsoap.org/wsdl/";
  xmlns="http://schemas.xmlsoap.org/wsdl/";>

  <xsl:template match="*">
    <xsl:element name="{name()}" namespace="{namespace-uri()}">
      <xsl:apply-templates select="@* | node()"/>
    </xsl:element>
  </xsl:template>

  <xsl:template match="/wsdl:definitions">
    <xsl:element name="{name()}" namespace="{namespace-uri()}">
      <xsl:copy-of select="document('')/*/namespace::*"/>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:element>
  </xsl:template>

  <xsl:template match="wsdl:definitions/@targetNamespace">
<xsl:attribute name="targetNamespace"><xsl:value-of select="document('')/*/namespace::tns"/></xsl:attribute>
  </xsl:template>

  <xsl:template match="@* | comment() | processing-instruction()">
    <xsl:copy-of select="."/>
  </xsl:template>

</xsl:stylesheet>


--

        Martin Honnen
        http://JavaScript.FAQTs.com/

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--