gpt4 book ai didi

BizTalk 强制创建空元素而不使用 xslt 调用模板

转载 作者:行者123 更新时间:2023-12-04 06:42:19 24 4
gpt4 key购买 nike

无论如何,在不使用 xslt 调用模板的情况下,当源元素不存在时,BizTalk 映射中是否会强制创建目标元素?

我将父/子 xml 映射到 wcf-sql 适配器生成的架构,该架构具有用于存储过程参数的表值参数。

所以我的源xml是:

<Category>
<CategoryId>1</CategoryId>
<CategoryName>Test</CategoryName>
</Category>

和/或媒体类别
<Category>
<CategoryId>1</CategoryId>
<CategoryName>Test</CategoryName>
<Media>
<Medium>
<MediumId>1</MediumId>
<MediumName>test.jpg</MediumName>
</Medium>
</Media>
</Category>

TypedProcedure 的架构类似于:
<ImportCategoryRequest>
<Category>
<CategoryId>1</CategoryId>
<CategoryName>Test</CategoryName>
</Category>
<Media>
<Medium>
<MediumId>1</MediumId>
<MediumName>test.jpg</MediumName>
</Medium>
</Media>
</ImportCategoryRequest>

所以它不喜欢它什么时候出现在目标 XML 中。它不是为表值参数传递 null,而是希望至少有 1 行,并为 tvp 中的列传递 null 值。我可以使用 xslt 调用模板创建虚拟 xml,但我想避免这种情况。

最佳答案

BizTalk 映射器似乎使用 <xsl:for-each>因此,如果没有输入,则不会生成输出元素。

但是使用 xslt 真的很容易 - 见 here如何从现有 map 中删除 xslt(并删除双引号和斜杠周围的转义),并将 map 更改为自定义 XSLT。

你需要改变的一点是围绕媒体是这样的:

        <xsl:choose>
<xsl:when test="count(ns0:Media)!=0">
<!-- Copy the mapper generated XSLT in the for each here-->
<xsl:foreach >
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<Media>
<Medium>
<MediumId>1</MediumId>
<MediumName>test.jpg</MediumName>
</Medium>
</Media>
</xsl:otherwise>
</xsl:choose>

关于BizTalk 强制创建空元素而不使用 xslt 调用模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4088419/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com