org.xml.sax.ext

接口
所有已知实现类:
DefaultHandler2

public interface DeclHandler

用于 DTD 声明事件的 SAX2 扩展处理程序。

此模块(包括源代码和文档)在公共域中,同时 没有担保有关更多信息,请参阅 http://www.saxproject.org

这是 SAX2 的一个可选扩展处理程序,以提供有关 XML 文档中 DTD 声明的更完整信息。不需要 XML 阅读器识别此处理程序,它不是仅核心 SAX2 分发的一部分。

注意,已经通过 DTDHandler 接口报告与数据相关的 DTD 声明(未解析的实体和注释)。

如果将声明处理程序与词法处理程序一起使用,则在 startDTDendDTD 事件之间将发生所有事件。

要为 XML 阅读器设置 DeclHandler,使用带有属性名称 http://xml.org/sax/properties/declaration-handlersetProperty 方法以及将此接口(或 null)实现为该值的对象。如果阅读器不报告声明事件,则尝试注册处理程序时,它将抛出 SAXNotRecognizedException

从以下版本开始:
SAX 2.0 (extensions 1.0)

方法摘要
 void attributeDecl(String eName, String aName, String type, String mode, String value)
          报告属性类型声明。
 void elementDecl(String name, String model)
          报告元素类型声明。
 void externalEntityDecl(String name, String publicId, String systemId)
          报告解析的外部实体声明。
 void internalEntityDecl(String name, String value)
          报告内部实体声明。
 

方法详细信息

elementDecl

void elementDecl(String name,
                 String model)
                 throws SAXException
报告元素类型声明。

内容模型将由字符串 "EMPTY"、字符串 "ANY" 或用括号括起来的组组成,可以选择后面跟随一个出现指示符。将使模型标准化,以便完全解析所有的参数实体,并移除所有的空白,并将包括括号。其他标准化(例如,移除多余的括号或简化出现指示符)是由解析器决定的。

参数:
name - 元素类型名称。
model - 作为标准化字符串的内容模型。
抛出:
SAXException - 应用程序可能引发一个异常。

attributeDecl

void attributeDecl(String eName,
                   String aName,
                   String type,
                   String mode,
                   String value)
                   throws SAXException
报告属性类型声明。

将仅报告属性的有效(第一个)声明。类型将是以下字符串之一:"CDATA"、"ID"、"IDREF"、"IDREFS"、"NMTOKEN"、"NMTOKENS"、"ENTITY"、"ENTITIES"、移除所有空格的带有分隔符 "|" 的加上括号的标记组,或后跟一个空格再跟随移除所有空白的加上括号的标记组的单词 "NOTATION"。

值将是报告给应用程序、被适当标准化的值,它带有实体和扩展的字符引用。

参数:
eName - 关联元素的名称。
aName - 属性的名称。
type - 表示属性类型的字符串。
mode - 表示属性默认模式("#IMPLIED"、"#REQUIRED" 或 "#FIXED")的字符串,如果不应用上述模式,则为 null。
value - 表示属性的默认值的字符串,如果不存在,则为 null。
抛出:
SAXException - 应用程序可能引发一个异常。

internalEntityDecl

void internalEntityDecl(String name,
                        String value)
                        throws SAXException
报告内部实体声明。

将仅报告每个实体的有效(第一个)声明。将扩展值中的所有参数实体,但不扩展常规实体。

参数:
name - 实体的名称。如果是参数实体,则名称以 "%" 开头。
value - 实体的替换文本。
抛出:
SAXException - 应用程序可能引发一个异常。
另请参见:
externalEntityDecl(java.lang.String, java.lang.String, java.lang.String), DTDHandler.unparsedEntityDecl(java.lang.String, java.lang.String, java.lang.String, java.lang.String)

externalEntityDecl

void externalEntityDecl(String name,
                        String publicId,
                        String systemId)
                        throws SAXException
报告解析的外部实体声明。

将仅报告每个实体的有效(第一个)声明。

如果系统标识符是 URL,则解析器必须在将它传递给应用程序之前完全解析它。

参数:
name - 实体的名称。如果是参数实体,则名称以 "%" 开头。
publicId - 实体的公共标识符,如果没有给定,则为 null。
systemId - 实体的系统标识符。
抛出:
SAXException - 应用程序可能引发一个异常。
另请参见:
internalEntityDecl(java.lang.String, java.lang.String), DTDHandler.unparsedEntityDecl(java.lang.String, java.lang.String, java.lang.String, java.lang.String)