XML PARSE ステートメントを使用して XML 文書を構文解析するには、文書はサポートされているエンコードを使用してエンコードされている必要があります。
特定の構文解析でサポートされているエンコードは、次の点に依存します。
- XML 文書が入っているデータ項目のカテゴリー
- XMLPARSE コンパイラー・オプションの設定
- XML PARSE ステートメントに指定されたオプションの句。
国別データ項目に入っている XML 文書の場合、サポートされているコード・ページは、Unicode UTF-16BE (ビッグ・エンディアン)、CCSID 1200 です。
英数字データ項目に入っている XML 文書の場合、XMLPARSE(XMLSS) コンパイラー・オプションが有効であるときにサポートされているコード・ページは次のとおりです。
- RETURNING NATIONAL 句が XML PARSE で指定されている場合: Unicode UTF-8、
または z/OS Unicode Services で Unicode UTF-16 への変換がサポートされているすべての EBCDIC または ASCII コード・ページ。
- RETURNING NATIONAL 句が指定されていない場合: Unicode UTF-8、
または XML 文書のコード化文字セットに関する関連参照でリストされている、すべての 1 バイト EBCDIC コード・ページ。
英数字データ項目に入っている XML 文書の場合、XMLPARSE(COMPAT) コンパイラー・オプションが有効であるときにサポートされているコード・ページは、XML 文書のコード化文字セットに関する関連参照で指定されています。
入力 XML 文書のエンコードの判別
パーサーは、XML 文書を正しく処理するために、そのエンコードを認識している必要があります。
指定されたエンコードがサポートされているコード化文字セットのものではない場合、パーサーは構文解析操作を実行する前に XML 例外イベントをシグナル通知します。
実際の文書エンコードが指定されたエンコードに一致しない場合には、パーサーは構文解析操作の開始後に該当する XML 例外をシグナル通知します。
次に示すとおり、XML 文書のエンコードの判別では、複数のエンコードに関する情報源を使用します。
- XMLPARSE(XMLSS) オプションが有効である場合:
- XML 文書が入っているデータ項目のデータ・タイプ
- XML PARSE ステートメントのオプションの ENCODING 句
- CODEPAGE コンパイラー・オプションで指定された CCSID
- XMLPARSE(COMPAT) オプションが有効である場合:
- XML 文書が入っているデータ項目のデータ・タイプ
- XML 文書内で指定されているエンコード宣言
- CODEPAGE コンパイラー・オプションで指定された CCSID
- 文書の最初の数バイトを検査することによって判別した、XML 文書の実際のエンコード
XMLPARSE(XMLSS) オプションが有効である場合:
- XML 文書内で指定されているエンコード宣言は無視されます。
- 国別データ項目に入っている XML 文書の場合、XML PARSE ステートメントの ENCODING 句は、省略するか CCSID 1200 を指定する必要があります。
CODEPAGE コンパイラー・オプションで指定された CCSID は無視されます。
実際の文書エンコードが Unicode UTF-16BE ではない場合、パーサーは、XML 例外イベントをシグナル通知します。
- 英数字データ項目に入っている XML 文書の場合、XML PARSE ステートメントの ENCODING 句で指定された CCSID は、CODEPAGE コンパイラー・オプションをオーバーライドします。
- XML PARSE ステートメントに ENCODING 句が含まれている場合、指定された CCSID は、
CODEPAGE コンパイラー・オプションで指定された CCSID をオーバーライドします。
実際の文書エンコードが指定された CCSID と一致しない場合、パーサーは構文解析の開始時に XML 例外イベントを提起します。