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>
    
  • &amp;、 &lt;、 &gt;、 &apos;、 &quot;以外の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