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>

2 番目の入力ファイル:

<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 のみを使用するだけでそれを行うことは可能ですか? 問題の一般化された解決策について教えてください。

マージのアルゴリズム:

  • 最初にノード フルーツ id=1 を見つけ、次に 2 番目のファイルで同じフルーツ id=1 を見つけます。フルーツ id=1 のすべての子は、最初のファイルのフルーツ id=1 のノード内に配置されます。

  • 果物 ID が異なる場合は、単純に新しいノードとして追加します (
    果物 ID=1 の下ではありません) 。

  • マージは「fruit」ノードに基づくと想定できるため、xslt ファイルで変数「fruit」を使用して簡単にすることができます。

  • また、同じノード ID (上記の例では N1) の下にある必要があります。

ありがとうございました。

ジョン

4

0 に答える 0