我是XSLT的新手。我一直在试图转换XML很长一段时间,但无法做到。 的输入XML是这样的:如果它的值是version 2
使用xslt替换xml中属性值中的字符串1.0
<Load v:MajorVersion="05" v:MinorVersion="01" xmlns="version 2" xmlns:v="version 2">
<annotation/>
<Header></Header>
<Body></Body>
</Load>
输出应该替换属性xmlns
从version 2
值和xmlns:v
到version 1
,否则应保持原样。
问题是这些属性很容易发生变化,输入xml可能类似于xmlns:n
或xmlns:m
,或者这些属性可能不存在。
最后,我们应该寻找节点Load
的所有属性,并在所有的属性搜索字符串version 2
(喜欢的xmlns,XMLNS:V,XMLNS:N等) 和version 1
更换。
请帮帮我。相信我我花了数小时为此寻找答案。
谢谢,我已经看到了上述解决方案。问题是,命名空间限定符是动态的,它可能会以v2或pidx的形式出现,甚至会出现其他情况。也可以有多个名称空间声明,其值为“版本2”。目的是替换所有名称空间声明,从“版本2”到“版本1” –
您正在讨论命名空间uri相同的命名空间前缀。他们不重要。你只需要在你的xslt中有一个独特的前缀,它不需要和xml中的相同。试试上面的模板。 –