0

Xslt を使用して、ある xml から別の xml にコンテンツをコピーしようとしています。

file1 のコンテンツをコピーする必要があります

<?xml version="1.0"?>
<products author="Jesper">
  <product>
    <name>Delta</name>
    <price>800</price>
    <stock>
        <price>13a</price>
    </stock>
    <place>Denmark</place>
  </product>
</products>

ファイル 2 に。ファイル 2 には類似したタグがありますが、順序がごちゃ混ぜになっています。

<?xml version="1.0"?>
<products author="Jesper">
  <product>
    <stock>
        <price>13d</price>
    </stock>
    <price>700</price>
    <place>Copenhagen</place>
     <name>Beta</name>
  </product>
</products>

期待される出力

<products author="Jesper">
  <product>
    <stock>
        <price>13a</price>
    </stock>
    <price>800</price>
    <place>Denmark</place>
     <name>Delta</name>
  </product>
</products>

したがって、基本的には、for-each を使用して file1 を反復処理し、file2 で一致するタグを見つけて、タグ値をコピーする必要があります。効率的な方法がわからない... 二重反復は非効率的です。どんな提案も役に立ちます。

4

1 に答える 1

1

これは非常に大まかな質問ですが、開始するためのヒントをいくつか提供しようと思います。doc()XSLT では単一の「メイン」ファイルのみを反復処理できるため、この関数を 使用してファイルをロードすることをお勧めします。doc()テンプレートを適用できる変数に新しいファイルをロードします。反復のパフォーマンスが気になる場合は、それに役立つインデックスを作成する関数xsl:keyについて学ぶ必要があります。key()

于 2013-01-28T22:16:13.673 に答える