Biztalk 从同一消息中丰富消息
使用Biztalk 2010,我收到了具有以下结构的传入消息:Biztalk 从同一消息中丰富消息,biztalk,biztalk-2010,Biztalk,Biztalk 2010,使用Biztalk 2010,我收到了具有以下结构的传入消息: <xml><blocks> <block id="level"> <message id="code">100</message> <message id="description">Some description</message> </block> <block id="level"> <message id="c
<xml><blocks>
<block id="level">
<message id="code">100</message>
<message id="description">Some description</message>
</block>
<block id="level">
<message id="code">101</message>
<message id="description">More description</message>
</block>
</blocks>
<blocks>
<block id="change">
<message id="table">1</message>
<message id="oldvalue">100</message>
<message id="newvalue">101</message>
</block>
</blocks>
</xml>
<terms>
<termItem>
<code>100</code>
<description>Some description</description>
<deleted>false</deleted>
</termItem>
<termItem>
.....and so on with values from the above xml file, except that the item from the "change" block should be added as a new record to output, so the total output will be 3 items (<block>).
地图视图如下所示:
我需要一些帮助来选择要使用的functoid的正确组合,或者选择另一种方法来解决这个难题
我可以选择所有具有“level”值的块并过滤掉“change”块,但无法将两者结合起来
欢迎任何提示和建议
谢谢这里似乎有很多东西
嗯 您好,谢谢,是的,我可以看到我的问题遗漏了一些东西,所以这里有一个更新。我从源系统得到了一些真实的输出。应该将输出映射到所有“block id=“Payment Terms”和所有“Change Log Entry”的目标,其中字段“Type of Change" == 2. 希望这能让事情变得更清楚:-)输入xml在这里:和预期的输出。谢谢-谢谢,使用自定义xslt和地图解决了问题。因此,感谢HTH的输入。@user155814-很高兴它有帮助-apols,今天没有时间查看更新的xml#DaytimeJobs很差劲;)
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
exclude-result-prefixes="xsl xsi">
<xsl:output method="xml" indent="yes" />
<xsl:strip-space elements="*" />
<!--Outer template-->
<xsl:template match="/">
<PaymentTerms CompanyCode="Unsure">
<xsl:apply-templates />
</PaymentTerms>
</xsl:template>
<!--Root blocks only-->
<xsl:template match="block[@id='level']">
<PaymentTerm>
<Code>
<xsl:value-of select="message[@id='code']/text()"/>
</Code>
<Description>
<xsl:value-of select="message[@id='description']/text()"/>
</Description>
<Deleted>
<!--No idea how you want this populated-->
<xsl:value-of select="'false'"/>
</Deleted>
</PaymentTerm>
<xsl:apply-templates select="blocks/block"></xsl:apply-templates>
</xsl:template>
<!--Nested blocks only-->
<xsl:template match="block[@id='change']">
<PaymentTerm>
<Code>
NestedCode
</Code>
<Description>
NestedDescription
</Description>
<Deleted>
NestedDeleted
</Deleted>
</PaymentTerm>
</xsl:template>
</xsl:stylesheet>