JavaTM 2 Platform
Standard Ed. 6

org.xml.sax.ext
介面 LexicalHandler

所有已知子介面:
TransformerHandler
所有已知實作類別:
DefaultHandler2

public interface LexicalHandler

用於詞法事件的 SAX2 擴展處理程序。

此模組(包括源程式碼和文檔)在公共域中,同時 沒有擔保有關更多資訊,請參閱http://www.saxproject.org

這是 SAX2 的可選擴展處理程序,以提供關於 XML 文檔的詞彙資訊,例如,註釋和 CDATA 節邊界。不需要 XML 閱讀器識別此處理程序,它不是僅核心 SAX2 分發的一部分。

詞彙處理程序中的事件應用於整個文檔,不是僅應用於文檔元素,並且所有詞彙處理程序事件必須在內容處理程序的 startDocument 和 endDocument 事件之間出現。

要為 XML 閱讀器設置 LexicalHandler,使用帶有屬性名稱 http://xml.org/sax/properties/lexical-handlersetProperty 方法以及將此介面(或 null)實作為該值的物件。如果閱讀器不報告詞彙事件,則嘗試註冊處理程序時,它將拋出 SAXNotRecognizedException

從以下版本開始:
SAX 2.0 (extensions 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 宣告,則不調用此方法。

通過 DTDHandlerDeclHandler 事件報告的所有宣告必須在 startDTD 和 endDTD 事件之間出現。可以假設宣告屬於內部 DTD 子集,除非它們在 startEntityendEntity 事件之間出現。也應該在 startDTD 和 endDTD 事件之間,以事件出現的原始順序(邏輯)報告 DTD 的註釋和處理指令;但是,它們不需要出現在相對於 DTDHandler 或 DeclHandler 事件的正確位置。

注意,start/endDTD 事件將出現在 ContentHandler 的 start/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 驅動程序提供這些事件時,所有其他事件必須在開始/結束實體事件中正確巢狀。不存在對來自 DeclHandlerDTDHandler 的事件進行正確排序的 附加要求。

注意,跳過的實體將通過 skippedEntity 事件(是 ContentHandler 介面的一部分)報告。

由於 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 節的開始。

通過常規 characters 事件報告 CDATA 節的內容;此事件僅用於報告邊界。

拋出:
SAXException - 應用程序可能引發一個異常。
另請參見:
endCDATA()

endCDATA

void endCDATA()
              throws SAXException
報告 CDATA 節的結束。

拋出:
SAXException - 應用程序可能引發一個異常。
另請參見:
startCDATA()

comment

void comment(char[] ch,
             int start,
             int length)
             throws SAXException
報告文檔的任何位置的 XML 註釋。

此回調將用於文檔元素內外的註釋,包括外部 DTD 子集中的註釋(如果讀取)。必須在 start/endDTD 和 start/endEntity 事件內部正確巢狀 DTD 中的註釋(如果已使用)。

參數:
ch - 保存註釋中的字元的陣列。
start - 陣列中的開始位置。
length - 使用的陣列中的字元數。
拋出:
SAXException - 應用程序可能引發一個異常。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only