XMLドキュメントを読み込むときの制限事項
本ライブラリが対応するXMLドキュメントのフォーマットは次の仕様に基づいています。
Extensible Markup Language (XML) 1.0 (Fifth Edition)
ただし、XMLドキュメントを読み込んで解析する処理には次の制限があります。
- UTF-8、UTF-16以外のエンコーディングのXMLドキュメントを読み込むことはできません。
- XMLドキュメントに次の情報が含まれている場合、XML_CreateXmlObject関数はこれらを無視してXMLオブジェクトに変換します。
- doctypedecl (XML document type declaration)
- Comment
- PI (Processing instruction)
XMLでは、エレメントの中に子エレメントとそれ以外情報を含むMixed contentを記述することができますが、本ライブラリはMixed contentをサポートしていません。
Mixed contentを持つXMLドキュメントをXML_CreateXmlObject関数でXMLオブジェクトに変換すると、Mixed contentの中の子エレメント以外の情報は無視されます。
Mixed content:
<letter> Dear Mr.<name>John Smith</name>. Your order <orderid>1032</orderid> will be shipped on <shipdate>2001-07-13</shipdate>. </letter>
変換後のXMLオブジェクト:
<letter> <name>John Smith</name> <orderid>1032</orderid> <shipdate>2001-07-13</shipdate> </letter>
- &、 <、 >、 '、 "以外のEntityRefは '?' に置き換えられます。
- ユニコードからローカルコードに変換するとき、変換できない文字は '?' に置き換えられます。
- XMLドキュメントを解析する際は必要最小限のフォーマット確認しか行っていません。XMLドキュメントとして妥当なデータであるかどうかは、本ライブラリによらず、別のツールで十分に確認してください。
XMLオブジェクトを編集するときの制限事項
- 本ライブラリの関数を使用してXMLオブジェクトを編集するとき、ローカルコードからユニコードに変換できない文字コードが検出されると本ライブラリの関数は失敗し、XML_UNICODE_CONVERSION_ERRORエラーを返します。
- 本ライブラリでは、子ノードを持つノード(中間ノード)に値を設定することはできません。また、値を取得することもできません。本ライブラリの関数でこのような操作を要求するとXML_NO_VALUE_IN_INTERMEDIATE_NODEエラーを返します。
<request_message> ← 中間ノード <issuer>SALES0001</issuer> <ship_order> ← 中間ノード <date>2021/09/10</date> <customer> ← 中間ノード <customerID>C00001</customerID> <name>A corporation</name> </customer> </ship_order> </request_message>
- 本ライブラリでは、値を持っているノードに子ノートを追加することはできません。本ライブラリの関数でこのような操作を要求するとXML_CHILD_NODE_DISALLOWED_ERRORエラーを返します。
XMLドキュメントを出力するときの制限事項
- XMLオブジェクトをXMLドキュメントに変換して出力するときは、UTF-8にエンコーディングします。他のエンコーディングで出力することはできません。
最終更新日:2021/09/24