Module
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文档的解析分离。 这是有利于几个原因,其中一些是:
- 支持额外的架构langauges。 JAXP解析器实现只支持可用的XML模式语言的一部分。 验证API提供了一种标准机制,通过该机制应用程序可以利用支持附加模式语言的专业化验证库。
- XML实例和模式的简单运行时耦合。 指定用于使用JAXP解析器进行验证的模式的位置可能会令人困惑。 验证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已经与验证API集成。 应用程序可以创建一个Schema
通过验证API,并将其与关联DocumentBuilderFactory
或者SAXParserFactory
可通过使用实例DocumentBuilderFactory.setSchema(Schema)
种SAXParserFactory.setSchema(Schema)
方法。 您不应同时设置模式,并在解析器工厂调用setValidating(true)
。 前一种技术将导致解析器使用新的验证API; 后者将使解析器使用自己的内部验证设施。 同时打开这两个选项将导致冗余行为或错误条件。
- 从以下版本开始:
- 1.5
-
类摘要 Class 描述 Schema 不可变的内存中的语法表示。SchemaFactory 创建Schema
对象的工厂。SchemaFactoryLoader 工厂创建SchemaFactory
。TypeInfoProvider 该类提供对由ValidatorHandler
确定的类型信息的访问 。Validator 根据Schema
检查XML文档的处理器。ValidatorHandler 流式验证器,适用于SAX流。 -
Error Summary Error 描述 SchemaFactoryConfigurationError 当存在具有Schema工厂的配置问题时抛出。