モジュール java.xml
パッケージ org.w3c.dom

インタフェースCDATASection

  • すべてのスーパー・インタフェース:
    CharacterData, Node, Text

    public interface CDATASection
    extends Text
    CDATAセクションは、マークアップと見なされる文字を含んだテキスト・ブロックをエスケープするために使用されます。 CDATAセクションで認識される区切り文字は、CDATAセクションを終了する"]]>"文字列だけです。 CDATAセクションを入れ子にすることはできません。 このセクションの主目的は、すべての区切り文字をエスケープすることなくXMLフラグメントなどのデータを取り込むことです。

    CharacterData.data属性は、CDATAセクションに含まれるテキストを保持します。 これにはCDATAセクションの外部でエスケープする必要のある文字が含まれる可能性があり、直列化用に選択された文字エンコーディング(charset)によっては、一部の文字をCDATAセクションの一部として書き出すことができない可能性があります。

    CDATASectionインタフェースは、Textインタフェースを介してCharacterDataインタフェースから継承します。 隣接するCDATASectionノードは、Nodeインタフェースのnormalizeメソッドの使用によってマージされません。

    CDATAセクションの内容に対する字句のチェックは実行されないため、内容に"]]>"の文字シーケンスが含まれる可能性があります。これは、XML 1.0のセクション2.7に準拠しているCDATAセクションでは不正です。 この文字シーケンスの存在によって、直列化中に致命的エラーが発生します。つまり、直列化の前に、このCDATAセクションを分割する必要があります(DOMConfigurationインタフェースのパラメータ"split-cdata-sections"も参照)。

    注: CDATASection内ではマークアップが認識されないため、直列化の際、文字数値の参照をエスケープ・メカニズムとして使用することはできません。 したがって、含まれている文字の一部を表現できない文字エンコーディングを使用してCDATASectionを直列化する場合は、何らかの対策を行う必要があります。 そうしないと、整形式のXMLを生成できません。

    注: 直列化処理の問題の解決方法の1つには、文字の直前でCDATAセクションを終了し、文字参照またはエンティティ参照を使用してその文字を出力し、それ以降、テキスト・ノードに含まれる文字用に新しいCDATAセクションを開始するという方法があります。 ただし、一部のコード変換ライブラリは、書込み時にエンコードされない文字があっても、エラーや例外を返しません。このため、直列化中に破壊されたデータがないかどうかを特定するのは困難です。

    Document Object Model (DOM) Level 3 Core Specificationも参照してください。