如何解决FpML - 如何在复制整个 fpml 后替换命名空间中的文本?
在复制 fpml 后尝试替换命名空间时遇到问题。 我需要更换
<nonpublicExecutionReport xmlns="http://www.fpml.org/fpml-5/transparency" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.fpml.org/fpml-5/transparency file:///C:/APPS/Resources/xmls/SDR/transparency/fpml-main-5-5.xsd" fpmlVersion="5-5">
<A/>
<B/>
</nonpublicExecutionReport>
为了
<nonpublicExecutionReport fpmlVersion="5-5" xsi:schemaLocation="http://www.fpml.org/fpml-5/recordkeeping /../xmls/SDR/recordkeeping/fpml-main-5-5.xsd" xmlns="http://www.fpml.org/fpml-5/recordkeeping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<A/>
<B/>
</nonpublicExecutionReport>
基本上是将“透明度”替换为“记录保存”
我已经尝试过像 XML replacement with XSL 这样的上一个问题,但我的案例没有成功。
我要做的是:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" mlns:fpml="http://www.fpml.org/fpml-5/transparency">
<!-- copy XML source -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<!-- Remove transparency from the layout-->
<xsl:template match="fpml:*">
<!-- Update this tag -->
<xsl:element name="{local-name()}">
<nonpublicExecutionReport xmlns="http://www.fpml.org/fpml-5/reportkeeping" fpmlVersion="5-5" xsi:schemaLocation="http://www.fpml.org/fpml-5/recordkeeping/../xmls/SDR/recordkeeping/fpml-main-5-5.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xsl:apply-templates select="node()"/>
</nonpublicExecutionReport>
</xsl:element>
</xsl:template>
<xsl:template match="fpml:*">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="@*|node()"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
命名空间未被替换。
解决方法
您有两个匹配相同模式的模板。这将产生错误或仅应用最后一个模板。
要显示结果,您可以简单地执行以下操作:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fpml="http://www.fpml.org/FpML-5/transparency">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="fpml:*">
<xsl:element name="{local-name()}" namespace="http://www.fpml.org/FpML-5/recordkeeping">
<xsl:copy-of select="@*"/>
<xsl:apply-templates select="node()"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。