65.9K
CodeProject 正在变化。 阅读更多。
Home

在 BizTalk Server 2004 Mapper 中使用自定义 XSLT 转换

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.37/5 (9投票s)

2006年3月1日

2分钟阅读

viewsIcon

55157

downloadIcon

582

本文介绍了在 BizTalk Server 2004 Mapper 中使用自定义 XSLT 转换。

引言

在使用 BizTalk Mapper 工具开发复杂映射时,会遇到多种需要自定义映射才能完成转换的情况。本文将解释如何使用 BizTalk Mapper 工具执行自定义 XSLT 转换。

背景

考虑一个采购订单 (PO) 请求,它将包含一个主订单请求和一组补充订单请求。 这类似于父子关系,其中父 PO 将包含用于父 PO 中包含的各种项目的多个子 PO。

BizTalk 平面文件架构解决方案 - 输入架构

CBO-Sample-Schema

在此示例中,我们将需要生成一个基线项目 (PARENT) 数据标记和几个属于基线数据项目的子线数据项 (CHILD)。 输入将包含几个“POAckDetail”元素,每个元素都有几个属性。

  1. 属性“ItemChildFlag”指定节点是“PARENT”还是“CHILD”。
  2. 属性“ParentLineNumber”指定“CHILD”节点所属的父节点。
  3. 属性“ParentLineNumber”必须与父节点的“SellerLineNum”匹配。

InputXML

请注意第二个 POAckDetail 元素,其“ItemChildFlag”属性值包含“CHILD”。 此元素的父节点将是 SellerLineNum="0003" 的 POAckDetail 元素。

BizTalk Mapper

XSLTMap

我们需要添加一个脚本 functoid 以进行自定义 XSLT 转换。 自定义 XSLT 将包含一个“template”标记,必须在其中编写 XSLT 映射。 自定义 scriptoid 的输入将成为 XSLT 模板中的 <xsl:param name="SellerLineNum" />

Functoid 映射和自定义 XSLT 转换脚本

FunctoidScript

<xsl:template name="MyXsltConcatTemplate">
<xsl:param name="SellerLineNum" />

<xsl:for-each select="//POAckDetail/ItemCurrentInfo[@ItemChildFlag='CHILD' 
                         and @ParentLineNumber=$SellerLineNum]">

<ns0:SLN_Subline_Item_Detail_S117 
     xmlns:ns0="http://www.covast.com/schemas/EDI/Accelerator2004">
  <ns0:_380_Quantity_E4><xsl:value-of 
             select="../SellerLineNum" /></ns0:_380_Quantity_E4> 
  <ns0:_212_Unit_Price_E20><xsl:value-of 
             select="@UnitPrice" /></ns0:_212_Unit_Price_E20> 
  <ns0:_639_Basis_of_Unit_Price_Code_E21><xsl:value-of 
             select="@BasisOfUnitPriceTypeCode" />
  </ns0:_639_Basis_of_Unit_Price_Code_E21> 
</ns0:SLN_Subline_Item_Detail_S117>

</xsl:for-each>

</xsl:template>

第 1 行:XSL 模板声明语句

第 2 行:XSL 参数,这将映射到提供给脚本 functoid 的输入。

第 3 行:XSL for-each 语句,它迭代 'CHILD' POAck 元素。

第 4-8 行:创建输出所需的 XML 结构。

第 9-10 行:关闭标签。

验证和测试创建的映射

完成编写映射后,我们需要测试映射。

步骤 1:在解决方案资源管理器中,选择映射“CBO-To-ASC_X12-Map.btm”,然后右键单击并选择“属性”。 如下面的图像所示指定属性...

Map Property Pages

步骤 2:在解决方案资源管理器中,选择映射“CBO-To-ASC_X12-Map.btm”,然后右键单击并选择“测试架构”。 观察输出窗口,您会注意到一条以“组件调用成功”开头的消息。 现在,单击以消息“Test Map success for map file...”开头的链接。

XML 输出文件将如下所示...

XSLT_Map_Output

快速要点

  1. 通过使用自定义 XSLT 模板,BizTalk Mapper 脚本 functoid 在映射期间提供了最大的灵活性。
© . All rights reserved.