【发布时间】:2011-08-19 21:51:50
【问题描述】:
我正在尝试将元素组拆分为包含一组独特元素的组,同时保持拆分中的所有兄弟关系。例如,我想要以下 xml:
<group>
<b074>11</b074>
<b075>03</b075>
<b076>9</b076>
<b075>04</b075>
<b076>12</b076>
</group>
<group>
<b074>11</b074>
<b075>04</b075>
<b076>4</b076>
</group>
要转化为:
<group>
<b074>11</b074>
<b075>03</b075>
<b076>9</b076>
</group>
<group>
<b074>11</b074>
<b075>04</b075>
<b076>12</b076>
</group>
<group>
<b074>11</b074>
<b075>04</b075>
<b076>4</b076>
</group>
编辑:初始数据中的第一组具有重复的元素。例如元素<b075> 出现两次。我希望 <b075> 第二次出现在结果中的一个新组中。这就是我所说的唯一集的意思。
编辑#2:忘了提到当第二个<b075> 被拉到它自己的组中时,它的兄弟<b074> 被“复制”了。这就是我说的保留兄弟姐妹的意思。
编辑#3:(抱歉,我第一次应该更彻底地解释这一点)您知道<b074> 属于结果组的方式是因为它发生了一次。原始组中出现一次的所有元素都由所有结果组共享。重复的元素也将按顺序列出,这意味着如果元素 <b075> 和 <b076> 重复,它们将彼此相邻,<b075>,然后立即为 <b076>。所以结果组的数量,就是这样重复的元素块的数量(在这个例子中是 2 个)。
不幸的是,我是 XSLT 的新手,但我尝试应用在 XSLT split a tree at a descendent node 和 Move separator elements upwards in xml hierarchy 找到的解决方案的变体没有成功,因为它们似乎非常接近我想要实现的目标。
我正在使用 1.0 – 2.0 不适合我。任何帮助将不胜感激。
【问题讨论】:
-
这真的很难说清楚;例如,你怎么知道
<b075>04</b075>和<b076>12</b076>应该在输出中的同一组中? -
我看不出你所谓的“分组”背后的任何逻辑。请编辑您的问题并更好地解释。
-
@Dimitre:已编辑进一步解释。