我遇到的情况是我的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.
所以任何人都有修改输入模式或地图的提示,以使其正常工作?
答案 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是当前的迭代。