XML 模式到 PL/I 映射
DFHSC2LS 和 DFHWS2LS 实用程序支持 XML 模式定义和 PL/I 数据结构之间的映射。 由于 Enterprise PL/I 编译器与较早的 PL/I 编译器有所不同,因此支持以下两种语言选项:PLI-ENTERPRISE 和 PLI-OTHER。
将模式元素名称映射到 PL/I 的规则
- 将 A-Z , a-z , 0-9 , @ , # , _ 或 $以外的字符替换为 "
X'。例如,
monthly-total变为monthlyXtotal。您可以使用 MAPPING-OVERRIDES 参数来更改处理其他字符的方式。 例如,如果设置值 HYPHENS-AS-UNDERSCORES ,那么 XML 中的任何连字符都将转换为下划线而不是 X。 例如,
monthly-total变为monthly_total。 - 如果模式指定变量具有不同的基数 (即,使用
xsd:element上的不同值指定minOccurs和maxOccurs属性) ,并且模式元素名称长度超过 24 个字符,那么会将其截断为该长度。如果模式指定变量具有固定的基数,并且模式元素名称超过 29 个字符,那么会将其截断为该长度。
- 通过在名称的第二个实例和后续实例中添加一个或多个数字数字,使同一作用域中的重复名称成为唯一名称。
例如,三个
year实例变为year,year1和year2。如果不希望出现上述行为,那么用户可以将
MAPPING-OVERRIDES=NO-ARRAY-NAME-INDEXING指定为实用程序的输入,这将禁止将一个或两个数字数字添加到名称的第二个实例和后续实例中。 - 为字符串
_cont或_num保留了五个字符,当模式指定变量具有不同的基数时使用这些字符; 即,当使用不同的值指定minOccurs和maxOccurs属性时使用这些字符。有关更多信息,请参阅 元素的变量数组。
- 对于属性,先前的规则将应用于元素名称。 前缀
attr-将添加到元素名称中,后跟-value或-exist。 如果总长度超过 28 个字符,那么将截断元素名称。 有关更多信息,请参阅 对 XML 属性的支持。可空属性具有特殊规则。 添加了前缀
attr-,但也会将nil-添加到元素名称的开头。 元素名称后跟-value。 如果总长度超过 28 个字符,那么将截断元素名称。
生成名称的总长度最多 31 个字符。
将模式类型映射到 PL/I 的规则
- 如果 MAPPING-LEVEL 参数设置为 1.2 或更高版本,并且 CHAR-VARYING 参数设置为 NULL ,那么变长字符数据将映射到以 null 结束的字符串,并为 null 终止符分配额外的字符。
- 如果 MAPPING-LEVEL 参数设置为 1.2 或更高版本,并且未指定 CHAR-VARYING 参数,那么缺省情况下,变长字符数据将映射到 Enterprise PL/I 的 VARYINGZ 数据类型和其他 PL/I 的 VARYING 数据类型。
- 可变长度二进制数据映射到 VARYING 数据类型 (如果它小于 32 768 字节) 和容器 (如果它超过 32 768 字节)。
| 模式 | PL/I 数据描述 |
|---|---|
|
映射级别 2.0 及更低版本: 不支持
映射级别 2.1 及更高版本: 受支持
|
|
映射级别 1.1 及更高版本: CHAR(255) |
其中 type 是下列其中一项:
|
所有映射级别:
CHARACTER(
z
)
|
其中 type 是下列其中一项:
|
当 CCSID=1200 处于映射级别 4.0 及更高版本时: |
其中 type 是下列其中一项:
|
所有映射级别: CHAR(32) |
|
映射级别 1.2 及更低版本: CHAR(32)映射级别 2.0 及更高版本: CHAR(40)映射级别 3.0 及更高版本: FIXED DECIMAL(15) |
|
映射级别 1.1 及更低版本: 映射级别 1.2 及更高版本: |
|
所有映射级别:
|
|
所有映射级别:
|
|
所有映射级别:
|
|
所有映射级别:
|
|
所有映射级别:
|
|
所有映射级别:
|
|
所有映射级别:
|
|
映射级别 1.1 及更低版本:
映射级别 1.2 及更高版本:
所有映射级别:
|
|
映射级别 1.1 及更低版本:
映射级别 1.2 及更高版本:
所有映射级别:
|
|
映射级别 1.1 及更低版本:
映射级别 1.2 及更高版本:
BIT(7) 是为对齐提供,BIT(1) 包含布尔映射值。 |
|
所有映射级别:
FIXED DECIMAL(
n
,
m
)
|
|
所有映射级别: CHAR(255) |
|
所有映射级别: CHAR(255) |
其中未定义长度 |
映射级别 1.0: 不支持
映射级别 1.1: 映射级别 1.2 及更高版本: CHAR(16) |
|
映射级别 1.0 和 1.1: CHAR(32)映射级别 1.2 及更高版本:
注: IBM® 十六进制浮点 (HFP) 数据表示与用于 XML 的 IEEE-754-1985 表示不完全相同。 某些值可能不会精确从一个表示转换为另一个表示。 对于
xsd:float 数据来说,一些极大值或极小值可能会无效。 转换为 HFP 表示或从 HFP 表示转换时,某些值可能会不精确。 如果精确转换很重要,请考虑将 DECIMAL FLOAT 数据类型的使用替换为固定精度替代方法。 |
|
映射级别 1.0 和 1.1: CHAR(32)映射级别 1.2 及更高版本:
注: IBM 十六进制浮点 (HFP) 数据表示与用于 XML 的 IEEE-754-1985 表示不完全相同。 某些值可能不会精确从一个表示转换为另一个表示。 对于
xsd:double 数据来说,一些极大值或极小值可能会无效。 转换为 HFP 表示或从 HFP 表示转换时,某些值可能会不精确。 如果精确转换很重要,请考虑将 DECIMAL FLOAT 数据类型的使用替换为固定精度替代方法。 |