首页 > 解决方案 > #XPATH 删除两次不存在的节点集

问题描述

我有一个要求,我需要过滤掉所有在输入 XML 中不重复出现的节点集。

我的源文件包含 2 条消息,组合在 1 个 XML 中。两条消息可以具有相同的注释集,但是,消息 1 可以具有需要过滤掉的其他节点集:

<messages>
<msg1>
    <element1>
        <a>dummy field</a>
        <b>22222</b>
        <c>33333</c>
    </element1>
    <element2>
    <d>4444444</d>
    </element2>
</msg1>
<msg2>
    <element1>
        <b>22222</b>
        <c>33333</c>
    </element1>
</msg2>

如您所见,msg1 和 msg2 都有字段 b 和 c。msg1 中的字段 a 可以忽略,因为它包含一个虚拟值。这意味着 element1 节点及其子字段在 msg 1 和 msg2 中是相同的。但是,元素 2 在 msg2 中不存在,因此应该从输出文件中删除。我期望的输出文件是:

<messages>
    <msg1>
        <element1>
            <a>dummy field</a>
            <b>22222</b>
            <c>33333</c>
        </element1>
    </msg1>
    <msg2>
        <element1>
            <b>22222</b>
            <c>33333</c>
        </element1>
    </msg2>
</messages>

一百万次感谢谁能提供帮助!

标签: xsltxpathxslt-2.0

解决方案


推荐阅读