Xml 使用XSL更改名称空间

Xml 使用XSL更改名称空间,xml,xslt,namespaces,wsdl,transform,Xml,Xslt,Namespaces,Wsdl,Transform,我需要将WSDL(使用XSLT)从 ... . .. ..... ...... 到 ... . .. ..... ...... 我们可以用“查找并替换”来执行此操作吗?最好的办法是什么?? 我已尝试复制select,但它不起作用 我试过以下几点 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsd="http://www.w3.org/20

我需要将WSDL(使用XSLT)从


...
.
..
.....
......       


...
.
..
.....
......
我们可以用“查找并替换”来执行此操作吗?最好的办法是什么?? 我已尝试复制select,但它不起作用

我试过以下几点

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


这对输出没有影响

文档中如何使用这些前缀
impl
intf
?仅用于元素和属性的名称?还是在属性和元素值中?恐怕在其中放入
是不够的,我们需要查看XML文档的内容。对于元素、属性及其值。我为这个不清楚的问题道歉。你能详细解释一下“它没用”吗?实际发生了什么?我们能否假设输入中
a.b.c/s/Md
命名空间中的任何元素和属性都应该在输出中
1.2.3/s/Md
命名空间中?还有一个相关的问题:是否要求名称在输入中包含
impl
名称空间前缀的节点在输出中也具有
impl
名称空间前缀?(我认为这是一个更难满足的要求)您使用XSLT1.0还是2.0?
<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>