BizTalk映射器检查并替换默认值

时间:2014-05-20 15:06:06

标签: xslt biztalk biztalk2006r2 biztalk-mapper

我在地图上创建了许多functoid来验证源节点' AdoptedDate'对于默认值(等于 defaultvalues 到逻辑OR到具有新默认值的值functoid。然后逻辑Not for如果两个Equals都不为true则映射源节点'采用日期到目标模式(xslt随附)。

我想要做的是为源架构中的所有日期字段实现此功能,可以这样做。

当前生成的XSLT(仅采用)

 <xsl:for-each select="Form/SDetails">
<xsl:variable name="var:v17" select="userCSharp:LogicalEq(string(NameDetails/AdoptedDate/text()) , &quot;1900-09-09&quot;)" />
<xsl:variable name="var:v18" select="string(NameDetails/AdoptedDate/text())" />
<xsl:variable name="var:v19" select="userCSharp:LogicalEq($var:v18 , &quot;1800-09-09&quot;)" />
<xsl:variable name="var:v20" select="userCSharp:LogicalOr(string($var:v17) , string($var:v19))" />
<xsl:variable name="var:v22" select="userCSharp:LogicalNot(string($var:v20))" />
    <xsl:if test="string($var:v20)='true'">
        <xsl:variable name="var:v21" select="&quot;1901-01-01&quot;" />
        <p:AdoptedDate>
              <xsl:value-of select="$var:v21" />
        </p:AdoptedDate>
    </xsl:if>
    <xsl:if test="string($var:v22)='true'">
        <xsl:variable name="var:v23" select="NameDetails/AdoptedDate/text()" />
        <p:AdoptedDate>
            <xsl:value-of select="$var:v23" />
        </p:AdoptedDate>
    </xsl:if>

1 个答案:

答案 0 :(得分:1)

您的选择

  1. 在每个字段上使用相同的functoid(这是我试图避免使用的)
  2. 创建一个外部类实现您可以从Scripting functoid调用的逻辑。
  3. 创建一个内联脚本来执行逻辑。然后,您可以使用包含相同功能名称和参数的后续脚本类型,并且它们在XSLT中只有一个脚本,它们都会调用它们。
  4. 在所有情况下,您必须有一个与源和目标字段相关联的functoid。