BizTalk Mapping中的XSLT调用模板

时间:2017-08-30 11:45:14

标签: xslt biztalk biztalk-2013 biztalk-mapper

我收到一个平面文件和一个Oracle视图绑定,我需要将这两个模式映射到一个发送平面文件。 Employee Id是平面文件和Oracle视图中的公共字段。我需要在输入模式上检查员工ID,同时检查Oracle中的PREFERREDLASTNAME字段是否为空,然后从Oracle视图发送PREFERREDLASTNAME,否则从文件模式发送Last_Name。

这里我使用的是XSLT Call模板。但我不确定如何检查PREFREEDEDLASTNAME是否为NULL然后将Last_Name设置为PREFREEDEDLASTNAME,否则从输入平面文件中设置Last_Name。

下面是地图 enter image description here

enter image description here

 <xsl:template name="GetLastNameVW_EMP_JOB_DEPT"> 
 <xsl:param name="ID" /> 
 <xsl:element name="Last_Name">
 <xsl:value-of select="//s0:VW_EMP_JOB_DEPTRECORDSELECT[s0:EMPLOYEE_ID = $ID]/s0:PREFERREDLASTNAME" />
 </xsl:element> 
 </xsl:template>

使用上面的XSLT,它只查找两个模式中的Employee_Number = EMPLOYEE_ID,并将Last_Name设置为PREFERREDLASTNAME,如果它们不相等则留空。如何修改我的XSLT以执行条件

1 个答案:

答案 0 :(得分:0)

这是解决方案:

<xsl:template name="GetLastNameVW_EMP_JOB_DEPT"> 
<xsl:param name="ID" /> 
 <xsl:param name="LASTNAME" /> 
 <xsl:element name="Last_Name">
   <xsl:choose>
       <xsl:when test="//s0:VW_JAX_EMP_JOB_DEPTRECORD[s0:EMPLOYEE_ID = $ID]/s0:PREFERREDLASTNAME" >
         <xsl:value-of select="//s0:VW_JAX_EMP_JOB_DEPTRECORD[s0:EMPLOYEE_ID = $ID]/s0:PREFERREDLASTNAME" />
       </xsl:when>
       <xsl:otherwise>
         <xsl:value-of select="$LASTNAME" />
       </xsl:otherwise>
   </xsl:choose>
 </xsl:element> 
 </xsl:template>