选择变换以映射重复元素

在 " 图形数据映射编辑器" 中,可以使用 For Each 变换, Append 变换, 连接 变换, XPath 函数, 定制 XPath 定制 Java 变换以映射输入和输出数组。 您可以使用这些变换中的任一变换,以选择数组中要变换的一组元素,并将结果放入输出数组或单一元素中。

关于此任务

控制输出数组填充顺序的唯一方法是使用附加变换。 您必须提供附加变换的输入连接,并在“属性”页面中设置这些连接的顺序。 有关更多信息,请参阅 附加

过程

选择下列其中一个变换以映射重复元素:

  1. 将重复元素作为变换的输入和输出时,可以使用 For Each 变换来设置输出数组元素。

    ForEach 变换对一个输入数组元素执行迭代(此元素既可以是简单类型,也可以是复杂类型),并进入嵌套映射,您可以在该嵌套映射中提供变换以根据输入填充输出实例。 您可以配置基数以过滤基于公用处理哪些实例。 此外,您还可以提供一个布尔值表达式,该表达式将应用于每个实例以确定是否将映射该表达式。

    此图显示 "For Each" 变换的 "属性" 选项卡。 "过滤器" 输入下提供了允许空输入选项。

    此外,您还可以设置 允许空输入 选项,以便 图形数据映射编辑器 在没有匹配项时进入嵌套变换一次。 通过向 ForEach 提供补充输入,使用此选项可以实现外连接。

    有关更多信息,请参阅 For Each

  2. 当您有多个输入是需要构造数组的简单类型元素,复杂类型元素或重复元素时,可以使用 附加 变换将实例添加到简单类型输出数组或复杂类型输出数组。

    有关更多信息,请参阅 附加

  3. 如果您有多个输入是简单类型元素,复杂类型元素或重复元素作为变换的输入,并且要连接这些元素,那么可以使用 连接 变换将它们组合成单个重复输出元素。 输出元素可以是一个数组或单个元素。 您可以配置表达式以控制连接的匹配条件。 "图形数据映射" 编辑器 提供了一个链接,用于按索引表达式创建简单匹配项。

    有关更多信息,请参阅 连接

  4. 您可以使用 XPath 函数,从数组映射到单个元素。 例如,您可以使用 fn:string-join 以返回通过并置多个字符串参数创建的字符串,或使用 fn:sum 返回并置到单个元素的重复数组元素的总计。

    有关更多信息,请参阅 内置 XPath 变换

  5. 当您想要将特定实例从数组映射到单个输出时,可以使用具有 XPath 谓词表达式的 定制 XPath 变换来选择特定实例。
    例如,如果想要从值为“home”的子元素“Type”的“Address”元素数组的实例中选择“Country”值,那么使用以下格式的定制 XPath 变换:
    $Address[Type = 'home']/Country
    注: 如果要使用输入元素值按索引动态选择数组的元素,那么必须确保 XPath 谓词表达式生成单项数字值。 例如,要按照输入元素“Counter”指定的索引(定义为 xsd:int)从“Address”元素数组的实例中选择“Country”值,请使用以下格式的定制 XPath 变换:
    $Address[fn:data($Counter)]/Country
    使用 fn:data() 函数来获取输入元素的数字值。 如果“Counter”元素定义为 xsd:string,那么必须使用以下格式来明确将该值转义为数字值:
    $Address[xs:int($Counter)]/Country
  6. 通过使用 MbElement 对象列表将数组作为输入或输出参数传递,可以使用 定制 Java 变换来映射数组。

    有关更多信息,请参阅 定制 Java