我有以下输入xml:
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<PQContact>
<input>
<folder>
<UNITCD>CS2XAA</UNITCD>
<FOLDERID>KKMTEST3000</FOLDERID>
</folder>
</input>
<input>
<folder>
<UNITCD>CS2XAA</UNITCD>
<FOLDERID>KKMTEST1300</FOLDERID>
</folder>
</input>
</PQContact>
<AWD>
<case>
<RMEM>KKMTEST3000</RMEM>
<transaction>ABC</transaction>
</case>
<case>
<RMEM>KKMTEST1300</RMEM>
<transaction>DEF</transaction>
</case>
</AWD>
</ROOT>
如果/ROOT/AWD
下<folder>
标记的值与{{{{}}的值相匹配,我必须将/ROOT/PQContact/input
下的案例移至<RMEM>
<case>
{}}}下的1}}标记。
我的结果xml应如下所示:
<FOLDERID>
答案 0 :(得分:1)
考虑使用DELETE
查找xsl:key
元素:
case
然后,您可以拥有一个与复制现有节点的<xsl:key name="case" match="case" use="RMEM" />
元素匹配的模板,但也可以使用该键复制匹配的folder
元素。
case
将此与XSLT identity template相结合,然后唯一需要的是确保<xsl:template match="folder">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
<xsl:apply-templates select="key('case', FOLDERID)" />
</xsl:copy>
</xsl:template>
不会被复制的模板。
试试这个XSLT
AWD