モジュール java.xml
パッケージ org.xml.sax.ext

インタフェースLexicalHandler

  • 既知のすべてのサブインタフェース:
    TransformerHandler
    既知のすべての実装クラス:
    DefaultHandler2

    public interface LexicalHandler
    字句イベントのためのSAX2拡張ハンドラです。
    このモジュールは、ソース・コード、文書ともに公開ドメインに置かれています。したがって、内容に関する保証は一切提供されません 詳細については、http://www.saxproject.orgを参照してください。

    コメントやCDATAセクションの境界といったXML文書に関する字句上の情報を提供する、SAX2用のオプション拡張ハンドラです。 このハンドラを認識するために、XMLリーダーは不要です。また、このハンドラは、SAX2のコアのみのディストリビューションには含まれていません。

    字句ハンドラ内のイベントは、文書内の個々の要素だけでなく文書全体に適用されます。すべての字句ハンドラ・イベントは、コンテンツ・ハンドラのstartDocumentイベントからendDocumentイベントまでの間に発生します。

    XMLリーダーのLexicalHandlerを設定するには、プロパティ名としてhttp://xml.org/sax/properties/lexical-handler、その値としてこのインタフェースを実装するオブジェクト(またはnull)を指定して、setPropertyメソッドを使用します。 リーダーが字句イベントを報告しない場合、ハンドラを登録しようとするとSAXNotRecognizedExceptionがスローされます。

    導入されたバージョン:
    1.4、SAX 2.0 (拡張機能1.0)
    • メソッドのサマリー

      修飾子と型 メソッド 説明
      void comment​(char[] ch, int start, int length)
      文書内の任意の位置にあるXMLコメントを報告します。
      void endCDATA()
      CDATAセクションの終わりを報告します。
      void endDTD()
      DTD宣言の終わりを報告します。
      void endEntity​(String name)
      エンティティの終わりを報告します。
      void startCDATA()
      CDATAセクションの開始を報告します。
      void startDTD​(String name, String publicId, String systemId)
      DTD宣言がある場合、その開始を報告します。
      void startEntity​(String name)
      内部および外部のXMLエンティティの一部の開始を報告します。
    • メソッドの詳細

      • startDTD

        void startDTD​(String name,
                      String publicId,
                      String systemId)
               throws SAXException
        DTD宣言がある場合、その開始を報告します。

        このメソッドは、DOCTYPE宣言の開始を報告するメソッドです。文書にDOCTYPE宣言が含まれていない場合は呼び出されません。

        DTDHandlerイベントまたはDeclHandlerイベントを介して報告されるすべての宣言は、startDTDイベントからendDTDイベントまでの間に出現することになっています。 宣言は、startEntityイベントからendEntityイベントまでの間に出現しないと、内部DTDサブセットに所属するものと見なされます。 DTDのコメントおよび処理命令も、startDTDイベントからendDTDイベントまでの間に、元の(論理的な)発生順で報告されることになっています。ただし、DTDHandlerイベントやDeclHandlerイベントに対する正確な相対位置に出現する必要はありません。

        startDTD/endDTDイベントは、ContentHandlerからのstartDocumentイベントとendDocumentイベントの間で、最初のstartElementイベントの前に出現します。

        パラメータ:
        name - 文書型名。
        publicId - 宣言された外部DTDサブセットの公開識別子。宣言されていない場合はnull。
        systemId - 宣言された外部DTDサブセットのシステム識別子。宣言されていない場合はnull。 (文書のベースURIに対しては解決されません)
        例外:
        SAXException - アプリケーションが例外を発生させる場合があります。
        関連項目:
        endDTD(), startEntity(java.lang.String)
      • endDTD

        void endDTD()
             throws SAXException
        DTD宣言の終わりを報告します。

        このメソッドは、DOCTYPE宣言の終わりを報告するメソッドです。文書にDOCTYPE宣言が含まれていない場合は呼び出されません。

        例外:
        SAXException - アプリケーションが例外を発生させる場合があります。
        関連項目:
        startDTD(java.lang.String, java.lang.String, java.lang.String)
      • startEntity

        void startEntity​(String name)
                  throws SAXException
        内部および外部のXMLエンティティの一部の開始を報告します。

        パラメータ・エンティティ(外部DTDサブセットを含む)の報告機能はオプションです。LexicalHandlerイベントを報告するSAX2のドライバの中には、この機能を実装しないものもあります。http://xml.org/sax/features/lexical-handler/parameter-entities機能を使って、パラメータ・エンティティの報告を照会または制御できます。

        一般的なエンティティは、正規名で報告されます。パラメータ・エンティティ名の前には「%」が付けられています。外部DTDサブセットは「[dtd]」という擬似エンティティ名を持っています。

        SAX2ドライバがこれらのイベントを提供しているときは、その他のすべてのイベントをstart/endエンティティ・イベント内に正しく入れ子にする必要があります。 DeclHandlerまたはDTDHandlerのイベントを正しい順序で並べる必要はありません。

        スキップされたエンティティは、ContentHandlerインタフェースの一部であるskippedEntityイベントを介して報告されます。

        SAXが採用しているストリーミング・イベント・モデルの制約により、次の状況では一部のエンティティ境界を報告することができません。

        • 属性値に含まれている一般的なエンティティ
        • 宣言に含まれているパラメータ・エンティティ

        これらは通知なく拡張されます。元のエンティティ境界の位置は示されません。

        文字参照の境界(実際にはエンティティではない)も報告されません。

        すべてのstart/endEntityイベントを正しく入れ子にする必要があります。

        パラメータ:
        name - エンティティの名前。 パラメータ・エンティティの場合、この名前は「%」で始まります。外部DTDサブセットの場合は「[dtd]」となります。
        例外:
        SAXException - アプリケーションが例外を発生させる場合があります。
        関連項目:
        endEntity(java.lang.String), DeclHandler.internalEntityDecl(java.lang.String, java.lang.String), DeclHandler.externalEntityDecl(java.lang.String, java.lang.String, java.lang.String)
      • endEntity

        void endEntity​(String name)
                throws SAXException
        エンティティの終わりを報告します。
        パラメータ:
        name - 終了するエンティティの名前。
        例外:
        SAXException - アプリケーションが例外を発生させる場合があります。
        関連項目:
        startEntity(java.lang.String)
      • startCDATA

        void startCDATA()
                 throws SAXException
        CDATAセクションの開始を報告します。

        CDATAセクションのコンテンツは、正規のcharactersイベントを介して報告されます。このイベントは境界の報告だけに使用されます。

        例外:
        SAXException - アプリケーションが例外を発生させる場合があります。
        関連項目:
        endCDATA()
      • endCDATA

        void endCDATA()
               throws SAXException
        CDATAセクションの終わりを報告します。
        例外:
        SAXException - アプリケーションが例外を発生させる場合があります。
        関連項目:
        startCDATA()
      • comment

        void comment​(char[] ch,
                     int start,
                     int length)
              throws SAXException
        文書内の任意の位置にあるXMLコメントを報告します。

        このコールバックは、文書要素の内外に存在するコメント(外部DTDサブセット内のコメントも含む)に対して使用されます。 DTD内のコメントは、start/endDTDイベントとstart/endEntityイベント(使用されている場合)の内部に正しく入れ子にする必要があります。

        パラメータ:
        ch - コメントに含まれる文字を格納する配列。
        start - 配列内の開始位置。
        length - 配列から使用される文字数。
        例外:
        SAXException - アプリケーションが例外を発生させる場合があります。