【发布时间】:2021-03-14 10:22:20
【问题描述】:
我正在使用 XSLT 1.0
我有一条正在尝试转换的输入消息。 此输入消息具有以下冗余结构,由 A、B、Order、Article 4 种类型的节点组成,它们始终处于相同的顺序:
A
B
Order0
Article100
A
B
Order1
Article101
A
B
Order0
Article102
...
我想对节点进行分组以产生以下输出:
A
B
Order0
Article100
Article102
A
B
Order1
Article101
A
B
在输出中,我不希望有任何重复的 Order 节点;不应移动节点 A 和 B。
这里是完整的 XML 消息。
分组的关键是 Order 节点内的字段 Key
输入:
<Messages>
<Message>
<A>
<Number>100</Number>
<SomeData>somedata</SomeData>
<SomeData2>somedata</SomeData2>
</A>
</Message>
<Message>
<B>
<Number>100</Number>
<SomeData>somedata</SomeData>
<SomeData2>somedata</SomeData2>
</B>
</Message>
<Message>
<Order>
<Key>100</Key>
<SomeData>somedata</SomeData>
<SomeData2>somedata</SomeData2>
</Order>
</Message>
<Message>
<Article>
<Key>78</Key>
<SomeData>somedata</SomeData>
<SomeData2>somedata</SomeData2>
</Article>
</Message>
<Message>
<A>
<Number>600</Number>
<SomeData>somedata</SomeData>
<SomeData2>somedata</SomeData2>
</A>
</Message>
<Message>
<B>
<Number>601</Number>
<SomeData>somedata</SomeData>
<SomeData2>somedata</SomeData2>
</B>
</Message>
<Message>
<Order>
<Key>101</Key>
<SomeData>somedata</SomeData>
<SomeData2>somedata</SomeData2>
</Order>
</Message>
<Message>
<Article>
<Key>55</Key>
<SomeData>somedata</SomeData>
<SomeData2>somedata</SomeData2>
</Article>
</Message>
<Message>
<A>
<Number>799</Number>
<SomeData>somedata</SomeData>
<SomeData2>somedata</SomeData2>
</A>
</Message>
<Message>
<B>
<Number>798</Number>
<SomeData>somedata</SomeData>
<SomeData2>somedata</SomeData2>
</B>
</Message>
<Message>
<Order>
<Key>100</Key>
<SomeData>somedata</SomeData>
<SomeData2>somedata</SomeData2>
</Order>
</Message>
<Message>
<Article>
<Key>32</Key>
<SomeData>somedata</SomeData>
<SomeData2>somedata</SomeData2>
</Article>
</Message>
</Messages>
输出:
<Messages>
<Message>
<A>
<Number>100</Number>
<SomeData>somedata</SomeData>
<SomeData2>somedata</SomeData2>
</A>
</Message>
<Message>
<B>
<Number>100</Number>
<SomeData>somedata</SomeData>
<SomeData2>somedata</SomeData2>
</B>
</Message>
<Message>
<Order>
<Key>100</Key>
<SomeData>somedata</SomeData>
<SomeData2>somedata</SomeData2>
</Order>
</Message>
<Message>
<Article>
<Key>78</Key>
<SomeData>somedata</SomeData>
<SomeData2>somedata</SomeData2>
</Article>
</Message>
<Message>
<Article>
<Key>32</Key>
<SomeData>somedata</SomeData>
<SomeData2>somedata</SomeData2>
</Article>
</Message>
<Message>
<A>
<Number>600</Number>
<SomeData>somedata</SomeData>
<SomeData2>somedata</SomeData2>
</A>
</Message>
<Message>
<B>
<Number>601</Number>
<SomeData>somedata</SomeData>
<SomeData2>somedata</SomeData2>
</B>
</Message>
<Message>
<Order>
<Key>101</Key>
<SomeData>somedata</SomeData>
<SomeData2>somedata</SomeData2>
</Order>
</Message>
<Message>
<Article>
<Key>55</Key>
<SomeData>somedata</SomeData>
<SomeData2>somedata</SomeData2>
</Article>
</Message>
<Message>
<A>
<Number>799</Number>
<SomeData>somedata</SomeData>
<SomeData2>somedata</SomeData2>
</A>
</Message>
<Message>
<B>
<Number>798</Number>
<SomeData>somedata</SomeData>
<SomeData2>somedata</SomeData2>
</B>
</Message>
</Messages>
我正在考虑使用 Muenchian 分组,但没有成功。 我不太确定这是我要找的。p>
这是一个 Biztalk 映射,所以我也可以使用 Biztalk 映射和 functoids。
【问题讨论】:
-
Biztalk 2020 不也允许 XSLT 3 吗?
-
很遗憾我们没有最新版本的 Biztalk
标签: xml xslt mapping xslt-1.0 biztalk