既に書いたコードを使用して解決策を推測する方法を理解しようとしています。
簡単にするために、最初にやりたいこととこれまでに得たものを説明します。
同じ title 属性を持ついくつかのノードを含む XML 変数が XSLT にあるとします。
@Dimitre Novatchev ソリューションを使用して、それらを 1 つのノードに結合することができました。
だから私が持っていたら:
<t>
<GroupData ID="xxx" Key="4" Temp="yyy">
<ItemData ID="zzz" Value="3"/>
</GroupData>
<GroupData ID="yyy" Key="4" Temp="yyy">
<ItemData ID="abc" Value="3"/>
</GroupData>
<GroupData ID="zzz" Temp="yyy">
<ItemData ID="pqr" Value="1982"/>
</GroupData>
<GroupData ID="xxx" Key="4" Temp="yyy">
<ItemData ID="www" Value="1982"/>
</GroupData>
<GroupData ID="yyy" Key="4" Temp="yyy">
<ItemData ID="def" Value="1982"/>
</GroupData>
<GroupData ID="zzz" Temp="yyy">
<ItemData ID="tuv" Value="1982"/>
</GroupData>
</t>
次のキーを使用した後
<xsl:key name="kGDByIdKey" match="GroupData" use="concat(@ID, '+', @Key)"/>
私は得るでしょう:
<t>
<GroupData ID="xxx" Key="4" Temp="yyy">
<ItemData ID="zzz" Value="3"/>
<ItemData ID="www" Value="1982"/>
</GroupData>
<GroupData ID="yyy" Key="4" Temp="yyy">
<ItemData ID="abc" Value="3"/>
<ItemData ID="def" Value="1982"/>
</GroupData>
<GroupData ID="zzz" Temp="yyy">
<ItemData ID="pqr" Value="1982"/>
<ItemData ID="tuv" Value="1982"/>
</GroupData>
</t>
ここで、これを少し変更したいと思います。私の決定により、タイトルをマージ/結合できるようにしたいと思います。上記の例では、xxx と zzz は異なるタイトルを使用していますが、同じグループに属するように定義したいと考えています (極端なケース - 私のワークスペースではそれらを同一に定義しました - 次のようなケースがもっとあるかもしれません)。これ)。
一般的にどのような方向にすべきか教えていただければ幸いです(キーを変更するか、別の方法(generate-idなど)を使用する必要があると思います)。
多くの不必要な労力を必要とする悪いソリューションだけを実装していることに気づきました。