映射概念:XML 到 COBOL 或 PL/I

这组主题描述了将 XML Schema 结构映射到 COBOL 或 PL/I 数据结构的概念。

映射概念简介

本主题描述了映射的基础知识。

映射 是指将数据从源位置复制到目标位置的过程,同时将数据从一种类型的数据格式转换为另一种类型的数据格式。 例如,网络服务提供商的入站转换器可将数据从入站 XML 模式数据结构中的位置复制并转换为 COBOL 或 PL/I 语言结构中的位置。 然后,该语言结构将作为输入数据传递给 CICS® 应用程序。

同样,在同一场景中,当 CICS 应用程序以 COBOL 或 PL/I 语言结构返回其输出数据时,网络服务提供商的出站转换器会将 COBOL 或 PL/I 语言数据结构中的数据复制并转换到出站 XML 模式数据结构中的位置。

单个 映射 是将数据项从 XML 模式结构复制到语言结构数据或从语言结构复制到 XML 模式结构的单个实例。 此类映射在映射编辑器中定义。

映射仅用于中间的会议开发方案。 制定中间会议项目的主要步骤如下:
  1. 使用 新建 <runtime> 项目 向导创建中间会议项目。
  2. 使用 " 导入源文件 " 向导将源文件导入到项目中。
  3. 使用 " 创建映射 " 向导创建两个映射文件:
    1. 包含输入 XML 和 COBOL (或 PL/I )数据结构的映射文件
    2. 包含外发 XML 和 COBOL (或 PL/I )数据结构的映射文件
  4. 在每个映射文件中指定源和目标数据元素。
  5. 使用 生成 <runtime> 资源 向导 (中间会议向导) 为运行时生成资源。
可以对存储在以下类型的文件中的数据结构执行映射:
  • COBOL 源文件(文件扩展名必须为.cbl、.cob、.ccp 或.cpy)
  • PL/I 源文件(文件扩展名必须为.pli、.inc 或.map)
  • XML 内容:
    • WSDL 文档 (文件扩展名必须为 .wsdl)
    • XML 实例文档 (文件扩展名必须为 .xml)
    • XML 模式 (XSD) 文档 (文件扩展名必须为 .xsd)
映射基于以下数据模型:
  • COBOL 或 PL/I 语言结构的语言数据模型以 COBOL 或 PL/I 通用应用元模型 (CAM) 的实例表示。
  • 给定语言结构的 XML 数据模型表示为 XML 模式模型的实例 (无论是 XML 文档, WSDL 类型定义还是 XML 模式表示)。

映射会话

本主题描述 映射会话

映射会话是使用映射编辑器在 XML 模式结构中的位置与 COBOL 或 PL/I 数据结构中的位置之间创建映射的过程。

映射存储在 映射会话文件中。 请求映射会话文件包含从 XML 到 COBOL 或 PL/I 的映射。 响应映射会话文件包含从 COBOL 或 PL/I 到 XML 的映射。

映射会话文件的内容称为 映射元数据 ,并包含 源元素和目标元素的名称和位置以及每个映射的详细信息

要创建映射会话文件,请使用 " 创建映射 " 向导 ,在其中指定源元素和目标元素。 然后,使用映射编辑器来创建映射。 对于每个映射,您将连接源元素和目标元素中的相应位置。

重要: 由于映射会话文件包含与工作台项目相关的 COBOL 和 XML 文件的链接,如果将映射会话文件移动到其他文件夹,这些链接可能无法正确解析。 从创建映射会话文件的目录 (相对于工作台项目) 中移动该映射会话文件时,或者将已有的映射会话文件导入到工作台时,请务必谨慎。 通常,仅当将映射会话文件移动或导入到具有相同子目录名称的类似目录结构 (相对于工作台项目) 时,移动或导入该文件才有效。

映射编辑器

本主题描述单服务项目工具的映射编辑器

在映射编辑器中,通过将编辑器左侧的项 (映射源) 连接到编辑器右侧的项 (映射目标) 来创建映射。 在运行时执行映射时,源元素中的数据将转换为目标格式并存储在目标元素中。

在请求会话中,XML 结构显示在编辑器左侧, COBOL 数据结构显示在编辑器右侧。 在回复会话中,位置是相反的: COBOL 或 PL/I 在左侧;XML 在右侧。

左侧的元素 称为 sender 元素。 右侧的元素 称为 接收方 元素。 只有当发送者元素和接收者元素具有类型兼容性时,才能将它们映射在一起(请参阅 XML 到 COBOL 映射参考 )。

映射编辑器支持一对一映射 ,即在一个简单或复杂的 XML 结构与一个兼容的 COBOL 或 PL/I 元素或结构之间进行映射。 您可以在一个会话中具有多个一对一映射。 映射编辑器不支持一对多映射或多对多映射。

对于 COBOL 和 PL/I ,您都可以将 XML 元素映射到语言变量或数据结构。 对于 COBOL ,您还可以将 XML 属性映射到语言变量或数据结构。 (关于 XML 属性,请参阅 " 通过编译 XML 转换将 XML 属性映射到 COBOL "中描述的限制)

语言数据类型与 XML 模式内置数据类型之间受支持的 映射

本主题描述了受支持的语言( COBOL 和 PL/I )的数据类型与 XML Schema 内置数据类型之间的受支持映射。

COBOL 数据类型

列:
0 COBOL 地址类型
1 COBOL 字母类型
2 COBOL 字母数字编辑类型
3 COBOL 字母数字类型
4 COBOL DBCS 类型
5 COBOL 外部浮点类型
6 COBOL 内部浮点类型
COBOL 7 数字编辑类型
8 COBOL 数字类型
9 COBOL 对象引用类型
10 COBOL 国家(统一码)类型
0 = 不支持映射。
1 = 支持映射。
表 1. COBOL -XML 模式映射
XML 模式 类型 0 1 2 3 4 5 6 7 8 9 10
string 0 1 1 1 1 0 0 1 1 0 1
布尔型 0 1 0 1 0 0 0 0 1 0 0
浮点数 0 0 0 0 0 0 1 1 1 0 0
双精度值 0 0 0 0 0 0 1 1 1 0 0
十进制 0 0 0 1 0 0 0 1 1 0 0
持续时间 0 0 0 1 0 0 0 0 0 0 0
dataTime 0 0 0 1 0 0 0 0 0 0 0
时间 0 0 0 1 0 0 0 0 0 0 0
date 0 0 0 1 0 0 0 0 0 0 0
gYearMonth 0 0 0 1 0 0 0 0 0 0 0
gYear 0 0 0 1 0 0 0 0 0 0 0
gMonthDay 0 0 0 1 0 0 0 0 0 0 0
gDay 0 0 0 1 0 0 0 0 0 0 0
gMonth 0 0 0 1 0 0 0 0 0 0 0
hexBinary 0 0 0 0 0 0 0 0 0 0 0
base64Binary 0 0 0 0 0 0 0 0 0 0 0
anyURI 0 0 0 1 0 0 0 0 0 0 0
QName 0 0 0 1 0 0 0 0 0 0 0
表示法 0 0 0 1 0 0 0 0 0 0 0
normalizedString 0 0 0 1 0 0 0 0 0 0 0
令牌 0 0 0 1 0 0 0 0 0 0 0
language 0 0 0 1 0 0 0 0 0 0 0
IDREFS 0 0 0 0 0 0 0 0 0 0 0
实体 0 0 0 0 0 0 0 0 0 0 0
NMTOKEN 0 0 0 1 0 0 0 0 0 0 0
NMTOKEN 0 0 0 0 0 0 0 0 0 0 0
姓名 0 0 0 1 0 0 0 0 0 0 0
NCName 0 0 0 1 0 0 0 0 0 0 0
ID 0 0 0 1 0 0 0 0 0 0 0
IDREF 0 0 0 1 0 0 0 0 0 0 0
ENTITY 0 0 0 0 0 0 0 0 0 0 0
整数 0 0 1 1 0 0 0 1 1 0 0
nonPositiveInteger 0 0 1 1 0 0 0 1 1 0 0
NegativeInteger 0 0 1 1 0 0 0 1 1 0 0
长整型 0 0 1 1 0 0 0 1 1 0 0
int 0 0 1 1 0 0 0 1 1 0 0
简短 0 0 1 1 0 0 0 1 1 0 0
字节 0 0 1 1 0 0 0 1 1 0 0
nonNegativeInteger 0 0 1 1 0 0 0 1 1 0 0
unsignedLong 0 0 1 1 0 0 0 1 1 0 0
unsignedInt 0 0 1 1 0 0 0 1 1 0 0
unsignedShorti 0 0 1 1 0 0 0 1 1 0 0
unsignedByte 0 0 1 1 0 0 0 1 1 0 0
positiveInteger 0 0 1 1 0 0 0 1 1 0 0

PL/I 数据类型

列:
0 PLI 浮点类型
1 PLI 整数类型
2 PLI 打包类型
3 PLI 图片类型
4 PLI 固定长度字符串
5 PLI 可变长度字符串
6 PLI 图片字符串类型
0 = 不支持映射。
1 = 支持映射。
表 2. PL/I -XML 模式映射
XML 模式 类型 0 1 2 3 4 5 6
string 1 1 1 1 1 1 1
布尔型 0 1 1 1 1 1 1
浮点数 1 0 0 0 0 0 0
双精度值 1 0 0 0 0 0 0
十进制 0 1 1 0 0 0 0
持续时间 0 0 0 0 0 0 0
dataTime 0 0 0 0 0 0 0
时间 0 0 0 0 0 0 0
date 0 0 0 0 0 0 0
gYearMonth 0 0 0 0 0 0 0
gYear 0 0 0 0 0 0 0
gMonthDay 0 0 0 0 0 0 0
gDay 0 0 0 0 0 0 0
gMonth 0 0 0 0 0 0 0
hexBinary 0 0 0 0 1 0 0
base64Binary 0 0 0 0 0 0 0
anyURI 0 0 0 0 0 0 0
QName 0 0 0 0 0 0 0
表示法 0 0 0 0 0 0 0
normalizedString 0 0 0 0 0 0 0
令牌 0 0 0 0 0 0 0
language 0 0 0 0 0 0 0
IDREFS 0 0 0 0 0 0 0
实体 0 0 0 0 0 0 0
NMTOKEN 0 0 0 0 0 0 0
NMTOKEN 0 0 0 0 0 0 0
姓名 0 0 0 0 0 0 0
NCName 0 0 0 0 0 0 0
ID 0 0 0 0 0 0 0
IDREF 0 0 0 0 0 0 0
ENTITY 0 0 0 0 0 0 0
整数 0 1 1 1 1 1 1
nonPositiveInteger 0 1 1 1 1 1 1
NegativeInteger 0 1 1 1 1 1 1
长整型 0 1 1 1 1 1 1
int 0 1 1 1 1 1 1
简短 0 1 1 1 1 1 1
字节 0 1 1 1 1 1 1
nonNegativeInteger 0 1 1 1 1 1 1
unsignedLong 0 1 1 1 1 1 1
unsignedInt 0 1 1 1 1 1 1
unsignedShorti 0 1 1 1 1 1 1
unsignedByte 0 1 1 1 1 1 1
positiveInteger 0 1 1 1 1 1 1

同构和 非同构 简单映射

本主题描述同构和非同构简单映射。

单服务项目工具在请求映射和响应映射中都支持同构简单映射和非同构简单映射。

同构映射和非同构映射

如果同时满足以下两个条件,那么映射为 同构 :
  • XML 实例文档中从根开始的每个组成元素(即包含其他元素的元素)都有一个且只有一个相应的高级语言数据项( COBOL 组项或 PL/I 项) ,其嵌套深度与其 XML 对应项的嵌套深度相同;以及
  • XML 实例文档中的每个非组合元素 (换句话说,不包含其他元素的元素)都有一个且仅有一个相应的高级语言数据项( COBOL 基本项或 PL/I 基本项) ,其嵌套深度与其 XML 对应元素的嵌套层级相同,且运行时的内存地址可以唯一识别。

映射为 非同构 if it 不符合上述条件。
注: 请注意,同构映射可以存在于其他非同构结构的同构子集之间。

有关同构和非同构映射的示例,请参见 XML 至 COBOL 映射参考

同构和非同构简单映射

同构简单映射是一种简单映射,在这种映射中, XML 元素及其相应的高级语言数据项 ( COBOL 或 PL/I ) 具有以下特征:
  • 它们的父结构(XML 文档和 COBOL 组或 PL/I 项) 形状相同(同构)。
  • 它们在其 父结构 中的位置相同。

非同构简单映射是一种简单映射,在这种映射中,XML 元素与其对应的高级语言数据项( COBOL 或 PL/I )在形状上不完全相同(非同构)。

将 COBOL 表格映射为可重复的 XML 数据结构

本主题介绍如何将 COBOL 表映射为可重复的 XML 数据结构。

本主题介绍 COBOL 到 XML 映射工具允许您在 COBOL 表和可重复 XML Schema 元素之间进行哪些类型的映射,包括请求映射(将可重复 XML Schema 元素映射到 COBOL 表)和响应映射(将 COBOL 表映射到可重复 XML Schema 元素)。 本主题还描述了运行时环境如何处理这些映射。
注: 本主题仅描述 XML Schema 元素(通常出现在扩展名为.xsd 的文件中),但类似规则也适用于 XML 实例文档(扩展名为.xml)和 WSDL 文档(扩展名为.wsdl)中出现的映射 XML 元素(请参阅映射概念:XML 到 COBOL 或 PL/I )。

请求和响应映射的公共规则

"可重复 XML 模式元素" 是将 maxOccurs 属性设置为大于等于 1 的整数值或将其设置为 unbounded的 XML 模式项。

COBOL 表是 COBOL 基本项或组项,在其数据描述中包含 OCCURS 子句(创建定长表)或 OCCURS DEPENDING ON 子句(创建变长表)。 在 IBM® 在线帮助中,"ODO" 是 OCCURS DEPENDING ON 的缩写。

注意: 只有在 COBOL 至 XML 映射工具中创建映射时,EST 工具环境才会验证可重复 XML Schema 元素与相应 COBOL 表之间的映射。 如果在映射工具中创建了有效的映射,但后来修改了可重复 XML Schema 元素或相应的 COBOL 表,使映射不再有效,EST 工具环境不会显示错误信息,运行时的映射结果也无法预测。
提示: 因此,如果修改了映射的 XML Schema 元素或修改了相应的 COBOL 表,则应验证映射是否仍然有效,否则应在 XML 到 COBOL 的映射工具中重新创建映射。
COBOL 至 XML 映射工具对请求映射和响应映射都执行以下规则:
  • 可重复的 XML Schema 元素和相应的 COBOL 表项 (类似于数组元素)的结构必须是同构的。 否则,映射工具不允许映射。
    注: 同构是指两个结构包含具有相同数据类型且以相同顺序出现的子元素(参见同构和非同构简单映射 )。

    因此,如果 COBOL 表中出现的元素是 MY-USER-ENTRY ,而相应的可重复 XML Schema 元素是 MyUserEntry ,那么 MY-USER-ENTRYMyUserEntry 一定是同构的。

  • 如果 COBOL 表是变长表(即表的数据描述包含 OCCURS DEPENDING ON 子句),则映射工具会执行以下规则:
    • 除了将可重复 XML Schema 元素映射到相应的 COBOL 表外,还必须在作为 ODO 子句对象的 COBOL 项与其相应的 XML Schema 元素之间创建 XML 到 COBOL 的映射(有关 ODO 子句对象的描述,请参阅 OCCURS DEPENDING ON 子句的相应 COBOL 文档)。

      因此,如果 ODO 子句的对象是 NUM-USER-ENTRIES ,则必须在 COBOL 项 NUM-USER-ENTRIES 和相应的 XML Schema 元素(如名为 NumUserEntries 的元素)之间创建映射。

    • 在.xsd 文件中,与作为 ODO 子句对象的 COBOL 项相对应的 XML Schema 元素必须出现在与 COBOL 表相对应的可重复 XML Schema 元素之前

      因此,如果 COBOL 表名为 USER-ENTRIES ,其 ODO 子句的对象是项目 NUM-USER-ENTRIES ,那么映射到 NUM-USER-ENTRIES 的 XML Schema 元素必须出现在.xsd 文件中映射到 USER-ENTRIES 的 XML Schema 元素之前

    注: 由于 COBOL 对定义数据有一些要求,因此变长表的规则是必要的。
  • 对于多维数组(在 COBOL 文档中也称为 "嵌套表"),XML 到 COBOL 的映射工具执行以下规则:
    • 包含多维数组的可重复 XML Schema 元素和要映射重复 XML Schema 元素的相应 COBOL 嵌套表必须具有相同的数组维数。
    • XML Schema 数据结构中的每个数组维度必须与 COBOL 嵌套表中的相应数组维度包含相同数量的元素,且每个维度中的元素必须同构。
    • 不允许在 XML Schema 元素中的多维数组的单维与 COBOL 嵌套表的单维之间建立映射关系。

关于实例数的假设

为了确定映射是否有效,XML 到 COBOL 的映射工具会对可重复 XML Schema 元素或 COBOL 表中的项目可能出现的最大实例数做出一定的假设。

注意: 当单一服务向导在生成的转换程序(XML 至 COBOL 或 COBOL 至 XML)中定义数据区域时,也会做出这些假设。
假设如下:
  • 对于可重复的 XML 模式元素,该元素的最大重复次数是该元素的 maxOccurs 属性中声明的整数值。 但是,如果 maxOccurs 属性设置为 unbounded,那么将应用特殊规则 (请参阅此帮助主题中的其余部分)。
  • 对于固定长度的 COBOL 表,表中可包含的项目最大出现次数是 OCCURS 子句中规定的值。 对于长度可变的 COBOL 表,表中可包含项目的最大出现次数是 OCCURS DEPENDING ON 子句中规定的最大值。

策略

在确定可重复 XML Schema 元素和 COBOL 表之间的映射是否有效时,Enterprise Service Tools 会执行以下策略:
  • 映射工具灵活,允许您将可能在运行时包含不同数量的元素的两个项映射到一起。

    例如,映射工具可将重复多达 30 次的可重复 XML Schema 元素映射到最多只能包含 20 个元素的 COBOL 表。 (本示例假定 XML Schema 元素与 COBOL 表项同构,且映射有效)。

  • 运行时,生成的转换程序会检查 XML Schema 元素的实际重复次数与 COBOL 表可包含的元素实际次数是否不相等。

    如果转换程序确定数据无法转换(从 XML Schema 转换到 COBOL 或从 COBOL 转换到 XML Schema),因为源数据包含的元素多于目标数据结构中可用的元素,那么此时转换程序会向调用程序返回一个错误代码。

映射请求数据

表 3 显示了 COBOL 至 XML 映射工具允许你对请求数据进行哪些类型的映射,还介绍了运行时环境如何处理这些映射。 在这种情况下,转换程序希望在运行时将可重复 XML Schema 元素的实际重复次数中包含的数据转换为实际 COBOL 表中的项目。
表 3。 COBOL 到 XML 映射请求数据
源数据区: 目标数据区: 最大可能重复次数 (请参阅注释) 映射工具是否允许映射? 运行时结果:
可重复的 XML 模式元素,其中 maxOccurs 设置为整数值。 COBOL 桌 小于或等于。
  • 例如XML 模式元素最多可重复 20 次,而 COBOL 表最多可包含 30 个元素(20 <= 30)。
允许映射。 XML Schema 数据被转换为 COBOL 表中的出现次数。
可重复的 XML 模式元素,其中 maxOccurs 设置为整数值。 COBOL 桌 大于。
  • 例如XML 模式元素最多可重复 50 次,而 COBOL 表最多只能包含 30 个元素(50 > 30)。
允许映射。
  • 通常,XML Schema 数据会转换成 COBOL 表中的出现次数。
  • 但是,如果 XML Schema 元素的重复次数多于 COBOL 表中的可用插槽,运行时就会产生错误。
可重复的 XML 模式元素,具有 maxOccurs= unbounded COBOL 桌 XML Schema 元素可以重复任意次数,而 COBOL 表的最大出现次数是有限的。
  • 举例说明:XML 模式元素有 maxOccurs= unbounded ,而 COBOL 表最多只能包含 30 个元素。
允许映射。
  • 通常,XML Schema 数据会转换成 COBOL 表中的出现次数。
  • 但是,如果 XML Schema 元素的重复次数多于 COBOL 表中的可用插槽,运行时就会产生错误。
注意: 尝试在映射工具中进行映射时,可重复 XML Schema 元素的最大可能重复次数是否少于或等于 COBOL 表中的最大可能项目数?

映射响应数据

表 4 显示了 COBOL 至 XML 映射工具允许您对响应数据进行哪些类型的映射,还描述了运行时环境如何处理这些映射。 在这种情况下,转换程序希望在运行时将 COBOL 表项实际数量中包含的数据转换为可重复 XML Schema 元素的实际重复次数。
表 4。 COBOL 到 XML 的映射响应数据
源数据区: 目标数据区: 最大可能重复次数 (请参阅注释) 映射工具是否允许映射? 运行时结果:
COBOL 桌 可重复的 XML 模式元素,其中 maxOccurs 设置为整数值。 小于或等于。
  • 例如 COBOL 表格最多可包含 30 个元素,而 XML 模式元素最多可重复 50 次(30 <= 50)。
允许映射。 COBOL 表中的出现次数被转换为可重复 XML Schema 元素的重复次数。
COBOL 桌 可重复的 XML 模式元素,其中 maxOccurs 设置为整数值。 大于。
  • 例如 COBOL 表最多可包含 30 个元素,而 XML 模式元素最多只能重复 20 次(30 > 20)。
允许映射。
  • 通常, COBOL 表中的出现次数会被转换为可重复 XML Schema 元素的重复次数。
  • 但如果 COBOL 表中出现的次数多于 XML Schema 元素允许的重复次数,运行时就会产生错误。
COBOL 桌 可重复的 XML 模式元素,具有 maxOccurs= unbounded COBOL 表的最大出现次数是有限的,而 XML Schema 元素可以重复出现任意次数。
  • 例如 COBOL 表最多可包含 30 个元素,而 XML 模式元素只有 maxOccurs= unbounded
允许映射。
  • COBOL 表中的出现次数被转换为可重复 XML Schema 元素的重复次数。
注意: 当您尝试在映射工具中进行映射时, COBOL 表中项目的最大可能数量是否少于或等于可重复 XML Schema 元素的最大可能重复数量?

自动组映射

本主题描述映射编辑器的自动组映射功能。

自动组映射是映射编辑器的一项功能 ,可在用户定义的 XML 复杂类型的成员和兼容的高级语言结构( COBOL 或 PL/I )的成员之间自动创建映射

此功能可用于请求映射文件和响应映射文件。 要创建自动组映射:
  1. 在映射编辑器的一侧选择 XML 复杂类型。
  2. 在映射编辑器的另一侧选择一个兼容的高级语言元素 ( COBOL 或 PL/I )。
  3. 单击映射编辑器工具栏上的 映射匹配元素 图标。
映射编辑器在 XML 复杂类型的每个成员与兼容高级语言结构的相应成员之间创建映射 (即 移动 变换)。
注: 如果高级语言数据结构包含已具有映射的任何元素,那么此功能不可用。

COBOL 数据结构

对于 COBOL 数据, 数据结构必须是在结构上与 XML 复杂类型兼容的 COBOL 组。 如果满足以下条件, COBOL 组群被认为在结构上是兼容的:
  1. XML 实例文档及其映射的 COBOL 语言结构应满足以下要求:
    1. 组合元素 是包含其他元素的元素。 XML 实例文档中从根开始的每个组成元素都有一个且仅有一个相应的 COBOL 组项,其嵌套深度与其 XML 对等元素的嵌套深度相同。
    2. 非组合元素 是不包含其他元素的元素。 XML 实例文档中从顶部开始的每个非组合元素都有一个且仅有一个对应的 COBOL 基本项,其嵌套深度与其 XML 等效元素的嵌套层级相同,且其运行时的内存地址可以唯一识别。
    3. 对于请求映射,最内层的复合类型至少包含一个与其 COBOL 映射项类型兼容的简单类型。
    4. 对于响应映射,每个 XML 复杂类型都必须包含与其 COBOL 映射项兼容的相同数量的简单类型。
  2. 映射的 COBOL 组不包含下级重新定义项。 (映射的组本身可以是重新定义的项)
  3. 映射的 COBOL 组不包含 OCCURS DEPENDING ON 结构体。

顶级对象 在映射编辑器中

本主题描述映射编辑器中显示的顶级对象

在映射编辑器的 XML 端,显示的顶级对象是与源或目标 XML 文档相关联的 XML 元素。

在语言方面,顶层对象是您在创建映射向导中选择的 COBOL 或 PL/I 语言结构。

映射 XML 模型组元素

除了 disjunction (choice) 约束外,还映射了 XML 模型组元素 ,而不考虑 任何 指定的约束。

例如,对于序列约束, 生成的代码不会对属于 A. 序列的 XML 元素是否按 XML 模式的序列约束指定的顺序到达 请求 转换器执行任何验证。

在映射编辑器中 ,您可以将属于析取(选择)组的 XML 元素映射到 COBOL 或 PL/I 项目,就像您可以映射其他 XML 元素一样。 映射编辑器用户界面提供用于选择特定选项元素的工具。

生成 COBOL 映射

本主题介绍无需启动批处理器即可从 WSDL 文件生成 COBOL 副本和映射文件的功能。

可以通过对任何可用的 WSDL 文件使用 “生成 COBOL 映射” 操作,在本地生成 COBOL 副本和相关映射文件。 运行时,该操作会在选定的 WSDL 文件上调用 WSDL2ELS ,并指定所有默认设置。

选择 WSDL 文件

首先,确定用于生成 COBOL 映射的 WSDL 文件。
  1. 右键单击工作区中任何可用的本地 WSDL 文件,然后从菜单中选择生成 COBOL 映射
    注意: 生成 COBOL 映射操作在企业服务工具视角中不可用。
  2. 选择下列其中一项操作:
    • 服务提供者: 输入: XML2LS | 输出: LS2XML
    • 服务请求者: 输入: LS2XML| 输出: XML2LS

    服务提供者服务请求者 的选择会影响映射的方向

选择其中一个操作后,将立即开始代码生成。 代码生成完成后,将使用 WSDL 文件的相同名称和位置创建文件夹。 在生成的文件夹中,您将在第一个 WSDL 服务和端口中找到 WSDL2ELS 在 WSDL 文件中标识的所有操作的以下工件:
  • 映射: 包含所有生成的映射会话文件的目录。
  • WSDLfileName.cpy: COBOL 副本,包含每个操作的输入和输出信息的 01 级结构。
  • WSDLfileName.log: WSDL2ELS 日志文件。
  • WSDLfileName.meta.xml: WSDL2ELS 元数据文件; 此文件可由用户编写的代码以编程方式使用以生成其他工件。

从映射会话文件生成转换程序

本主题描述 "生成转换代码" 向导创建的转换程序。

"生成转换代码" 向导将一个或两个映射文件作为输入,并创建以下文件作为输出:
  • COBOL 或 PL/I 源代码文件
  • WSBind 文件
  • 日志文件
生成的 COBOL 或 PL/I 源代码文件包含一个程序,用于将数据从 XML 格式转换为等效的高级语言数据结构,也用于将数据从(可能不同的)高级语言数据结构转换为等效的 XML 格式。 此程序有三个主要过程:
  • 主过程接收转换请求,调用其他某个过程以执行实际转换,并返回重新格式化的数据。
  • 两个过程执行数据格式转换。 每个过程都实现在两个输入映射文件之一中描述的转换。 因此:
    • 其中一个程序将数据(例如客户 ID 和客户信息请求)从 XML 格式转换为高级语言数据结构( COBOL 或 PL/I )。
    • 另一个程序是将数据(例如详细的客户信息)从高级语言数据结构( COBOL 或 PL/I )转换为 XML 格式。
这些转换过程可用于使 Web Service 提供程序或请求者能够从现有 CICS 应用程序调用和获取数据。 例如,对于 Web Service 提供程序:
  1. Web Service 接收 XML 格式的请求,以获取有关特定客户标识的信息。
  2. Web Service 调用转换程序以将请求从 XML 格式转换为现有 CICS 应用程序期望的高级语言格式。
  3. Web Service 调用 CICS 应用程序,向其传递请求。
  4. CICS 应用程序以高级语言数据结构返回所请求的信息。
  5. Web Service 调用转换程序以将客户信息转换为 XML 格式。
  6. Web Service 将客户信息返回给远程调用者。

通过编译 XML 转换将 XML 属性映射到 COBOL

本主题介绍了在中间连接方案中通过编译 XML 转换将 XML 属性映射到 COBOL 数据结构时适用的某些限制和功能。

本主题中的信息仅适用于 XML 至 COBOL 的 XML 属性映射(而非 XML 至 PL/I ),并且适用于中间连接开发场景和编译 XML 转换类型。

以下限制和功能适用:
  1. 不能将重复叶 XML 元素包含的 XML 属性映射到非重复基本语言结构成员。
  2. 可将重复的叶 XML 元素所包含的 XML 属性映射到具有相同或更多重复的组所包含的基本语言结构成员。
    注: 父元素和组的维度也必须满足此条件。
  3. 具有 "mixed" 内容的 XML 元素 (mixed="true ") 不适合映射到任何语言结构成员。 如需详细了解,请参阅 XML属性支持限制
  4. 只有当一个 XML 元素包含一个 XML 属性时,该 XML 属性才能映射到 COBOL ODO(发生取决于)对象,而该 XML 元素出现在映射到相应 COBOL ODO 主题的 XML 元素之前。