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>
--~--