使用XSL更改名称空间

时间:2013-07-16 14:10:55

标签: xml xslt namespaces wsdl transform

我需要从

转换WSDL(使用XSLT)
<wsdl:definitions 
  targetNamespace="a.b.c/s/Md"
  xmlns:apachesoap="http://xml.apache.org/xml-soap"
  xmlns:impl="a.b.c/s/Md"
  xmlns:intf="a.b.c/s/Md"
  xmlns:tns2="http://lang.java"
  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
  xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 ...
 .
 ..
 .....
 ......       

</wsdl:definitions>

<wsdl:definitions 
  targetNamespace="1.2.3/s/Md"
  xmlns:apachesoap="http://xml.apache.org/xml-soap"
  xmlns:impl="1.2.3/s/Md"
  xmlns:intf="1.2.3/s/Md"
  xmlns:tns2="http://lang.java"
  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
  xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 ...
 .
 ..
 .....
 ......




</wsdl:definitions>

我们可以通过查找和替换来执行此操作吗?什么是最好的方法? 我尝试过复制选择,但它没有用。

我试过以下......

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
 xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" 
 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
 xmlns:tns2="http://lang.java" 
 xmlns:intf="1.2.3/s/Md" 
 xmlns:impl="1.2.3/s/Md" 
 xmlns:apachesoap="http://xml.apache.org/xml-soap" 
targetNamespace="1.2.3/s/Md">

<xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="node()|@*">
  <xsl:copy>
   <xsl:apply-templates select="node()|@*"/>
</xsl:copy>
 </xsl:template>

<xsl:template match="/*">
  <xsl:element name="{name()}" namespace="{namespace-uri()}">

  <xsl:copy-of select= "document('')/*/namespace::*[name()='intf']"/>
  <xsl:copy-of select= "document('')/*/namespace::*[name()='impl']"/>
  <xsl:copy-of select="@*"/>

  </xsl:element>
 </xsl:template>
   </xsl:stylesheet>

这对输出没有影响!

0 个答案:

没有答案