いくつかの値に基づいて xml ファイルを並べ替える必要があります。入力 xml の構造は次のとおりです。
<DataSet>
<Product>
<Category>100</Category>
<ProductGroup>2000</ProductGroup>
<ProductNr>30003</ProductNr>
</Product>
<Product>
<Category>100</Category>
<ProductGroup>2000</ProductGroup>
<ProductNr>30001</ProductNr>
</Product>
<Product>
<Category>100</Category>
<ProductGroup>1000</ProductGroup>
<ProductNr>30002</ProductNr>
</Product>
<Product>
<Category>100</Category>
<ProductGroup>1000</ProductGroup>
<ProductNr>30004</ProductNr>
</Product>
<Product>
<Category>100</Category>
<ProductGroup>1000</ProductGroup>
<ProductNr>30010</ProductNr>
</Product>
<Product>
<Category>200</Category>
<ProductGroup>3000</ProductGroup>
<ProductNr>30006</ProductNr>
</Product>
<Product>
<Category>200</Category>
<ProductGroup>4000</ProductGroup>
<ProductNr>30009</ProductNr>
</Product>
<Product>
<Category>200</Category>
<ProductGroup>4000</ProductGroup>
<ProductNr>30007</ProductNr>
</Product>
<Product>
<Category>200</Category>
<ProductGroup>3000</ProductGroup>
<ProductNr>30005</ProductNr>
</Product>
この xml は、Category で並べ替え、次に ProductNr で並べ替えますが、ProductGroup でグループ化する必要があります。つまり、ProductGroup 2000 に ProductGroup 1000 よりも小さい ProductNr を持つ製品がある場合、ProductGroup 2000 は ProductGroup 1000 の前に印刷される必要があります。
出力 xml は次のようになります。
<DataSet>
<Product>
<Category>100</Category>
<ProductGroup>2000</ProductGroup>
<ProductNr>30001</ProductNr>
</Product>
<Product>
<Category>100</Category>
<ProductGroup>2000</ProductGroup>
<ProductNr>30003</ProductNr>
</Product>
<Product>
<Category>100</Category>
<ProductGroup>1000</ProductGroup>
<ProductNr>30002</ProductNr>
</Product>
<Product>
<Category>100</Category>
<ProductGroup>1000</ProductGroup>
<ProductNr>30004</ProductNr>
</Product>
<Product>
<Category>100</Category>
<ProductGroup>1000</ProductGroup>
<ProductNr>30010</ProductNr>
</Product>
<Product>
<Category>200</Category>
<ProductGroup>3000</ProductGroup>
<ProductNr>30005</ProductNr>
</Product>
<Product>
<Category>200</Category>
<ProductGroup>3000</ProductGroup>
<ProductNr>30006</ProductNr>
</Product>
<Product>
<Category>200</Category>
<ProductGroup>4000</ProductGroup>
<ProductNr>30007</ProductNr>
</Product>
<Product>
<Category>200</Category>
<ProductGroup>4000</ProductGroup>
<ProductNr>30009</ProductNr>
</Product>
今、私の考えは、次のロジックに基づいてソート目的のキーを生成することです:
key = Category + (smallest ProductNr in ProductGroup) + ProductNr
次に、このキーで並べ替えて、正しい結果を得ることができます。
XSLT は初めてで、ProductGroup 内の最小の ProductNr を計算し、この値で並べ替える方法がわかりません。ヒントを教えてください。
または: このタスクを解決するためのより良いテクノロジはありますか?