0

我有一个输入模式,其中包含电话号码列表,电话号码类型如下所示:

<phoneNumbers>
    <phoneNumber type="work">...</phoneNumber>
    <phoneNumber type="home">...</phoneNumber>
</phoneNumbers>

我只想映射特定类型的数字,比如说“工作”。如果“工作”类型的电话号码不可用,我需要填写默认值。

这就是我的开始:

BizTalk 映射

我遇到的问题是,如果不存在“工作”电话号码,我无法在输出中显示默认值。

4

5 回答 5

3

如何使用脚本functoid。

public string setphonenumber(string work_number)
{
  string default = "123456789";
  if(work_number ="")
      return default;
  else return work_number;

}

于 2015-02-05T15:09:51.413 回答
3

您可以使用内联 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>
于 2015-02-06T14:18:42.100 回答
0

尝试在 xlst 中制作完整的地图,而不是使用 BizTalk 地图 functoids。一开始你会在使用 xslt 时遇到困难,但过了一段时间,你会喜欢上它的!

我不会在这里发布整个解决方案,但我找到了一个很好的Youtube 帖子来解释一切。3:00 开始很有趣。

于 2015-02-10T13:47:12.153 回答
0

如果电话号码具有固定长度,您可以将右侧的默认值串接起来,然后输入到左侧的字符串。

于 2015-02-05T21:49:38.533 回答
0

我建议你使用 Not equal functoid 来设置你的默认值,如果它不同于“Work”,如果它等于“work”,你将在输出中有源值

于 2015-02-06T12:05:42.820 回答