【发布时间】:2012-08-15 13:43:33
【问题描述】:
作为对我的原始帖子Group/merge childs of same nodes in xml/xslt 的补充,我遇到了让该结构针对不同节点(层次结构中较高的节点)重复多次的问题,例如,
<Collection>
<Questionnaire Name="Preferences" VersionID="3QW">
<Subject ID="2355">
<EventData Name="First Part">
<FormData Name="Past">
<GroupData ID="xxx" Key="4" Temp="yyy">
<ItemData ID="zzz" Value="3"/>
</GroupData>
<GroupData ID="xxx" Key="4" Temp="yyy">
<ItemData ID="qqq" Value="4"/>
</GroupData>
...
</FormData>
<FormData Name="Present">
<GroupData ID="yyy" Key="9" Temp="yyy">
<ItemData ID="www" Value="32"/>
</GroupData>
...
</FormData>
</EventData>
<EventData Name="SecondPart">
...
</EventData>
</Subject>
<Subject ID="9812">
...
</Subject>
</Questionnaire>
</Collection>
在尝试了我收到的建议的变化和其他一些事情之后,我陷入了困境。我认为它与多个级别有关(并且 GroupData 分布在它将成为子节点的上层/祖父节点上),然后它可能不再具有唯一的 ID。那么如何将每个 GroupData 节点的子节点放入一个 GroupData 节点(在 ID 上匹配,有时在 Key 上匹配,因为后者并不总是存在)?注意:相同的GroupData节点(具有相应的属性)必须在每个FormData节点中合并为一个GroupData节点。
【问题讨论】:
-
@SeanB.Durkin - 问题是,“那么我怎样才能让每个 GroupData 节点的子节点进入一个 GroupData 节点(匹配 ID,有时匹配 Key,因为后者并不总是存在)? "
-
Mat90,人们需要了解什么是想要的结果以及转换的规则是什么。请编辑问题并提供此缺失信息。另外,请不要在提供的 XML 文档中使用省略号——这可能会非常混乱。
-
即使看了你之前的问题,我也花了一段时间才明白你想要什么。您希望通过 ID、Key 和 FormData 的乘积合并 GroupData 节点。也就是说GroupData由ID和Key合并而成,每个FormData元素。