模块 java.xml
Package javax.xml.validation
提供用于验证XML文档的API。 验证是验证XML文档是指定XML 模式的实例的过程。 XML模式定义其实例文档将表示的内容模型(也称为语法或词汇表 )。
有许多流行的技术可用于创建XML模式。 一些最受欢迎的包括:
- 文档类型定义(DTD) - XML的内置模式语言。
- W3C XML Schema (WXS) - 面向对象的XML模式语言。 WXS还提供了一种用于约束XML文档的字符数据的类型系统。 WXS由World Wide Web Consortium (W3C)维护,是W3C推荐标准( 即已批准的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旨在补充用结构模式语言编写的模式,如前面提到的。 Schematron正在成为ISO标准。
虽然JAXP支持验证作为XML解析器的一个功能,由SAXParser
或DocumentBuilder
实例表示,但首选Validation
API。
JAXP验证API将实例文档的验证与XML文档的解析分离。 这有几个原因有利,其中一些原因是:
- 支持其他架构语言。 JAXP解析器实现仅支持可用XML模式语言的子集。 Validation API提供了一种标准机制,通过该机制,应用程序可以利用支持其他模式语言的专门化验证库。
- 轻松运行时耦合XML实例和模式。 指定用于使用JAXP解析器进行验证的模式的位置可能会令人困惑。 Validation API使此过程变得简单(参见下面的example )。
Usage example.以下示例演示如何使用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已与Validation API集成。 应用程序可以使用验证API创建Schema
,并使用DocumentBuilderFactory.setSchema(Schema)
和SAXParserFactory.setSchema(Schema)
方法将其与DocumentBuilderFactory
或SAXParserFactory
实例关联 。 您不应该同时设置架构并在解析器工厂上调用setValidating(true)
。 前一种技术将导致解析器使用新的验证API; 后者将导致解析器使用自己的内部验证工具。 同时打开这两个选项将导致冗余行为或错误情况。
- 从以下版本开始:
- 1.5
-
类摘要 类 描述 Schema 不可变的内存表示语法。SchemaFactory 工厂创建Schema
对象。SchemaFactoryLoader 工厂创建SchemaFactory
。TypeInfoProvider 此类提供对ValidatorHandler
确定的类型信息的访问 。Validator 根据Schema
检查XML文档的处理器。ValidatorHandler 适用于SAX流的流式验证器。 -
错误汇总 Error 描述 SchemaFactoryConfigurationError 当存在与Schema Factories配置的问题时抛出。