【发布时间】:2012-12-16 16:47:03
【问题描述】:
我正在尝试了解如何使用我已经编写的代码来推断解决方案。
为了简单起见,我将首先解释我想要做什么以及到目前为止我得到了什么。
假设我在 XSLT 中有一个 XML 变量,其中包含几个具有相同标题属性的节点。
使用@Dimitre Novatchev solution 我已经设法将它们合并到一个节点中。
如果我有:
<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 或其他东西)。
我发现自己只实施了需要大量不必要努力的糟糕解决方案。
【问题讨论】:
标签: xml xslt merge nodes xslt-grouping