|
|||||||||
软件包 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 模式定义了其实例文档将表示的内容模型(也称为 grammar 或 vocabulary)。
有多种流行的技术用于创建 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)
方法将其与 DocumentBuilderFactory
或 SAXParserFactory
实例进行关联。您不能既设置模式,又调用解析器工厂上的 setValidating(true)
。前者的技术将导致解析器使用新的验证 API,后者将导致解析器使用它们自己的内部验证工具。同时调整这两个选项将导致冗余行为或错误条件。
所有类
|
|||||||||