このxmlフラグメントを変換したい
<Sets>
<Set id="category.product.typeA.item1"/>
<Set id="category.product.typeB.item2"/>
<Set id="category.product.typeC.item3"/>
<Set id="category.product.typeA.item2"/>
<Set id="category.product.typeA.item3"/>
<Set id="category.service.typeA.item1"/>
<Set id="category.service.typeA.item2"/>
<Set id="category.product.typeA.item4"/>
<Set id="category.product.typeA.item5"/>
</Sets>
次の xml フラグメントに変換します。
<Category id="category.product">
<Group id="category.product.typeA">
<Set id="category.product.typeA.item1"/>
<Set id="category.product.typeA.item2"/>
<Set id="category.product.typeA.item3"/>
<Set id="category.product.typeA.item4"/>
<Set id="category.product.typeA.item5"/>
</Group>
<Group id="category.product.typeB">
<Set id="category.product.typeB.item2"/>
</Group>
<Group id="category.product.typeC">
<Set id="category.product.typeC.item3"/>
</Group>
</Category>
<Category id="category.service">
<Group id="category.service.typeA">
<Set id="category.service.typeA.item1"/>
<Set id="category.service.typeA.item2"/>
</Group>
</Category>
基本的に、属性値に基づいて要素を別々のグループに入れたいと思います。
したがって、一致する属性値を持つ要素: category.product.typeA.* は 1 つのグループに配置する必要があります category.product.typeB.* は別のグループに配置する必要があります
属性の値が category.product.* と一致する場合、そのグループは 1 つのカテゴリに分類され、属性の値が category.service.* と一致する場合は別のカテゴリに分類されます。
「starts-with」と「for-each-group」で努力しましたが、要素のグループ化と属性のワイルドカード マッチングの両方をまとめることができず、助けていただければ幸いです。