我需要在 BizTalk 映射中的两个级别上使用条件循环,但我用于创建父数据的条件禁止创建子数据。
关于如何在 BizTalk 映射器中映射以下内容的任何想法:
输入
注释:<Group> 和 <Row> 元素处于同一级别。
<Line> <Name>Group</Name> <RowNo>1</RowNo> </Line> <Line> <Name>Row</Name> <RowNo>1</RowNo> </Line> <Line> <Name>Row</Name> <RowNo>2</RowNo> </Line> <Line> <Name>Group</Name> <RowNo>2</RowNo> </Line> <Line> <Name>Row</Name> <RowNo>1</RowNo> </Line> <Line> <Name>Row</Name> <RowNo>2</RowNo> </Line>
输出
注释: <Row> 元素应该在 <Group> 元素之下。
<Group> <Name>Group</Name> <RowNo>1</RowNo> <Row> <Name>Row</Name> <RowNo>1</RowNo> </Row> <Row> <Name>Row</Name> <RowNo>2</RowNo> </Row> </Group> <Group> <Name>Group</Name> <RowNo>2</RowNo> <Row> <Name>Row</Name> <RowNo>1</RowNo> </Row> <Row> <Name>Row</Name> <RowNo>2</RowNo> </Row> </Group>
在输出中创建子元素 <Row> 非常简单,我使用一个条件来检查输入是否为 <Line/Name>="Row",然后将输入元素 <Line> 中的内容映射到输出元素 <Row>。
问题是当我使用相同的逻辑来创建输出父元素 <Group> 时。如果我检查是否输入 <Line/Name>="Group" 这将正确创建输出元素 <Group>,但是当此条件未完全满足时(即 Name=Row),这也将禁止创建子元素 <Row> ,因此产生以下输出:
<Group> <Row /> <Name>Group</Name> <RowNo>1</RowNo> </Group> <Group> <Row /> <Name>Group</Name> <RowNo>2</RowNo> </Group>
谁能指出我正确的方向?还是这种情况会迫使我进入 XSLT 丛林?
我可以通过使用编排来解决这个问题,但我希望我在接收端口上将它作为一个映射运行,所以我非常想在一个映射中解决这个问题。