XML 映射编辑器示例

XML 映射编辑器是一个可视数据映射工具,旨在对 XML 模式、DTD 或 XML 文档的任意组合进行变换,并生成可部署的变换文档。通过将源文档元素连接至目标文档元素,您可以以图形方式映射基于 XML 的文档。可以通过使用定制 XPath 表达式和 XSLT 模板来扩展内置变换功能。使用映射工具可以自动生成 XSL 代码,并根据您提供的映射信息来生成变换文档。

映射变换示例 描述
采购订单至装运订单映射 此示例说明了一种业务方案,其中两个业务单位需要流畅地交换信息。在这种情况下,销售部门的采购订单文档会映射至物流部门的装运订单文档。此映射包含下列重要变换:
  • 移动
  • 并置
  • 内联映射
  • 子串
  • 组
  • 定制
移动 此示例演示源文档中元素的值如何移至目标文档中的元素。
并置 此示例演示源文档中项的集合如何并置到目标文档中项的单个值。
内联映射 此示例演示如何在映射中创建映射以在复杂元素上下文中对其进行变换。
子串 此示例演示如何分割源文档中元素的值,并将结果复制到目标文档中的元素。
组 此示例演示如何对源文档中的元素进行分组,并将结果存储在目标文档中。
定制 此示例演示如何使用 XPath 表达式来扩展映射工具的内置变换功能。

采购订单至装运订单映射

在本示例中,销售部门的采购订单文档必须由物流部门处理以生成装运订单文档。
  1. 要启动“XML 映射”向导,请选择:文件 > 新建 > 其他 > XML > XML 映射。单击下一步。
  2. 在文件名字段中,输入 MyOrderMapping.map,然后单击下一步。
  3. 在“根输入”窗格中,单击添加。
  4. 从文件类型下拉列表中选择“XML 模式”,然后单击浏览。展开样本 > PurchaseSample 并选择 PurchaseOrder.xsd,然后单击确定。
  5. 选择 PurchaseOrder 作为源根元素,然后单击确定。
  6. 在“根输出”窗格中,单击添加。
  7. 从文件类型下拉列表中选择“XML 模式”,然后单击浏览。展开样本 > PurchaseSample 并选择 ShippingOrder.xsd,然后单击确定。
  8. 选择 ShippingOrder 作为目标根元素,然后单击确定。
  9. 单击下一步。
  10. 要选择样本 XML 输入文件,请单击添加。选择 PurchaseOrder.xml 并单击确定。
    注: 使用样本 XML 输入文件来测试您的映射变换。
  11. 单击完成。

移动

在本示例中,PurchaseOrder 文档中 OrderID 元素的值会移至 ShippingOrder 文档中 PurchaseOrderReference 属性的值。
  • 在 XML 映射编辑器中,单击 PurchaseOrder 的 OrderID 元素,然后将其拖至 ShippingOrder 中的 PurchaseOrderReference 属性。
移动变换

并置

在本示例中,PurhchaseOrder 文档的首、中、末名称元素会并置到 ShippingOrder 文档中 CustomerName 元素的单个值。
  1. 在 XML 映射编辑器中,单击 PurchaseOrder 的 FirstName 元素,然后将其拖至 ShippingOrder 中的 CustomerName 元素。
  2. 单击 PurchaseOrder 的 LastName 元素,然后将其拖至 PurchaseOrder 与 ShippingOrder 之间的“变换类型”框。
    注: 在将另一个元素拖至该“变换类型”框后,该变换类型应该会自动更改为 Concat。
  3. 单击 PurchaseOrder 的 MiddleInitial 元素,然后将其拖至“变换类型”框。并置变换
  4. 右键单击该“变换类型”框,然后选择在属性中显示。
  5. 要更改并置值的顺序,请单击“属性”视图中的订单选项卡。单击 MiddleInitial,然后单击向上箭头(重新排序)图标。
    注: 您可以定制排序、定界符、前缀和后缀的并置选项。

内联映射

在本示例中,源文档和目标文档都包含复杂元素 ShippingAddress。

  1. 在 XML 映射编辑器中,单击 PurchaseOrder 的 ShippingAddress 元素,然后将其拖至 ShippingOrder 中的 ShippingAddress 元素。内联映射变换
  2. 单击“变换类型”框右上角的编辑图标。
    注: 必须映射“内联映射详细信息”视图中的每个 ShippingAddress 子元素。
  3. 在“内联映射详细信息”视图中,执行下列映射变换:
    1. 单击 StreetNumber 元素,然后将其拖至 StreetAddress 元素。
    2. 单击 StreetName 元素,然后将其拖至“变换类型”框。对 Apartment 元素重复此步骤。
    3. 单击 PostalCode 元素,然后将其拖至右边的 PostalCode 元素。
    4. 单击 Province 元素,然后将其拖至右边的 Province 元素。内联映射详细信息
  4. 要返回至主映射,请单击“内联映射详细信息”页右上角的箭头图标。

子串

在本示例中,OrderDate 元素存储为采购订单文档中的单个数据类型,但是在装运订单文档中,同一 OrderDate 元素会被分割成年、月和日整数类型的子元素。通过设置适当的子串变换参数,您可以从采购订单 OrderDate 元素中抽取年、月和日值,并将这些值存储在装运订单的对应元素中。

  1. 单击 PurchaseOrder 的 OrderDate 元素,然后将该元素拖至 ShippingOrder 的 Year 元素。
    1. 单击“变换类型”框中的下拉箭头,然后从列表中选择子串。
    2. 右键单击该“变换类型”框,然后选择在属性中显示。
    3. 在“属性”视图的定界符字段中,输入 -。
    4. 在子串索引字段中,输入 0。
  2. 单击 OrderDate 元素并将其拖至 Month 元素。
    1. 将变换类型更改为“子串”。
    2. 在“属性”视图的定界符字段中,输入 -。
    3. 在子串索引字段中,输入 1。
  3. 单击 OrderDate 元素并将其拖至 Day 元素。
    1. 将变换类型更改为“子串”。
    2. 在“属性”视图的定界符字段中,输入 -。
    3. 在子串索引字段中,输入 2。
子串变换
注: 可以将子串变换或并置变换应用于包括字符串类型在内的所有类型的元素和属性。

组

在本示例中,采购订单中的每种产品都有相关联的装运优先级,而在装运订单中,产品是按装运优先级部分的元素进行分组的。通过该组变换,采购订单中的产品可以按装运优先级进行分组,并且生成的组可以映射至装运订单中的元素。在组属性中,您可以设置分组参数以及顺序和排序条件。
  1. 单击 PurhaseOrder 中的 Product 元素,然后将其拖至 ShippingOrder 中的 OrderSection 元素。
  2. 单击“变换类型”框,然后选择组。组变换
    1. 右键单击“变换类型”框,然后单击在属性中显示。
    2. 在“属性”视图的左窗格中,单击 ShippingPriority。
    3. 单击添加。
  3. 要查看组详细信息,请单击“变换类型”框右上角的箭头。
  4. 在“组详细信息”视图中,执行下列移动操作:
    1. 将 ID 元素移至 Identifier 元素。
    2. 将 Price 元素移至右边的 Price 元素。
    3. 将 Description 元素移至 Name 元素。
    4. 将 Quantity 元素移至右边的 Quantity 元素。
    5. 将 ShippingPriority 元素移至 Priority 元素。
  5. 要返回至主映射视图,请单击“组详细信息”页右上角的箭头。

定制

在本示例中,装运订单文档包含 NumberOfProducts 属性来指定订单中产品的总数目。要生成 NumberOfProducts 属性的值,采购订单中产品的总数目必须使用 quantity 元素来计算。您可以使用 XPath 表达式通过定制变换来执行加法运算。然后,结果存储在目标属性 NumberOfProducts 中。
  1. 单击 PurchaseOrder 元素,然后将其拖至 ShippingOrder 中的 NumberOfProducts 元素。
  2. 单击该“变换类型”框,然后选择定制。定制变换
  3. 右键单击该“变换类型”框,然后选择在属性中显示。
  4. 在“属性”视图中,您可以创建 XPath 表达式。对于此示例,请输入 sum(Product/Quantity)。定制变换属性表
父主题: 映射 XML 文档

反馈