过滤特定值,但如果不存在则使用默认值
Filter for specific value, but use default value if it doesn't exist
我有一个输入模式,其中包含 phone 个数字的列表,数字类型为 phone,如下所示:
<phoneNumbers>
<phoneNumber type="work">...</phoneNumber>
<phoneNumber type="home">...</phoneNumber>
</phoneNumbers>
我只想映射特定类型的数字,比方说 'work'。如果 'work' 类型 phone 号码不可用,我需要填写默认值。
这是我的开头:
我 运行 遇到的问题是,如果没有 'work' phone 数字,我无法让默认值出现在输出中。
使用脚本 functoid 怎么样?
public string setphonenumber(string work_number)
{
string default = "123456789";
if(work_number ="")
return default;
else return work_number;
}
如果 phone# 有固定长度,您可以将右侧的默认值字符串连接起来,然后输入到左侧的字符串。
我建议您使用不等于 functoid 来设置您的默认值,如果它不同于 "Work",如果它等于 "work",您将在输出
您可以使用内联 XSLT 脚本函数。
假设源结构和目标结构如下所示:
内联 XSLT 应该是这样的:
<workNumber xmlns:p="http://PhoneNumberMap.SourceSchema">
<xsl:variable name="var:v1" select="/p:Root/phoneNumbers/phoneNumber[@type='work']" />
<xsl:choose>
<xsl:when test="$var:v1!=''">
<xsl:value-of select="$var:v1" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'some default'" />
</xsl:otherwise>
</xsl:choose>
</workNumber>
尝试在 xlst 中制作完整的地图,而不是使用 BizTalk 地图 functoid。一开始您会为 xslt 而苦恼,但一段时间后,您会爱上它!
我不会在这里 post 整个解决方案,但我发现了一个很好的 Youtube post 解释了一切。 3:00.
变得很有趣
我有一个输入模式,其中包含 phone 个数字的列表,数字类型为 phone,如下所示:
<phoneNumbers>
<phoneNumber type="work">...</phoneNumber>
<phoneNumber type="home">...</phoneNumber>
</phoneNumbers>
我只想映射特定类型的数字,比方说 'work'。如果 'work' 类型 phone 号码不可用,我需要填写默认值。
这是我的开头:
我 运行 遇到的问题是,如果没有 'work' phone 数字,我无法让默认值出现在输出中。
使用脚本 functoid 怎么样?
public string setphonenumber(string work_number)
{
string default = "123456789";
if(work_number ="")
return default;
else return work_number;
}
如果 phone# 有固定长度,您可以将右侧的默认值字符串连接起来,然后输入到左侧的字符串。
我建议您使用不等于 functoid 来设置您的默认值,如果它不同于 "Work",如果它等于 "work",您将在输出
您可以使用内联 XSLT 脚本函数。
假设源结构和目标结构如下所示:
内联 XSLT 应该是这样的:
<workNumber xmlns:p="http://PhoneNumberMap.SourceSchema">
<xsl:variable name="var:v1" select="/p:Root/phoneNumbers/phoneNumber[@type='work']" />
<xsl:choose>
<xsl:when test="$var:v1!=''">
<xsl:value-of select="$var:v1" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'some default'" />
</xsl:otherwise>
</xsl:choose>
</workNumber>
尝试在 xlst 中制作完整的地图,而不是使用 BizTalk 地图 functoid。一开始您会为 xslt 而苦恼,但一段时间后,您会爱上它!
我不会在这里 post 整个解决方案,但我发现了一个很好的 Youtube post 解释了一切。 3:00.
变得很有趣