我试图了解如何使用我已经编写的代码来推断解决方案。
为了简化,我将首先解释我想要做什么以及到目前为止我得到了什么。
假设我在 XSLT 中有一个 XML 变量,其中包含几个具有相同标题属性的节点。
使用@Dimitre Novatchev 解决方案,我设法将它们组合到一个节点中。
所以如果我有:
<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 或其他方法)。
我发现自己只实施了需要大量不必要努力的糟糕解决方案。