【发布时间】:2019-03-29 16:27:16
【问题描述】:
今天的挑战是在 XSLT 1.0 中进行分组。发现有一种叫做键和 Muenchian 分组的东西。
输入 XML:
<Items>
<Item>
<ID>1</ID>
<Name>A</Name>
<Country>Sweden</Country>
<Region>Småland</Region>
</Item>
<Item>
<ID>2</ID>
<Name>B</Name>
<Country>Sweden</Country>
<Region>Norrland</Region>
</Item>
<Item>
<ID>3</ID>
<Name>C</Name>
<Country>USA</Country>
<Region>Alaska</Region>
</Item>
<Item>
<ID>4</ID>
<Name>D</Name>
<Country>USA</Country>
<Region>Texas</Region>
</Item>
<Item>
<ID>5</ID>
<Name>E</Name>
<Country>Sweden</Country>
<Region>Norrland</Region>
</Item>
</Items>
我需要将 XML 精简为更好的结构,并且我不希望从这个示例 XML 中获得按国家和地区结构化的项目。以下是对国家和地区进行排序的所需结果:
<Items>
<Country Name="Sweden">
<Region Name="Norrland">
<Item>
<ID>2</ID>
<Name>B</Name>
</Item>
<Item>
<ID>5</ID>
<Name>E</Name>
</Item>
</Region>
<Region Name="Småland">
<Item>
<ID>1</ID>
<Name>A</Name>
</Item>
</Region>
</Country>
<Country Name="USA">
<Region Name="Alaska">
<Item>
<ID>3</ID>
<Name>C</Name>
</Item>
</Region>
<Region Name="Texas">
<Item>
<ID>4</ID>
<Name>D</Name>
</Item>
</Region>
</Country>
</Items>
编辑:
我还想确保地区最终出现在自己的国家/地区,即使存在重复。我相应地编辑了答案。
另外,我想暗示 xsltfiddle.liberty-development.net 是一种进行试错式 XSLT 开发的简单方法...
【问题讨论】: