[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
Re: [xsl] Replacing default namespace
Subject: Re: [xsl] Replacing default namespace
From: Martin Honnen <Martin.Honnen@xxxxxx>
Date: Mon, 02 Jul 2007 18:42:07 +0200
|
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/
|