BizTalk映射错误地解析输入XML

时间:2010-01-26 12:03:20

标签: xml xslt xsd biztalk biztalk-mapper

我遇到的情况是我的BizTalk映射没有正确地从输入XML中提取数据。

输入架构如下所示:

序列

  A 

  B

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

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

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

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

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

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

1 个答案:

答案 0 :(得分: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是当前的迭代。