1

我遇到了一种情况,即我的 BizTalk 地图没有正确地从输入 XML 中提取数据。

输入架构如下所示:

序列

  A 

  B

XSD 上的所有 3 个节点的最小值为 0,最大值为无界。

所以这是一个示例输入文件片段:

<A>1</A>
<B>hi</B>
<A>2</A>
<B>there</B>

现在我的地图获取这些数据并调用存储过程将数据插入表中。对于 1 的 A 和 2 的 A,我在字段 B 中得到“hi”。这是不正确的。

我将问题追溯到地图。生成的 XSLT 在 A 上执行一次 foreach,然后去抓取值 B,但总是抓取第一个 B。

所以有人有任何修改输入模式或地图以使其正常工作的提示吗?

4

1 回答 1

2

如果您需要将 A 和 B 项目组合在一起,您可以更改架构以创建一个包装器元素,因此您的架构如下所示:

<xs:element name="wrapper">
  <xs:complextype>
    <xs:sequence>
      <xsl:element name="A" type="xs:string" minoccur="1" maxoccur="1"/>
      <xsl:element name="B" type="xs:string" minoccur="1" maxoccur="1" />
    </xs:sequence>
  </xs:complextype>
</xs:element>

然后你可以遍历包装元素并获取 A 和 B 元素。但我不确定这是否是你要找的。

另一种选择是在 XSLT 调用模板中工作。使用 A 和 A 的当前迭代,然后当你得到 B 时你实际上是 B[i],其中 i 是当前迭代。

于 2010-01-26T19:31:39.560 回答