软件包 javax.xml.validation 的描述

软件包 javax.xml.validation 的描述

软件包 javax.xml.validation

此包提供了用于 XML 文档验证的 API。

请参见:
          描述

类摘要
Schema 不可变的语法存储表示形式。
SchemaFactory 创建 Schema 对象的工厂。
SchemaFactoryLoader 创建 SchemaFactory 的工厂。
TypeInfoProvider 此类提供了对 ValidatorHandler 所确定的类型信息的访问。
Validator 根据 Schema 检查 XML 文档的处理器。
ValidatorHandler 处理 SAX 流的流验证器。
 

软件包 javax.xml.validation 的描述

此包提供了用于 XML 文档验证的 API。Validation 是验证 XML 文档是否为指定 XML schema 的实例的过程。XML 模式定义了其实例文档将表示的内容模式(也称为 grammarvocabulary)。

有多种流行的技术用于创建 XML 模式。最流行的技术包括:

  • Document Type Definition (DTD) -- XML 的内置模式语言。
  • W3C XML Schema (WXS) -- 面向对象的 XML 模式语言。WXS 还提供了用于约束 XML 文档的字符数据的类型系统。WXS 通过 World Wide Web Consortium (W3C) 维护,它是 W3C Recommendation(即公认的 W3C 标准规范)。
  • RELAX NG (RNG) -- 基于模式的、用户友好的 XML 模式语言。RNG 模式也可以使用类型来约束 XML 字符数据。RNG 通过 Organization for the Advancement of Structured Information Standards (OASIS) 维护,它既是 OASIS 标准也是 ISO (International Organization for Standardization) 标准。
  • Schematron -- 基于规则的 XML 模式语言。相对于 DTD、WXS 和 RNG 是用于表示内容模式的结构而言,Schematron 的设计是为了实施难以或不能通过其他模式语言表示的个别规则。Schematron 是为了补充以结构化模式语言(例如 aforementioned)编写的模式。Schematron 正在成为一项 ISO 标准。

以前的 JAXP 版本支持作为 XML 解析器的功能的验证,要么通过 SAXParser 实例,要么通过 DocumentBuilder 实例来表示。

JAXP 验证 API 从 XML 文档解析中分离出实例文档的验证。这具有几种优点,一些原因包括:

  • 支持额外的模式语言。 从 JDK 1.5 开始,两种最流行的 JAXP 解析器实现(Crimson 和 Xerces)仅支持可用的 XML 模式语言的子集。Validation API 提供了标准的机制,应用程序通过此机制可利用支持额外模式语言的规范验证库。
  • 简单的 XML 实例与模式的运行时耦合。 指定要用于通过 JAXP 解析器验证的模式位置可能易于混淆。Validation API 使此过程变得简单(参见以下示例)。

用例。以下示例演示了通过 Validation API 验证 XML 文档(为了方便阅读,此例未显示某些异常处理):

// parse an XML document into a DOM tree
DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = parser.parse(new File("instance.xml"));
// create a SchemaFactory capable of understanding WXS schemas
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
// load a WXS schema, represented by a Schema instance
Source schemaFile = new StreamSource(new File("mySchema.xsd"));
Schema schema = factory.newSchema(schemaFile);
// create a Validator instance, which can be used to validate an instance document
Validator validator = schema.newValidator();
// validate the DOM tree
try {
validator.validate(new DOMSource(document));
} catch (SAXException e) {
// instance document is invalid!
}

JAXP 解析 API 已经与验证 API 进行了集成。应用程序可以通过验证 API 创建 Schema,并通过使用 DocumentBuilderFactory.setSchema(Schema)SAXParserFactory.setSchema(Schema) 方法将其与 DocumentBuilderFactorySAXParserFactory 实例进行关联。您不能既设置模式,又调用解析器工厂上的 setValidating(true)。前者的技术将导致解析器使用新的验证 API,后者将导致解析器使用它们自己的内部验证工具。同时调整这两个选项将导致冗余行为或错误条件。

你可能感兴趣的:(软件包 javax.xml.validation 的描述)