0

第一个输入文件:

<root> 
    <node id="N1">
        <fruit id="1" action="aaa">
            <orange id="x">
                <attribute>
                    <color>Orange</color>
                    <year>2000</year>
                </attribute>
            </orange>            
        </fruit>             
    </node>
</root>

第二个输入文件:

<root> 
    <node id="N1">
        <fruit id="1">
            <orange id="y">
                <attribute>
                    <color>Orange</color>
                    <year>2000</year>
                </attribute>
            </orange> 
            <orange id="z">
                <attribute>
                    <color>Orange</color>
                    <year>2000</year>
                </attribute>
            </orange>                       
        </fruit>
        <fruit id="2" action="bbb">
            <orange id="x">
                <attribute>
                    <color>Pink</color>
                    <year>2000</year>
                </attribute>
            </orange>            
        </fruit> 
    </node>
</root>

合并后的输出:

<root> 
    <node id="N1">
        <fruit id="1" action="aaa">
            <orange id="x">
                <attribute>
                    <color>Orange</color>
                    <year>2000</year>
                </attribute>
            </orange>     
            <orange id="y">
                <attribute>
                    <color>Orange</color>
                    <year>2000</year>
                </attribute>
            </orange>  
            <orange id="z">
                <attribute>
                    <color>Orange</color>
                    <year>2000</year>
                </attribute>
            </orange>              
        </fruit> 

        <fruit id="2" action="bbb">
            <orange id="x">
                <attribute>
                    <color>Pink</color>
                    <year>2000</year>
                </attribute>
            </orange>            
        </fruit> 
    </node>
</root>

仅使用 XSLT 就可以做到这一点吗?请就该问题的通用解决方案告诉我。

合并算法:

  • 首先找到节点fruit id=1,然后我们在第二个文件中找到相同的fruit id=1,fruit id=1 的每个孩子都将被放入第一个文件中fruit id=1 的节点内。

  • 如果水果 id 不同,我们只需将其添加为新节点(不在
    水果 id=1 下)

  • 我们可以假设合并将基于 'fruit' 节点,因此我们可以使用 xslt 文件中的变量 'fruit' 使其更容易。

  • 它必须在相同的节点 ID 下(上例中的 N1)。

谢谢你。

约翰

4

0 回答 0