gpt4 book ai didi

xml - 使用 XSL 转换表修改 XML 中的命名空间

转载 作者:行者123 更新时间:2023-12-04 17:05:40 25 4
gpt4 key购买 nike

我在尝试更改 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>

....
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
结果是:

xsi:type="ns3:Segment">
如您所见,命名空间 ns2 已按我的意愿更改
但这并没有影响到这一行: xsi:type="ns3:Segment"我需要转换: xsi:type="ns2:Segment"
你有什么解决办法吗?
感谢您的关注,我希望我已经足够清楚了。
问候

最佳答案

您可以添加一个模板来用新的前缀替换旧的前缀,例如:

<xsl:template match="@xsi:type">
<xsl:attribute name="{name()}" select="replace(., '^ns3:', 'ns2:')" />
</xsl:template>

演示 : https://xsltfiddle.liberty-development.net/gVrvcxa

关于xml - 使用 XSL 转换表修改 XML 中的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64667916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com