下面newNode交易替换情况下节点的事务是输入XML:如何使用XSLT
<?xml version="1.0" encoding="UTF-8"?>
<DST>
<CDGCreateTree>
<DST>
<currentJobName>PQContactComplete</currentJobName>
<AWD>
<case>
<transaction>
<UIID>001</UIID>
</transaction>
</case>
<case>
<transaction>
<UIID>002</UIID>
</transaction>
</case>
</AWD>
</DST>
</CDGCreateTree>
<newNode>
<transaction relate="Y" id="1"/>
</newNode>
</DST>
- 在上述XML总2个
case
S的由具有单个transaction
小号 newNode
节点包含另一个transaction
带有ID(id="1"
)
我的要求就像我想先替换case
transaction
与newNode
transaction
的结果应该是:
<?xml version="1.0" encoding="UTF-8"?>
<DST>
<CDGCreateTree>
<DST>
<currentJobName>PQContactComplete</currentJobName>
<AWD>
<case>
<transaction relate="Y" id="1"/>
</case>
<case>
<transaction>
<UIID>002</UIID>
</transaction>
</case>
</AWD>
</DST>
</CDGCreateTree>
</DST>
在未来,我可能会得到另一个transaction
与id
下newNode
节点。下面是XML
<?xml version="1.0" encoding="UTF-8"?>
<DST>
<CDGCreateTree>
<DST>
<currentJobName>PQContactComplete</currentJobName>
<AWD>
<case>
<transaction relate="Y" id="1"/>
</case>
<case>
<transaction>
<UIID>002</UIID>
</transaction>
</case>
</AWD>
</DST>
</CDGCreateTree>
<newNode>
<transaction relate="Y" id="2"/>
</newNode>
</DST>
这个时候我应该newNode
transaction
(因为第一case
transaction
已经有id
值)替换第二case
transaction
。 我想以这种方式继续这个过程。
我已经尝试过下面的XSLT,但它没有帮助。如果我错了,请建议更好的方法或纠正我。
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version = "1.0">
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
</xsl:copy>
</xsl:template>
<xsl:variable name="targetNode" select="//newNode/transaction"/>
<xsl:template match="(//transaction[ancestor::*[name() = "CDGCreateTree"]][not(@id)])[1]">
<xsl:copy-of select="$targetNode"/>
</xsl:template>
<xsl:template match="//newNode">
</xsl:template>
</xsl:stylesheet>
上述XSL的说明:
(//transaction[ancestor::*[name() = "CDGCreateTree"]][not(@id)])[1]
这种说法是定义有关case
未具有id
和第一transaction
与(//newNode/transaction)
新transaction
替换transaction
。
未来,如果我得到任何newNode
transaction
它应该被相应地替换为上述XSL。我认为这将按照声明工作,但缺少一些东西。
“*我想第一种情况下交易,以取代NewNode交易*”你为什么想要做这样的事情?第一起案件交易已经存在 - 复制它的意义何在?为什么你想失去有关NewNode交易的信息? – 2014-09-19 08:30:17
1)NewNode事务包含基于大小写事务数据执行的响应 – Hari 2014-09-19 08:41:08
,之后对我们的案例事务数据不再有用,这就是我们删除数据替换newNode事务数据的原因。这是我们需要遵循之前所做的迁移项目。 – Hari 2014-09-19 08:43:39