XML 输入文档编码

要使用 XML PARSE 语句解析 XML 文档,必须以受支持的编码对该文档进行编码。

给定解析操作的受支持编码取决于包含 XML 文档的数据项的类型。 解析器支持以下类型的数据项 和编码:

  • 类别 国家或地区数据项,其内容以 小尾数法 格式的 Unicode UTF-16 编码
  • 具有以 Unicode UTF-8 或 其中一个受支持的单字节 ASCII 代码页编码的内容的本机字母数字数据项
  • 包含以其中一个受支持的单字节 EBCDIC 代码页编码的内容的主机字母数字数据项

在有关 XML 文档编码的相关参考中描述了受支持的代码页。

解析器通过检查 XML 文档的前几个字节来确定 实际文档编码 。 如果实际文档编码是 ASCII 或 EBCDIC ,那么解析器需要特定的代码页信息才能正确解析。 此附加代码页信息是从文档编码声明或从外部代码页信息获取的。

文档编码声明是文档开头的 XML 声明的可选部分。 有关详细信息,请参阅有关指定编码的相关任务。

ASCII XML 文档的 外部代码页 ( 外部 ASCII 代码页) 是当前运行时语言环境所指示的代码页。 EBCDIC XML 文档的外部代码页 ( 外部 EBCDIC 代码页) 是下列其中一项:

  • 在 "日期" 环境变量中指定的代码页
  • 为当前运行时语言环境选择的缺省 EBCDIC 代码页 (如果未设置该环境变量)

如果指定的编码不是其中一个受支持的编码字符集,那么解析器将在开始解析操作之前对 XML 异常事件发出信号。 如果实际文档编码与指定的编码不匹配,解析器将在开始解析操作后发出相应的 XML 异常信号。

要解析以不受支持的代码页编码的 XML 文档,请首先使用 NATIONAL-OF 内部函数将该文档转换为本地字符数据 (UTF-16)。 您可以使用 DISPLAY-OF 内部函数将传递到专用寄存器 XML-NTEXT 中的处理过程的各个文档文本片段转换回原始代码页。

XML 声明和空格:

仅当 XML 文档没有 XML 声明时,这些文档才能以 空格 开头:
  • 如果 XML 文档以 XML 声明开始,文档中的第一个角括号 (<) 必须是文档中的第一个字符。
  • 如果 XML 文档未以 XML 声明开头,那么文档中的第一个尖括号只能以空格开头。

空格字符具有下表中显示的十六进制值。

表 1. 空格字符的十六进制值
空格字符 EBCDIC Unicode/ASCII
空间 X'40 ' X'20 '
水平制表符 X'05' X'09'
回车 X'0D' X'0D'
换行符 X'25 ' X'0A'
新建行/下一行 X'15' X'85 '