如何解决使用XSL转换表修改XML中的名称空间
尝试更改XML名称空间定义时遇到问题。
我的输入xml中有此名称空间:
,在我的xml中,我下面有一个字段: productsList xsi:type =“ ns3:Segment” xmlns:xsi =“ http://www.w3.org/2001/XMLSchema-instance”>
++++++++++++++++++++++++++++++++++++++++++++++++ +++ 在我的XSL中,我这样做了:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns2="http://fakeurl_V2/xsd"
xmlns:ns3="http://fakeurl_V3/xsd"
... others namespace ....
>
<xsl:output method="xml" version="1.0" omit-xml-declaration="no"
encoding="UTF-8" indent="yes" />
....
<xsl:template match="ns3:*">
<xsl:element name="ns2:{local-name()}">
<xsl:apply-templates select="@*|node()" />
</xsl:element>
</xsl:template>
....
++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++
有结果:
如您所见,名称空间ns2已按我的意愿进行了更改 但这并没有影响我需要转换的这一行: xsi:type =“ ns3:Segment” : xsi:type =“ ns2:Segment”
您对此有任何解决方案吗?
谢谢您的关注,我希望我能说清楚自己的意思。
致谢
解决方法
您可以添加一个模板,用新的模板替换旧的前缀,例如:
<xsl:template match="@xsi:type">
<xsl:attribute name="{name()}" select="replace(.,'^ns3:','ns2:')" />
</xsl:template>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。