Xml 使用XSL更改名称空间
我需要将WSDL(使用XSLT)从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
...
.
..
.....
......
到
...
.
..
.....
......
我们可以用“查找并替换”来执行此操作吗?最好的办法是什么??
我已尝试复制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>