我必须根据几个值对 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 中有一个 ProductNr 小于 ProductGroup 1000 中的 Product,那么 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,然后按此值排序。你能给我一个提示吗?
或者:有没有更好的技术来解决这个任务?