4.4.1 XML Security - Coreの仕様に関する注意事項
- 〈この項の構成〉
(1) DOMの名前空間サポート
XML Security - Coreは,内部処理でDOMの名前空間がサポートされている必要があります。XML文書をJAXPのDocumentBuilderクラスで処理する場合は,DocumentBuilderFactoryクラスのisNamespaceAwareメソッドの戻り値がtrueとなる設定で作成したDocumentBuilderクラスを使用してください。また,名前空間がサポートされているDOMの要素や属性の作成は,DocumentクラスのcreateElementNSメソッドやcreateAttributeNSメソッドを使用します。
- 注意事項
-
デフォルトの設定では,DocumentBuilderFactoryクラスのisNamespaceAwareメソッドの戻り値はfalseになります。XML文書をJAXPのDocumentBuilderクラスで処理する場合は,デフォルトの設定を変更してください。
(2) 同一文書内への参照
URI参照解決のカスタマイズでは,同一文書内への参照を解決できません。XML Security - CoreがデフォルトでサポートしているURI参照解決を使用してください。XML Security - CoreがデフォルトでサポートしているURI参照解決については,「4.3.1 URI参照解決」を参照してください。
(3) Shift_JISエンコードのXML文書の処理制約
XML Security - Coreは,内部的なXML文書の処理では,XML ProcessorのShift_JIS切り替え機能を利用できません。そのため,次の場合はencoding="Shift_JIS"の指定に対してWindows-31Jコンバータを使用できません。
-
URI参照によって取得する外部のXML文書を処理する場合
-
バイナリ形式のXML文書をXMLCanonicalizerクラスで処理する場合
なお,Shift_JIS切り替え機能の詳細については,マニュアル「XML Processor ユーザーズガイド」を参照してください。
(4) Transformアルゴリズムを指定する順序
Enveloped Signature変換やXPath関数here( )など,Transform要素のDOMツリー上の位置を必要とする変換の前では,変換結果がオクテットシーケンスとなる変換を実行しないでください。Transform要素の位置情報が失われてしまうため,変換は失敗します。
(5) 外部エンティティの処理
XML Security - Coreは,内部的なXML文書の処理では,外部ファイルを参照するエンティティ参照や外部DTDを含むXML文書をサポートしていません。そのため,次の場合はXML文書を処理できません。
-
URI参照によって取得する外部のXML文書が,外部エンティティ参照や外部DTDを含む場合
-
外部エンティティ参照や外部DTDを含むXML文書をXMLCanonicalizerクラスで処理する場合
(6) エンティティ参照の制約
XML Security - Coreで処理するDOMツリーのエンティティ参照は,展開されている必要があります。XML文書をJAXPのDocumentBuilderクラスで処理する場合は,DocumentBuilderFactoryクラスのisExpandEntityReferencesメソッドの戻り値がtrueとなる設定(デフォルト設定)で作成したDocumentBuilderクラスを使用してください。
なお,XMLデータの要素またはコンテンツを暗号化した,EncryptedDataを復号化する場合,decryptXMLメソッドの内部ではDOMサブツリーの復元処理が実行されます。このとき,復号化されたXMLデータにエンティティ参照が含まれていると,エラーが発生します。ただし,定義済みのエンティティ(amp,lt,gt,apos,quot)の場合は,エラーは発生しません。